src/Pure/goal.ML
changeset 32061 11f8ee55662d
parent 32058 c76fd93b3b99
child 32062 457f5bcd3d76
equal deleted inserted replaced
32060:b54cb3acbbe4 32061:11f8ee55662d
     4 Goals in tactical theorem proving.
     4 Goals in tactical theorem proving.
     5 *)
     5 *)
     6 
     6 
     7 signature BASIC_GOAL =
     7 signature BASIC_GOAL =
     8 sig
     8 sig
     9   val parallel_proofs: bool ref
     9   val parallel_proofs: int ref
    10   val SELECT_GOAL: tactic -> int -> tactic
    10   val SELECT_GOAL: tactic -> int -> tactic
    11   val CONJUNCTS: tactic -> int -> tactic
    11   val CONJUNCTS: tactic -> int -> tactic
    12   val PRECISE_CONJUNCTS: int -> tactic -> int -> tactic
    12   val PRECISE_CONJUNCTS: int -> tactic -> int -> tactic
    13 end;
    13 end;
    14 
    14 
    19   val protect: thm -> thm
    19   val protect: thm -> thm
    20   val conclude: thm -> thm
    20   val conclude: thm -> thm
    21   val finish: thm -> thm
    21   val finish: thm -> thm
    22   val norm_result: thm -> thm
    22   val norm_result: thm -> thm
    23   val future_enabled: unit -> bool
    23   val future_enabled: unit -> bool
       
    24   val local_future_enabled: unit -> bool
    24   val future_result: Proof.context -> thm future -> term -> thm
    25   val future_result: Proof.context -> thm future -> term -> thm
    25   val prove_internal: cterm list -> cterm -> (thm list -> tactic) -> thm
    26   val prove_internal: cterm list -> cterm -> (thm list -> tactic) -> thm
    26   val prove_multi: Proof.context -> string list -> term list -> term list ->
    27   val prove_multi: Proof.context -> string list -> term list -> term list ->
    27     ({prems: thm list, context: Proof.context} -> tactic) -> thm list
    28     ({prems: thm list, context: Proof.context} -> tactic) -> thm list
    28   val prove_future: Proof.context -> string list -> term list -> term ->
    29   val prove_future: Proof.context -> string list -> term list -> term ->
    93   #> Drule.zero_var_indexes;
    94   #> Drule.zero_var_indexes;
    94 
    95 
    95 
    96 
    96 (* future_enabled *)
    97 (* future_enabled *)
    97 
    98 
    98 val parallel_proofs = ref true;
    99 val parallel_proofs = ref 1;
    99 
   100 
   100 fun future_enabled () =
   101 fun future_enabled () =
   101   Future.enabled () andalso ! parallel_proofs andalso Future.is_worker ();
   102   Future.enabled () andalso Future.is_worker () andalso ! parallel_proofs >= 1;
       
   103 
       
   104 fun local_future_enabled () = future_enabled () andalso ! parallel_proofs >= 2;
   102 
   105 
   103 
   106 
   104 (* future_result *)
   107 (* future_result *)
   105 
   108 
   106 fun future_result ctxt result prop =
   109 fun future_result ctxt result prop =