equal
deleted
inserted
replaced
1 (* ========================================================================= *) |
1 (* ========================================================================= *) |
2 (* FIRST ORDER LOGIC SUBSTITUTIONS *) |
2 (* FIRST ORDER LOGIC SUBSTITUTIONS *) |
3 (* Copyright (c) 2002-2006 Joe Hurd, distributed under the BSD License *) |
3 (* Copyright (c) 2002-2006 Joe Hurd, distributed under the BSD License *) |
4 (* ========================================================================= *) |
4 (* ========================================================================= *) |
5 |
5 |
6 signature Subst = |
6 signature Subst = |
7 sig |
7 sig |
8 |
8 |
26 |
26 |
27 val insert : subst -> Term.var * Term.term -> subst |
27 val insert : subst -> Term.var * Term.term -> subst |
28 |
28 |
29 val singleton : Term.var * Term.term -> subst |
29 val singleton : Term.var * Term.term -> subst |
30 |
30 |
31 val union : subst -> subst -> subst |
|
32 |
|
33 val toList : subst -> (Term.var * Term.term) list |
31 val toList : subst -> (Term.var * Term.term) list |
34 |
32 |
35 val fromList : (Term.var * Term.term) list -> subst |
33 val fromList : (Term.var * Term.term) list -> subst |
36 |
34 |
37 val foldl : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a |
35 val foldl : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a |
38 |
36 |
39 val foldr : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a |
37 val foldr : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a |
40 |
38 |
41 val pp : subst Parser.pp |
39 val pp : subst Print.pp |
42 |
40 |
43 val toString : subst -> string |
41 val toString : subst -> string |
44 |
42 |
45 (* ------------------------------------------------------------------------- *) |
43 (* ------------------------------------------------------------------------- *) |
46 (* Normalizing removes identity substitutions. *) |
44 (* Normalizing removes identity substitutions. *) |
69 (* ------------------------------------------------------------------------- *) |
67 (* ------------------------------------------------------------------------- *) |
70 |
68 |
71 val compose : subst -> subst -> subst |
69 val compose : subst -> subst -> subst |
72 |
70 |
73 (* ------------------------------------------------------------------------- *) |
71 (* ------------------------------------------------------------------------- *) |
74 (* Substitutions can be inverted iff they are renaming substitutions. *) |
72 (* Creating the union of two compatible substitutions. *) |
|
73 (* ------------------------------------------------------------------------- *) |
|
74 |
|
75 val union : subst -> subst -> subst (* raises Error *) |
|
76 |
|
77 (* ------------------------------------------------------------------------- *) |
|
78 (* Substitutions can be inverted iff they are renaming substitutions. *) |
75 (* ------------------------------------------------------------------------- *) |
79 (* ------------------------------------------------------------------------- *) |
76 |
80 |
77 val invert : subst -> subst (* raises Error *) |
81 val invert : subst -> subst (* raises Error *) |
78 |
82 |
79 val isRenaming : subst -> bool |
83 val isRenaming : subst -> bool |
81 (* ------------------------------------------------------------------------- *) |
85 (* ------------------------------------------------------------------------- *) |
82 (* Creating a substitution to freshen variables. *) |
86 (* Creating a substitution to freshen variables. *) |
83 (* ------------------------------------------------------------------------- *) |
87 (* ------------------------------------------------------------------------- *) |
84 |
88 |
85 val freshVars : NameSet.set -> subst |
89 val freshVars : NameSet.set -> subst |
|
90 |
|
91 (* ------------------------------------------------------------------------- *) |
|
92 (* Free variables. *) |
|
93 (* ------------------------------------------------------------------------- *) |
|
94 |
|
95 val redexes : subst -> NameSet.set |
|
96 |
|
97 val residueFreeVars : subst -> NameSet.set |
|
98 |
|
99 val freeVars : subst -> NameSet.set |
|
100 |
|
101 (* ------------------------------------------------------------------------- *) |
|
102 (* Functions. *) |
|
103 (* ------------------------------------------------------------------------- *) |
|
104 |
|
105 val functions : subst -> NameAritySet.set |
86 |
106 |
87 (* ------------------------------------------------------------------------- *) |
107 (* ------------------------------------------------------------------------- *) |
88 (* Matching for first order logic terms. *) |
108 (* Matching for first order logic terms. *) |
89 (* ------------------------------------------------------------------------- *) |
109 (* ------------------------------------------------------------------------- *) |
90 |
110 |