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)

HOL  Kananaskis-14