To make it practical to mechanize proofs in programming language metatheory, several capabilities are required of the theorem proving framework. One must be able to represent and ...
We have implemented parallelism primitives that permit an ACL2 programmer to parallelize execution of ACL2 functions. We (1) introduce logical definitions for these primitives, (...
A verifying compiler is one that emits both object code and a proof of correspondence between object and source code.1 We report the use of ACL2 in building a verifying compiler f...
Several users have had problems using equivalence-based rewriting in ACL2 because the ACL2 rewriter caches its results. We describe this problem in some detail, together with a pa...
We describe a new procedure for verifying ACL2 properties about finite state machines (FSMs) using satisfiability (SAT) solving. We present an algorithm for converting ACL2 conj...
Biologists studying the evolutionary relationships between organisms use software packages to solve the computational problems they encounter. Several of these problems involve th...
Support for congruence-based rewriting is built into ACL2. This capability allows ACL2 to treat certain predicate relations ”just like equality” under appropriate conditions a...
We describe an embedding of the ACL2 logic into higherorder logic. An implementation of this embedding allows ACL2 to be used as an oracle for higher-order logic provers. Categori...
Michael J. C. Gordon, Warren A. Hunt Jr., Matt Kau...