Awesome Lists

awesome-coq

by coq-community

awesome listpushed about 2 years ago

A curated list of awesome Coq libraries, plugins, tools, verification projects, and resources [maintainer=@palmskog]

AI summary

Formal system toolkit

A curated list of libraries and resources for building and verifying formal mathematical systems

stars
325
forks
20
watching
14
awesome lists
2
entries
207
View on GitHubcoq-community.org/awesome-coq

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/coq-community/awesome-coq/links.svg)](https://awesome.facts.dev/awesome/coq-community/awesome-coq)
HTML
<a href="https://awesome.facts.dev/awesome/coq-community/awesome-coq"><img src="https://awesome.facts.dev/shield/coq-community/awesome-coq/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/coq-community/awesome-coq/links.svg

What's in the list

207 links in 16 sections, with live GitHub stats.activeno commit in 2y

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

  • SSProve

    Framework for modular cryptographic proofs based on the Mathematical Components library

  • 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

Projects / 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

  • opam-switch-mode

    IDE extension for Proof General to locally change or reset the opam switch from a menu or using a command

  • 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

  • VsCoq

    Language server and extension for the Visual Studio Code and VSCodium editors

  • VsCoq Legacy

    Backwards-compatible extension for the Visual Studio Code and VSCodium editors using Coq's legacy XML protocol

  • Waterproof editor

    Educational environment for writing mathematical proofs in interactive notebooks

Projects / 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

  • Coq-Kruskal

    Collection of libraries related to rose trees and Kruskal's tree theorem

  • 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

Projects / 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

  • Debian Coq packages

    Coq-related packages available in the testing distribution of Debian

  • 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

Projects / Plugins

  • AAC Tactics

    Tactics for rewriting universally quantified equations, modulo associativity and commutativity of some operator

  • Coinduction

    Plugin for doing proofs by enhanced coinduction

  • 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

  • Waterproof proof language

    Plugin providing a language for writing proof scripts in a style that resembles non-mechanized mathematical proof

Projects / 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

Projects / 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

Projects / Tools / coq-tools

  • 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

Projects / Tools

  • 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 (ISA) 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

Projects / 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

Projects / 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

  • CertiCoq

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

  • 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

  • Stable sort algorithms in Coq

    Generic and modular proofs of correctness, including stability, of mergesort functions

  • 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

  • WasmCert-Coq

    Formalization in Coq of the WebAssembly (aka Wasm) 1.0 specification

Resources / Community

Resources / Blogs

Resources / 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

Resources / Course Material

Resources / Tutorials and Hints

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.