\DOC pure_ss \TYPE {pureSimps.pure_ss : simpset} \SYNOPSIS A simpset containing only the conditional rewrite generator and no additional rewrites. \KEYWORDS simplification. \LIBRARY pureSimps \DESCRIBE This simpset sits at the root of the simpset hierarchy. It contains no rewrites, congruences, conversions or decision procedures. Instead it contains just the code which converts theorems passed to it as context into (possibly conditional) rewrites. Simplification with {pure_ss} is analogous to rewriting with {PURE_REWRITE_TAC} and others. The only difference is that the theorems passed to {SIMP_TAC pure_ss} are interpreted as conditional rewrite rules. Though the {pure_ss} can't take advantage of extra contextual information garnered through congruences, it can still discharge side conditions. (This is demonstrated in the examples below.) \FAILURE Can't fail, as it is not a functional value. \EXAMPLE The theorem {ADD_EQ_SUB} from {arithmeticTheory} states that { |- !m n p. n <= p ==> ((m + n = p) = m = p - n) } We can use this result to make progress with the following goal in conjunction with {pure_ss} in a way that no form of {REWRITE_TAC} could: { - ASM_SIMP_TAC pure_ss [ADD_EQ_SUB] ([--`x <= y`--], --`z + x = y`--); > val it = ([([`x <= y`], `z = y - x`)], fn) : tactic_result } This example illustrates the way in which the simplifier can do conditional rewriting. However, the lack of the congruence for implications, means that using {pure_ss} will not be able to discharge the side condition in the goal below: { - SIMP_TAC pure_ss [ADD_EQ_SUB] ([], --`x <= y ==> (z + x = y)`--); > val it = ([([], `x <= y ==> (z + x = y)`)], fn) : tactic_result } As {bool_ss} has the relevant congruence included, it does make progress in the same situation: { - SIMP_TAC bool_ss [ADD_EQ_SUB] ([], --`x <= y ==> (z + x = y)`--); > val it = ([([], `x <= y ==> (z = y - x)`)], fn) : tactic_result } \USES The {pure_ss} simpset might be used in the most delicate simplification situations, or, mimicking the way it is used within the distribution itself, as a basis for the construction of other simpsets. \COMMENTS There is also a {pureSimps.PURE_ss} {ssdata} value. Its usefulness is questionable. \SEEALSO boolSimps.bool_ss, Rewrite.PURE_REWRITE_TAC, simpLib.SIMP_CONV, simpLib.SIMP_TAC. \ENDDOC