Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
The Coq FAQ
This FAQ is the sum of the questions that came to mind as we developed proofs in Coq. Since we are singularly short-minded, we wrote the answers we found on bits of papers to have them at hand whenever the situation occurs again. This is pretty much the result of that: a collection of tips one can refer to when proofs become intricate. Yes, this means we won't take the blame for the shortcomings of this FAQ. But if you want to contribute and send in your own question and answers, feel free to add your own contributions to this wiki.
- The Logic of Coq
- Talkin' with the Rooster
- Inductive and Co-Inductive Types
- Syntax and Notations
- Tactics Written in OCaml
- Typeclasses and Canonical Structures
- Case Studies
- Publishing Tools
- More questions
How to find unused lemmas in a large development?
Questions to move to the section they belong to
- Should I put my type in Prop_or_Set?
- How does the MatchAsInReturn syntax work?
- Why can't I prove (forall x, f x = g x) -> f = g? (see extensional_equality)
- Isn't IntensionalEquality useless?
- How do I get DependentInversion to work in my case?
- Why not WTypeInsteadOfInductiveTypes?
- Do objects living in
Propever need to be evaluated? See PropsGuardingIotaReduction.
- When using
eapply, how can I instantiate the question marks i.e. the ExistentialVariablesInEapply?