src/Pure/term.ML
changeset 22031 70583c3f3fa5
parent 21975 1152dc45d591
child 22572 c6bbe56afbf7
equal deleted inserted replaced
22030:91f1731b57c2 22031:70583c3f3fa5
   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)