equal
deleted
inserted
replaced
29 val forall_intr_frees : thm -> thm |
29 val forall_intr_frees : thm -> thm |
30 val forall_intr_vars : thm -> thm |
30 val forall_intr_vars : thm -> thm |
31 val forall_elim_list : cterm list -> thm -> thm |
31 val forall_elim_list : cterm list -> thm -> thm |
32 val forall_elim_var : int -> thm -> thm |
32 val forall_elim_var : int -> thm -> thm |
33 val forall_elim_vars : int -> thm -> thm |
33 val forall_elim_vars : int -> thm -> thm |
34 val forall_elim_vars_safe : thm -> thm |
34 val gen_all : thm -> thm |
35 val freeze_thaw : thm -> thm * (thm -> thm) |
35 val freeze_thaw : thm -> thm * (thm -> thm) |
36 val implies_elim_list : thm -> thm list -> thm |
36 val implies_elim_list : thm -> thm list -> thm |
37 val implies_intr_list : cterm list -> thm -> thm |
37 val implies_intr_list : cterm list -> thm -> thm |
38 val instantiate : |
38 val instantiate : |
39 (indexname * ctyp) list * (cterm * cterm) list -> thm -> thm |
39 (indexname * ctyp) list * (cterm * cterm) list -> thm -> thm |
313 end; |
313 end; |
314 |
314 |
315 val forall_elim_var = PureThy.forall_elim_var; |
315 val forall_elim_var = PureThy.forall_elim_var; |
316 val forall_elim_vars = PureThy.forall_elim_vars; |
316 val forall_elim_vars = PureThy.forall_elim_vars; |
317 |
317 |
318 fun forall_elim_vars_safe thm = |
318 fun gen_all thm = |
319 let |
319 let |
320 val {sign, prop, maxidx, ...} = Thm.rep_thm thm; |
320 val {sign, prop, maxidx, ...} = Thm.rep_thm thm; |
321 fun elim (th, (x, T)) = Thm.forall_elim (Thm.cterm_of sign (Var ((x, maxidx + 1), T))) th; |
321 fun elim (th, (x, T)) = Thm.forall_elim (Thm.cterm_of sign (Var ((x, maxidx + 1), T))) th; |
322 val vs = Term.strip_all_vars prop; |
322 val vs = Term.strip_all_vars prop; |
323 in foldl elim (thm, Term.variantlist (map #1 vs, []) ~~ map #2 vs) end; |
323 in foldl elim (thm, Term.variantlist (map #1 vs, []) ~~ map #2 vs) end; |