Project Awesome project awesome

Verified Software > CertiCoq

Verified compiler from Gallina, the internal language of Coq, down to CompCert's Clight language.

Package 162 stars GitHub

CertiRocq

CERTIROCQ_LOGO-logo-1

Overview

build

GitHub

CertiRocq is a compiler for Gallina, the specification language of the Rocq Prover. CertiRocq targets WebAssembly and Clight, a subset of the C language that can be compiled with any C compiler, including the CompCert verified compiler.

Large parts of the CertiRocq compiler have been verified whereas others are in the process of being verified.

Documentation

The CertiRocq Wiki has instructions for using the CertiRocq plugin to compile Gallina to C and interfacing with the generated C code.

You can also find some demos here and here.

Installation Instructions

See INSTALL.md for installation instructions.

Current Members

Yannick Forster, Joomy Korkut, Zoe Paraskevopoulou, and Matthieu Sozeau.

Past Members and Contributors

Andrew Appel, Abhishek Anand, Anvay Grover, John Li, Greg Morrisett, Randy Pollack, Olivier Savary Belanger, Matthew Weaver

License

CertiRocq is open source and distributed under the MIT license.

Directory structure

  • theories/ contains the sources of the compiler
  • plugin/ contains the CertiRocq plugin for Rocq
  • benchmarks/ contains the benchmark suite
  • glue/ contains the glue code generator
  • bootstrap/ contains the bootstrapped CertiRocq plugin for Rocq and a CertiRocq-compiled variant of MetaRocq's safe type checker.

Structure of the theories directory:

  • theories/common: contains common code utilities
  • theories/Compiler: contains the toplevel CertiRocq pipeline
  • theories/LambdaBoxMut: mutual inductive version of MetaRocq's LambdaBox erased language
  • theories/LambdaBoxLocal: variant where deBruijn indices are represented using N instead of nat. The transformation from LambdaBoxMut let-binds the definitions in the environment to produce a closed term.
  • theories/LambdaANF contains the λANF pipeline (and conversions -- direct and LambdaANF -- to λANF)
  • theories/Codegen contains the C code generator.
  • theories/CodegenWasm contains the Wasm code generator.

Bugs

We use github's issue tracker to keep track of bugs and feature requests.

Back to Coq