A Coq library providing abstract interfaces for mathematical structures using type classes.
Math Classes is a Coq library that provides abstract interfaces for mathematical structures using type classes. It formalizes algebraic hierarchies, orders, categories, and number systems to enable rigorous, machine-checked reasoning in proof assistants. The library solves the problem of consistently representing and manipulating mathematical abstractions within a type-theoretic framework.
Researchers and developers working with the Coq proof assistant who need to formalize and verify mathematical theories, particularly in algebra, category theory, and number theory. It is also valuable for educators teaching formal verification of mathematics.
Developers choose Math Classes for its rigorous, type class-based approach that provides structure inference, multiple inheritance, and convenient algebraic manipulation. Its integration with Coq's notation system makes mathematical reasoning more intuitive compared to lower-level formalizations.
A library of abstract interfaces for mathematical structures in Coq [maintainer=@spitters,@Lysxia]
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Coq's type classes for structure inference and multiple inheritance, enabling convenient algebraic manipulation as highlighted in the library's philosophy.
Defines abstract interfaces for algebraic hierarchies, orders, categories, and number systems in a unified framework, supporting rigorous proof development across diverse areas.
Uses idiomatic mathematical notations through type classes, making proof scripts more intuitive and readable compared to low-level formalizations, as noted in the key features.
Based on peer-reviewed publications with a DOI, ensuring academically sound methodologies and reliability for formal verification tasks.
Requires Coq/Rocq 8.18 or later, limiting compatibility with older projects and necessitating upgrades that might disrupt existing workflows.
Relies heavily on advanced Coq features like type classes and abstract mathematical concepts, making it challenging for users without deep expertise in both areas.
The directory structure is intricate with separate folders for interfaces and implementations, and dependency on BigNums adds extra steps for installation and upkeep.