src/Pure/drule.ML
changeset 74244 12dac3698efd
parent 74243 de383840425f
child 74245 282cd3aa6cc6
equal deleted inserted replaced
74243:de383840425f 74244:12dac3698efd
   164 (*Generalization over a list of variables*)
   164 (*Generalization over a list of variables*)
   165 val forall_intr_list = fold_rev Thm.forall_intr;
   165 val forall_intr_list = fold_rev Thm.forall_intr;
   166 
   166 
   167 (*Generalization over Vars -- canonical order*)
   167 (*Generalization over Vars -- canonical order*)
   168 fun forall_intr_vars th =
   168 fun forall_intr_vars th =
   169   let
   169   let val vs = build (th |> Thm.fold_atomic_cterms {hyps = false} Term.is_Var (insert (op aconvc)))
   170     val vs =
       
   171       build (th |> Thm.fold_atomic_cterms {hyps = false} (fn a =>
       
   172         is_Var (Thm.term_of a) ? insert (op aconvc) a));
       
   173   in fold Thm.forall_intr vs th end;
   170   in fold Thm.forall_intr vs th end;
   174 
   171 
   175 fun outer_params t =
   172 fun outer_params t =
   176   let val vs = Term.strip_all_vars t
   173   let val vs = Term.strip_all_vars t
   177   in Name.variant_list [] (map (Name.clean o #1) vs) ~~ map #2 vs end;
   174   in Name.variant_list [] (map (Name.clean o #1) vs) ~~ map #2 vs end;