A function definition plugin for Rocq/Coq that provides notation for dependent pattern-matching and well-founded recursion.
Equations is a function definition plugin for the Rocq/Coq proof assistant that provides a high-level notation for writing programs using dependent pattern-matching and well-founded recursion. It solves the problem of defining complex recursive functions in Coq by automating the generation of elimination principles and termination proofs, making functional programming in proof assistants more ergonomic.
Coq/Rocq users who need to define complex recursive functions, particularly those working with dependent types, formal verification projects, or homotopy type theory developments.
Developers choose Equations because it provides Agda-like pattern-matching expressiveness within Coq while maintaining axiom-free definitions and compatibility with both standard logic and HoTT. It significantly reduces the boilerplate needed for dependent pattern-matching and termination proofs.
A function definition package for Rocq
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides high-level notation for writing programs with dependent types, automating elimination principle generation as highlighted in the README, reducing boilerplate.
Enables defining recursive functions with automatic termination proofs, which simplifies complex definitions and avoids manual proof efforts.
Compiles definitions down to core eliminators without adding axioms, ensuring logical consistency and compatibility with Coq's kernel as stated in the documentation.
Includes a variant for homotopy type theory, allowing proof-relevant interpretations and integration with the HoTT/Coq library for advanced developments.
Requires installation via OPAM or from source, which adds complexity compared to built-in Coq features, especially in system-wide setups.
As a plugin, it may not immediately support the latest Coq releases, potentially causing delays in updates or compatibility issues for cutting-edge projects.
Mastering dependent pattern-matching and well-founded recursion can be challenging, requiring prior Coq experience and potentially slowing onboarding.