Given a theorem list:
thl = [ |- a = b, |- b = c, |- c = a]
the tactic ONCE_REWRITE_TAC thl can be iterated as
required without diverging:
- ONCE_REWRITE_TAC thl ([], Term `P (a:'a) :bool`);
> val it = ([([], `P b`)], fn)
: (term list * term) list * (thm list -> thm)
- (ONCE_REWRITE_TAC thl THEN ONCE_REWRITE_TAC thl)
([], Term `P a`);
> val it = ([([], `P c`)], fn)
: (term list * term) list * (thm list -> thm)
- (NTAC 3 (ONCE_REWRITE_TAC thl)) ([], Term `P a`);
> val it = ([([], `P a`)], fn)
: (term list * term) list * (thm list -> thm)