Files
awesome-awesomeness/html/coq.html
2025-07-18 22:22:32 +02:00

689 lines
35 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-coq-awesome">Awesome Coq <a
href="https://awesome.re"><img src="https://awesome.re/badge.svg"
alt="Awesome" /></a></h1>
<p><a
href="https://github.com/coq-community/manifesto"><img src="coq-logo.svg" align="right" width="100" alt="coq-community logo" title="Awesome Coq is a coq-community project"></a></p>
<blockquote>
<p>A curated list of awesome Coq libraries, plugins, tools, and
resources.</p>
</blockquote>
<p>The <a href="https://coq.inria.fr">Coq proof assistant</a> provides a
formal language to write mathematical definitions, executable
algorithms, and theorems, together with an environment for
semi-interactive development of machine-checked proofs.</p>
<p>Contributions welcome! Read the <a
href="https://github.com/coq-community/awesome-coq/blob/master/CONTRIBUTING.md">contribution
guidelines</a> first.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#projects">Projects</a>
<ul>
<li><a href="#frameworks">Frameworks</a></li>
<li><a href="#user-interfaces">User Interfaces</a></li>
<li><a href="#libraries">Libraries</a></li>
<li><a href="#package-and-build-management">Package and Build
Management</a></li>
<li><a href="#plugins">Plugins</a></li>
<li><a href="#puzzles-and-games">Puzzles and Games</a></li>
<li><a href="#tools">Tools</a></li>
<li><a href="#type-theory-and-mathematics">Type Theory and
Mathematics</a></li>
<li><a href="#verified-software">Verified Software</a></li>
</ul></li>
<li><a href="#resources">Resources</a>
<ul>
<li><a href="#community">Community</a></li>
<li><a href="#blogs">Blogs</a></li>
<li><a href="#books">Books</a></li>
<li><a href="#course-material">Course Material</a></li>
<li><a href="#tutorials-and-hints">Tutorials and Hints</a></li>
</ul></li>
</ul>
<hr />
<h2 id="projects">Projects</h2>
<h3 id="frameworks">Frameworks</h3>
<ul>
<li><a href="https://github.com/AU-COBRA/ConCert">ConCert</a> -
Framework for smart contract testing and verification featuring a code
extraction pipeline to several smart contract languages.</li>
<li><a href="https://github.com/CoqEAL/CoqEAL">CoqEAL</a> - Framework to
ease change of data representations in proofs.</li>
<li><a href="https://github.com/adampetcher/fcf">FCF</a> - Framework for
proofs of cryptography.</li>
<li><a href="https://github.com/mit-plv/fiat">Fiat</a> - Mostly
automated synthesis of correct-by-construction programs.</li>
<li><a href="https://github.com/lthms/FreeSpec">FreeSpec</a> - Framework
for modularly verifying programs with effects and effect handlers.</li>
<li><a href="https://github.com/imdea-software/htt/">Hoare Type
Theory</a> - A shallow embedding of sequential separation logic
formulated as a type theory.</li>
<li><a href="https://www.site.uottawa.ca/~afelty/HybridCoq/">Hybrid</a>
- System for reasoning using higher-order abstract syntax
representations of object logics.</li>
<li><a href="https://iris-project.org">Iris</a> - Higher-order
concurrent separation logic framework.</li>
<li><a href="https://github.com/querycert/qcert">Q*cert</a> - Platform
for implementing and verifying query compilers.</li>
<li><a href="https://github.com/SSProve/ssprove">SSProve</a> - Framework
for modular cryptographic proofs based on the Mathematical Components
library.</li>
<li><a href="https://github.com/VeriNum/vcfloat">VCFloat</a> - Framework
for verifying C programs with floating-point computations.</li>
<li><a href="https://github.com/uwplse/verdi">Verdi</a> - Framework for
formally verifying distributed systems implementations.</li>
<li><a href="https://vst.cs.princeton.edu">VST</a> - 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.</li>
</ul>
<h3 id="user-interfaces">User Interfaces</h3>
<ul>
<li><a
href="https://coq.inria.fr/refman/practical-tools/coqide.html">CoqIDE</a>
- Standalone graphical tool for interacting with Coq.</li>
<li><a href="https://github.com/whonore/Coqtail">Coqtail</a> - Interface
for Coq based on the Vim text editor.</li>
<li><a href="https://github.com/ejgallego/coq-lsp">Coq LSP</a> -
Language server and extension for the Visual Studio Code and VSCodium
editors with custom document checking engine.</li>
<li><a href="https://proofgeneral.github.io">Proof General</a> - Generic
interface for proof assistants based on the extensible, customizable
text editor Emacs.</li>
<li><a href="https://github.com/cpitclaudel/company-coq">Company-Coq</a>
- IDE extensions for Proof Generals Coq mode.</li>
<li><a
href="https://github.com/ProofGeneral/opam-switch-mode">opam-switch-mode</a>
- IDE extension for Proof General to locally change or reset the opam
switch from a menu or using a command.</li>
<li><a href="https://github.com/jscoq/jscoq">jsCoq</a> - Port of Coq to
JavaScript, which enables running Coq projects in a browser.</li>
<li><a href="https://github.com/EugeneLoy/coq_jupyter">Jupyter kernel
for Coq</a> - Coq support for the Jupyter Notebook web environment.</li>
<li><a href="https://github.com/coq-community/vscoq">VsCoq</a> -
Language server and extension for the Visual Studio Code and VSCodium
editors.</li>
<li><a href="https://github.com/coq-community/vscoq/tree/vscoq1">VsCoq
Legacy</a> - Backwards-compatible extension for the Visual Studio Code
and VSCodium editors using Coqs legacy XML protocol.</li>
<li><a href="https://github.com/impermeable/waterproof">Waterproof
editor</a> - Educational environment for writing mathematical proofs in
interactive notebooks.</li>
</ul>
<h3 id="libraries">Libraries</h3>
<ul>
<li><a href="https://github.com/coq-community/alea">ALEA</a> - Library
for reasoning on randomized algorithms.</li>
<li><a href="https://github.com/math-comp/algebra-tactics">Algebra
Tactics</a> - Ring and field tactics for Mathematical Components.</li>
<li><a href="https://github.com/coq/bignums">Bignums</a> - Library of
arbitrarily large numbers.</li>
<li><a href="https://github.com/mit-plv/bbv">Bedrock Bit Vectors</a> -
Library for reasoning on fixed precision machine words.</li>
<li><a href="https://github.com/Salamari/CertiGraph">CertiGraph</a> -
Library for reasoning about directed graphs and their embedding in
separation logic.</li>
<li><a href="https://github.com/fblanqui/color">CoLoR</a> - Library on
rewriting theory, lambda-calculus and termination, with sub-libraries on
common data structures extending the Coq standard library.</li>
<li><a href="https://github.com/jwiegley/coq-haskell">coq-haskell</a> -
Library smoothing the transition to Coq for Haskell users.</li>
<li><a href="https://github.com/DmxLarchey/Coq-Kruskal">Coq-Kruskal</a>
- Collection of libraries related to rose trees and Kruskals tree
theorem.</li>
<li><a
href="https://gitlab.inria.fr/coqinterval/interval/">CoqInterval</a> -
Tactics for performing proofs of inequalities on expressions of real
numbers.</li>
<li><a href="https://github.com/tchajed/coq-record-update">Coq record
update</a> - Library which provides a generic way to update Coq record
fields.</li>
<li><a href="https://gitlab.mpi-sws.org/iris/stdpp">Coq-std++</a> -
Extended alternative standard library for Coq.</li>
<li><a href="https://github.com/coq-community/coq-ext-lib">ExtLib</a> -
Collection of theories and plugins that may be useful in other Coq
developments.</li>
<li><a href="https://github.com/imdea-software/fcsl-pcm">FCSL-PCM</a> -
Formalization of partial commutative monoids as used in verification of
pointer-manipulating programs.</li>
<li><a href="https://gitlab.inria.fr/flocq/flocq">Flocq</a> -
Formalization of floating-point numbers and computations.</li>
<li><a
href="https://github.com/uds-psl/coq-library-undecidability">Formalised
Undecidable Problems</a> - Library of undecidable problems and
reductions between them.</li>
<li><a href="https://github.com/vafeiadis/hahn">Hahn</a> - Library for
reasoning on lists and binary relations.</li>
<li><a href="https://github.com/DeepSpec/InteractionTrees">Interaction
Trees</a> - Library for representing recursive and impure programs.</li>
<li><a href="https://github.com/Matafou/LibHyps">LibHyps</a> - Library
of Ltac tactics to manage and manipulate hypotheses in proofs.</li>
<li><a href="https://github.com/thery/mathcomp-extra">MathComp Extra</a>
- Extra material for the Mathematical Components library, including the
AKS primality test and RSA encryption and decryption.</li>
<li><a href="https://github.com/math-comp/mczify">Mczify</a> - Library
enabling Micromega arithmetic solvers to work when using Mathematical
Components number definitions.</li>
<li><a href="https://github.com/plclub/metalib">Metalib</a> - Library
for programming language metatheory using locally nameless variable
binding representations.</li>
<li><a href="http://plv.mpi-sws.org/paco/">Paco</a> - Library for
parameterized coinduction.</li>
<li><a href="https://github.com/coq-community/reglang">Regular Language
Representations</a> - Translations between different definitions of
regular languages, including regular expressions and automata.</li>
<li><a href="https://github.com/damien-pous/relation-algebra">Relation
Algebra</a> - Modular formalization of algebras with heterogeneous
binary relations as models.</li>
<li><a href="https://github.com/Lysxia/coq-simple-io">Simple IO</a> -
Input/output monad with user-definable primitive operations.</li>
<li><a href="https://github.com/charguer/tlc">TLC</a> - Non-constructive
alternative to Coqs standard library.</li>
</ul>
<h3 id="package-and-build-management">Package and Build Management</h3>
<ul>
<li><a
href="https://coq.inria.fr/refman/practical-tools/utilities.html">coq_makefile</a>
- Build tool distributed with Coq and based on generating a
makefile.</li>
<li><a href="https://github.com/coq-community/coq-nix-toolbox">Coq Nix
Toolbox</a> - Nix helper scripts to automate local builds and continuous
integration for Coq.</li>
<li><a href="https://coq.inria.fr/opam/www/">Coq Package Index</a> -
Collection of Coq packages based on opam.</li>
<li><a href="https://github.com/coq/platform">Coq Platform</a> - Curated
collection of packages to support Coq use in industry, education, and
research.</li>
<li><a href="https://github.com/coq-community/templates">coq-community
Templates</a> - Templates for generating configuration files for Coq
projects.</li>
<li><a href="https://people.debian.org/~jpuydt/coq_platform.html">Debian
Coq packages</a> - Coq-related packages available in the testing
distribution of Debian.</li>
<li><a href="https://github.com/coq-community/docker-coq">Docker-Coq</a>
- Docker images for many versions of Coq.</li>
<li><a
href="https://github.com/math-comp/docker-mathcomp">Docker-MathComp</a>
- Docker images for many combinations of versions of Coq and the
Mathematical Components library.</li>
<li><a
href="https://github.com/marketplace/actions/docker-coq-action">Docker-Coq
GitHub Action</a> - GitHub container action that can be used with
Docker-Coq or Docker-MathComp.</li>
<li><a href="https://dune.build">Dune</a> - Composable and opinionated
build system for OCaml and Coq (former jbuilder).</li>
<li><a href="https://nixos.org/nix/">Nix</a> - Package manager for Linux
and other Unix systems, supporting atomic upgrades and rollbacks.</li>
<li><a
href="https://search.nixos.org/packages?channel=unstable&amp;query=coqPackages">Nix
Coq packages</a> - Collection of Coq-related packages for Nix.</li>
<li><a href="https://opam.ocaml.org">opam</a> - Flexible and
Git-friendly package manager for OCaml and Coq with multiple compiler
support.</li>
</ul>
<h3 id="plugins">Plugins</h3>
<ul>
<li><a href="https://github.com/coq-community/aac-tactics">AAC
Tactics</a> - Tactics for rewriting universally quantified equations,
modulo associativity and commutativity of some operator.</li>
<li><a href="https://github.com/damien-pous/coinduction">Coinduction</a>
- Plugin for doing proofs by enhanced coinduction.</li>
<li><a href="https://github.com/LPCIC/coq-elpi">Coq-Elpi</a> - Extension
framework based on λProlog providing an extensive API to implement
commands and tactics.</li>
<li><a href="https://github.com/lukaszcz/coqhammer">CoqHammer</a> -
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.</li>
<li><a href="https://github.com/mattam82/Coq-Equations">Equations</a> -
Function definition package for Coq.</li>
<li><a href="https://gitlab.inria.fr/gappa/coq">Gappa</a> - Tactic for
discharging goals about floating-point arithmetic and round-off
errors.</li>
<li><a href="https://github.com/math-comp/hierarchy-builder">Hierarchy
Builder</a> - Collection of commands for declaring Coq hierarchies based
on packed classes.</li>
<li><a href="https://gitlab.inria.fr/fbesson/itauto">Itauto</a> -
SMT-like tactics for combined propositional reasoning about function
symbols, constructors, and arithmetic.</li>
<li><a
href="https://coq.inria.fr/refman/proof-engine/ltac2.html">Ltac2</a> -
Experimental typed tactic language similar to Coqs classic Ltac
language.</li>
<li><a href="https://github.com/MetaCoq/metacoq">MetaCoq</a> - Project
formalizing Coq in Coq and providing tools for manipulating Coq terms
and developing certified plugins.</li>
<li><a href="https://github.com/Mtac2/Mtac2">Mtac2</a> - Plugin adding
typed tactics for backward reasoning.</li>
<li><a href="https://github.com/coq-community/paramcoq">Paramcoq</a> -
Plugin to generate parametricity translations of Coq terms.</li>
<li><a href="https://github.com/QuickChick/QuickChick">QuickChick</a> -
Plugin for randomized property-based testing.</li>
<li><a href="https://github.com/smtcoq/smtcoq">SMTCoq</a> - Tool that
checks proof witnesses coming from external SAT and SMT solvers.</li>
<li><a href="https://coq-tactician.github.io">Tactician</a> -
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.</li>
<li><a href="https://github.com/unicoq/unicoq">Unicoq</a> - Plugin that
replaces the existing unification algorithm with an enhanced one.</li>
<li><a href="https://github.com/impermeable/coq-waterproof">Waterproof
proof language</a> - Plugin providing a language for writing proof
scripts in a style that resembles non-mechanized mathematical
proof.</li>
</ul>
<h3 id="puzzles-and-games">Puzzles and Games</h3>
<ul>
<li><a href="https://github.com/coq-community/coqoban">Coqoban</a> - Coq
implementation of Sokoban, the Japanese warehouse keepers game.</li>
<li><a href="https://github.com/thery/hanoi">Hanoi</a> - The Tower of
Hanoi puzzle in Coq, including generalizations and theorems about
configurations.</li>
<li><a href="https://github.com/thery/minirubik">Mini-Rubik</a> - Coq
formalization and solver of the 2x2x2 version of the Rubiks Cube
puzzle.</li>
<li><a href="https://github.com/codyroux/name-the-biggest-number">Name
the Biggest Number</a> - Repository for submitting proven contenders for
the title of biggest number in Coq.</li>
<li><a
href="https://github.com/uncomputable/natural-number-game">Natural
Number Game</a> - Coq version of the natural number game developed for
the Lean prover.</li>
<li><a href="https://github.com/coq-community/sudoku">Sudoku</a> -
Formalization and solver of the Sudoku number-placement puzzle in
Coq.</li>
<li><a href="https://github.com/thery/T2048">T2048</a> - Coq version of
the 2048 sliding tile game.</li>
</ul>
<h3 id="tools">Tools</h3>
<ul>
<li><a href="https://github.com/cpitclaudel/alectryon">Alectryon</a> -
Collection of tools for writing technical documents that mix Coq code
and prose.</li>
<li><a
href="https://github.com/uds-psl/autosubst-ocaml">Autosubst-ocaml</a> -
Tool that generates Coq code for handling binders in syntax, such as for
renaming and substitutions.</li>
<li><a href="https://gitlab.inria.fr/charguer/cfml2">CFML</a> - Tool for
proving properties of OCaml programs in separation logic.</li>
<li><a href="https://github.com/xavierleroy/coq2html">coq2html</a> -
Alternative HTML documentation generator for Coq.</li>
<li><a
href="https://coq.inria.fr/refman/using/tools/coqdoc.html">coqdoc</a> -
Standard documentation tool that generates LaTeX or HTML files from Coq
code.</li>
<li><a href="https://github.com/clarus/coq-of-ocaml">CoqOfOCaml</a> -
Tool for generating idiomatic Coq from OCaml code.</li>
<li><a
href="https://github.com/coq-community/coq-dpdgraph">coq-dpdgraph</a> -
Tool for building dependency graphs between Coq objects.</li>
<li><a href="https://github.com/JasonGross/coq-scripts">coq-scripts</a>
- Scripts for dealing with Coq files, including tabulating proof
times.</li>
<li><a href="https://github.com/JasonGross/coq-tools">coq-tools</a> -
Scripts for manipulating Coq developments.
<ul>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/find-bug.py"><code>find-bug.py</code></a>
- Automatically minimizes source files producing an error, creating
small test cases for Coq bugs.</li>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/absolutize-imports.py"><code>absolutize-imports.py</code></a>
- Processes source files to make loading of dependencies robust against
shadowing of file names.</li>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/inline-imports.py"><code>inline-imports.py</code></a>
- Creates stand-alone source files from developments by inlining the
loading of all dependencies.</li>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/minimize-requires.py"><code>minimize-requires.py</code></a>
- Removes loading of unused dependencies.</li>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/move-requires.py"><code>move-requires.py</code></a>
- Moves all dependency loading statements to the top of source
files.</li>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/move-vernaculars.py"><code>move-vernaculars.py</code></a>
- Lifts many vernacular commands and inner lemmas out of proof script
blocks.</li>
<li><a
href="https://github.com/JasonGross/coq-tools/blob/master/proof-using-helper.py"><code>proof-using-helper.py</code></a>
- Modifies source files to include proof annotations for faster parallel
proving.</li>
</ul></li>
<li><a href="https://github.com/uwdb/Cosette">Cosette</a> - Automated
solver for reasoning about SQL query equivalences.</li>
<li><a href="https://github.com/plclub/hs-to-coq">hs-to-coq</a> -
Converter from Haskell code to equivalent Coq code.</li>
<li><a href="https://github.com/plclub/lngen">lngen</a> - Tool for
generating locally nameless Coq definitions and proofs.</li>
<li><a href="http://gallium.inria.fr/~fpottier/menhir/">Menhir</a> -
Parser generator that can output Coq code for verified parsers.</li>
<li><a href="https://github.com/EngineeringSoftware/mcoq">mCoq</a> -
Mutation analysis tool for Coq projects.</li>
<li><a href="https://github.com/ott-lang/ott">Ott</a> - Tool for writing
definitions of programming languages and calculi that can be translated
to Coq.</li>
<li><a href="https://github.com/ejgallego/pycoq">PyCoq</a> - Set of
bindings and libraries for interacting with Coq from inside Python
3.</li>
<li><a
href="https://github.com/EngineeringSoftware/roosterize">Roosterize</a>
- Tool for suggesting lemma names in Coq projects.</li>
<li><a href="https://github.com/rems-project/sail">Sail</a> - Tool for
specifying instruction set architecture (ISA) semantics of processors
and generating Coq definitions.</li>
<li><a href="https://github.com/ejgallego/coq-serapi">SerAPI</a> - Tools
and OCaml library for (de)serialization of Coq code to and from JSON and
S-expressions.</li>
<li><a href="https://github.com/ecranceMERCE/trakt">Trakt</a> - Generic
goal preprocessing tool for proof automation tactics.</li>
</ul>
<h3 id="type-theory-and-mathematics">Type Theory and Mathematics</h3>
<ul>
<li><a href="https://github.com/math-comp/analysis">Analysis</a> -
Library for classical real analysis compatible with Mathematical
Components.</li>
<li><a href="https://github.com/jwiegley/category-theory">Category
Theory in Coq</a> - Axiom-free formalization of category theory.</li>
<li><a
href="https://github.com/coq-community/comp-dec-modal">Completeness and
Decidability of Modal Logic Calculi</a> - Soundness, completeness, and
decidability for the logics K, K*, CTL, and PDL.</li>
<li><a href="https://github.com/thery/coqprime">CoqPrime</a> - Library
for certifying primality using Pocklington and Elliptic Curve
certificates.</li>
<li><a href="https://github.com/coq-community/corn">CoRN</a> - Library
of constructive real analysis and algebra.</li>
<li><a href="https://github.com/coq-community/coqtail-math">Coqtail
Math</a> - Library of mathematical results ranging from arithmetic to
real and complex analysis.</li>
<li><a
href="https://gitlab.inria.fr/coquelicot/coquelicot">Coquelicot</a> -
Formalization of classical real analysis compatible with the standard
library and focusing on usability.</li>
<li><a href="https://github.com/math-comp/finmap">Finmap</a> - Extension
of Mathematical Components with finite maps, sets, and multisets.</li>
<li><a href="https://github.com/coq-community/fourcolor">Four Color
Theorem</a> - Formal proof of the Four Color Theorem, a landmark result
of graph theory.</li>
<li><a href="https://github.com/coq-community/gaia">Gaia</a> -
Implementation of books from Bourbakis Elements of Mathematics,
including set theory and number theory.</li>
<li><a href="https://github.com/GeoCoq/GeoCoq">GeoCoq</a> -
Formalization of geometry based on Tarskis axiom system.</li>
<li><a href="https://github.com/coq-community/graph-theory">Graph
Theory</a> - Formalized graph theory results.</li>
<li><a href="https://github.com/HoTT/Coq-HoTT">Homotopy Type Theory</a>
- Development of homotopy-theoretic ideas.</li>
<li><a href="https://github.com/affeldt-aist/infotheo">Infotheo</a> -
Formalization of information theory and linear error-correcting
codes.</li>
<li><a href="http://math-comp.github.io">Mathematical Components</a> -
Formalization of mathematical theories, focusing in particular on group
theory.</li>
<li><a href="https://github.com/coq-community/math-classes">Math
Classes</a> - Abstract interfaces for mathematical structures based on
type classes.</li>
<li><a href="https://github.com/affeldt-aist/monae">Monae</a> - Monadic
effects and equational reasoning.</li>
<li><a href="https://github.com/math-comp/odd-order">Odd Order
Theorem</a> - Formal proof of the Odd Order Theorem, a landmark result
of finite group theory.</li>
<li><a href="https://github.com/roglo/puiseuxth">Puiseuxth</a> - Proof
of Puiseuxs theorem and computation of roots of polynomials of
Puiseuxs series.</li>
<li><a href="https://github.com/UniMath/UniMath">UniMath</a> - Library
which aims to formalize a substantial body of mathematics using the
univalent point of view.</li>
</ul>
<h3 id="verified-software">Verified Software</h3>
<ul>
<li><a href="http://compcert.inria.fr">CompCert</a> - High-assurance
compiler for almost all of the C language (ISO C99), generating
efficient code for the PowerPC, ARM, RISC-V and x86 processors.</li>
<li><a href="https://github.com/certichain/ceramist">Ceramist</a> -
Verified hash-based approximate membership structures such as Bloom
filters.</li>
<li><a href="https://github.com/CertiCoq/certicoq">CertiCoq</a> -
Verified compiler from Gallina, the internal language of Coq, down to
CompCerts Clight language.</li>
<li><a href="https://github.com/mit-plv/fiat-crypto">Fiat-Crypto</a> -
Cryptographic primitive code generation.</li>
<li><a href="https://github.com/clayrat/fav-ssr">Functional Algorithms
Verified in SSReflect</a> - Purely functional verified implementations
of algorithms for searching, sorting, and other fundamental
problems.</li>
<li><a
href="https://gitlab.inria.fr/agueneau/incremental-cycles">Incremental
Cycles</a> - Verified OCaml implementation of an algorithm for
incremental cycle detection in graphs.</li>
<li><a href="https://github.com/jasmin-lang/jasmin">Jasmin</a> -
Formalized language and verified compiler for high-assurance and
high-speed cryptography.</li>
<li><a href="https://github.com/jscert/jscert">JSCert</a> - Coq
specification of ECMAScript 5 (JavaScript) with verified reference
interpreter.</li>
<li><a
href="https://gitlab.mpi-sws.org/iris/lambda-rust">lambda-rust</a> -
Formal model of a Rust core language and type system, a logical relation
for the type system, and safety proofs for some Rust libraries.</li>
<li><a href="https://gitlab.mpi-sws.org/RT-PROOFS/rt-proofs">Prosa</a> -
Definitions and proofs for real-time system schedulability
analysis.</li>
<li><a href="https://github.com/mit-plv/riscv-coq">RISC-V Specification
in Coq</a> - Definition of the RISC-V processor instruction set
architecture and extensions.</li>
<li><a href="https://github.com/pi8027/stablesort">Stable sort
algorithms in Coq</a> - Generic and modular proofs of correctness,
including stability, of mergesort functions.</li>
<li><a href="https://github.com/math-comp/tarjan">Tarjan and
Kosaraju</a> - Verified implementations of algorithms for topological
sorting and finding strongly connected components in finite graphs.</li>
<li><a href="http://velus.inria.fr">Vélus</a> - Verified compiler for a
Lustre/Scade-like dataflow synchronous language.</li>
<li><a href="https://github.com/uwplse/verdi-raft">Verdi Raft</a> -
Implementation of the Raft distributed consensus protocol, verified in
Coq using the Verdi framework.</li>
<li><a href="https://github.com/WasmCert/WasmCert-Coq/">WasmCert-Coq</a>
- Formalization in Coq of the WebAssembly (aka Wasm) 1.0
specification.</li>
</ul>
<h2 id="resources">Resources</h2>
<h3 id="community">Community</h3>
<ul>
<li><a href="https://coq.inria.fr">Official Coq website</a></li>
<li><a href="https://coq.inria.fr/refman/">Official Coq manual</a></li>
<li><a href="https://coq.inria.fr/stdlib/">Official Coq standard
library</a></li>
<li><a href="https://coq.discourse.group">Official Coq Discourse
forum</a></li>
<li><a href="https://coq.zulipchat.com">Official Coq Zulip chat</a></li>
<li><a href="https://sympa.inria.fr/sympa/arc/coq-club">Official
Coq-Club mailing list</a></li>
<li><a href="https://github.com/coq/coq/wiki">Official Coq wiki</a></li>
<li><a href="https://x.com/CoqLang">Official Coq X/Twitter</a></li>
<li><a href="https://coq.gitlab.io/zulip-archive/">Coq Zulip chat
archive</a></li>
<li><a href="https://www.reddit.com/r/Coq/">Coq subreddit</a></li>
<li><a href="https://stackoverflow.com/questions/tagged/coq">Coq tag on
Stack Overflow</a></li>
<li><a
href="https://cstheory.stackexchange.com/questions/tagged/coq">Coq tag
on Theoretical Computer Science Stack Exchange</a></li>
<li><a
href="https://proofassistants.stackexchange.com/questions/tagged/coq">Coq
tag on Proof Assistants Stack Exchange</a></li>
<li><a href="https://zenodo.org/search?q=keywords%3A%22Coq%22">Coq
keyword on Zenodo</a></li>
<li><a href="https://github.com/coq-community/manifesto">Coq-community
package maintenance project</a></li>
<li><a href="https://github.com/math-comp/math-comp/wiki">Mathematical
Components wiki</a></li>
<li><a href="https://github.com/coq-community/coq-100-theorems">100
famous theorems proved using Coq</a></li>
<li><a href="https://coq.pl-a.net">Planet Coq link aggregator</a></li>
</ul>
<h3 id="blogs">Blogs</h3>
<ul>
<li><a href="https://project.inria.fr/coqexchange/news/">Coq Exchange:
ideas and experiment reports about Coq</a></li>
<li><a href="http://gallium.inria.fr/blog">Gagallium</a></li>
<li><a href="https://gmalecha.github.io">Gregory Malechas blog</a></li>
<li><a href="http://www.joachim-breitner.de/blog/tag/Coq">Joachim
Breitners blog posts on Coq</a></li>
<li><a href="https://blog.poisson.chat">Lysxias blog</a></li>
<li><a href="http://plv.csail.mit.edu/blog/category/coq.html">MIT PLV
blog posts on Coq</a></li>
<li><a href="https://www.seas.upenn.edu/~plclub/blog/">PLClub
Blog</a></li>
<li><a href="http://poleiro.info">Poleiro: a Coq blog by Arthur Azevedo
de Amorim</a></li>
<li><a href="https://www.ralfj.de/blog/categories/coq.html">Ralf Jungs
blog posts on Coq</a></li>
<li><a href="https://soap.coffee/~lthms/tags/coq.html">Thomas Letans
blog posts on Coq</a></li>
</ul>
<h3 id="books">Books</h3>
<ul>
<li><a href="https://www.labri.fr/perso/casteran/CoqArt/">CoqArt</a> -
The first book dedicated to Coq.</li>
<li><a href="https://softwarefoundations.cis.upenn.edu">Software
Foundations</a> - Series of Coq-based textbooks on logic, functional
programming, and foundations of programming languages, aimed at being
accessible to beginners.
<ul>
<li><a
href="https://softwarefoundations.cis.upenn.edu/lf-current/index.html">Volume
1: Logical Foundations</a> - Introduction to functional programming,
basic concepts of logic, and computer-assisted theorem proving.</li>
<li><a
href="https://softwarefoundations.cis.upenn.edu/plf-current/index.html">Volume
2: Programming Language Foundations</a> - Introduction to the theory of
programming languages, including operational semantics, Hoare logic, and
static type systems.</li>
<li><a
href="https://softwarefoundations.cis.upenn.edu/vfa-current/index.html">Volume
3: Verified Functional Algorithms</a> - Demonstration of how a variety
of fundamental data structures can be specified and verified.</li>
<li><a
href="https://softwarefoundations.cis.upenn.edu/qc-current/index.html">Volume
4: QuickChick</a> - Introduction to tools for combining randomized
property-based testing with formal specification and proof.</li>
<li><a
href="https://softwarefoundations.cis.upenn.edu/vc-current/index.html">Volume
5: Verifiable C</a> - An extended tutorial on specifying and verifying C
programs using the Verified Software Toolchain.</li>
<li><a
href="https://softwarefoundations.cis.upenn.edu/slf-current/index.html">Volume
6: Separation Logic Foundations</a> - An introduction to separation
logic and how to build program verification tools on top of it.</li>
</ul></li>
<li><a href="http://adam.chlipala.net/cpdt/">Certified Programming with
Dependent Types</a> - Textbook about practical engineering with Coq
which teaches advanced practical tricks and a very specific style of
proof.</li>
<li><a
href="https://www.cs.princeton.edu/~appel/papers/plcc.pdf">Program
Logics for Certified Compilers</a> - 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.</li>
<li><a href="http://adam.chlipala.net/frap/">Formal Reasoning About
Programs</a> - Book that simultaneously provides a general introduction
to formal logical reasoning about the correctness of programs and to
using Coq for this purpose.</li>
<li><a href="https://ilyasergey.net/pnp/">Programs and Proofs</a> - 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.</li>
<li><a
href="https://www.sciencedirect.com/book/9781785481123/computer-arithmetic-and-formal-proofs">Computer
Arithmetic and Formal Proofs</a> - Book that describes how to formally
specify and verify floating-point algorithms in Coq using the Flocq
library.</li>
<li><a href="https://math-comp.github.io/mcb/">The Mathematical
Components book</a> - Book oriented towards mathematically inclined
users, focusing on the Mathematical Components library and the SSReflect
proof language.</li>
<li><a href="https://github.com/uds-psl/MPCTT">Modeling and Proving in
Computational Type Theory</a> - Book covering topics in computational
logic using Coq, including foundations, canonical case studies, and
practical programming.</li>
<li><a href="https://github.com/coq-community/hydra-battles">Hydras
&amp; Co.</a> - 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.</li>
</ul>
<h3 id="course-material">Course Material</h3>
<ul>
<li><a
href="https://staff.aist.go.jp/reynald.affeldt/documents/karate-coq.pdf">An
Introduction to MathComp-Analysis</a> - Lecture notes on getting started
with the Mathematical Components library and using it for classical
reasoning and real analysis.</li>
<li><a href="https://chargueraud.org/teach/verif/">Foundations of
Separation Logic</a> - Introduction to using separation logic to reason
about sequential imperative programs in Coq.</li>
<li><a href="https://github.com/thery/FlocqLecture">Floating-Point
Numbers and Formal Proof</a> - Introductory course on Coq real numbers
and floating-point numbers from the Flocq library.</li>
<li><a href="https://gitlab.com/umb-svl/turing">Introduction to the
Theory of Computation</a> - Formalization to support an undergraduate
course on the theory of computation, including languages and Turing
machines.</li>
<li><a href="https://github.com/clarksmr/sf-lectures">Lectures on
Software Foundations</a> - Material on the Software Foundations series
of textbooks, including a series of YouTube videos.</li>
<li><a href="https://github.com/gares/math-comp-school-2022">MathComp
School</a> - Coq sources for lessons and exercises that introduce the
SSReflect proof language and the Mathematical Components library.</li>
<li><a href="https://github.com/xavierleroy/cdf-mech-sem">Mechanized
Semantics</a> - Companion Coq sources for a course on programming
language semantics at Collège de France.</li>
<li><a href="https://github.com/xavierleroy/cdf-program-logics">Program
Logics</a> - Companion Coq sources for a course on program logics at
Collège de France.</li>
<li><a
href="https://gitlab.science.ru.nl/program-verification/course-2023-2024">Program
verification with types and logic</a> - Lectures and exercise material
for a course in programming language semantics, type systems and program
logics, using Coq, at Radboud University Nijmegen.</li>
<li><a
href="https://team.inria.fr/stamp/proofs-and-reliable-programming-using-coq-2022/">Proofs
and Reliable Programming using Coq</a> - Introduction to developing and
verifying programs with Coq.</li>
</ul>
<h3 id="tutorials-and-hints">Tutorials and Hints</h3>
<ul>
<li><a href="https://github.com/coq-community/coq-art">CoqArt Exercises
and Tutorials</a> - Coq code and exercises from the CoqArt book,
including additional tutorials.</li>
<li><a href="http://cel.archives-ouvertes.fr/inria-00001173">Coq in a
Hurry</a> - Introduction to how Coq can be used to define logical
concepts and functions and reason about them.</li>
<li><a href="https://inria.hal.science/hal-04452421">Coq requirements in
Common Criteria evaluations</a> - Guide on how to write readable and
reviewable Coq code in high assurance applications.</li>
<li><a href="https://charlesaverill.github.io/ctpe/">Coq Tactics in
Plain English</a> - Guide to Coq tactics with explanations and
examples.</li>
<li><a href="https://learnxinyminutes.com/docs/coq/">Learn X in Y
minutes where X=Coq</a> - Whirlwind tour of Coq as a language.</li>
<li><a href="https://github.com/coq-community/lemma-overloading">Lemma
Overloading</a> - Demonstration of design patterns for programming and
proving with canonical structures.</li>
<li><a href="https://github.com/math-comp/tutorial_material">MathComp
Tutorial Materials</a> - Source code for Mathematical Components
tutorials.</li>
<li><a href="https://mdnahas.github.io/doc/nahas_tutorial.html">Mike
Nahass Coq Tutorial</a> - Basics of using Coq to write formal
proofs.</li>
<li><a href="https://github.com/coq-community/coq-tricks">Tricks in
Coq</a> - Tips, tricks, and features in Coq that are hard to
discover.</li>
</ul>
<p><a href="https://github.com/coq-community/awesome-coq">coq.md
Github</a></p>