ACL2 Version 2.8 Notes on Changes in Proof Engine
ACL2 now prevents certain rewriting loops; see rewrite-stack-limit.
During the computation of constraints for functional instantiation,
A change has been made in heuristics for controlling rewriting during proofs by induction. Formerly, during induction proofs, ACL2 suppressed rewriting of certain ``induction hypothesis'' terms, and forced expansion of certain ``induction conclusion'' terms, until rewriting had stabilized. This meddling with the rewriter is still turned off when rewriting has stabilized, but it is now turned off earlier once an ancestor has been through the rewriter and the current goal is free of ``induction conclusion'' terms. Thanks to Dave Greve and Matt Wilding for providing an example and associated analysis that led us to look for a heuristic modification.
A change has been made in the heuristics for handling certain ``weak''
compound-recognizer rules when building contexts. Those who want to
dig deeply into this change are welcome to look at the code following the call
of
The handling of free variables in a hypothesis of a rewrite rule
(see free-variables) has been improved in the case that the hypothesis
is of the form
A very minor change has been made to the rewriter in the case that an
equality appears on the left-hand side of a
We have modified how the ACL2 simplifier handles the application of a
defined function symbol to constant arguments in certain cases, which we now
describe. As before, ACL2 attempts to simplify such a function application by
evaluation, provided the
The generation of "Goal" for recursive (and mutually-recursive) definitions now uses the subsumption/replacement limitation (default 500). See case-split-limitations.
Default hints now apply to hints given in definitions, not just theorems. See default-hints.
Thanks to Robert Krug for implementing the following two improvements involving linear arithmetic reasoning: linear arithmetic now uses the conclusions of forward-chaining rules, and type-set now uses a small amount of linear reasoning when deciding inequalities.