diff options
author | msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2009-10-22 17:38:25 +0000 |
---|---|---|
committer | msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2009-10-22 17:38:25 +0000 |
commit | 76ff040e3b46539625ec61e7597f06a87b927c5a (patch) | |
tree | 753667140c6be0fc2c6ef7f14a70871a8d0ae581 /theories/Classes/RelationClasses.v | |
parent | fe1979bf47951352ce32a6709cb5138fd26f311d (diff) |
Fix new instances that could easily make class resolution loop on
unconstrained goals (e.g. PreOrder A ?). Allow the unconstrained use of
[proper_reflexive] again.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12407 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories/Classes/RelationClasses.v')
-rw-r--r-- | theories/Classes/RelationClasses.v | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/theories/Classes/RelationClasses.v b/theories/Classes/RelationClasses.v index 83095720a..0d6130263 100644 --- a/theories/Classes/RelationClasses.v +++ b/theories/Classes/RelationClasses.v @@ -426,21 +426,22 @@ Class StrictOrder {A : Type} (R : relation A) := { }. Instance StrictOrder_Asymmetric `(StrictOrder A R) : Asymmetric R. -Proof. - firstorder. -Qed. +Proof. firstorder. Qed. (** Inversing a [StrictOrder] gives another [StrictOrder] *) -Instance StrictOrder_inverse `(StrictOrder A R) : StrictOrder (inverse R). +Lemma StrictOrder_inverse `(StrictOrder A R) : StrictOrder (inverse R). +Proof. firstorder. Qed. (** Same for [PartialOrder]. *) -Instance PreOrder_inverse `(PreOrder A R) : PreOrder (inverse R). +Lemma PreOrder_inverse `(PreOrder A R) : PreOrder (inverse R). +Proof. firstorder. Qed. -Instance PartialOrder_inverse `(PartialOrder A eqA R) : - PartialOrder eqA (inverse R). -Proof. -firstorder. -Qed. +Hint Extern 3 (StrictOrder (inverse _)) => class_apply StrictOrder_inverse : typeclass_instances. +Hint Extern 3 (PreOrder (inverse _)) => class_apply PreOrder_inverse : typeclass_instances. + +Lemma PartialOrder_inverse `(PartialOrder A eqA R) : PartialOrder eqA (inverse R). +Proof. firstorder. Qed. +Hint Extern 3 (PartialOrder (inverse _)) => class_apply PartialOrder_inverse : typeclass_instances. |