All Projects → CertiCoq → Certicoq

CertiCoq / Certicoq

Licence: mit
A Verified Compiler for Gallina, Written in Gallina

Projects that are alternatives of or similar to Certicoq

Compcert
The CompCert formally-verified C compiler
Stars: ✭ 984 (+1390.91%)
Mutual labels:  compiler, coq
Coq Of Ocaml
Import OCaml programs to Coq 🐓 🐫
Stars: ✭ 117 (+77.27%)
Mutual labels:  compiler, coq
Mir
A light-weight JIT compiler based on MIR (Medium Internal Representation)
Stars: ✭ 1,075 (+1528.79%)
Mutual labels:  compiler
Angle
⦠ Angle: new speakable syntax for python 💡
Stars: ✭ 61 (-7.58%)
Mutual labels:  compiler
Arocc
A C compiler written in Zig.
Stars: ✭ 59 (-10.61%)
Mutual labels:  compiler
Elchemy
Write Elixir code using statically-typed Elm-like syntax (compatible with Elm tooling)
Stars: ✭ 1,080 (+1536.36%)
Mutual labels:  compiler
Ruby Packer
Packing your Ruby application into a single executable.
Stars: ✭ 1,107 (+1577.27%)
Mutual labels:  compiler
Cva
从0实现一个JVM语言Cva及教程, 目前实现编译器;
Stars: ✭ 54 (-18.18%)
Mutual labels:  compiler
Ccache
ccache – a fast compiler cache
Stars: ✭ 1,128 (+1609.09%)
Mutual labels:  compiler
Tiny Lisp
A tiny lisp compiler written in JS
Stars: ✭ 58 (-12.12%)
Mutual labels:  compiler
Collapsing Towers
Collapsing Towers of Interpreters
Stars: ✭ 61 (-7.58%)
Mutual labels:  coq
Tachyon
Experimental Programming Language Coded in Python!
Stars: ✭ 58 (-12.12%)
Mutual labels:  compiler
Jhc Components
JHC Haskell compiler split into reusable components
Stars: ✭ 55 (-16.67%)
Mutual labels:  compiler
Scala Escape
A compiler plug-in to control object lifetimes in Scala
Stars: ✭ 60 (-9.09%)
Mutual labels:  coq
I8086.js
16bit Intel 8086 / 80186 + X87 emulator written in TypeScript with REPL assembly compiler and tiny C compiler
Stars: ✭ 54 (-18.18%)
Mutual labels:  compiler
Riscv Coq
RISC-V Specification in Coq
Stars: ✭ 63 (-4.55%)
Mutual labels:  coq
Fast ber
A C++11 ASN.1 BER Encoding and Decoding Library
Stars: ✭ 54 (-18.18%)
Mutual labels:  compiler
Perennial
Verifying concurrent crash-safe systems
Stars: ✭ 57 (-13.64%)
Mutual labels:  coq
Xc Basic
A compiling BASIC dialect for the Commodore-64
Stars: ✭ 59 (-10.61%)
Mutual labels:  compiler
Sfja
SoftwareFoundations(Ja)
Stars: ✭ 65 (-1.52%)
Mutual labels:  coq

CertiCoq

MetaCoq

Overview

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.

Documentation

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.

Installation Instructions

See INSTALL.md for installation instructions.

Current Members

Andrew Appel, Yannick Forster, Anvay Grover, Joomy Korkut, John Li, Zoe Paraskevopoulou, and Matthieu Sozeau.

Past Members and Contributors

Abhishek Anand, Greg Morrisett, Randy Pollack, Olivier Savary Belanger, Matthew Weaver

License

CertiCoq is open source and distributed under the MIT license.

Directory structure

  • theories/ contains the sources of the compiler
  • plugin/ contains the CertiCoq plugin for Coq
  • benchmarks/ contains the benchmark suite
  • glue/ contains the glue code generator

Structure of the theories directory:

  • theories/common: contains common code utilities
  • theories/Compiler: contains the toplevel CertiCoq pipeline
  • theories/L1g: 1st pass, moves from (MetaCoq's) λbox to our similar L1g
  • theories/L2k_noCnstrParams: 2nd pass, eta expands constructors and removes constructor parameters
  • theories/L4_deBruijn: 3rd pass, let-bind environment
  • theories/L6_PCPS contains the λANF pipeline (and conversions -- direct and CPS -- to λANF)
  • theories/L7 contains the C code generator.
  • theories/compcert contains a local copy of the compcert compiler

Bugs

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].