src/Pure/tctical.ML
changeset 12851 e87496286934
parent 12262 11ff5f47df6e
child 13108 5fd62bcdff62
equal deleted inserted replaced
12850:d3c16021e999 12851:e87496286934
   131 (*passes no proofs through;  identity of ORELSE and APPEND*)
   131 (*passes no proofs through;  identity of ORELSE and APPEND*)
   132 fun no_tac st  = Seq.empty;
   132 fun no_tac st  = Seq.empty;
   133 
   133 
   134 
   134 
   135 (*Make a tactic deterministic by chopping the tail of the proof sequence*)
   135 (*Make a tactic deterministic by chopping the tail of the proof sequence*)
   136 fun DETERM tac st =  
   136 fun DETERM tac = Seq.DETERM tac;
   137       case Seq.pull (tac st) of
       
   138               None => Seq.empty
       
   139             | Some(x,_) => Seq.cons(x, Seq.empty);
       
   140 
       
   141 
   137 
   142 (*Conditional tactical: testfun controls which tactic to use next.
   138 (*Conditional tactical: testfun controls which tactic to use next.
   143   Beware: due to eager evaluation, both thentac and elsetac are evaluated.*)
   139   Beware: due to eager evaluation, both thentac and elsetac are evaluated.*)
   144 fun COND testfun thenf elsef = (fn prf =>
   140 fun COND testfun thenf elsef = (fn prf =>
   145     if testfun prf then  thenf prf   else  elsef prf);
   141     if testfun prf then  thenf prf   else  elsef prf);