actions available when rewriting lambda objects
As explained in rewrite-lambda-object the rewriter can be
applied to eligible occurrences of quoted
The user can specify one of three actions by manipulating the enabled
status of the rune
The actions available on the body of an eligible
Since the action is determined by the enabled status of runes, it can be
specified by the user by appropriate global in-theory events or by
goal-specific, local
The three macros are rewrite-lambda-objects-theory, syntactically-clean-lambda-objects-theory, and hands-off-lambda-objects-theory, with the obvious meanings. For example,
(e/d ((:executable-counterpart rewrite-lambda-modep)) ; enable ``e'' ((:definition rewrite-lambda-modep))) ; disable ``d''
Since e and d are both initially enabled in ACL2, eligible
For example, to make the prover just syntactically clean eligible
("Subgoal 3" :in-theory (syntactically-clean-lambda-objects-theory))
Note however that if you also need to adjust the status of some other rune
in that same hint you must create a theory expression that includes the
appropriate use of e and d. For example, to also enable
("Subgoal 3" :in-theory (e/d ((:executable-counterpart rewrite-lambda-modep) LEMMA1) ((:definition rewrite-lambda-modep) LEMMA2)))
For details on what syntactic cleaning is and why it is sometimes useful, see rewriting-versus-cleaning-up-lambda-objects.