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 [maintainer=@palmskog]
https://github.com/rocq-community/awesome-coq

Last synced: 3 days ago
JSON representation

  • Projects

    • Frameworks

      • Hybrid - System for reasoning using higher-order abstract syntax representations of object logics.
      • 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.
      • 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.
      • CoqEAL - Framework to ease change of data representations in proofs.
      • Hoare Type Theory - A shallow embedding of sequential separation logic formulated as a type theory.
      • CoqEAL - Framework to ease change of data representations in proofs.
      • 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.
    • 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.
      • CertiGraph - Library for reasoning about directed graphs and their embedding in separation logic.
      • ALEA - Library for reasoning on randomized algorithms.
      • Algebra Tactics - Ring and field tactics for Mathematical Components.
      • 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.
      • 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.
      • Bignums - Library of arbitrarily large numbers.
      • CertiGraph - Library for reasoning about directed graphs and their embedding in separation logic.
      • 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.
      • ALEA - Library for reasoning on randomized algorithms.
      • Bignums - Library of arbitrarily large numbers.
      • Regular Language Representations - Translations between different definitions of regular languages, including regular expressions and automata.
    • Package and Build Management

      • 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 Coq packages - Collection of Coq-related packages for Nix.
      • 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 Platform - Curated collection of packages to support Coq use in industry, education, and research.
      • Docker-MathComp - Docker images for many combinations of versions of Coq and the Mathematical Components library.
      • coq-community Templates - Templates for generating configuration files for Coq projects.
      • Docker-Coq - Docker images for many versions of Coq.
      • Coq Nix Toolbox - Nix helper scripts to automate local builds and continuous integration for Coq.
      • coq_makefile - Build tool distributed with Coq and based on generating a makefile.
      • coq_makefile - Build tool distributed with Coq and based on generating a makefile.
    • 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.
      • 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.
      • Hierarchy Builder - Collection of commands for declaring Coq hierarchies based on packed classes.
      • Ltac2 - Experimental typed tactic language similar to Coq's classic Ltac language.
      • Mtac2 - Plugin adding typed tactics for backward reasoning.
      • QuickChick - Plugin for randomized property-based testing.
      • SMTCoq - Tool that checks proof witnesses coming from external SAT and SMT solvers.
      • 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.
      • AAC Tactics - Tactics for rewriting universally quantified equations, modulo associativity and commutativity of some operator.
      • Paramcoq - Plugin to generate parametricity translations of Coq terms.
      • MetaCoq - Project formalizing Coq in Coq and providing tools for manipulating Coq terms and developing certified plugins.
      • Ltac2 - Experimental typed tactic language similar to Coq's classic Ltac language.
      • Ltac2 - Experimental typed tactic language similar to Coq's classic Ltac language.
    • Puzzles and Games

      • 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.
      • T2048 - Coq version of the 2048 sliding tile game.
      • Coqoban - Coq implementation of Sokoban, the Japanese warehouse keepers' game.
    • 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.
      • `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.
      • Alectryon - Collection of tools for writing technical documents that mix Coq code and prose.
      • Autosubst-ocaml - Tool that generates Coq code for handling binders in syntax, such as for renaming and substitutions.
      • 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-scripts - Scripts for dealing with Coq files, including tabulating proof times.
      • coq-tools - Scripts for manipulating Coq developments.
      • 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.
      • Rocqnavi - Fork of coq2html that adds indexes, clickable notations, Markdown and LaTeX formatting in comments, and more.
      • 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.
      • coq-dpdgraph - Tool for building dependency graphs between Coq objects.
      • coqdoc - Standard documentation tool that generates LaTeX or HTML files from Coq code.
      • coqdoc - Standard documentation tool that generates LaTeX or HTML files from Coq 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.
      • Analysis - Library for classical real analysis compatible with Mathematical Components.
      • Category Theory in Coq - Axiom-free formalization of category theory.
      • CoqPrime - Library for certifying primality using Pocklington and Elliptic Curve certificates.
      • CoRN - Library of constructive real analysis and algebra.
      • Finmap - Extension of Mathematical Components with finite maps, sets, and multisets.
      • GeoCoq - Formalization of geometry based on Tarski's axiom system.
      • Homotopy Type Theory - Development of homotopy-theoretic ideas.
      • Infotheo - Formalization of information theory and linear error-correcting codes.
      • 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.
      • Graph Theory - Formalized graph theory results.
    • 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.
      • Coqtail - Interface for Coq based on the Vim text editor.
      • 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.
      • Waterproof editor - Educational environment for writing mathematical proofs in interactive notebooks.
      • VsCoq Legacy - Backwards-compatible extension for the Visual Studio Code and VSCodium editors using Coq's legacy XML protocol.
      • VsCoq Legacy - Backwards-compatible extension for the Visual Studio Code and VSCodium editors using Coq's legacy XML protocol.
      • Tree Sitter Rocq - Partial Rocq tree-sitter grammar useful for syntax highlighting in text editors like [Helix](https://github.com/helix-editor/helix), but not recommended for full parsing of Rocq code.
      • CoqIDE - Standalone graphical tool for interacting with Coq.
      • Coq LSP - Language server and extension for the Visual Studio Code and VSCodium editors with custom document checking engine.
      • VsCoq - Language server and extension for the Visual Studio Code and VSCodium editors.
      • CoqIDE - Standalone graphical tool for interacting with Coq.
      • CoqIDE - Standalone graphical tool for interacting with Coq.
    • Verified Software

      • 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.
      • CertiCoq - Verified compiler from Gallina, the internal language of Coq, down to CompCert's Clight language.
      • Fiat-Crypto - Cryptographic primitive code generation.
      • Jasmin - Formalized language and verified compiler for high-assurance and high-speed cryptography.
      • JSCert - Coq specification of ECMAScript 5 (JavaScript) with verified reference interpreter.
      • 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.
      • 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.
      • Functional Algorithms Verified in SSReflect - Purely functional verified implementations of algorithms for searching, sorting, and other fundamental problems.
  • Resources