A special data structure that RP-Rewriter meta rules may return to control rewriting of returned terms.
When a term us returned from a meta rule, it appears as completely new to the rewriter and by default, it will be parsed completely and be rewritten for a second time. This can cause performance issues with big terms. To solve this problem, we use a special structure called dont-rw that meta functions may generate and return to control which subterms should be rewritten and which should not.
The dont-rw structure has the same cons skeleton as the term itself such that it is traversed (car'ed and cdr'ed) the same way as the term. Whenever dont-rw structure becomes an atom and non-nil, the rewriting of corresponding term stops. For example, assume that a meta rule returns the following term and we would like to avoid rewriting all the instances of g, then the following dont-rw structure would enable that.
(f1 (f2 (g a b) c) (f3 d (g x y)))
(nil (nil t t) (nil t t))