A collection of hard-to-discover tips, tricks, and features for the Coq proof assistant.
Coq Tricks is a community-maintained collection of advanced tips, tricks, and features for the Coq proof assistant. It addresses the common problem of discovering Coq's hidden capabilities by compiling practical examples and explanations that go beyond the official manual. The project helps users write more efficient proofs, leverage obscure language features, and optimize their Coq workflow.
Intermediate to advanced Coq users, including researchers, formal verification engineers, and developers working on proof-heavy projects who want to deepen their understanding of Coq's tooling and language features.
Unlike the official Coq manual, Coq Tricks focuses on practical, hard-to-discover techniques curated from real-world experience. It offers concise, example-driven explanations and encourages community contributions, making it a living resource that grows with the Coq ecosystem.
Tricks you wish the Coq manual told you [maintainer=@tchajed]
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 detailed examples of Ltac features like `lazymatch`, `debug auto`, and `unshelve`, enabling fine-grained control over proof automation and debugging, as illustrated in the Ltac section with executable code.
Offers practical advice on using `vos`/`vok` files and disabling Qed checking, which can significantly reduce compilation times in large projects, with real-world scripts and caveats explained.
Actively encourages user submissions via issues and pull requests, making it a living resource that evolves with real-world usage and community discoveries.
Each trick is accompanied by runnable Coq files in the `src/` directory, allowing for hands-on learning and immediate verification of techniques.
Only compatible with the development version of Coq, making it less accessible and potentially unstable for users on older, stable releases, as noted in the compatibility section.
As a collection of independent tricks, it lacks a cohesive learning path and can be overwhelming, requiring users to sift through many specific examples without overarching guidance.
Explanations are often concise and presume familiarity with advanced Coq concepts, which may alienate less experienced users seeking more detailed tutorials.
Relies on ongoing contributions for updates, which could lead to inconsistencies, outdated tricks, or gaps in coverage as Coq evolves.