130 research outputs found
Extending ACL2 with SMT Solvers
We present our extension of ACL2 with Satisfiability Modulo Theories (SMT)
solvers using ACL2's trusted clause processor mechanism. We are particularly
interested in the verification of physical systems including Analog and
Mixed-Signal (AMS) designs. ACL2 offers strong induction abilities for
reasoning about sequences and SMT complements deduction methods like ACL2 with
fast nonlinear arithmetic solving procedures. While SAT solvers have been
integrated into ACL2 in previous work, SMT methods raise new issues because of
their support for a broader range of domains including real numbers and
uninterpreted functions. This paper presents Smtlink, our clause processor for
integrating SMT solvers into ACL2. We describe key design and implementation
issues and describe our experience with its use.Comment: In Proceedings ACL2 2015, arXiv:1509.0552
Integrating Testing and Interactive Theorem Proving
Using an interactive theorem prover to reason about programs involves a
sequence of interactions where the user challenges the theorem prover with
conjectures. Invariably, many of the conjectures posed are in fact false, and
users often spend considerable effort examining the theorem prover's output
before realizing this. We present a synergistic integration of testing with
theorem proving, implemented in the ACL2 Sedan (ACL2s), for automatically
generating concrete counterexamples. Our method uses the full power of the
theorem prover and associated libraries to simplify conjectures; this
simplification can transform conjectures for which finding counterexamples is
hard into conjectures where finding counterexamples is trivial. In fact, our
approach even leads to better theorem proving, e.g. if testing shows that a
generalization step leads to a false conjecture, we force the theorem prover to
backtrack, allowing it to pursue more fruitful options that may yield a proof.
The focus of the paper is on the engineering of a synergistic integration of
testing with interactive theorem proving; this includes extending ACL2 with new
functionality that we expect to be of general interest. We also discuss our
experience in using ACL2s to teach freshman students how to reason about their
programs.Comment: In Proceedings ACL2 2011, arXiv:1110.447
Deep Learning Recommendations for the ACL2 Interactive Theorem Prover
Due to the difficulty of obtaining formal proofs, there is increasing interest in partially or completely automating proof search in interactive theorem provers. Despite being a theorem prover with an active community and plentiful corpus of 170,000+ theorems, no deep learning system currently exists to help automate theorem proving in ACL2. We have developed a machine learning system that generates recommendations to automatically complete proofs. We show that our system benefits from the copy mechanism introduced in the context of program repair. We make our system directly accessible from within ACL2 and use this interface to evaluate our system in a realistic theorem proving environment
Proving Calculational Proofs Correct
Teaching proofs is a crucial component of any undergraduate-level program
that covers formal reasoning. We have developed a calculational reasoning
format and refined it over several years of teaching a freshman-level course,
"Logic and Computation", to thousands of undergraduate students. In our
companion paper, we presented our calculational proof format, gave an overview
of the calculational proof checker (CPC) tool that we developed to help users
write and validate proofs, described some of the technical and implementation
details of CPC and provided several publicly available proofs written using our
format. In this paper, we dive deeper into the implementation details of CPC,
highlighting how proof validation works, which helps us argue that our proof
checking process is sound.Comment: In Proceedings ACL2-2023, arXiv:2311.0837
From Verified Models to Verifiable Code
Declarative specifications of digital systems often contain parts that can be automatically translated into executable code. Automated code generation may reduce or eliminate the kinds of errors typically introduced through manual code writing. For this approach to be effective, the generated code should be reasonably efficient and, more importantly, verifiable. This paper presents a prototype code generator for the Prototype Verification System (PVS) that translates a subset of PVS functional specifications into an intermediate language and subsequently to multiple target programming languages. Several case studies are presented to illustrate the tool's functionality. The generated code can be analyzed by software verification tools such as verification condition generators, static analyzers, and software model-checkers to increase the confidence that the generated code is correct
Formal proofs about rewriting using ACL2
We present an application of the ACL2 theorem prover to reason about rewrite systems
theory. We describe the formalization and representation aspects of our work using the firstorder,
quantifier-free logic of ACL2 and we sketch some of the main points of the proof effort.
First, we present a formalization of abstract reduction systems and then we show how this
abstraction can be instantiated to establish results about term rewriting. The main theorems
we mechanically proved are Newman’s lemma (for abstract reductions) and Knuth–Bendix
critical pair theorem (for term rewriting).Ministerio de Educación y Ciencia TIC2000-1368-CO3-0
- …