PURE_REWRITE_TACRewrite.PURE_REWRITE_TAC : (thm list -> tactic)
Rewrites a goal with only the given list of rewrites.
PURE_REWRITE_TAC behaves in the same way as
REWRITE_TAC, but without the effects of the built-in
tautologies. The order in which the given theorems are applied is an
implementation matter and the user should not depend on any ordering.
For more information on rewriting strategies see
GEN_REWRITE_TAC.
PURE_REWRITE_TAC does not fail, but it can diverge in
certain situations; in such cases PURE_ONCE_REWRITE_TAC may
be used.
This tactic is useful when the built-in tautologies are not required as rewrite equations. It is sometimes useful in making more time-efficient replacements according to equations for which it is clear that no extra reduction via tautology will be needed. (The difference in efficiency is only apparent, however, in quite large examples.)
PURE_REWRITE_TAC advances goals but solves them less
frequently than REWRITE_TAC; to be precise,
PURE_REWRITE_TAC only solves goals which are rewritten to
"T" (i.e. TRUTH) without recourse to any other
tautologies.
It might be necessary, say for subsequent application of an induction
hypothesis, to resist reducing a term b = T to
b.
- PURE_REWRITE_TAC [] ([], Term `b = T`);
> val it = ([([], `b = T`)], fn)
: (term list * term) list * (thm list -> thm)
- REWRITE_TAC [] ([], Term `b = T`);
> val it = ([([], `b`)], fn)
: (term list * term) list * (thm list -> thm)
Rewrite.ASM_REWRITE_TAC,
Rewrite.FILTER_ASM_REWRITE_TAC,
Rewrite.FILTER_ONCE_ASM_REWRITE_TAC,
Rewrite.GEN_REWRITE_TAC,
Rewrite.ONCE_ASM_REWRITE_TAC,
Rewrite.ONCE_REWRITE_TAC,
Rewrite.PURE_ASM_REWRITE_TAC,
Rewrite.PURE_ONCE_ASM_REWRITE_TAC,
Rewrite.PURE_ONCE_REWRITE_TAC,
Rewrite.REWRITE_TAC,
Tactic.SUBST_TAC