• Stars
    star
    279
  • Rank 143,390 (Top 3 %)
  • Language
  • License
    Creative Commons ...
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated list of awesome Coq libraries, plugins, tools, verification projects, and resources [maintainers=@anton-trunov,@palmskog]

Awesome Coq Awesome

coq-community logo

A curated list of awesome Coq libraries, plugins, tools, and resources.

The Coq proof assistant provides a formal language to write mathematical definitions, executable algorithms, and theorems, together with an environment for semi-interactive development of machine-checked proofs.

Contributions welcome! Read the contribution guidelines first.

Contents


Projects

Frameworks

  • ConCert - Framework for smart contract testing and verification featuring a code extraction pipeline to several smart contract languages.
  • CoqEAL - Framework to ease change of data representations in proofs.
  • FCF - Framework for proofs of cryptography.
  • Fiat - Mostly automated synthesis of correct-by-construction programs.
  • FreeSpec - Framework for modularly verifying programs with effects and effect handlers.
  • Hoare Type Theory - A shallow embedding of sequential separation logic formulated as a type theory.
  • Hybrid - System for reasoning using higher-order abstract syntax representations of object logics.
  • Iris - Higher-order concurrent separation logic framework.
  • Q*cert - Platform for implementing and verifying query compilers.
  • VCFloat - Framework for verifying C programs with floating-point computations.
  • Verdi - Framework for formally verifying distributed systems implementations.
  • VST - Toolchain for verifying C code inside Coq in a higher-order concurrent, impredicative separation logic that is sound w.r.t. the Clight language of the CompCert compiler.

User Interfaces

  • CoqIDE - Standalone graphical tool for interacting with Coq.
  • Coqtail - Interface for Coq based on the Vim text editor.
  • Coq LSP - Language server and extension for the Visual Studio Code and VSCodium editors with custom document checking engine.
  • Proof General - Generic interface for proof assistants based on the extensible, customizable text editor Emacs.
  • Company-Coq - IDE extensions for Proof General's Coq mode.
  • jsCoq - Port of Coq to JavaScript, which enables running Coq projects in a browser.
  • Jupyter kernel for Coq - Coq support for the Jupyter Notebook web environment.
  • VsCoq1 - Extension for the Visual Studio Code and VSCodium editors using Coq's legacy XML protocol.
  • VsCoq2 - Experimental language server and extension for the Visual Studio Code and VSCodium editors.

Libraries

  • ALEA - Library for reasoning on randomized algorithms.
  • Algebra Tactics - Ring and field tactics for Mathematical Components.
  • Bignums - Library of arbitrarily large numbers.
  • Bedrock Bit Vectors - Library for reasoning on fixed precision machine words.
  • CertiGraph - Library for reasoning about directed graphs and their embedding in separation logic.
  • CoLoR - Library on rewriting theory, lambda-calculus and termination, with sub-libraries on common data structures extending the Coq standard library.
  • coq-haskell - Library smoothing the transition to Coq for Haskell users.
  • CoqInterval - Tactics for performing proofs of inequalities on expressions of real numbers.
  • Coq record update - Library which provides a generic way to update Coq record fields.
  • Coq-std++ - Extended alternative standard library for Coq.
  • ExtLib - Collection of theories and plugins that may be useful in other Coq developments.
  • FCSL-PCM - Formalization of partial commutative monoids as used in verification of pointer-manipulating programs.
  • Flocq - Formalization of floating-point numbers and computations.
  • Formalised Undecidable Problems - Library of undecidable problems and reductions between them.
  • Hahn - Library for reasoning on lists and binary relations.
  • Interaction Trees - Library for representing recursive and impure programs.
  • LibHyps - Library of Ltac tactics to manage and manipulate hypotheses in proofs.
  • MathComp Extra - Extra material for the Mathematical Components library, including the AKS primality test and RSA encryption and decryption.
  • Mczify - Library enabling Micromega arithmetic solvers to work when using Mathematical Components number definitions.
  • Metalib - Library for programming language metatheory using locally nameless variable binding representations.
  • Paco - Library for parameterized coinduction.
  • Regular Language Representations - Translations between different definitions of regular languages, including regular expressions and automata.
  • Relation Algebra - Modular formalization of algebras with heterogeneous binary relations as models.
  • Simple IO - Input/output monad with user-definable primitive operations.
  • TLC - Non-constructive alternative to Coq's standard library.

Package and Build Management

  • coq_makefile - Build tool distributed with Coq and based on generating a makefile.
  • Coq Nix Toolbox - Nix helper scripts to automate local builds and continuous integration for Coq.
  • Coq Package Index - Collection of Coq packages based on opam.
  • Coq Platform - Curated collection of packages to support Coq use in industry, education, and research.
  • coq-community Templates - Templates for generating configuration files for Coq projects.
  • Docker-Coq - Docker images for many versions of Coq.
  • Docker-MathComp - Docker images for many combinations of versions of Coq and the Mathematical Components library.
  • Docker-Coq GitHub Action - GitHub container action that can be used with Docker-Coq or Docker-MathComp.
  • Dune - Composable and opinionated build system for OCaml and Coq (former jbuilder).
  • Nix - Package manager for Linux and other Unix systems, supporting atomic upgrades and rollbacks.
  • Nix Coq packages - Collection of Coq-related packages for Nix.
  • opam - Flexible and Git-friendly package manager for OCaml and Coq with multiple compiler support.

Plugins

  • AAC Tactics - Tactics for rewriting universally quantified equations, modulo associativity and commutativity of some operator.
  • Coq-Elpi - Extension framework based on λProlog providing an extensive API to implement commands and tactics.
  • CoqHammer - General-purpose automated reasoning hammer tool that combines learning from previous proofs with the translation of problems to automated provers and the reconstruction of found proofs.
  • Equations - Function definition package for Coq.
  • Gappa - Tactic for discharging goals about floating-point arithmetic and round-off errors.
  • Hierarchy Builder - Collection of commands for declaring Coq hierarchies based on packed classes.
  • Itauto - SMT-like tactics for combined propositional reasoning about function symbols, constructors, and arithmetic.
  • Ltac2 - Experimental typed tactic language similar to Coq's classic Ltac language.
  • MetaCoq - Project formalizing Coq in Coq and providing tools for manipulating Coq terms and developing certified plugins.
  • Mtac2 - Plugin adding typed tactics for backward reasoning.
  • Paramcoq - Plugin to generate parametricity translations of Coq terms.
  • QuickChick - Plugin for randomized property-based testing.
  • SMTCoq - Tool that checks proof witnesses coming from external SAT and SMT solvers.
  • Tactician - Interactive tool which learns from previously written tactic scripts across all the installed Coq packages and suggests the next tactic to be executed or tries to automate proof synthesis fully.
  • Unicoq - Plugin that replaces the existing unification algorithm with an enhanced one.

Puzzles and Games

  • Coqoban - Coq implementation of Sokoban, the Japanese warehouse keepers' game.
  • Hanoi - The Tower of Hanoi puzzle in Coq, including generalizations and theorems about configurations.
  • Mini-Rubik - Coq formalization and solver of the 2x2x2 version of the Rubik's Cube puzzle.
  • Name the Biggest Number - Repository for submitting proven contenders for the title of biggest number in Coq.
  • Natural Number Game - Coq version of the natural number game developed for the Lean prover.
  • Sudoku - Formalization and solver of the Sudoku number-placement puzzle in Coq.
  • T2048 - Coq version of the 2048 sliding tile game.

Tools

  • Alectryon - Collection of tools for writing technical documents that mix Coq code and prose.
  • Autosubst 2 - Tool that generates Coq code for handling binders in syntax, such as for renaming and substitutions.
  • CFML - Tool for proving properties of OCaml programs in separation logic.
  • coq2html - Alternative HTML documentation generator for Coq.
  • coqdoc - Standard documentation tool that generates LaTeX or HTML files from Coq code.
  • CoqOfOCaml - Tool for generating idiomatic Coq from OCaml code.
  • coq-dpdgraph - Tool for building dependency graphs between Coq objects.
  • coq-scripts - Scripts for dealing with Coq files, including tabulating proof times.
  • coq-tools - Scripts for manipulating Coq developments.
    • find-bug.py - Automatically minimizes source files producing an error, creating small test cases for Coq bugs.
    • absolutize-imports.py - Processes source files to make loading of dependencies robust against shadowing of file names.
    • inline-imports.py - Creates stand-alone source files from developments by inlining the loading of all dependencies.
    • minimize-requires.py - Removes loading of unused dependencies.
    • move-requires.py - Moves all dependency loading statements to the top of source files.
    • move-vernaculars.py - Lifts many vernacular commands and inner lemmas out of proof script blocks.
    • proof-using-helper.py - Modifies source files to include proof annotations for faster parallel proving.
  • Cosette - Automated solver for reasoning about SQL query equivalences.
  • hs-to-coq - Converter from Haskell code to equivalent Coq code.
  • lngen - Tool for generating locally nameless Coq definitions and proofs.
  • Menhir - Parser generator that can output Coq code for verified parsers.
  • mCoq - Mutation analysis tool for Coq projects.
  • Ott - Tool for writing definitions of programming languages and calculi that can be translated to Coq.
  • PyCoq - Set of bindings and libraries for interacting with Coq from inside Python 3.
  • Roosterize - Tool for suggesting lemma names in Coq projects.
  • Sail - Tool for specifying instruction set architecture semantics of processors and generating Coq definitions.
  • SerAPI - Tools and OCaml library for (de)serialization of Coq code to and from JSON and S-expressions.
  • Trakt - Generic goal preprocessing tool for proof automation tactics.

Type Theory and Mathematics

  • Analysis - Library for classical real analysis compatible with Mathematical Components.
  • Category Theory in Coq - Axiom-free formalization of category theory.
  • Completeness and Decidability of Modal Logic Calculi - Soundness, completeness, and decidability for the logics K, K*, CTL, and PDL.
  • CoqPrime - Library for certifying primality using Pocklington and Elliptic Curve certificates.
  • CoRN - Library of constructive real analysis and algebra.
  • Coqtail Math - Library of mathematical results ranging from arithmetic to real and complex analysis.
  • Coquelicot - Formalization of classical real analysis compatible with the standard library and focusing on usability.
  • Finmap - Extension of Mathematical Components with finite maps, sets, and multisets.
  • Four Color Theorem - Formal proof of the Four Color Theorem, a landmark result of graph theory.
  • Gaia - Implementation of books from Bourbaki's Elements of Mathematics, including set theory and number theory.
  • GeoCoq - Formalization of geometry based on Tarski's axiom system.
  • Graph Theory - Formalized graph theory results.
  • Homotopy Type Theory - Development of homotopy-theoretic ideas.
  • Infotheo - Formalization of information theory and linear error-correcting codes.
  • Mathematical Components - Formalization of mathematical theories, focusing in particular on group theory.
  • Math Classes - Abstract interfaces for mathematical structures based on type classes.
  • Monae - Monadic effects and equational reasoning.
  • Odd Order Theorem - Formal proof of the Odd Order Theorem, a landmark result of finite group theory.
  • Puiseuxth - Proof of Puiseux's theorem and computation of roots of polynomials of Puiseux's series.
  • UniMath - Library which aims to formalize a substantial body of mathematics using the univalent point of view.

Verified Software

  • CompCert - High-assurance compiler for almost all of the C language (ISO C99), generating efficient code for the PowerPC, ARM, RISC-V and x86 processors.
  • Ceramist - Verified hash-based approximate membership structures such as Bloom filters.
  • Fiat-Crypto - Cryptographic primitive code generation.
  • Functional Algorithms Verified in SSReflect - Purely functional verified implementations of algorithms for searching, sorting, and other fundamental problems.
  • Incremental Cycles - Verified OCaml implementation of an algorithm for incremental cycle detection in graphs.
  • Jasmin - Formalized language and verified compiler for high-assurance and high-speed cryptography.
  • JSCert - Coq specification of ECMAScript 5 (JavaScript) with verified reference interpreter.
  • lambda-rust - Formal model of a Rust core language and type system, a logical relation for the type system, and safety proofs for some Rust libraries.
  • Prosa - Definitions and proofs for real-time system schedulability analysis.
  • RISC-V Specification in Coq - Definition of the RISC-V processor instruction set architecture and extensions.
  • Tarjan and Kosaraju - Verified implementations of algorithms for topological sorting and finding strongly connected components in finite graphs.
  • Vélus - Verified compiler for a Lustre/Scade-like dataflow synchronous language.
  • Verdi Raft - Implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework.

Resources

Community

Blogs

Books

  • Coq'Art - The first book dedicated to Coq.
  • Software Foundations - Series of Coq-based textbooks on logic, functional programming, and foundations of programming languages, aimed at being accessible to beginners.
  • Certified Programming with Dependent Types - Textbook about practical engineering with Coq which teaches advanced practical tricks and a very specific style of proof.
  • Program Logics for Certified Compilers - Book that explains how to construct program logics using separation logic, accompanied by a formal model in Coq which is applied to the Clight programming language and other examples.
  • Formal Reasoning About Programs - Book that simultaneously provides a general introduction to formal logical reasoning about the correctness of programs and to using Coq for this purpose.
  • Programs and Proofs - Book that gives a brief and practically-oriented introduction to interactive proofs in Coq which emphasizes the computational nature of inductive reasoning about decidable propositions via a small set of primitives from the SSReflect proof language.
  • Computer Arithmetic and Formal Proofs - Book that describes how to formally specify and verify floating-point algorithms in Coq using the Flocq library.
  • The Mathematical Components book - Book oriented towards mathematically inclined users, focusing on the Mathematical Components library and the SSReflect proof language.
  • Modeling and Proving in Computational Type Theory - Book covering topics in computational logic using Coq, including foundations, canonical case studies, and practical programming.
  • Hydras & Co. - Continuously in-progress book and library on Kirby and Paris' hydra battles and other entertaining formalized mathematics in Coq, including a proof of the Gödel-Rosser first incompleteness theorem.

Course Material

Tutorials and Hints

More Repositories

1

vscoq

A Visual Studio Code extension for Coq [maintainers=@rtetley,@maximedenes,@huynhtrankhanh,@thery,@Blaisorblade]
OCaml
310
star
2

math-classes

A library of abstract interfaces for mathematical structures in Coq [maintainer=@spitters]
Coq
157
star
3

fourcolor

Formal proof of the Four Color Theorem [maintainer=@ybertot]
Coq
148
star
4

coq-ext-lib

A library of Coq definitions, theorems, and tactics. [maintainers=@gmalecha,@liyishuai]
Coq
124
star
5

corn

Coq Repository at Nijmegen [maintainers=@spitters,@VincentSe]
Coq
108
star
6

coq-art

Coq code and exercises from the Coq'Art book [maintainers=@ybertot,@Casteran]
Coq
104
star
7

coq-dpdgraph

Build dependency graphs between Coq objects [maintainers=@Karmaki,@ybertot]
Coq
83
star
8

manifesto

Documentation on goals of the coq-community organization, the shared contributing guide and code of conduct.
68
star
9

coqeal

The Coq Effective Algebra Library [maintainers=@CohenCyril,@proux01]
Coq
64
star
10

hydra-battles

Variations on Kirby & Paris' hydra battles and other entertaining math in Coq (collaborative, documented, includes exercises) [maintainer=@Casteran]
Coq
59
star
11

coq-100-theorems

Statements of famous theorems proven in Coq [maintainer=@jmadiot]
HTML
52
star
12

autosubst

Automation for de Bruijn syntax and substitution in Coq [maintainers=@RalfJung,@co-dan]
Coq
48
star
13

topology

General topology in Coq [maintainers=@amiloradovsky,@Columbus240,@stop-cran]
Coq
45
star
14

paramcoq

Coq plugin for parametricity [maintainer=@proux01]
Coq
44
star
15

semantics

A survey of semantics styles in Coq, from natural semantics through structural operational, axiomatic, and denotational semantics, to abstract interpretation [maintainer=@k4rtik]
Coq
43
star
16

parseque

Total Parser Combinators in Coq [maintainer=@womeier]
Coq
41
star
17

reglang

Regular Language Representations in Coq [maintainers=@chdoc,@palmskog]
Coq
41
star
18

coqdocjs

Collection of scripts to improve the output of coqdoc [maintainers=@chdoc,@palmskog]
JavaScript
36
star
19

docker-coq

Docker images of the Coq proof assistant (see also: https://github.com/coq-community/docker-coq-action) [maintainers=@erikmd,@himito]
Dockerfile
36
star
20

chapar

A framework for verification of causal consistency for distributed key-value stores and their clients in Coq [maintainer=@palmskog]
Coq
32
star
21

coqffi

Automatically generates Coq FFI bindings to OCaml libraries [maintainer=@lthms]
OCaml
31
star
22

coq-nix-toolbox

Nix helper scripts to automate local builds and CI [maintainers=@CohenCyril,@Zimmi48]
Nix
31
star
23

graph-theory

Graph Theory [maintainers=@chdoc,@damien-pous]
Coq
29
star
24

aac-tactics

Coq plugin providing tactics for rewriting universally quantified equations, modulo associative (and possibly commutative) operators [maintainer=@palmskog]
OCaml
29
star
25

goedel

Archived since the contents have been moved to the Hydras & Co. repository
Coq
28
star
26

dblib

Coq library for working with de Bruijn indices [maintainer=@KevOrr]
Coq
27
star
27

lemma-overloading

Libraries demonstrating design patterns for programming and proving with canonical structures in Coq [maintainer=@anton-trunov]
Coq
26
star
28

coq-program-verification-template

Template project for program verification in Coq, showcasing reasoning on CompCert's Clight language using the Verified Software Toolchain [maintainer=@palmskog]
Coq
26
star
29

gaia

Implementation of books from Bourbaki's Elements of Mathematics in Coq [maintainer=@thery]
Coq
25
star
30

alea

Coq library for reasoning on randomized algorithms [maintainers=@anton-trunov,@volodeyka]
Coq
24
star
31

atbr

Coq library and tactic for deciding Kleene algebras [maintainer=@tchajed]
Coq
22
star
32

bits

A formalization of bitset operations in Coq and the corresponding axiomatization and extraction to OCaml native integers [maintainer=@anton-trunov]
Coq
22
star
33

bignums

Coq library of arbitrarily large numbers, providing BigN, BigZ, BigQ that used to be part of the standard library [maintainers=@proux01,@erikmd]
Coq
22
star
34

coqoban

Sokoban (in Coq) [maintainer=@erikmd]
Coq
21
star
35

sudoku

A certified Sudoku solver in Coq [maintainers=@siraben,@thery]
Coq
20
star
36

apery

A formal proof of the irrationality of zeta(3), the Apéry constant [maintainer=@amahboubi,@pi8027]
Coq
19
star
37

hoare-tut

A Tutorial on Reflecting in Coq the generation of Hoare proof obligations [maintainer=@k4rtik]
Coq
19
star
38

HighSchoolGeometry

Geometry in Coq for French high school [maintainer=@thery]
Coq
16
star
39

coq-plugin-template

Template project for Coq plugins using the Dune build system, showcasing some advanced features [maintainer=@ejgallego]
OCaml
16
star
40

metaprogramming-rosetta-stone

A rosetta stone for metaprogramming in Coq, with different examples of tactics, plugins, etc implemented in different metaprogramming languages [maintainer=@yforster]
Coq
16
star
41

coqtail-math

Coqtail is a library of mathematical theorems and tools proved inside the Coq proof assistant. Results range mostly from arithmetic to real and complex analysis. [maintainer=@jmadiot]
Coq
14
star
42

huffman

Correctness proof of the Huffman coding algorithm in Coq [maintainer=@palmskog]
Coq
14
star
43

templates

Templates for configuration files and scripts useful for maintaining Coq projects [maintainers=@palmskog,@Zimmi48]
Mustache
12
star
44

regexp-Brzozowski

Coq formalization of decision procedures for regular expression equivalence [maintainer=@anton-trunov]
Coq
12
star
45

qarith-stern-brocot

Binary rational numbers in Coq [maintainer=@herbelin]
Coq
12
star
46

docker-coq-action

GitHub Action using Docker-Coq [maintainers=@erikmd,@Zimmi48]
Shell
12
star
47

trocq

A modular parametricity plugin for proof transfer in Coq [maintainers=@CohenCyril,@ecranceMERCE,@amahboubi]
Coq
12
star
48

tarjan

Coq formalization of algorithms due to Tarjan and Kosaraju for finding strongly connected graph components using Mathematical Components and SSReflect [maintainers=@CohenCyril,@palmskog]
Coq
11
star
49

coq-mmaps

Modular Finite Maps over Ordered Types in Coq [maintainers=@letouzey,@palmskog]
Coq
8
star
50

comp-dec-modal

Completeness and Decidability of Modal Logic Calculi [maintainer=@chdoc]
Coq
8
star
51

buchberger

Verified implementation in Coq of Buchberger's algorithm for computing Gröbner bases [maintainer=@palmskog]
Coq
8
star
52

proviola

Tool for reanimation of Coq proofs [maintainer=@JasonGross]
Python
7
star
53

notation-gallery

Examples showing best practices for using Coq notations and custom entries [maintainer=@bcpierce00]
Coq
7
star
54

zorns-lemma

Archived since the contents have been moved to the topology repository
Coq
6
star
55

coq-performance-tests

A library of Coq source files testing for performance regressions on Coq [maintainer=@JasonGross]
Coq
6
star
56

reduction-effects

A Coq plugin to add reduction side effects to some Coq reduction strategies [maintainers=@liyishuai,@JasonGross]
Makefile
6
star
57

generic-environments

Coq library that provides an abstract data type for environments [maintainer=@aerabi]
Coq
6
star
58

docker-base

Parent image for Docker images of the Coq proof assistant [maintainers=@erikmd,@himito]
Dockerfile
4
star
59

almost-full

Coq development of almost-full relations, including the Ramsey Theorem, useful for proving termination [maintainer=@palmskog]
Coq
3
star
60

jmlcoq

Coq definition of JML and a verified runtime assertion checker [maintainer=@palmskog]
Coq
3
star
61

bertrand

Coq proof of Bertrand's postulate on existence of primes [maintainer=@thery]
Coq
3
star
62

run-coq-bug-minimizer

Repository for triggering runs of the Coq bug minimizer using GitHub Actions [maintainer=@JasonGross]
Shell
2
star
63

pocklington

Pocklington's criterion for primality in Coq [maintainer=@Casteran]
Coq
2
star
64

stalmarck

Certified implementation in Coq of Stålmarck's algorithm for proving tautologies [maintainer=@palmskog]
Coq
1
star
65

exact-real-arithmetic

Exact Real Arithmetic [maintainers=@ybertot,@magaud]
Coq
1
star