equal
deleted
inserted
replaced
265 val declare_typ = declare_term o Logic.mk_type; |
265 val declare_typ = declare_term o Logic.mk_type; |
266 |
266 |
267 val declare_prf = |
267 val declare_prf = |
268 Proofterm.fold_proof_terms_types declare_internal (declare_internal o Logic.mk_type); |
268 Proofterm.fold_proof_terms_types declare_internal (declare_internal o Logic.mk_type); |
269 |
269 |
270 val declare_thm = Thm.fold_terms declare_internal; |
270 val declare_thm = Thm.fold_terms {hyps = true} declare_internal; |
271 |
271 |
272 |
272 |
273 (* renaming term/type frees *) |
273 (* renaming term/type frees *) |
274 |
274 |
275 fun variant_frees ctxt ts frees = |
275 fun variant_frees ctxt ts frees = |
687 val ps' = map (Thm.cterm_of ctxt' o Free) ps; |
687 val ps' = map (Thm.cterm_of ctxt' o Free) ps; |
688 val goal' = fold forall_elim_prop ps' goal; |
688 val goal' = fold forall_elim_prop ps' goal; |
689 in ((xs ~~ ps', goal'), ctxt') end; |
689 in ((xs ~~ ps', goal'), ctxt') end; |
690 |
690 |
691 fun focus_subgoal bindings i st = |
691 fun focus_subgoal bindings i st = |
692 let val all_vars = Term_Subst.Vars.build (Thm.fold_terms Term_Subst.add_vars st) in |
692 let |
|
693 val all_vars = Term_Subst.Vars.build (Thm.fold_terms {hyps = false} Term_Subst.add_vars st); |
|
694 in |
693 Term_Subst.Vars.fold (unbind_term o #1 o #1) all_vars #> |
695 Term_Subst.Vars.fold (unbind_term o #1 o #1) all_vars #> |
694 Term_Subst.Vars.fold (declare_constraints o Var o #1) all_vars #> |
696 Term_Subst.Vars.fold (declare_constraints o Var o #1) all_vars #> |
695 focus_cterm bindings (Thm.cprem_of st i) |
697 focus_cterm bindings (Thm.cprem_of st i) |
696 end; |
698 end; |
697 |
699 |