equal
deleted
inserted
replaced
58 [(("", []), map (rpair [] o Logic.mk_term o Logic.mk_type) types'), |
58 [(("", []), map (rpair [] o Logic.mk_term o Logic.mk_type) types'), |
59 (("", []), map (rpair [] o Logic.mk_term) params'), |
59 (("", []), map (rpair [] o Logic.mk_term) params'), |
60 (("", []), map (rpair [] o Element.mark_witness) prems')]; |
60 (("", []), map (rpair [] o Element.mark_witness) prems')]; |
61 fun after_qed results = |
61 fun after_qed results = |
62 Proof.end_block #> |
62 Proof.end_block #> |
63 Seq.map (Proof.map_context (fn ctxt => |
63 Proof.map_context (fn ctxt => |
64 let |
64 let |
65 val ([res_types, res_params, res_prems], ctxt'') = |
65 val ([res_types, res_params, res_prems], ctxt'') = |
66 fold_burrow (apfst snd oo Variable.import false) results ctxt'; |
66 fold_burrow (apfst snd oo Variable.import false) results ctxt'; |
67 |
67 |
68 val types'' = map (Logic.dest_type o Thm.term_of o Drule.dest_term) res_types; |
68 val types'' = map (Logic.dest_type o Thm.term_of o Drule.dest_term) res_types; |
80 ctxt |
80 ctxt |
81 |> ProofContext.sticky_prefix prfx |
81 |> ProofContext.sticky_prefix prfx |
82 |> ProofContext.qualified_names |
82 |> ProofContext.qualified_names |
83 |> (snd o ProofContext.note_thmss_i notes) |
83 |> (snd o ProofContext.note_thmss_i notes) |
84 |> ProofContext.restore_naming ctxt |
84 |> ProofContext.restore_naming ctxt |
85 end) #> Proof.put_facts NONE); |
85 end) #> |
|
86 Proof.put_facts NONE #> Seq.single; |
86 in |
87 in |
87 state' |
88 state' |
88 |> Proof.local_goal (K (K ())) (K I) ProofContext.bind_propp_schematic_i |
89 |> Proof.local_goal (K (K ())) (K I) ProofContext.bind_propp_schematic_i |
89 "invoke" NONE after_qed propp |
90 "invoke" NONE after_qed propp |
90 |> Element.refine_witness |
91 |> Element.refine_witness |