src/Pure/variable.ML
changeset 74241 eb265f54e3ce
parent 74240 36774e8af3db
child 74266 612b7e0d6721
equal deleted inserted replaced
74240:36774e8af3db 74241:eb265f54e3ce
   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