Set
Example Forms: (add-match-free-override :once t) ; Try only the first binding of free variables when relieving hypotheses ; of any rule of class :rewrite, :linear, or :forward-chaining. (add-match-free-override :all (:rewrite foo) (:rewrite bar)) ; For rewrite rules foo and bar, try all bindings of free variables when ; relieving hypotheses. (add-match-free-override :clear) ; Restore :match-free to what was originally stored for each rule (either ; :all or :once).
As described elsewhere (see free-variables), a rewrite, linear, or forward-chaining rule may have free variables in its
hypotheses, and ACL2 can be directed either to try all bindings
(``
However, if a proof is going slowly, you may want to modify the behavior of
some such rules so that they use only the first match for free variables in a
hypothesis when relieving subsequent hypotheses, rather than backtracking and
trying additional matches as necessary. (But note:
General Forms: (add-match-free-override :clear) (add-match-free-override flg t) (add-match-free-override flg rune1 rune2 ... runek)
where
At the conclusion of this event, ACL2 prints out the list of all
This event only affects rules that exist at the time it is executed. Future rules are not affected by the override.
Note: This is an event! It does not print the usual event summary but nevertheless changes the ACL2 logical world and is so recorded. It uses the ACL2-defaults-table, and hence its effect is local to the book or encapsulate form in which it occurs.
Remarks
Lists of the
(free-var-runes :once (w state)) (free-var-runes :all (w state))
The form
(match-free-override (w state))
evaluates to a pair, whose car is a number used by ACL2 to
determine whether a rune is sufficiently old to be affected by the
override, and whose cdr is the list of runes whose behavior is
specified as