equal
deleted
inserted
replaced
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); |