59 val have_i: string -> Proof.context attribute list -> term * term list |
59 val have_i: string -> Proof.context attribute list -> term * term list |
60 -> ProofHistory.T -> ProofHistory.T |
60 -> ProofHistory.T -> ProofHistory.T |
61 val begin_block: ProofHistory.T -> ProofHistory.T |
61 val begin_block: ProofHistory.T -> ProofHistory.T |
62 val next_block: ProofHistory.T -> ProofHistory.T |
62 val next_block: ProofHistory.T -> ProofHistory.T |
63 val end_block: ProofHistory.T -> ProofHistory.T |
63 val end_block: ProofHistory.T -> ProofHistory.T |
64 val qed_with: bstring option * Args.src list option -> ProofHistory.T -> theory |
64 val tac: Method.text -> ProofHistory.T -> ProofHistory.T |
65 val qed_with_i: bstring option * theory attribute list option -> ProofHistory.T -> theory |
65 val then_tac: Method.text -> ProofHistory.T -> ProofHistory.T |
66 val qed: ProofHistory.T -> theory |
66 val proof: Method.text option -> ProofHistory.T -> ProofHistory.T |
67 val kill_proof: ProofHistory.T -> theory |
67 val kill_proof: ProofHistory.T -> theory |
68 val tac: Method.text -> ProofHistory.T -> ProofHistory.T |
68 val global_qed_with: bstring option * Args.src list option -> Method.text option |
69 val tac_i: (Proof.context -> Proof.method) -> ProofHistory.T -> ProofHistory.T |
69 -> Toplevel.transition -> Toplevel.transition |
70 val then_tac: Method.text -> ProofHistory.T -> ProofHistory.T |
70 val global_qed_with_i: bstring option * theory attribute list option -> Method.text option |
71 val then_tac_i: (Proof.context -> Proof.method) -> ProofHistory.T -> ProofHistory.T |
71 -> Toplevel.transition -> Toplevel.transition |
72 val proof: Method.text option -> ProofHistory.T -> ProofHistory.T |
72 val qed: Method.text option -> Toplevel.transition -> Toplevel.transition |
73 val proof_i: (Proof.context -> Proof.method) option -> ProofHistory.T -> ProofHistory.T |
73 val terminal_proof: Method.text -> Toplevel.transition -> Toplevel.transition |
74 val terminal_proof: Method.text -> ProofHistory.T -> ProofHistory.T |
74 val immediate_proof: Toplevel.transition -> Toplevel.transition |
75 val terminal_proof_i: (Proof.context -> Proof.method) -> ProofHistory.T -> ProofHistory.T |
75 val default_proof: Toplevel.transition -> Toplevel.transition |
76 val immediate_proof: ProofHistory.T -> ProofHistory.T |
|
77 val default_proof: ProofHistory.T -> ProofHistory.T |
|
78 val use_mltext: string -> theory option -> theory option |
76 val use_mltext: string -> theory option -> theory option |
79 val use_mltext_theory: string -> theory -> theory |
77 val use_mltext_theory: string -> theory -> theory |
80 val use_setup: string -> theory -> theory |
78 val use_setup: string -> theory -> theory |
81 val parse_ast_translation: string -> theory -> theory |
79 val parse_ast_translation: string -> theory -> theory |
82 val parse_translation: string -> theory -> theory |
80 val parse_translation: string -> theory -> theory |
199 val show_i = local_statement_i true Proof.show_i; |
197 val show_i = local_statement_i true Proof.show_i; |
200 val have = local_statement true Proof.have; |
198 val have = local_statement true Proof.have; |
201 val have_i = local_statement_i true Proof.have_i; |
199 val have_i = local_statement_i true Proof.have_i; |
202 |
200 |
203 |
201 |
204 (* end proof *) |
202 (* blocks *) |
205 |
203 |
206 fun gen_qed_with prep_att (alt_name, raw_atts) prf = |
204 val begin_block = ProofHistory.apply_open Proof.begin_block; |
|
205 val next_block = ProofHistory.apply Proof.next_block; |
|
206 val end_block = ProofHistory.apply_close Proof.end_block; |
|
207 |
|
208 |
|
209 (* backward steps *) |
|
210 |
|
211 val tac = ProofHistory.applys o Method.tac; |
|
212 val then_tac = ProofHistory.applys o Method.then_tac; |
|
213 val proof = ProofHistory.applys o Method.proof; |
|
214 |
|
215 |
|
216 (* local endings *) |
|
217 |
|
218 val local_qed = Toplevel.proof o ProofHistory.applys_close o Method.local_qed; |
|
219 val local_terminal_proof = Toplevel.proof o ProofHistory.applys_close o Method.local_terminal_proof; |
|
220 val local_immediate_proof = Toplevel.proof (ProofHistory.applys_close Method.local_immediate_proof); |
|
221 val local_default_proof = Toplevel.proof (ProofHistory.applys_close Method.local_default_proof); |
|
222 |
|
223 |
|
224 (* global endings *) |
|
225 |
|
226 val kill_proof = Proof.theory_of o ProofHistory.current; |
|
227 |
|
228 fun global_result finish = Toplevel.proof_to_theory (fn prf => |
207 let |
229 let |
208 val state = ProofHistory.current prf; |
230 val state = ProofHistory.current prf; |
|
231 val _ = if Proof.at_bottom state then () else raise Toplevel.UNDEF; |
|
232 val (thy, (kind, name, thm)) = finish state; |
|
233 |
|
234 val prt_result = Pretty.block |
|
235 [Pretty.str (kind ^ " " ^ name ^ ":"), Pretty.fbrk, Display.pretty_thm thm]; |
|
236 in Pretty.writeln prt_result; thy end); |
|
237 |
|
238 fun gen_global_qed_with prep_att (alt_name, raw_atts) opt_text state = |
|
239 let |
209 val thy = Proof.theory_of state; |
240 val thy = Proof.theory_of state; |
210 val alt_atts = apsome (map (prep_att thy)) raw_atts; |
241 val alt_atts = apsome (map (prep_att thy)) raw_atts; |
211 val (thy', (kind, name, thm)) = Method.qed alt_name alt_atts state; |
242 in Method.global_qed alt_name alt_atts opt_text state end; |
212 |
243 |
213 val prt_result = Pretty.block |
244 val global_qed_with = global_result oo gen_global_qed_with Attrib.global_attribute; |
214 [Pretty.str (kind ^ " " ^ name ^ ":"), Pretty.fbrk, Display.pretty_thm thm]; |
245 val global_qed_with_i = global_result oo gen_global_qed_with (K I); |
215 in Pretty.writeln prt_result; thy end; |
246 val global_qed = global_qed_with (None, None); |
216 |
247 |
217 val qed_with = gen_qed_with Attrib.global_attribute; |
248 val global_terminal_proof = global_result o Method.global_terminal_proof; |
218 val qed_with_i = gen_qed_with (K I); |
249 val global_immediate_proof = global_result Method.global_immediate_proof; |
219 |
250 val global_default_proof = global_result Method.global_default_proof; |
220 val qed = qed_with (None, None); |
251 |
221 |
252 |
222 val kill_proof = Proof.theory_of o ProofHistory.current; |
253 (* common endings *) |
223 |
254 |
224 |
255 fun qed opt_text = local_qed opt_text o global_qed opt_text; |
225 (* blocks *) |
256 fun terminal_proof opt_text = local_terminal_proof opt_text o global_terminal_proof opt_text; |
226 |
257 val immediate_proof = local_immediate_proof o global_immediate_proof; |
227 val begin_block = ProofHistory.apply_open Proof.begin_block; |
258 val default_proof = local_default_proof o global_default_proof; |
228 val next_block = ProofHistory.apply Proof.next_block; |
|
229 |
|
230 |
|
231 (* backward steps *) |
|
232 |
|
233 val tac = ProofHistory.applys o Method.tac; |
|
234 val tac_i = tac o Method.Basic; |
|
235 val then_tac = ProofHistory.applys o Method.then_tac; |
|
236 val then_tac_i = then_tac o Method.Basic; |
|
237 val proof = ProofHistory.applys o Method.proof; |
|
238 val proof_i = proof o apsome Method.Basic; |
|
239 val end_block = ProofHistory.applys_close Method.end_block; |
|
240 val terminal_proof = ProofHistory.applys_close o Method.terminal_proof; |
|
241 val terminal_proof_i = terminal_proof o Method.Basic; |
|
242 val immediate_proof = ProofHistory.applys_close Method.immediate_proof; |
|
243 val default_proof = ProofHistory.applys_close Method.default_proof; |
|
244 |
259 |
245 |
260 |
246 (* use ML text *) |
261 (* use ML text *) |
247 |
262 |
248 fun use_mltext txt opt_thy = #2 (Context.pass opt_thy (use_text false) txt); |
263 fun use_mltext txt opt_thy = #2 (Context.pass opt_thy (use_text false) txt); |