src/Pure/term.ML
changeset 5585 8fcb0f181ad6
parent 4694 92e12a04dca7
child 5986 6ebbc9e7cc20
equal deleted inserted replaced
5584:aad639e56d4e 5585:8fcb0f181ad6
   102   val mem_term: term * term list -> bool
   102   val mem_term: term * term list -> bool
   103   val subset_term: term list * term list -> bool
   103   val subset_term: term list * term list -> bool
   104   val eq_set_term: term list * term list -> bool
   104   val eq_set_term: term list * term list -> bool
   105   val ins_term: term * term list -> term list
   105   val ins_term: term * term list -> term list
   106   val union_term: term list * term list -> term list
   106   val union_term: term list * term list -> term list
       
   107   val inter_term: term list * term list -> term list
   107   val could_unify: term * term -> bool
   108   val could_unify: term * term -> bool
   108   val subst_free: (term * term) list -> term -> term
   109   val subst_free: (term * term) list -> term -> term
   109   val subst_atomic: (term * term) list -> term -> term
   110   val subst_atomic: (term * term) list -> term -> term
   110   val subst_vars: (indexname * typ) list * (indexname * term) list -> term -> term
   111   val subst_vars: (indexname * typ) list * (indexname * term) list -> term -> term
   111   val typ_subst_TVars: (indexname * typ) list -> typ -> typ
   112   val typ_subst_TVars: (indexname * typ) list -> typ -> typ
   515 
   516 
   516 fun union_term (xs, []) = xs
   517 fun union_term (xs, []) = xs
   517   | union_term ([], ys) = ys
   518   | union_term ([], ys) = ys
   518   | union_term ((x :: xs), ys) = union_term (xs, ins_term (x, ys));
   519   | union_term ((x :: xs), ys) = union_term (xs, ins_term (x, ys));
   519 
   520 
       
   521 fun inter_term ([], ys) = []
       
   522   | inter_term (x::xs, ys) =
       
   523       if mem_term (x,ys) then x :: inter_term(xs,ys) else inter_term(xs,ys);
       
   524 
   520 (** Equality, membership and insertion of sorts (string lists) **)
   525 (** Equality, membership and insertion of sorts (string lists) **)
   521 
   526 
   522 fun eq_sort ([]:sort, []) = true
   527 fun eq_sort ([]:sort, []) = true
   523   | eq_sort ((s::ss), (t::ts)) = s=t andalso eq_sort(ss,ts)
   528   | eq_sort ((s::ss), (t::ts)) = s=t andalso eq_sort(ss,ts)
   524   | eq_sort (_, _) = false;
   529   | eq_sort (_, _) = false;