NOTE4

Once again ld only takes one required argument, as the bind-flg has
been deleted.

Three commands have been added in the spirit of :pe. :Pe! is
similar to :pe but it prints all events with the given name, rather
than just the most recent. The command :pf prints the corollary
formula corresponding to a name or rune. The command :pl (print
lemmas) prints rules whose top function symbol is the given name.
See pe!, see pf, and see pl.

Book naming conventions have been changed somewhat. The
once-required .lisp extension is now prohibited! Directories are
supported, including a notion of ``connected book directory''.
See book-name. Also, the second argument of certify-book is
now optional, defaulting to 0.

The default color is now part of the Acl2 world;
see :docdefault-color. Ld-color is no longer an ld special.
Instead, colors are events; see the documentation for red,
pink, blue, and gold.

A table exists for controlling whether Acl2 prints comments when it
forces hypotheses of rules; see :docforce-table. Also, it is now
possible to turn off the forcing of assumptions by disabling the
definition of force; see force.

The event defconstant is no longer supported, but a very similar
event, defconst, has been provided in its place. See defconst.

Patterns are now allowed in :expandhints. See the documentation
for :expand inside the documentation for hints.

We have improved the way we report rules used by the simplifier.
All runes of the same type are reported together in the running
commentary associated with each goal, so that for example,
executable counterparts are listed separately from definitions, and
rewrite rules are listed separately from linear rules. The
preprocessor now mentions ``simple'' rules; see simple.

The mechanism for printing warning messages for new rewrite rules,
related to subsumption, now avoids worrying about nonrecursive
function symbols when those symbols are disabled. These messages
have also been eliminated for the case where the old rule is a
:definition rule.

Backquote has been modified so that it can usually provide
predictable results when used on the left side of a rewrite rule.

Time statistics are now printed even when an event fails.

The Acl2 trace package has been modified so that it prints using the
values of the Lisp globals *print-level* and *print-length*
(respectively).

Table has been modified so that the :clear option lets you replace
the entire table with one that satisfies the val and key guards (if
any); see table.

We have relaxed the translation rules for :measurehints to defun,
so that the the same rules apply to these terms that apply to terms
in defthmevents. In particular, in :measurehintsmv is treated
just like list, and state receives no special handling.

The loop-stopper test has been relaxed. The old test required that
every new argument be strictly less than the corresponding old
argument in a certain term-order. The new test uses a lexicographic
order on term lists instead. For example, consider the following
rewrite rule.

This rule is permutative. Now imagine that we want to apply this
rule to the term

(variable-update u y (variable-update u x vs)).

Since the actual corresponding to both var1 and var2 is u, which
is not strictly less than itself in the term-order, this rule would
fail to be applied in this situation when using the old test.
However, since the pair (u x) is lexicographically less than the
pair (u y) with respect to our term-order, the rule is in fact
applied using our new test.

Messages about events now contain a space after certain left
parentheses, in order to assist emacs users. For example, the event

(defthm abc (equal (+ (len x) 0) (len x)))

leads to a summary containing the line

Form: ( DEFTHM ABC ...)

and hence, if you search backwards for ``(defthm abc'', you won't
stop at this message.

More tautology checking is done during a proof; in fact, no goal
printed to the screen, except for the results of applying :use and
:byhints or the top-level goals from an induction proof, are known
to Acl2 to be tautologies.

A bug in the application of metafunctions was fixed: now if the
output of a metafunction is equal to its input, the application of
the metafunction is deemed unsuccessful and the next metafunction is
tried.

An example has been added to the documentation for equivalence
to suggest how to make use of equivalence relations in rewriting.