Release notes for the ACL2 Community Books for ACL2 8.5
The following is a brief summary of changes made to the community-books between the releases of ACL2 8.4 and 8.5.
See also note-8-5 for the changes made to ACL2 itself. For additional details, you may also see the raw commit log.
A new library for abstract algebra has been started
(
A preliminary new library (
A new library (
A new library (
A new tool,
A new library (
A new utility has been added for processing dependency information.
Syntheto is a surface language for ACL2 and APT,
aimed at a wider range of users than typical ACL2 and APT experts.
Our implementation of Syntheto consists of
a front-end (in a separate repository)
and a back-end (in
Some preliminary parsing generation tools have been added.
Def-typed-acl2-array now generates additional rules.
Other rules have been added/improved.
Rules have been added and improved.
A book about rassoc-equal has been started.
Modularity has been improved.
Now there are three:
The old
Furthermore, these books were included non-locally so that their rules
were added when
Finally, the new
A new transformation,
A new transformation,
A new transformation,
A new transformation,
A new transformation,
A new transformation,
The apt::simplify transformation now does a better job of preserving mbt calls.
The apt::restrict transformation
now accepts
The apt::isodata transformation now generates new-to-old and old-to-new theorems of a more general and useful form.
Small improvements have been made to
A new utility,
A new utility,
Other improvements have been made to supporting utilities and to make proofs more robust.
The amount of extra material included along with arithmetic books has been reduced.
Many new rules have been added, and many rules have been improved.
A new book on evenp has been added.
The guard of the function
A new book,
Many improvements, optimizations, additions, and fixes have been made to Axe.
In the Tactic Prover, before stp is called, rewriting is
done to replace constructs unhandled by either STP or the translation to
STP (for example, shift operations). Also, the tactic
Various rule lists used by Axe have been improved.
Handling of assumptions and
New options (controlling XOR handling, memoization, and hit counting) have been added to some tools.
Boolean reasoning has been improved.
The generated rewriters have been improved (better handling of
Rewriting of calls of
A new tool,
Debugging of failed proofs has been improved.
Pruning has been improved.
Counterexample handling has been improved (check that values have the expected types, allow an error to be returned when fixing up a counterexample, show that the node numbers in a counterexample are bounded).
Dependence on non-lightweight libraries has been reduced.
Some runtime checks have been dropped, after proving they never fail.
More tests have been added.
Test case creation has been improved.
The events generated by some tools are now local by
default (prevents storing huge DAGs in
Printing, documentation, memoization, and the Axe Evaluators have been improved.
Dependence on skip-proofs has been reduced (more code in
Some invariant-risk is now avoided.
Generated Axe provers now support
A new code query tool can determine whether terms (over bit-vectors and arrays) are satisfiable and produce satisfying instances.
The Axe Equivalence Checker has been added.
A tool to unroll a function by a constant factor has been added.
An alternative implementation of the Axe Rewriter has been added.
The lifters / unrollers have been improved in various ways. Method signatures and output types are now inferred. Results of lifting are made local by default, to keep certificates small. XORs are no longer normalized by default.
A very preliminary lifter for simple x86 code with loops has been added.
Additional options (e.g., for pruning branches) have been added to the x86 unroller.
An Axe proof of an x86 binary population-count program has been added.
Executable specifications of Bech32 and Bech32 address encoding have been added.
Rules have been added and library organization has been improved.
Definitions have been simplified.
Many rules have been added, improved, simplified, or renamed.
Library organization has been improved and dependencies reduced.
Rules for splitting shifts into cases have been improved.
New rules have been added, and the library's organization has been improved.
Material on bit-vector packing has been added.
New
ATC has been extended to cover a larger subset of C. See the user documentation of ATC for more details.
A formal specification of the Salsa20 hash function has been added.
Several theorems have been added.
A refinement of pfield-squarep has been added.
The make-event-terse utility has been extended to handle the recently added new kind of ACL2 comment output.
Various simplifications have been made, including removing checks for bad channels (after proving that they cannot occur).
Rules have been added or improved dealing with
Utilities have been added to read objects from a file (using
guard-verified
A new macro fty::defresult has been added to define flat unions of a fixtype of errors with any fixtype that is disjoint from those errors. This is accompanied by b* binders to check and propagate errors.
Several fixtypes have been added, under
Consing has been reduced in recognizers for
This library has undergone some improvements.
An option has been added to check that no AIJ types are referenced by the generated Java code, i.e. that the generated Java code exclusively manipulates Java primitive values and arrays. If that is the case, the environment class is not generated, and the main class is much smaller than without this option.
If a Java package name is specified, the generated Java code is saved in a subdirectory of the output directory that corresponds to the typical Java convention.
The formalization of class tables has been improved.
The modify macro has been redone (for clarity and better checking).
Work has been done to standardize normal forms and enforce abstractions better.
New rules have been added and duplicate rules removed.
Organization has been improved.
More functions are now in the JVM package.
The computation of default values of floats and doubles has been simplified.
The handling of LDC and related instructions in .class file has been improved. Now all of the constants are tagged, so we no longer require floats to be represented differently than ints.
Work has been started to define an accurate floating point model to support the JVM model (still in progress). This formalizes notions of representable numbers, floating point data (including encoding and decoding of bit-vectors), normal and subnormal numbers, infinities, NaNs, and floating point comparisons. Some proofs connect these notions to similar notions in the RTL library.
Special handling of mbt by directed-untranslate has been removed, as it is no longer necessary or appropriate because of the change to the apt::simplify transformation for mbt noted above.
The new utilities checkpoint-list and checkpoint-list-pretty and related (perhaps less useful) new utilities checkpoint-info-list and show-checkpoint-list provide programmatic interfaces to key checkpoint information.
The new utility book-runes-alist returns an alist associating book full pathnames with a list of the runes introduced .
New or improved rules deal with
Printing done by
A new utility,
A new tool,
Utilities for making lists of symbols have been added.
Organization has been improved and dependencies reduced.
New books have been added about
Utilities have been added or improved about
A new tool,
A draft tool,
The new utility
The utility
Utilities have been added for manipulating conjuncts and disjuncts.
The utility
The Linter has been improved (to look for contradictory guards, to look for hypotheses that are unneeded or stronger than necessary, and to suggest generalizations). Various issues found by the Linter in Community Books have been fixed.
The :ubi tool has been improved. It now sees through
Rules have been added, improved, and given better names.
Error messages in the Mach-O parser have been improved.
New books have been added about
Many rules have been added and improved.
Library organization has been improved.
Dependencies have been reduced to avoid name clashes.
Rules have been added, improved, and renamed.
The behavior of the inversion function on 0 has been changed.
This library has undergone several improvements, including the addition of some initial support for verifying properties of PFCS instances.
The quicklisp library is now ignored for regressions of ACL2 built on LispWorks, due to an asdf version incompatibility with the asdf.lisp provided by LispWorks Version 8.0. That problem may become a problem for future versions of other host Lisps, as they too update their asdf versions. Perhaps this will be fixed by someone in the ACL2 community; see GitHub Issue #1332.
The quicklisp libraries have been updated to recent versions (as of 7/7/2022; previous versions were as of 2020). This fixes library version errors with Mac OS X on M1 machines and with recent versions of Ubuntu (e.g., 22.04).
Improvements have been made to
A verified NAND gadget generator has been added.
A verified range-check gadget generator has been added.
Documentation has been added.
A fixer maybe-string-fix for maybe-stringp has been added.
The names of several functions, and associated theorems, have been made more uniform and descriptive.
Some theorems about fsublis-var and fsublis-var-lst have been added.
A fixer for pseudo-event-formp has been added.
A book of theorems about symbol-alistp has been added.
A definition of alists from strings to symbols has been added.
The defret utility could malfunction when including an uncertified book. This has been fixed by tweaking a defsection utility to set the ``most recent function'' non-locally. This fixes GitHub Issue #1302.
defmapping, along with its wrappers
defiso, definj, and defsurj,
has been extended with a
Defines has been improved to suppress return-value theorems in
New books have been added about reversing, string length, and checking whether a string ends with some other string.
New lightweight utilities have been added for parsing characters as digits.
Utilities have been added to reconstruct
Some theorem names have been improved, and new rules have been added.
Some utilities have had their correctness verified.
A new utility,
When the tool prove$ is interrupted (with
New keyword options
Evaluation of
Fixed with-supporters to work when including an uncertified book.
Rules have been added and library organization improved.
Books about
Utilities for manipulating conjuncts have been improved.
The dependencies of
The dependency of CPUID features on the x86 state has been removed. Now the CPUID features are arbitrary but fixed in the model. See the documentation in the x86isa::cpuid topic for details.
Support has been added for the MOVD and MOVQ instruction variants that move data from/to the XMM registers.
Some functions have been put into
Dependencies have been reduced.
This library now contains a complete formalization of generic Yul, and a partial formalization of the EVM dialect of Yul. It also contains formalizations and correctness proofs of some of the Yul transformations performed in the Solidity compiler.
This library has been extended with several theorems and with a formalization of several gadgets.
Proofs of various R1CS gadgets / gadget generators have been added.
A new tool, zcash::verify-zcash-r1cs, has been added (a specialization of r1cs::verify-r1cs.
Documentation has been added.
The default `make' target for certifying the community-books, which is still `basic', now certifies slightly fewer books so that it does not depend on Quicklisp.
As discussed in topic note-8-5, essentially all support for
building ACL2 without the hons-enabled features has been removed.
The build system has been similarly updated, in particular by eliminating
the
The
This behavior is now the same as using
To turn off the use of useless runes, you can set that environment variable to the empty string, e.g.:
ACL2_USELESS_RUNES= cert.pl ..
The above change does not apply to ACL2(r).
In ACL2(r), the useless runes files that were precomputed for ACL2
could cause certification errors if someone tried to use them,
using either certify-book or
The precomputed useless-runes files continue to be ignored by
ACL2(p), so the previous code that ignored useless runes when using
The
Now
When you invoke the
ACL2_INHIBIT_DEPS_LSP=1 make -j12 regression
The roles of green and bold green in build output have been swapped. Now, for books that take 20 seconds or less, the bold green books are the slower books (10-20s) and the regular green books are the faster books (0-10s). The rationale is that bold is more prominent and we want to draw attention to slower books. This also matches how bold works for yellow and red.
The following warning is now printed when broken xdoc links are
encountered: ``Please note the following broken topic link name[s]: ...''.
This warning is printed to the terminal after the topic is printed by
For the utility make-flag, the previous release (see note-8-4-books) deprecated the use of a list of cons pairs
The book