https://github.com/charlesaverill/volpic
Verifier of Lifted Pascal in Coq
https://github.com/charlesaverill/volpic
coq formal-verification metafont ocaml tex
Last synced: 3 months ago
JSON representation
Verifier of Lifted Pascal in Coq
- Host: GitHub
- URL: https://github.com/charlesaverill/volpic
- Owner: CharlesAverill
- License: agpl-3.0
- Created: 2023-12-23T06:16:23.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-09T21:30:22.000Z (9 months ago)
- Last Synced: 2025-01-31T07:51:28.227Z (3 months ago)
- Topics: coq, formal-verification, metafont, ocaml, tex
- Language: OpenEdge ABL
- Homepage:
- Size: 9.51 MB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VOLPIC

VOLPIC, or "Verifier Of Lifted Pascal In Coq," is a platform for lifting
[FPC](https://www.freepascal.org/)-compatible Pascal code into equivalent
[Gallina](https://coq.inria.fr/doc/v8.9/refman/language/gallina-specification-language.html)
code, which can then be verified in the [Coq Proof Assistant](https://coq.inria.fr/)
and [extracted](https://coq.inria.fr/doc/v8.9/refman/addendum/extraction.html)
into OCaml or Haskell code.Read the [2024 PLDI SRC extended abstract](https://seashell.charles.systems/publications/VOLPIC_SRC.pdf)
for an explanation of the project's purpose, structure, and accomplishments.## Usage
First, build a custom version of FPC based on [my branch](https://gitlab.com/CharlesAverill/source/-/tree/volpic_fpc)*.
Note, building the compiler requires an existing installation of FPC.
Check out the [official installation guide](https://wiki.freepascal.org/Installing_the_Free_Pascal_Compiler).
Building my custom FPC should look like:```bash
git clone https://gitlab.com/CharlesAverill/source/ fpc-source
cd fpc-source
git checkout volpic_fpc
cd compiler
make cycle -j8
```The build will have completed if three binaries `ppc1`, `ppc2`, and `ppc3` have been generated, as well as the final compiler build, denoted by the architecture you built for (ex. `ppcx64`)
To compile and run the lifter:
```bash
git clone https://github.com/CharlesAverill/volpic
cd volpic/vp_lifter
opam install . --deps-only
make
dune exec vp_lifter -- -fpc-path "/compiler/ppcx64" -fpc-args "-Fu/rtl/units/x86_64-linux/"
```\* These changes are [merged into FPC main](https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/567),
but due to the volatility of the parse tree dump format, I've
chosen to maintain my own fork of version 3.2.2.