ACL2s Systems Programming
Andrew T. Walter, Panagiotis Manolios

TL;DR
This paper introduces a methodology for systems programming that unifies ACL2, ACL2s, and Common Lisp, enabling flexible tool development while maintaining soundness for formal verification tasks.
Contribution
It presents a novel methodology and library for accessing ACL2 and ACL2s from Common Lisp, facilitating tool development and integration in formal methods.
Findings
Enables unified access to ACL2, ACL2s, and Common Lisp functionalities.
Supports development of tools interfacing with ACL2 and ACL2s.
Applied successfully in formal verification, education, and theorem proving projects.
Abstract
ACL2 provides a systems programming capability that allows one to write code that uses and extends ACL2 inside of ACL2. However, for soundness reasons, ACL2 bars the unrestricted use of certain kinds of programming constructs, like destructive updates, higher-order functions, eval, and arbitrary macros. We devised a methodology for writing code in Common Lisp that allows one to access ACL2, ACL2s, and Common Lisp functionality in a unified way. We arrived at this methodology in the process of developing the ACL2 Sedan (ACL2s) and using it as a key component in formal-methods-enabled projects relating to gamified verification, education, proof checking, interfacing with external theorem provers and security. The methodology includes a library for performing ACL2 queries from Common Lisp, as well as guidelines and utilities that help address common needs. We call this methodology "ACL2s…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
