src/Pure/goal.ML
changeset 41677 fa0da47131d2
parent 41674 7da257539a8d
child 41683 73dde8006820
equal deleted inserted replaced
41676:4639f40b20c9 41677:fa0da47131d2
    21   val protect: thm -> thm
    21   val protect: thm -> thm
    22   val conclude: thm -> thm
    22   val conclude: thm -> thm
    23   val check_finished: Proof.context -> thm -> unit
    23   val check_finished: Proof.context -> thm -> unit
    24   val finish: Proof.context -> thm -> thm
    24   val finish: Proof.context -> thm -> thm
    25   val norm_result: thm -> thm
    25   val norm_result: thm -> thm
       
    26   val fork_name: string -> (unit -> 'a) -> 'a future
    26   val fork: (unit -> 'a) -> 'a future
    27   val fork: (unit -> 'a) -> 'a future
    27   val future_enabled: unit -> bool
    28   val future_enabled: unit -> bool
    28   val local_future_enabled: unit -> bool
    29   val local_future_enabled: unit -> bool
    29   val future_result: Proof.context -> thm future -> term -> thm
    30   val future_result: Proof.context -> thm future -> term -> thm
    30   val prove_internal: cterm list -> cterm -> (thm list -> tactic) -> thm
    31   val prove_internal: cterm list -> cterm -> (thm list -> tactic) -> thm
   104   #> Drule.zero_var_indexes;
   105   #> Drule.zero_var_indexes;
   105 
   106 
   106 
   107 
   107 (* parallel proofs *)
   108 (* parallel proofs *)
   108 
   109 
   109 fun fork e =
   110 fun fork_name name e =
   110   singleton (Future.forks {name = "Goal.fork", group = NONE, deps = [], pri = ~1})
   111   singleton (Future.forks {name = name, group = NONE, deps = [], pri = ~1})
   111     (fn () => Future.status e);
   112     (fn () => Future.status e);
       
   113 
       
   114 fun fork e = fork_name "Goal.fork" e;
       
   115 
   112 
   116 
   113 val parallel_proofs = Unsynchronized.ref 1;
   117 val parallel_proofs = Unsynchronized.ref 1;
   114 
   118 
   115 fun future_enabled () =
   119 fun future_enabled () =
   116   Multithreading.enabled () andalso Future.is_worker () andalso ! parallel_proofs >= 1;
   120   Multithreading.enabled () andalso Future.is_worker () andalso ! parallel_proofs >= 1;