ACL2s Systems Programming

05/24/2022
by   Andrew T. Walter, et al.
0

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 systems programming," to distinguish it from ACL2 systems programming. We show how our methodology makes it possible to easily develop tools that interface with ACL2 and ACL2s, and describe our experience using it in our research.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/13/2023

Translating SUMO-K to Higher-Order Set Theory

We describe a translation from a fragment of SUMO (SUMO-K) into higher-o...
research
02/14/2020

Foundations of a live data exploration environment

Context: A growing amount of code is written to explore and analyze data...
research
05/18/2018

Proofs and Programs about Open Terms

Formal deductive systems are very common in computer science. They are u...
research
01/12/2021

Programming and Reasoning with Partial Observability

Computer programs are increasingly being deployed in partially-observabl...
research
03/02/2023

HasChor: Functional Choreographic Programming for All (Functional Pearl)

Choreographic programming is an emerging paradigm for programming distri...
research
09/15/2018

HDArray: Parallel Array Interface for Distributed Heterogeneous Devices

Heterogeneous clusters with nodes containing one or more accelerators, s...
research
05/06/2022

The Supervisionary proof-checking kernel (or: a work-in-progress towards proof generating code)

Interactive theorem proving software is typically designed around a trus...

Please sign up or login with your details

Forgot password? Click here to reset