awesome-coq

Formal system toolkit

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

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

GitHub

317 stars
14 watching
20 forks
last commit: 3 months ago
Linked from 2 awesome lists

awesomeawesome-listcoqresources

Awesome Coq / Projects / Frameworks

ConCert 114 6 days ago Framework for smart contract testing and verification featuring a code extraction pipeline to several smart contract languages
CoqEAL 66 3 months ago Framework to ease change of data representations in proofs
FCF 48 7 months ago Framework for proofs of cryptography
Fiat 147 about 1 month ago Mostly automated synthesis of correct-by-construction programs
FreeSpec 52 10 months ago Framework for modularly verifying programs with effects and effect handlers
Hoare Type Theory 69 about 1 month ago 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 56 4 months ago Platform for implementing and verifying query compilers
SSProve 56 20 days ago Framework for modular cryptographic proofs based on the Mathematical Components library
VCFloat 24 4 months ago Framework for verifying C programs with floating-point computations
Verdi 589 6 months ago 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

Awesome Coq / Projects / User Interfaces

CoqIDE Standalone graphical tool for interacting with Coq
Coqtail 274 2 months ago Interface for Coq based on the Vim text editor
Coq LSP 152 6 days ago 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 354 almost 2 years ago IDE extensions for Proof General's Coq mode
opam-switch-mode 5 over 1 year ago IDE extension for Proof General to locally change or reset the opam switch from a menu or using a command
jsCoq 515 28 days ago Port of Coq to JavaScript, which enables running Coq projects in a browser
Jupyter kernel for Coq 94 3 months ago Coq support for the Jupyter Notebook web environment
VsCoq 343 8 days ago Language server and extension for the Visual Studio Code and VSCodium editors
VsCoq Legacy 343 8 days ago Backwards-compatible extension for the Visual Studio Code and VSCodium editors using Coq's legacy XML protocol
Waterproof editor 39 8 months ago Educational environment for writing mathematical proofs in interactive notebooks

Awesome Coq / Projects / Libraries

ALEA 25 about 3 years ago Library for reasoning on randomized algorithms
Algebra Tactics 32 2 months ago Ring and field tactics for Mathematical Components
Bignums 22 4 months ago Library of arbitrarily large numbers
Bedrock Bit Vectors 27 9 months ago Library for reasoning on fixed precision machine words
CertiGraph 17 17 days ago Library for reasoning about directed graphs and their embedding in separation logic
CoLoR 35 18 days ago Library on rewriting theory, lambda-calculus and termination, with sub-libraries on common data structures extending the Coq standard library
coq-haskell 167 about 1 year ago Library smoothing the transition to Coq for Haskell users
Coq-Kruskal 0 6 months ago 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 42 3 months ago Library which provides a generic way to update Coq record fields
Coq-std++ Extended alternative standard library for Coq
ExtLib 129 2 months ago Collection of theories and plugins that may be useful in other Coq developments
FCSL-PCM 26 20 days ago Formalization of partial commutative monoids as used in verification of pointer-manipulating programs
Flocq Formalization of floating-point numbers and computations
Formalised Undecidable Problems 111 about 2 months ago Library of undecidable problems and reductions between them
Hahn 30 5 months ago Library for reasoning on lists and binary relations
Interaction Trees 203 about 1 month ago Library for representing recursive and impure programs
LibHyps 20 11 months ago Library of Ltac tactics to manage and manipulate hypotheses in proofs
MathComp Extra 5 about 1 month ago Extra material for the Mathematical Components library, including the AKS primality test and RSA encryption and decryption
Mczify 23 2 months ago Library enabling Micromega arithmetic solvers to work when using Mathematical Components number definitions
Metalib 71 5 months ago Library for programming language metatheory using locally nameless variable binding representations
Paco Library for parameterized coinduction
Regular Language Representations 41 4 months ago Translations between different definitions of regular languages, including regular expressions and automata
Relation Algebra 48 8 days ago Modular formalization of algebras with heterogeneous binary relations as models
Simple IO 31 2 months ago Input/output monad with user-definable primitive operations
TLC 38 22 days ago Non-constructive alternative to Coq's standard library

Awesome Coq / Projects / Package and Build Management

coq_makefile Build tool distributed with Coq and based on generating a makefile
Coq Nix Toolbox 33 6 days ago Nix helper scripts to automate local builds and continuous integration for Coq
Coq Package Index Collection of Coq packages based on opam
Coq Platform 188 6 days ago Curated collection of packages to support Coq use in industry, education, and research
coq-community Templates 13 about 1 month ago Templates for generating configuration files for Coq projects
Debian Coq packages Coq-related packages available in the testing distribution of Debian
Docker-Coq 37 2 months ago Docker images for many versions of Coq
Docker-MathComp 6 about 1 month ago 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

Awesome Coq / Projects / Plugins

AAC Tactics 29 20 days ago Tactics for rewriting universally quantified equations, modulo associativity and commutativity of some operator
Coinduction 15 2 months ago Plugin for doing proofs by enhanced coinduction
Coq-Elpi 139 6 days ago Extension framework based on λProlog providing an extensive API to implement commands and tactics
CoqHammer 218 6 days ago 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 223 9 days ago Function definition package for Coq
Gappa Tactic for discharging goals about floating-point arithmetic and round-off errors
Hierarchy Builder 97 9 days ago 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 382 5 days ago Project formalizing Coq in Coq and providing tools for manipulating Coq terms and developing certified plugins
Mtac2 51 about 1 month ago Plugin adding typed tactics for backward reasoning
Paramcoq 44 2 months ago Plugin to generate parametricity translations of Coq terms
QuickChick 254 20 days ago Plugin for randomized property-based testing
SMTCoq 156 2 months ago 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 49 5 months ago Plugin that replaces the existing unification algorithm with an enhanced one
Waterproof proof language 33 8 days ago Plugin providing a language for writing proof scripts in a style that resembles non-mechanized mathematical proof

Awesome Coq / Projects / Puzzles and Games

Coqoban 21 almost 2 years ago Coq implementation of Sokoban, the Japanese warehouse keepers' game
Hanoi 24 about 1 year ago The Tower of Hanoi puzzle in Coq, including generalizations and theorems about configurations
Mini-Rubik 4 over 1 year ago Coq formalization and solver of the 2x2x2 version of the Rubik's Cube puzzle
Name the Biggest Number 63 about 2 years ago Repository for submitting proven contenders for the title of biggest number in Coq
Natural Number Game 6 about 2 years ago Coq version of the natural number game developed for the Lean prover
Sudoku 20 about 2 years ago Formalization and solver of the Sudoku number-placement puzzle in Coq
T2048 22 about 1 year ago Coq version of the 2048 sliding tile game

Awesome Coq / Projects / Tools

Alectryon 236 2 months ago Collection of tools for writing technical documents that mix Coq code and prose
Autosubst 2 17 over 1 year ago 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 30 3 months ago Alternative HTML documentation generator for Coq
coqdoc Standard documentation tool that generates LaTeX or HTML files from Coq code
CoqOfOCaml 255 4 months ago Tool for generating idiomatic Coq from OCaml code
coq-dpdgraph 86 8 days ago Tool for building dependency graphs between Coq objects
coq-scripts 8 about 1 month ago Scripts for dealing with Coq files, including tabulating proof times
coq-tools 39 27 days ago Scripts for manipulating Coq developments

Awesome Coq / Projects / Tools / coq-tools

find-bug.py 39 27 days ago Automatically minimizes source files producing an error, creating small test cases for Coq bugs
absolutize-imports.py 39 27 days ago Processes source files to make loading of dependencies robust against shadowing of file names
inline-imports.py 39 27 days ago Creates stand-alone source files from developments by inlining the loading of all dependencies
minimize-requires.py 39 27 days ago Removes loading of unused dependencies
move-requires.py 39 27 days ago Moves all dependency loading statements to the top of source files
move-vernaculars.py 39 27 days ago Lifts many vernacular commands and inner lemmas out of proof script blocks
proof-using-helper.py 39 27 days ago Modifies source files to include proof annotations for faster parallel proving

Awesome Coq / Projects / Tools

Cosette 666 almost 3 years ago Automated solver for reasoning about SQL query equivalences
hs-to-coq 78 3 months ago Converter from Haskell code to equivalent Coq code
lngen 30 about 1 month ago Tool for generating locally nameless Coq definitions and proofs
Menhir Parser generator that can output Coq code for verified parsers
mCoq 30 about 4 years ago Mutation analysis tool for Coq projects
Ott 347 2 months ago Tool for writing definitions of programming languages and calculi that can be translated to Coq
PyCoq 50 almost 3 years ago Set of bindings and libraries for interacting with Coq from inside Python 3
Roosterize 18 about 2 years ago Tool for suggesting lemma names in Coq projects
Sail 618 6 days ago Tool for specifying instruction set architecture (ISA) semantics of processors and generating Coq definitions
SerAPI 128 8 days ago Tools and OCaml library for (de)serialization of Coq code to and from JSON and S-expressions
Trakt 14 30 days ago Generic goal preprocessing tool for proof automation tactics

Awesome Coq / Projects / Type Theory and Mathematics

Analysis 206 6 days ago Library for classical real analysis compatible with Mathematical Components
Category Theory in Coq 754 about 2 months ago Axiom-free formalization of category theory
Completeness and Decidability of Modal Logic Calculi 8 3 months ago Soundness, completeness, and decidability for the logics K, K*, CTL, and PDL
CoqPrime 37 15 days ago Library for certifying primality using Pocklington and Elliptic Curve certificates
CoRN 111 8 days ago Library of constructive real analysis and algebra
Coqtail Math 15 4 months ago 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 46 6 months ago Extension of Mathematical Components with finite maps, sets, and multisets
Four Color Theorem 166 6 days ago Formal proof of the Four Color Theorem, a landmark result of graph theory
Gaia 28 3 months ago Implementation of books from Bourbaki's Elements of Mathematics, including set theory and number theory
GeoCoq 186 6 months ago Formalization of geometry based on Tarski's axiom system
Graph Theory 34 4 months ago Formalized graph theory results
Homotopy Type Theory 1,252 14 days ago Development of homotopy-theoretic ideas
Infotheo 64 6 days ago Formalization of information theory and linear error-correcting codes
Mathematical Components Formalization of mathematical theories, focusing in particular on group theory
Math Classes 162 18 days ago Abstract interfaces for mathematical structures based on type classes
Monae 68 27 days ago Monadic effects and equational reasoning
Odd Order Theorem 25 22 days ago Formal proof of the Odd Order Theorem, a landmark result of finite group theory
Puiseuxth 4 about 2 months ago Proof of Puiseux's theorem and computation of roots of polynomials of Puiseux's series
UniMath 961 9 days ago Library which aims to formalize a substantial body of mathematics using the univalent point of view

Awesome Coq / 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 121 over 4 years ago Verified hash-based approximate membership structures such as Bloom filters
CertiCoq 136 3 months ago Verified compiler from Gallina, the internal language of Coq, down to CompCert's Clight language
Fiat-Crypto 715 10 days ago Cryptographic primitive code generation
Functional Algorithms Verified in SSReflect 45 7 days ago 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 269 5 days ago Formalized language and verified compiler for high-assurance and high-speed cryptography
JSCert 196 10 months ago 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 109 4 months ago Definition of the RISC-V processor instruction set architecture and extensions
Stable sort algorithms in Coq 22 2 months ago Generic and modular proofs of correctness, including stability, of mergesort functions
Tarjan and Kosaraju 13 over 1 year ago 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 183 12 months ago Implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework
WasmCert-Coq 95 14 days ago Formalization in Coq of the WebAssembly (aka Wasm) 1.0 specification

Awesome Coq / Resources / Community

Official Coq website
Official Coq manual
Official Coq standard library
Official Coq Discourse forum
Official Coq Zulip chat
Official Coq-Club mailing list
Official Coq wiki 4,859 6 days ago
Official Coq X/Twitter
Coq Zulip chat archive
Coq subreddit
Coq tag on Stack Overflow
Coq tag on Theoretical Computer Science Stack Exchange
Coq tag on Proof Assistants Stack Exchange
Coq keyword on Zenodo
Coq-community package maintenance project 68 7 months ago
Mathematical Components wiki 587 6 days ago
100 famous theorems proved using Coq 55 8 months ago
Planet Coq link aggregator

Awesome Coq / Resources / Blogs

Coq Exchange: ideas and experiment reports about Coq
Gagallium
Gregory Malecha's blog
Joachim Breitner's blog posts on Coq
Lysxia's blog
MIT PLV blog posts on Coq
PLClub Blog
Poleiro: a Coq blog by Arthur Azevedo de Amorim
Ralf Jung's blog posts on Coq
Thomas Letan's blog posts on Coq

Awesome Coq / 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 80 4 months ago Book covering topics in computational logic using Coq, including foundations, canonical case studies, and practical programming
Hydras & Co. 68 9 months ago 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

Awesome Coq / Resources / Course Material

An Introduction to MathComp-Analysis Lecture notes on getting started with the Mathematical Components library and using it for classical reasoning and real analysis
Foundations of Separation Logic Introduction to using separation logic to reason about sequential imperative programs in Coq
Floating-Point Numbers and Formal Proof 6 almost 2 years ago Introductory course on Coq real numbers and floating-point numbers from the Flocq library
Introduction to the Theory of Computation Formalization to support an undergraduate course on the theory of computation, including languages and Turing machines
Lectures on Software Foundations 115 7 months ago Material on the Software Foundations series of textbooks, including a series of YouTube videos
MathComp School 6 almost 2 years ago Coq sources for lessons and exercises that introduce the SSReflect proof language and the Mathematical Components library
Mechanized Semantics 64 8 months ago Companion Coq sources for a course on programming language semantics at Collège de France
Program Logics 40 over 3 years ago Companion Coq sources for a course on program logics at Collège de France
Program verification with types and logic Lectures and exercise material for a course in programming language semantics, type systems and program logics, using Coq, at Radboud University Nijmegen
Proofs and Reliable Programming using Coq Introduction to developing and verifying programs with Coq

Awesome Coq / Resources / Tutorials and Hints

Coq'Art Exercises and Tutorials 110 4 months ago Coq code and exercises from the Coq'Art book, including additional tutorials
Coq in a Hurry Introduction to how Coq can be used to define logical concepts and functions and reason about them
Coq requirements in Common Criteria evaluations Guide on how to write readable and reviewable Coq code in high assurance applications
Coq Tactics in Plain English Guide to Coq tactics with explanations and examples
Learn X in Y minutes where X=Coq Whirlwind tour of Coq as a language
Lemma Overloading 26 8 days ago Demonstration of design patterns for programming and proving with canonical structures
MathComp Tutorial Materials 17 about 1 year ago Source code for Mathematical Components tutorials
Mike Nahas's Coq Tutorial Basics of using Coq to write formal proofs
Tricks in Coq 503 3 months ago Tips, tricks, and features in Coq that are hard to discover

Backlinks from these awesome lists:

More related projects: