171 val term_ord: term * term -> order |
171 val term_ord: term * term -> order |
172 val hd_ord: term * term -> order |
172 val hd_ord: term * term -> order |
173 val termless: term * term -> bool |
173 val termless: term * term -> bool |
174 val term_lpo: (term -> int) -> term * term -> order |
174 val term_lpo: (term -> int) -> term * term -> order |
175 val match_bvars: (term * term) * (string * string) list -> (string * string) list |
175 val match_bvars: (term * term) * (string * string) list -> (string * string) list |
|
176 val map_abs_vars: (string -> string) -> term -> term |
176 val rename_abs: term -> term -> term -> term option |
177 val rename_abs: term -> term -> term -> term option |
177 val eq_tvar: (indexname * sort) * (indexname * sort) -> bool |
178 val eq_tvar: (indexname * sort) * (indexname * sort) -> bool |
178 val eq_var: (indexname * typ) * (indexname * typ) -> bool |
179 val eq_var: (indexname * typ) * (indexname * typ) -> bool |
179 val tvar_ord: (indexname * sort) * (indexname * sort) -> order |
180 val tvar_ord: (indexname * sort) * (indexname * sort) -> order |
180 val var_ord: (indexname * typ) * (indexname * typ) -> order |
181 val var_ord: (indexname * typ) * (indexname * typ) -> order |
759 | match_bvs(_,_,al) = al; |
760 | match_bvs(_,_,al) = al; |
760 |
761 |
761 (* strip abstractions created by parameters *) |
762 (* strip abstractions created by parameters *) |
762 fun match_bvars((s,t),al) = match_bvs(strip_abs_body s, strip_abs_body t, al); |
763 fun match_bvars((s,t),al) = match_bvs(strip_abs_body s, strip_abs_body t, al); |
763 |
764 |
|
765 fun map_abs_vars f (t $ u) = map_abs_vars f t $ map_abs_vars f u |
|
766 | map_abs_vars f (Abs (a, T, t)) = Abs (f a, T, map_abs_vars f t) |
|
767 | map_abs_vars f t = t; |
|
768 |
764 fun rename_abs pat obj t = |
769 fun rename_abs pat obj t = |
765 let |
770 let |
766 val ren = match_bvs (pat, obj, []); |
771 val ren = match_bvs (pat, obj, []); |
767 fun ren_abs (Abs (x, T, b)) = |
772 fun ren_abs (Abs (x, T, b)) = |
768 Abs (the_default x (AList.lookup (op =) ren x), T, ren_abs b) |
773 Abs (the_default x (AList.lookup (op =) ren x), T, ren_abs b) |