src/Tools/coherent.ML
changeset 59621 291934bac95e
parent 59582 0fbed69ff081
child 59642 929984c529d3
equal deleted inserted replaced
59620:92d7d8e4f1bf 59621:291934bac95e
   172 (** proof replaying **)
   172 (** proof replaying **)
   173 
   173 
   174 fun thm_of_cl_prf ctxt goal asms (ClPrf (th, (tye, env), insts, is, prfs)) =
   174 fun thm_of_cl_prf ctxt goal asms (ClPrf (th, (tye, env), insts, is, prfs)) =
   175   let
   175   let
   176     val thy = Proof_Context.theory_of ctxt;
   176     val thy = Proof_Context.theory_of ctxt;
   177     val cert = Thm.cterm_of thy;
   177     val cert = Thm.global_cterm_of thy;
   178     val certT = Thm.ctyp_of thy;
   178     val certT = Thm.global_ctyp_of thy;
   179     val _ =
   179     val _ =
   180       cond_trace ctxt (fn () =>
   180       cond_trace ctxt (fn () =>
   181         Pretty.string_of (Pretty.big_list "asms:" (map (Display.pretty_thm ctxt) asms)));
   181         Pretty.string_of (Pretty.big_list "asms:" (map (Display.pretty_thm ctxt) asms)));
   182     val th' =
   182     val th' =
   183       Drule.implies_elim_list
   183       Drule.implies_elim_list
   200   end
   200   end
   201 
   201 
   202 and thm_of_case_prf ctxt goal asms ((params, prf), (_, asms')) =
   202 and thm_of_case_prf ctxt goal asms ((params, prf), (_, asms')) =
   203   let
   203   let
   204     val thy = Proof_Context.theory_of ctxt;
   204     val thy = Proof_Context.theory_of ctxt;
   205     val cert = Thm.cterm_of thy;
   205     val cert = Thm.global_cterm_of thy;
   206     val cparams = map cert params;
   206     val cparams = map cert params;
   207     val asms'' = map (cert o curry subst_bounds (rev params)) asms';
   207     val asms'' = map (cert o curry subst_bounds (rev params)) asms';
   208     val (prems'', ctxt') = fold_map Thm.assume_hyps asms'' ctxt;
   208     val (prems'', ctxt') = fold_map Thm.assume_hyps asms'' ctxt;
   209   in
   209   in
   210     Drule.forall_intr_list cparams
   210     Drule.forall_intr_list cparams