31 val pretty_abstract: state -> Pretty.T |
31 val pretty_abstract: state -> Pretty.T |
32 type transition |
32 type transition |
33 val empty: transition |
33 val empty: transition |
34 val name_of: transition -> string |
34 val name_of: transition -> string |
35 val pos_of: transition -> Position.T |
35 val pos_of: transition -> Position.T |
|
36 val timing_of: transition -> Time.time |
36 val type_error: transition -> string |
37 val type_error: transition -> string |
37 val name: string -> transition -> transition |
38 val name: string -> transition -> transition |
38 val position: Position.T -> transition -> transition |
39 val position: Position.T -> transition -> transition |
|
40 val timing: Time.time -> transition -> transition |
39 val init_theory: (unit -> theory) -> transition -> transition |
41 val init_theory: (unit -> theory) -> transition -> transition |
40 val is_init: transition -> bool |
42 val is_init: transition -> bool |
41 val modify_init: (unit -> theory) -> transition -> transition |
43 val modify_init: (unit -> theory) -> transition -> transition |
42 val exit: transition -> transition |
44 val exit: transition -> transition |
43 val keep: (state -> unit) -> transition -> transition |
45 val keep: (state -> unit) -> transition -> transition |
75 val skip_proof_open: transition -> transition |
77 val skip_proof_open: transition -> transition |
76 val skip_proof_close: transition -> transition |
78 val skip_proof_close: transition -> transition |
77 val exec_id: Document_ID.exec -> transition -> transition |
79 val exec_id: Document_ID.exec -> transition -> transition |
78 val setmp_thread_position: transition -> ('a -> 'b) -> 'a -> 'b |
80 val setmp_thread_position: transition -> ('a -> 'b) -> 'a -> 'b |
79 val add_hook: (transition -> state -> state -> unit) -> unit |
81 val add_hook: (transition -> state -> state -> unit) -> unit |
80 val get_timing: transition -> Time.time |
|
81 val put_timing: Time.time -> transition -> transition |
|
82 val transition: bool -> transition -> state -> state * (exn * string) option |
82 val transition: bool -> transition -> state -> state * (exn * string) option |
83 val command_errors: bool -> transition -> state -> Runtime.error list * state option |
83 val command_errors: bool -> transition -> state -> Runtime.error list * state option |
84 val command_exception: bool -> transition -> state -> state |
84 val command_exception: bool -> transition -> state -> state |
85 val reset_theory: state -> state option |
85 val reset_theory: state -> state option |
86 val reset_proof: state -> state option |
86 val reset_proof: state -> state option |
325 |
325 |
326 (* diagnostics *) |
326 (* diagnostics *) |
327 |
327 |
328 fun name_of (Transition {name, ...}) = name; |
328 fun name_of (Transition {name, ...}) = name; |
329 fun pos_of (Transition {pos, ...}) = pos; |
329 fun pos_of (Transition {pos, ...}) = pos; |
|
330 fun timing_of (Transition {timing, ...}) = timing; |
330 |
331 |
331 fun command_msg msg tr = |
332 fun command_msg msg tr = |
332 msg ^ "command " ^ quote (Markup.markup Markup.keyword1 (name_of tr)) ^ |
333 msg ^ "command " ^ quote (Markup.markup Markup.keyword1 (name_of tr)) ^ |
333 Position.here (pos_of tr); |
334 Position.here (pos_of tr); |
334 |
335 |
340 |
341 |
341 fun name name = map_transition (fn (_, pos, timing, trans) => |
342 fun name name = map_transition (fn (_, pos, timing, trans) => |
342 (name, pos, timing, trans)); |
343 (name, pos, timing, trans)); |
343 |
344 |
344 fun position pos = map_transition (fn (name, _, timing, trans) => |
345 fun position pos = map_transition (fn (name, _, timing, trans) => |
|
346 (name, pos, timing, trans)); |
|
347 |
|
348 fun timing timing = map_transition (fn (name, pos, _, trans) => |
345 (name, pos, timing, trans)); |
349 (name, pos, timing, trans)); |
346 |
350 |
347 fun add_trans tr = map_transition (fn (name, pos, timing, trans) => |
351 fun add_trans tr = map_transition (fn (name, pos, timing, trans) => |
348 (name, pos, timing, tr :: trans)); |
352 (name, pos, timing, tr :: trans)); |
349 |
353 |
580 end; |
584 end; |
581 |
585 |
582 |
586 |
583 (* apply transitions *) |
587 (* apply transitions *) |
584 |
588 |
585 fun get_timing (Transition {timing, ...}) = timing; |
|
586 fun put_timing timing = map_transition (fn (name, pos, _, trans) => (name, pos, timing, trans)); |
|
587 |
|
588 local |
589 local |
589 |
590 |
590 fun app int (tr as Transition {trans, ...}) = |
591 fun app int (tr as Transition {trans, ...}) = |
591 setmp_thread_position tr |
592 setmp_thread_position tr |
592 (Timing.protocol (name_of tr) (pos_of tr) (apply_trans int trans) |
593 (Timing.protocol (name_of tr) (pos_of tr) (apply_trans int trans) |
676 val get_result = Result.get o Proof.context_of; |
677 val get_result = Result.get o Proof.context_of; |
677 val put_result = Proof.map_context o Result.put; |
678 val put_result = Proof.map_context o Result.put; |
678 |
679 |
679 fun timing_estimate elem = |
680 fun timing_estimate elem = |
680 let val trs = tl (Thy_Element.flat_element elem) |
681 let val trs = tl (Thy_Element.flat_element elem) |
681 in fold (fn tr => fn t => get_timing tr + t) trs Time.zeroTime end; |
682 in fold (fn tr => fn t => timing_of tr + t) trs Time.zeroTime end; |
682 |
683 |
683 fun future_proofs_enabled estimate st = |
684 fun future_proofs_enabled estimate st = |
684 (case try proof_of st of |
685 (case try proof_of st of |
685 NONE => false |
686 NONE => false |
686 | SOME state => |
687 | SOME state => |