46 val exit: Toplevel.transition -> Toplevel.transition |
46 val exit: Toplevel.transition -> Toplevel.transition |
47 val quit: Toplevel.transition -> Toplevel.transition |
47 val quit: Toplevel.transition -> Toplevel.transition |
48 val pr: string list * (int option * int option) -> Toplevel.transition -> Toplevel.transition |
48 val pr: string list * (int option * int option) -> Toplevel.transition -> Toplevel.transition |
49 val disable_pr: Toplevel.transition -> Toplevel.transition |
49 val disable_pr: Toplevel.transition -> Toplevel.transition |
50 val enable_pr: Toplevel.transition -> Toplevel.transition |
50 val enable_pr: Toplevel.transition -> Toplevel.transition |
51 val redo: Toplevel.transition -> Toplevel.transition |
|
52 val undos_proof: int -> Toplevel.transition -> Toplevel.transition |
|
53 val kill_proof_notify: (unit -> unit) -> Toplevel.transition -> Toplevel.transition |
|
54 val kill_proof: Toplevel.transition -> Toplevel.transition |
|
55 val undo_theory: Toplevel.transition -> Toplevel.transition |
|
56 val undo: Toplevel.transition -> Toplevel.transition |
|
57 val cannot_undo: string -> Toplevel.transition -> Toplevel.transition |
|
58 val kill: Toplevel.transition -> Toplevel.transition |
|
59 val back: Toplevel.transition -> Toplevel.transition |
|
60 val ml_diag: bool -> string * Position.T -> Toplevel.transition -> Toplevel.transition |
51 val ml_diag: bool -> string * Position.T -> Toplevel.transition -> Toplevel.transition |
61 val nested_command: Markup.property list -> string * Position.T -> Toplevel.transition |
52 val nested_command: Markup.property list -> string * Position.T -> Toplevel.transition |
62 val cd: Path.T -> Toplevel.transition -> Toplevel.transition |
53 val cd: Path.T -> Toplevel.transition -> Toplevel.transition |
63 val pwd: Toplevel.transition -> Toplevel.transition |
54 val pwd: Toplevel.transition -> Toplevel.transition |
64 val display_drafts: Path.T list -> Toplevel.transition -> Toplevel.transition |
55 val display_drafts: Path.T list -> Toplevel.transition -> Toplevel.transition |
280 val local_default_proof = Toplevel.proofs Proof.local_default_proof; |
271 val local_default_proof = Toplevel.proofs Proof.local_default_proof; |
281 val local_immediate_proof = Toplevel.proofs Proof.local_immediate_proof; |
272 val local_immediate_proof = Toplevel.proofs Proof.local_immediate_proof; |
282 val local_done_proof = Toplevel.proofs Proof.local_done_proof; |
273 val local_done_proof = Toplevel.proofs Proof.local_done_proof; |
283 val local_skip_proof = Toplevel.proofs' Proof.local_skip_proof; |
274 val local_skip_proof = Toplevel.proofs' Proof.local_skip_proof; |
284 |
275 |
285 val skip_local_qed = |
276 val skip_local_qed = Toplevel.skip_proof (fn i => if i > 1 then i - 1 else raise Toplevel.UNDEF); |
286 Toplevel.skip_proof (History.apply (fn i => if i > 1 then i - 1 else raise Toplevel.UNDEF)); |
|
287 |
277 |
288 |
278 |
289 (* global endings *) |
279 (* global endings *) |
290 |
280 |
291 fun global_qed m = Toplevel.end_proof (K (Proof.global_qed (m, true))); |
281 fun global_qed m = Toplevel.end_proof (K (Proof.global_qed (m, true))); |
341 (set_limit goals_limit lim1; set_limit ProofContext.prems_limit lim2; Toplevel.quiet := false; |
331 (set_limit goals_limit lim1; set_limit ProofContext.prems_limit lim2; Toplevel.quiet := false; |
342 PrintMode.with_modes modes (Toplevel.print_state true) state)); |
332 PrintMode.with_modes modes (Toplevel.print_state true) state)); |
343 |
333 |
344 val disable_pr = Toplevel.imperative (fn () => Toplevel.quiet := true); |
334 val disable_pr = Toplevel.imperative (fn () => Toplevel.quiet := true); |
345 val enable_pr = Toplevel.imperative (fn () => Toplevel.quiet := false); |
335 val enable_pr = Toplevel.imperative (fn () => Toplevel.quiet := false); |
346 |
|
347 |
|
348 (* history commands *) |
|
349 |
|
350 val redo = |
|
351 Toplevel.history History.redo o |
|
352 Toplevel.actual_proof ProofHistory.redo o |
|
353 Toplevel.skip_proof History.redo; |
|
354 |
|
355 fun undos_proof n = |
|
356 Toplevel.actual_proof (fn prf => |
|
357 if ProofHistory.is_initial prf then raise Toplevel.UNDEF else funpow n ProofHistory.undo prf) o |
|
358 Toplevel.skip_proof (fn h => |
|
359 if History.is_initial h then raise Toplevel.UNDEF else funpow n History.undo h); |
|
360 |
|
361 fun kill_proof_notify (f: unit -> unit) = Toplevel.history (fn hist => |
|
362 if is_some (Toplevel.theory_node (History.current hist)) then raise Toplevel.UNDEF |
|
363 else (f (); History.undo hist)); |
|
364 |
|
365 val kill_proof = kill_proof_notify (K ()); |
|
366 |
|
367 val undo_theory = Toplevel.history (fn hist => |
|
368 if History.is_initial hist then raise Toplevel.UNDEF else History.undo hist); |
|
369 |
|
370 val undo = Toplevel.kill o undo_theory o Toplevel.undo_exit o undos_proof 1; |
|
371 |
|
372 fun cannot_undo "end" = undo (*ProofGeneral legacy*) |
|
373 | cannot_undo txt = Toplevel.imperative (fn () => error ("Cannot undo " ^ quote txt)); |
|
374 |
|
375 val kill = Toplevel.kill o kill_proof; |
|
376 |
|
377 val back = |
|
378 Toplevel.actual_proof ProofHistory.back o |
|
379 Toplevel.skip_proof (History.apply I); |
|
380 |
336 |
381 |
337 |
382 (* diagnostic ML evaluation *) |
338 (* diagnostic ML evaluation *) |
383 |
339 |
384 fun ml_diag verbose (txt, pos) = Toplevel.keep (fn state => |
340 fun ml_diag verbose (txt, pos) = Toplevel.keep (fn state => |