Reputation: 978
In proof editing mode, in use of the apply
tactic, Coq gives me the following error message:
Error:
Unable to satisfy the following constraints:
In environment:
signature : Signature
X : gset evar
?MLVariables : "MLVariables"
?H : "FMap (gmap evar)"
?H0 : "forall A : Type, Lookup evar A (gmap evar A)"
?H1 : "forall A : Type, Empty (gmap evar A)"
?H2 : "forall A : Type, PartialAlter evar A (gmap evar A)"
?H3 : "OMap (gmap evar)"
?H4 : "Merge (gmap evar)"
?H5 : "forall A : Type, FinMapToList evar A (gmap evar A)"
?EqDecision0 : "RelDecision eq"
?H6 : "FinMap evar (gmap evar)"
How to read this message? What confuses me is that there is nothing between the lines
Unable to satisfy the following constraints:
In environment:
where I would expect the list of unsatisfied constraints. Is the list of unsatisfied constraints given after the In environment:
block? I.e., every line starting with a question mark variable shows one unsatisfied constraint? Another option would be that coq is trying to tell me there is an empty set of unsatisfied constraint, printed before the environment.
Upvotes: 1
Views: 283
Reputation: 517
This message is a bit misleading, the constraints it can't satisfy are those starting with a question mark ?
. In short you can read the message as follows:
Error: In environment: // This is just debug information
signature : Signature
X : gset evar
Unable to satisfy the following constraints:
// These are the missing terms Coq can't guess
?MLVariables : "MLVariables"
?H : "FMap (gmap evar)"
?H0 : "forall A : Type, Lookup evar A (gmap evar A)"
?H1 : "forall A : Type, Empty (gmap evar A)"
?H2 : "forall A : Type, PartialAlter evar A (gmap evar A)"
?H3 : "OMap (gmap evar)"
?H4 : "Merge (gmap evar)"
?H5 : "forall A : Type, FinMapToList evar A (gmap evar A)"
?EqDecision0 : "RelDecision eq"
?H6 : "FinMap evar (gmap evar)"
Upvotes: 1