29 research outputs found

    ACL2(ml):machine-learning for ACL2

    Get PDF
    ACL2(ml) is an extension for the Emacs interface of ACL2. This tool uses machine-learning to help the ACL2 user during the proof-development. Namely, ACL2(ml) gives hints to the user in the form of families of similar theorems, and generates auxiliary lemmas automatically. In this paper, we present the two most recent extensions for ACL2(ml). First, ACL2(ml) can suggest now families of similar function definitions, in addition to the families of similar theorems. Second, the lemma generation tool implemented in ACL2(ml) has been improved with a method to generate preconditions using the guard mechanism of ACL2. The user of ACL2(ml) can also invoke directly the latter extension to obtain preconditions for his own conjectures.Comment: In Proceedings ACL2 2014, arXiv:1406.123

    Proceedings 10th International Workshop on the ACL2 Theorem Prover and its Applications

    Get PDF
    This volume contains the proceedings of ACL2 2011, the International Workshop on the ACL2 Theorem Prover and its Applications. The workshop was held in Austin, Texas, USA, on November 3-4 2011. ACL2 2011 is the tenth in a series of workshops on the ACL2 Theorem Prover and its Applications. The workshop was co-located with the eleventh Conference on Formal Methods in Computer Aided Design (FMCAD'11). The ACL2 Workshop series provide a major technical forum for researchers to present and discuss improvements and extensions to the theorem prover, comparisons of ACL2 with other systems, and applications of ACL2 in formal verification or formalized mathematics. Workshops have been held at approxiamately 18 month intervals since 1999. ACL2 is the most recent incarnation of the Boyer-Moore family of theorem provers, for which, Robert Boyer, Matt Kaufmann and J Strother Moore received the 2005 ACM Software System Award. It is state-of-the-art automated reasoning system that has been successfully used in academia, government and industry for specification and verification of computing systems. More details can be found in the proceedings and on the workshop web page (www.cs.ru.nl/~julien/acl2-11/)

    Verification of Building Blocks for Asynchronous Circuits

    No full text
    Scalable formal verification constitutes an important challenge for the design of asynchronous circuits. Deadlock freedom is a property that is desired but hard to verify. It is an emergent property that has to be verified monolithically. We present our approach to using ACL2 to verify necessary and sufficient conditions over asynchronous delay-insensitive primitives. These conditions are used to derive SAT/SMT instances from circuits built out of these primitives. These SAT/SMT instances help in establishing absence of deadlocks. Our verification effort consists of building an executable checker in the ACL2 logic tailored for our purpose. We prove that this checker is correct. This approach enables us to prove ACL2 theorems involving defun-sk constructs and free variables fully automatically

    Proceedings Twelfth International Workshop on the ACL2 Theorem Prover and its Applications

    Full text link
    This volume contains the proceedings of the Twelfth International Workshop on the ACL2 Theorem Prover and Its Applications, ACL2'14, a two-day workshop held in Vienna, Austria, on July 12-13, 2014. ACL2 workshops occur at approximately 18-month intervals and provide a major technical forum for researchers to present and discuss improvements and extensions to the theorem prover, comparisons of ACL2 with other systems, and applications of ACL2 in formal verification. These proceedings include 13 peer reviewed technical papers. ACL2 is a state-of-the-art automated reasoning system that has been successfully applied in academia, government, and industry for specification and verification of computing systems and in teaching computer science courses. In 2005, Boyer, Kaufmann, and Moore were awarded the 2005 ACM Software System Award for their work in ACL2 and the other theorem provers in the Boyer-Moore family

    Proceedings Twelfth International Workshop on the ACL2 Theorem Prover and its Applications (Vienna, Austria, July 12-13, 2014)

    No full text
    This volume contains the proceedings of the Twelfth International Workshop on the ACL2 Theorem Prover and Its Applications, ACL2'14, a two-day workshop held in Vienna, Austria, on July 12-13, 2014. ACL2 workshops occur at approximately 18-month intervals and provide a major technical forum for researchers to present and discuss improvements and extensions to the theorem prover, comparisons of ACL2 with other systems, and applications of ACL2 in formal verification. ACL2 2014 is organized in cooperation with ACM SIGPLAN. ACL2 is a state-of-the-art automated reasoning system that has been successfully applied in academia, government, and industry for specification and verification of computing systems and in teaching computer science courses. In 2005, Boyer, Kaufmann, and Moore were awarded the 2005 ACM Software System Award for their work in ACL2 and the other theorem provers in the Boyer-Moore family. The proceedings of ACL2 2014 include 13 peer reviewed technical papers. Each submission was reviewed by at least three Program Committee members. Some papers received four and sometimes even five reviews. In addition to the technical papers, the workshop includes two invited talks, one by Mike Gordon, titled Linking ACL2 and HOL: past achievements and future prospects and one by Magnus Myreen, titled Machine-code verification: experience of tackling medium-sized case studies using 'decompilation into logic. The workshop also includes several Rump sessions discussing ongoing research and a panel discussion about low level code verification. We thank the members of the Program Committee and their sub-reviewers for providing careful and detailed reviews of all the papers. We thank the members of the Steering Committee for their help and guidance. We thank EasyChair for the use of its excellent conference management system. We thank EPTCS and the arXiv for publishing the workshop proceedings in an open-access format. We thank the FLoC organizing committee for their support. May 2014, Freek Verbeek and Julien Schmalt

    BIRD:A Binary Intermediate Representation for Formally Verified Decompilation of X86-64 Binaries

    No full text
    We present BIRD: A Binary Intermediate Representation for formally verified Decompilation of x86-64 binaries. BIRD is a generic language capable of representing a binary program at various stages of decompilation. Decompilation can consist of various small translation passes, each raising the abstraction level from assembly to source code. Where most decompilation frameworks do not guarantee that their translations preserve the program’s operational semantics or even provide any formal semantics, translation passes built on top of BIRD must prove their output to be bisimilar to their input. This work presents the mathematical machinery needed to define BIRD. Moreover, it provides two instantiations - one representing x86-64 assembly, and one where registers have been replaced by variables—as well as a formally proven correct translation pass between them. This translation serves both as a practical first step in trustworthy decompilation as well as a proof of concept that semantic preserving translations of low-level programs are feasible. The entire effort has been formalized in the Coq theorem prover. As such, it does not only provide a mathematical formalism but can also be exported as executable code to be used in a decompiler. We envision BIRD to be used to define provably correct binary-level analyses and program transformations.</p

    A Formal Semantics for P-Code

    No full text
    Decompilation is currently a widely used tool in reverse engineering and exploit detection in binaries. Ghidra, developed by the National Security Agency, is one of the most popular decompilers. It decompiles binaries to high P-Code, from which the final decompilation output in C code is generated. Ghidra allows users to work with P-Code, so users can analyze the intermediate representation directly. Several projects make use of this to build tools that perform verification, decompilation, taint analysis and emulation, to name a few. P-Code lacks a formal semantics, and its documentation is limited. It has a notoriously subtle semantics, which makes it hard to do any sort of analysis on P-Code. We show that P-Code, as-is, cannot be given an executable semantics. In this paper, we augment P-Code and define a complete, executable, formal semantics for it. This is done by looking at the documentation and the decompilation results of binaries with known source code. The development of a formal P-Code semantics uncovered several issues in Ghidra, P-Code, and the documentation. We show that these issues affect projects that rely on Ghidra and P-Code. We evaluate the executability of our semantics by building a P-Code interpreter that directly uses our semantics. Our work uncovered several issues in Ghidra and allows Ghidra users to better leverage P-Code.</p
    corecore