Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-coq
A curated list of awesome Coq libraries, plugins, tools, verification projects, and resources [maintainers=@anton-trunov,@palmskog]
https://github.com/coq-community/awesome-coq
Last synced: 5 days ago
JSON representation
-
Resources
-
Community
- Coq tag on Theoretical Computer Science Stack Exchange
- Coq tag on Proof Assistants Stack Exchange
- Coq keyword on Zenodo
- Mathematical Components wiki
- Planet Coq link aggregator
- Sherlocoq code search
- Coq subreddit
- Coq tag on Stack Overflow
- 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
- Coq Zulip chat archive
- Sherlocoq code search
- Official Coq website
- Official Coq Discourse forum
- Official Coq Zulip chat
- Planet Coq link aggregator
- Sherlocoq code search
- Official Coq X/Twitter
-
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
- Ralf Jung's blog posts on Coq
- Thomas Letan's blog posts on Coq
- Gagallium
- Gregory Malecha's blog
- Joachim Breitner's blog posts on Coq
- Lysxia's blog
- Poleiro: a Coq blog by Arthur Azevedo de Amorim
- Gagallium
- Poleiro: a Coq blog by Arthur Azevedo de Amorim
-
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.
- Software Foundations - Series of Coq-based textbooks on logic, functional programming, and foundations of programming languages, aimed at being accessible to beginners.
-
Course Material
- Foundations of Separation Logic - Introduction to using separation logic to reason about sequential imperative programs in Coq.
- Proofs and Reliable Programming using Coq - Introduction to developing and verifying programs with Coq.
- An Introduction to MathComp-Analysis - Lecture notes on getting started with the Mathematical Components library and using it for classical reasoning and real analysis.
- 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.
-
Tutorials and Hints
- 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.
- Mike Nahas's Coq Tutorial - Basics of using Coq to write formal proofs.
- Coq in a Hurry - Introduction to how Coq can be used to define logical concepts and functions and reason about them.
- Mike Nahas's Coq Tutorial - Basics of using Coq to write formal proofs.
- Coq requirements in Common Criteria evaluations - Guide on how to write readable and reviewable Coq code in high assurance applications.
- Coq requirements in Common Criteria evaluations - Guide on how to write readable and reviewable Coq code in high assurance applications.
-
-
Projects
-
Frameworks
- 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.
- Hybrid - System for reasoning using higher-order abstract syntax representations of object logics.
- Iris - Higher-order concurrent separation logic framework.
- CoqEAL - Framework to ease change of data representations in proofs.
- Iris - Higher-order concurrent separation logic framework.
- 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.
- 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.
- 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.
-
User Interfaces
- CoqIDE - Standalone graphical tool for interacting with Coq.
- Proof General - Generic interface for proof assistants based on the extensible, customizable text editor Emacs.
- VsCoq Legacy - Backwards-compatible extension for the Visual Studio Code and VSCodium editors using Coq's legacy XML protocol.
- Proof General - Generic interface for proof assistants based on the extensible, customizable text editor Emacs.
- 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.
- 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.
- Waterproof editor - Educational environment for writing mathematical proofs in interactive notebooks.
-
Package and Build Management
- opam - Flexible and Git-friendly package manager for OCaml and Coq with multiple compiler support.
- coq_makefile - Build tool distributed with Coq and based on generating a makefile.
- Coq Package Index - Collection of Coq packages based on opam.
- Debian Coq packages - Coq-related packages available in the testing distribution of Debian.
- 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.
- 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.
- opam - Flexible and Git-friendly package manager for OCaml and Coq with multiple compiler support.
-
Libraries
- CoqInterval - Tactics for performing proofs of inequalities on expressions of real numbers.
- Coq-std++ - Extended alternative standard library for Coq.
- Flocq - Formalization of floating-point numbers and computations.
- Paco - Library for parameterized coinduction.
- Bignums - Library of arbitrarily large numbers.
- CertiGraph - Library for reasoning about directed graphs and their embedding in separation logic.
- Paco - Library for parameterized coinduction.
- 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.
- 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.
- Coq record update - Library which provides a generic way to update Coq record fields.
- 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.
- 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.
- CertiGraph - Library for reasoning about directed graphs and their embedding in separation logic.
-
Plugins
- Gappa - Tactic for discharging goals about floating-point arithmetic and round-off errors.
- 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.
- 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.
- 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.
-
Tools
- CFML - Tool for proving properties of OCaml programs in separation logic.
- coqdoc - Standard documentation tool that generates LaTeX or HTML files from Coq code.
- CoqOfOCaml - Tool for generating idiomatic Coq from OCaml code.
- `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.
- Menhir - Parser generator that can output Coq code for verified parsers.
- CoqOfOCaml - Tool for generating idiomatic Coq from OCaml code.
-
Type Theory and Mathematics
- Coquelicot - Formalization of classical real analysis compatible with the standard library and focusing on usability.
- Mathematical Components - Formalization of mathematical theories, focusing in particular on group theory.
- Mathematical Components - Formalization of mathematical theories, focusing in particular on group theory.
-
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.
- Incremental Cycles - Verified OCaml implementation of an algorithm for incremental cycle detection in graphs.
- 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.
- Vélus - Verified compiler for a Lustre/Scade-like dataflow synchronous language.
- 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.
- 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.
-
Programming Languages
Categories
Sub Categories
Keywords
coq
21
proof-assistant
5
coq-library
4
coq-ci
3
coq-platform
3
mathcomp
3
theorem-proving
2
vscode-extension
2
emacs
2
integrated-development-environment
2
proof-general
2
formal-verification
2
ssreflect
2
proof-automation
2
verification
2
verdi
1
vim
1
ide
1
proof
1
interactive-theorem-proving
1
language-server-protocol
1
user-interface
1
company-mode
1
merlin
1
ocaml
1
opam
1
blockchain
1
smart-contracts
1
mathcomp-ci
1
refinement
1
freer-monads
1
compiler
1
coq-proof-assistant
1
functional-programming
1
query-engine
1
query-language
1
sql
1
verified-compiler
1
coq-formalization
1
cryptography
1
modular-cryptographic-proofs
1
state-separating-proofs
1
distributed-systems
1
large-numbers
1
library
1
programming
1
concurrency
1
partial-commutative-monoid
1
separation-logic
1
formal-proofs
1