src/Pure/Isar/toplevel.ML
changeset 69877 45b2e784350a
parent 69719 331ef175a112
child 69878 ccc8e4c99520
equal deleted inserted replaced
69876:b49bd228ac8a 69877:45b2e784350a
    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 =>