# Python Embedding in ACL2s

Authors: Samuel Xifaras and Andrew Walter

Prepared for the 2025 ACL2 Workshop


### About
This directory contains the beginning of an embedding of the Python type system in ACL2s. It supports
several of the most commonly annotated types in Python, and we define several functions that can be used
to query and extend the embedding. We define the API in Common Lisp with the ACL2s Systems Programming 
framework of Walter et al. to facilitate easy integration with other systems.


### Building
This guide assumes you are familiar with the process of building ACL2/ACL2s and you have a working `acl2` executable. 
A working `quicklisp` installation is also a prerequisite: [https://www.quicklisp.org/beta/](https://www.quicklisp.org/beta/).

Make sure your `ACL2_SYSTEM_BOOKS` environment variable is set to the `books` subdirectory of this repository.
Then, run `make`. It may complain with an error related to certdeps. If so, it should be directing you to run
`make build/Makefile-features` in the `books` directory. Do so, and then run `make` here again.


### Example
The `example.lsp` file contains example usage. Once you have certified this book, you can run the example with 
`acl2 < example.lsp`. This will print lots of data generated by enumerators. 
