LLM-Assisted Synthesis of High-Assurance C Programs
Authors/Creators
Description
SynVer is a novel, general purpose synthesizer for C programs with machine-checked proofs of their correctness using the Verified Software Toolchain framework. To do so, SynVer employs two Large Language Models: the first is used to generate candidate programs from a user-provided specification, and the second helps to automatically generate proofs of correctness in the Rocq proof assistant. SynVer ensures that generated programs adhere to a set of syntactic criteria that make candidate programs amenable to automated verification. To verify programs, SynVer uses a novel proof generation strategy which combines symbolic reasoning and a language model to handle obligations that the symbolic engine cannot handle solely.
This artifact is distributed as a zip file which includes source code. To use the Docker image, you will need to install the Docker Engine as described in the official Docker installation instructions. The image was created and this guide was written using Docker 27.3.1, but any contemporary Docker version is expected to work. On *nix systems, running sudo docker run hello-world is a quick way to check that Docker is installed and behaving correctly.
Once the artifact is unzipped, you can load the image directly from the included tar file:
docker load -i synver.tar.gz
and then run: docker run --rm -it --ulimit nofile=262144:262144 --entrypoint bash synver:2.0
You should be in the /synver directory. Run make to compile the Rocq files.
To run the benchmarks (listed under the directory specText/), run python3 synthesize.py <API-KEY> ,
where <API-KEY> is your personal openAPI key. The public repository is located here, which also contains the DockerFile.
Files
Files
(1.9 GB)
| Name | Size | Download all |
|---|---|---|
|
md5:bdf2bbfcfb83dfed5e3decc63eb05390
|
1.9 GB | Download |
Additional details
Additional titles
- Alternative title
- SynVer
Software
- Repository URL
- https://github.com/prasitaGit/SynVer.git
- Programming language
- Python , Coq
- Development Status
- Active