src/Pure/Tools/invoke.ML
changeset 20305 16c8f44b1852
parent 20266 6fb734789818
child 20893 c99f79910ae8
equal deleted inserted replaced
20304:500a3373c93c 20305:16c8f44b1852
    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