FreeSpec is a framework for implementing, certifying, and executing impure computations in Coq.
This repository contains three Coq packages:
coq-freespec-core
provides the foundation of the FreeSpec formalism.coq-freespec-exec
provides the means to execute impure computations implemented with the help ofcoq-freespec-core
.coq-freespec-ffi
provides the means to use FreeSpec withcoqffi
.
The codebase is organized as follows:
- The Coq definitions of the three theories live in the
theories/
directory. - The OCaml source of the Coq plugins live in the
plugins/
directory. - There are examples for the three plugins in the
examples/
directory.
coq-freespec-core
depends on
coq-ext-lib. Besides,
coq-freespec-ffi
depends on
coqffi
.
dune build
dune install
Besides, we provide two helper scripts:
run-tests.sh
executes each Coq file living intests/
and reports any errorbuild-docs.sh
builds the OCaml and Coq source documentation
Said documentations are published here.
In addition, FreeSpec has been the subject of two academic publications.
- FreeSpec: Specifying, Certifying and Executing Impure Computations in Coq (CPP'20)
- Modular Verification of Programs with Effects and Effect Handlers in Coq (FM'18)
FreeSpec is a Free Software, distributed under the terms of the MPLv2. It was initially developed within the the French Cybersecurity Agency (ANSSI).