src/Pure/term.ML
changeset 15574 b1d1b5bfc464
parent 15573 cf53c2dcf440
child 15598 4ab52355bb53
equal deleted inserted replaced
15573:cf53c2dcf440 15574:b1d1b5bfc464
   771 
   771 
   772 
   772 
   773 
   773 
   774 (** Consts etc. **)
   774 (** Consts etc. **)
   775 
   775 
   776 fun add_typ_classes (Type (_, Ts), cs) = Library.foldr add_typ_classes (Ts, cs)
   776 fun add_typ_classes (Type (_, Ts), cs) = foldr add_typ_classes cs Ts
   777   | add_typ_classes (TFree (_, S), cs) = S union cs
   777   | add_typ_classes (TFree (_, S), cs) = S union cs
   778   | add_typ_classes (TVar (_, S), cs) = S union cs;
   778   | add_typ_classes (TVar (_, S), cs) = S union cs;
   779 
   779 
   780 fun add_typ_tycons (Type (c, Ts), cs) = Library.foldr add_typ_tycons (Ts, c ins cs)
   780 fun add_typ_tycons (Type (c, Ts), cs) = foldr add_typ_tycons (c ins cs) Ts
   781   | add_typ_tycons (_, cs) = cs;
   781   | add_typ_tycons (_, cs) = cs;
   782 
   782 
   783 val add_term_classes = it_term_types add_typ_classes;
   783 val add_term_classes = it_term_types add_typ_classes;
   784 val add_term_tycons = it_term_types add_typ_tycons;
   784 val add_term_tycons = it_term_types add_typ_tycons;
   785 
   785 
   838   | add_term_names (f$u, bs) = add_term_names (f, add_term_names(u, bs))
   838   | add_term_names (f$u, bs) = add_term_names (f, add_term_names(u, bs))
   839   | add_term_names (Abs(_,_,t), bs) = add_term_names(t,bs)
   839   | add_term_names (Abs(_,_,t), bs) = add_term_names(t,bs)
   840   | add_term_names (_, bs) = bs;
   840   | add_term_names (_, bs) = bs;
   841 
   841 
   842 (*Accumulates the TVars in a type, suppressing duplicates. *)
   842 (*Accumulates the TVars in a type, suppressing duplicates. *)
   843 fun add_typ_tvars(Type(_,Ts),vs) = Library.foldr add_typ_tvars (Ts,vs)
   843 fun add_typ_tvars(Type(_,Ts),vs) = foldr add_typ_tvars vs Ts
   844   | add_typ_tvars(TFree(_),vs) = vs
   844   | add_typ_tvars(TFree(_),vs) = vs
   845   | add_typ_tvars(TVar(v),vs) = v ins vs;
   845   | add_typ_tvars(TVar(v),vs) = v ins vs;
   846 
   846 
   847 (*Accumulates the TFrees in a type, suppressing duplicates. *)
   847 (*Accumulates the TFrees in a type, suppressing duplicates. *)
   848 fun add_typ_tfree_names(Type(_,Ts),fs) = Library.foldr add_typ_tfree_names (Ts,fs)
   848 fun add_typ_tfree_names(Type(_,Ts),fs) = foldr add_typ_tfree_names fs Ts
   849   | add_typ_tfree_names(TFree(f,_),fs) = f ins_string fs
   849   | add_typ_tfree_names(TFree(f,_),fs) = f ins_string fs
   850   | add_typ_tfree_names(TVar(_),fs) = fs;
   850   | add_typ_tfree_names(TVar(_),fs) = fs;
   851 
   851 
   852 fun add_typ_tfrees(Type(_,Ts),fs) = Library.foldr add_typ_tfrees (Ts,fs)
   852 fun add_typ_tfrees(Type(_,Ts),fs) = foldr add_typ_tfrees fs Ts
   853   | add_typ_tfrees(TFree(f),fs) = f ins fs
   853   | add_typ_tfrees(TFree(f),fs) = f ins fs
   854   | add_typ_tfrees(TVar(_),fs) = fs;
   854   | add_typ_tfrees(TVar(_),fs) = fs;
   855 
   855 
   856 fun add_typ_varnames(Type(_,Ts),nms) = Library.foldr add_typ_varnames (Ts,nms)
   856 fun add_typ_varnames(Type(_,Ts),nms) = foldr add_typ_varnames nms Ts
   857   | add_typ_varnames(TFree(nm,_),nms) = nm ins_string nms
   857   | add_typ_varnames(TFree(nm,_),nms) = nm ins_string nms
   858   | add_typ_varnames(TVar((nm,_),_),nms) = nm ins_string nms;
   858   | add_typ_varnames(TVar((nm,_),_),nms) = nm ins_string nms;
   859 
   859 
   860 (*Accumulates the TVars in a term, suppressing duplicates. *)
   860 (*Accumulates the TVars in a term, suppressing duplicates. *)
   861 val add_term_tvars = it_term_types add_typ_tvars;
   861 val add_term_tvars = it_term_types add_typ_tvars;