CertiCoq is a compiler for Gallina, the specification language of the Coq proof assistant. CertiCoq targets Clight, a subset of the C language that can be compiled with any C compiler, including the CompCert verified compiler.
Large parts of the CertiCoq compiler have been verified whereas others are in the process of being verified.
The CertiCoq Wiki has instructions for using the CertiCoq plugin to compile Gallina to C and interfacing with the generated C code.
You can also find some demos here and here.
See INSTALL.md for installation instructions.
Andrew Appel, Yannick Forster, Anvay Grover, Joomy Korkut, John Li, Zoe Paraskevopoulou, and Matthieu Sozeau.
Abhishek Anand, Greg Morrisett, Randy Pollack, Olivier Savary Belanger, Matthew Weaver
CertiCoq is open source and distributed under the MIT license.
theories/
contains the sources of the compilerplugin/
contains the CertiCoq plugin for Coqbenchmarks/
contains the benchmark suiteglue/
contains the glue code generator
Structure of the theories directory:
theories/common
: contains common code utilitiestheories/Compiler
: contains the toplevel CertiCoq pipelinetheories/L1g
: 1st pass, moves from (MetaCoq's) λbox to our similar L1gtheories/L2k_noCnstrParams
: 2nd pass, eta expands constructors and removes constructor parameterstheories/L4_deBruijn
: 3rd pass, let-bind environmenttheories/L6_PCPS
contains the λANF pipeline (and conversions -- direct and CPS -- to λANF)theories/L7
contains the C code generator.
We use github's issue tracker to keep track of bugs and feature requests.