equal
deleted
inserted
replaced
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; |