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