NOTE4.html -- ACL2 Version 6.3

## NOTE4

Acl2 Version 1.4 Notes

    Major Section:  RELEASE-NOTES

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

Compilation is now supported inside the Acl2 loop. See comp and see set-compile-fns.

The default color is now part of the Acl2 world; see `:``doc` `default-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 `:``doc` `force-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.

The event for defining congruence relations is now `defcong` (formerly, `defcon`).

Patterns are now allowed in `:expand` hints. 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 `:measure` hints to `defun`, so that the the same rules apply to these terms that apply to terms in `defthm` events. In particular, in `:measure` hints `mv` 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.

      (equal
       (variable-update var1
                        val1 (variable-update var2 val2 vs))
       (variable-update var2
                        val2 (variable-update var1 val1 vs)))

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 `:by` hints or the top-level goals from an induction proof, are known to Acl2 to be tautologies.

The `ld-query-control-alist` may now be used to suppress printing of queries; see ld-query-control-alist.

Warning messages are printed with short summary strings, for example the string ```Use`'' in the following message.

      Acl2 Warning [Use] in DEFTHM:  It is unusual to :USE an enabled
      :REWRITE or :DEFINITION rule, so you may want to consider
      disabling FOO.

At the end of the event, just before the time is printed, all such summary strings are printed out.

The keyword command `:u` has been introduced as an abbreviation for `:``ubt` `:``max`. Printing of query messages is suppressed by `:u`.

The keyword `:cheat` is no longer supported by any event form.

Some irrelevant formals are detected; see irrelevant-formals.

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.

The following Common Lisp functions have been added to Acl2: `alpha-char-p`, `upper-case-p`, `lower-case-p`, `char-upcase`, `char-downcase`, `string-downcase`, `string-upcase`, and `digit-charp-p`.

A documentation section called `proof-checker` has been added for the interactive facility, whose documentation has been slightly improved. See in particular the documentation for proof-checker, `verify`, and macro-command.

A number of events that had been inadvertently disallowed in books are now permitted in books. These are: `defcong`, `defcor`, `defequiv`, `defrefinement`, `defstub`, and `verify-termination`.