NOTE-2-8

The Version_2.8 notes are divided into the indicated subtopics. Here we give
only a brief summary of just a few of the major new features and changes that
seem most likely to impact existing proofs. Not included in this brief
summary, but included in the subtopics, are descriptions of many improvements
(including bug fixes and new functionality) that should not get in the way of
existing proof efforts. In the description below we also omit discussion of
changes that will become clear by way of error messages if they affect you.

+ WARNING: You may find that control-d (in emacs,
control-c control-d) can throw you completely out of Lisp where it had
not formerly done so.

+ ACL2 now starts up inside the ACL2 loop -- that is, (LP) is
executed automatically -- when built on CLISP or Allegro CL. This was
already the case for GCL and CMUCL, and it still is not true for Lispworks.

+ See note-2-8-ordinals for a discussion of a significant change in ordinal
represtation, and in particular, for how to preserve existing proofs that
depend on the previous ordinal representation.

+ Macros mbe (``must be equal''), mbt (``must be true''), and
defexec have been introduced, which allow the user to attach
alternate executable definitions to functions.

+ The user can now control multiple matching for free variables in hypotheses
for :forward-chaining rules, as has already been supported for
:rewrite and :linear rules.

+ It is no longer necessary to specify (set-match-free-error nil) in
order to avoid errors when a rule with free variables in its hypotheses is
missing the :match-free field.

+ The form (break-on-error) causes, at least for most Lisps, entry into
the Lisp debugger whenever ACL2 causes an error.

+ The pstack (`process [prover] stack'') mechanism, formerly denoted
checkpoints, has been improved. One of these improvements is to show
actual parameters with (pstack t) rather than formals.

+ The defstobj event is now allowed to take an :inline argument,
which can speed up execution.

+ Macro cw-gstack no longer takes arguments for the gstack or
state. To print terms in full rather than abbreviated:
(cw-gstack :evisc-tuple nil).

+ The include-book event now has an additional (optional) keyword,
:dir. In particular, (include-book "foo/bar" :dir :system) will
include the indicated book after prepending the path of the built-in
books/ directory. You will probably not find :dir :system to be
useful if you move the executable image or distributed books;
see include-book, in particular its ``soundness warning''.

+ Small changes have been made to heuristics for controlling rewriting during
proofs by induction and in handling certain ``weak'' compound-recognizer
rules.

+ 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 (equiv x y), where equiv is a known equivalence relation
(see equivalence).

+ We have modified how the ACL2 simplifier handles the application of a
defined function symbol to constant arguments, by avoiding the introduction
of hide when evaluation fails if the term can be rewritten.

+ 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.

+ Linear arithmetic now uses the conclusions of forward-chaining rules,
and type-set now uses a small amount of linear reasoning when deciding
inequalities.

o Some of the changes in rules, definitions, and constants
(see note-2-8-rules):