An axiom-free formalization of category theory in Coq for representation, manipulation, and realization of categorical terms.
Category Theory in Coq is a formal library that encodes the fundamental structures and theorems of category theory within the Coq proof assistant. It allows users to define, manipulate, and reason about categories, functors, natural transformations, adjunctions, and other categorical concepts in a type-safe, axiom-free environment. The project bridges theoretical category theory with practical applications in programming and verification.
Researchers and practitioners in formal methods, theorem proving, and programming language theory who need to work with category theory in a rigorous, machine-checkable setting. It is also suitable for Coq developers interested in applied category theory or building verified software using categorical abstractions.
It offers a unique, axiom-free formalization that ensures constructive correctness, extensive support for duality to reduce proof duplication, and a practical programming sub-library that connects abstract category theory with concrete Coq development. The library's design avoids proprietary or closed-source theorem prover dependencies, providing a fully open, verifiable foundation.
An axiom-free formalization of category theory in Coq for personal study and practical work
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The core theory avoids axioms, ensuring constructive proofs and higher reliability for formal verification, as stated in the design decisions.
Leverages opposite categories to define dual concepts like comonads in one line, reducing code duplication and proof effort through built-in duality simplifications.
Includes a sub-library for applied category theory in Coq, mimicking Haskell's monad hierarchy while using general categorical proofs to establish lawfulness, as shown in the programming sub-library examples.
Uses homsetoids (crelations) instead of strict equality, allowing customizable notions of arrow equivalence for different categories, though it increases proof obligations.
Provides extensive notations for morphisms, functors, and categorical operations, improving readability and expressiveness for users familiar with category theory texts.
The use of homsetoids requires additional proofs to preserve equivalence relations at all levels, slowing down development and increasing term complexity.
Requires specific Coq versions (8.14-8.20 or Rocq 9.0-9.1) and Coq-Equations, with builds often relying on Nix, which can be a barrier for users not versed in these tools.
Some definitions include repeated laws to support dual simplifications, making initial definitions more verbose and adding to proof obligations, as admitted in the duality section.
As a Coq-specific library for formal category theory, it has a smaller community and fewer resources compared to mainstream programming libraries, limiting support and adoption.