110 research outputs found
Efficient execution in an automated reasoning environment
We describe a method that permits the user of a mechanized mathematical logic to write
elegant logical definitions while allowing sound and efficient execution. In particular, the
features supporting this method allow the user to install, in a logically sound way, alternative
executable counterparts for logically defined functions. These alternatives are often much
more efficient than the logically equivalent terms they replace. These features have been
implemented in the ACL2 theorem prover, and we discuss several applications of the features
in ACL2.Ministerio de Educación y Ciencia TIN2004–0388
Enhancements to ACL2 in Versions 6.2, 6.3, and 6.4
We report on improvements to ACL2 made since the 2013 ACL2 Workshop.Comment: In Proceedings ACL2 2014, arXiv:1406.123
Development of a Translator from LLVM to ACL2
In our current work a library of formally verified software components is to
be created, and assembled, using the Low-Level Virtual Machine (LLVM)
intermediate form, into subsystems whose top-level assurance relies on the
assurance of the individual components. We have thus undertaken a project to
build a translator from LLVM to the applicative subset of Common Lisp accepted
by the ACL2 theorem prover. Our translator produces executable ACL2 formal
models, allowing us to both prove theorems about the translated models as well
as validate those models by testing. The resulting models can be translated and
certified without user intervention, even for code with loops, thanks to the
use of the def::ung macro which allows us to defer the question of termination.
Initial measurements of concrete execution for translated LLVM functions
indicate that performance is nearly 2.4 million LLVM instructions per second on
a typical laptop computer. In this paper we overview the translation process
and illustrate the translator's capabilities by way of a concrete example,
including both a functional correctness theorem as well as a validation test
for that example.Comment: In Proceedings ACL2 2014, arXiv:1406.123
ACL2 Verification of Simplicial Degeneracy Programs in the Kenzo System
Kenzo is a Computer Algebra system devoted to Algebraic
Topology, and written in the Common Lisp programming language. It is
a descendant of a previous system called EAT (for Effective Algebraic
Topology). Kenzo shows a much better performance than EAT due,
among other reasons, to a smart encoding of degeneracy lists as integers.
In this paper, we give a complete automated proof of the correctness of
this encoding used in Kenzo. The proof is carried out using ACL2, a system
for proving properties of programs written in (a subset of) Common
Lisp. The most interesting idea, from a methodological point of view, is
our use of EAT to build a model on which the verification is carried out.
Thus, EAT, which is logically simpler but less efficient than Kenzo, acts
as a mathematical model and then Kenzo is formally verified against it.Ministerio de Educación y Ciencia MTM2006-0651
Verified AIG Algorithms in ACL2
And-Inverter Graphs (AIGs) are a popular way to represent Boolean functions
(like circuits). AIG simplification algorithms can dramatically reduce an AIG,
and play an important role in modern hardware verification tools like
equivalence checkers. In practice, these tricky algorithms are implemented with
optimized C or C++ routines with no guarantee of correctness. Meanwhile, many
interactive theorem provers can now employ SAT or SMT solvers to automatically
solve finite goals, but no theorem prover makes use of these advanced,
AIG-based approaches.
We have developed two ways to represent AIGs within the ACL2 theorem prover.
One representation, Hons-AIGs, is especially convenient to use and reason
about. The other, Aignet, is the opposite; it is styled after modern AIG
packages and allows for efficient algorithms. We have implemented functions for
converting between these representations, random vector simulation, conversion
to CNF, etc., and developed reasoning strategies for verifying these
algorithms.
Aside from these contributions towards verifying AIG algorithms, this work
has an immediate, practical benefit for ACL2 users who are using GL to
bit-blast finite ACL2 theorems: they can now optionally trust an off-the-shelf
SAT solver to carry out the proof, instead of using the built-in BDD package.
Looking to the future, it is a first step toward implementing verified AIG
simplification algorithms that might further improve GL performance.Comment: In Proceedings ACL2 2013, arXiv:1304.712
A Certified Polynomial-Based Decision Procedure for Propositional Logic
In this paper we present the formalization of a decision procedure for Propositional Logic based on polynomial normalization. This formalization is suitable for its automatic verification in an applicative logic like Acl2. This application of polynomials has been developed by reusing a previous work on polynomial rings [19], showing that a proper formalization leads to a high level of reusability. Two checkers are defined: the first for contradiction formulas and the second for tautology formulas. The main theorems state that both checkers are sound and complete. Moreover, functions for generating models and counterexamples of formulas are provided. This facility plays also an important role in the main proofs. Finally, it is shown that this allows for a highly automated proof development
- …