aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Classes/RelationClasses.v
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-10-22 17:38:25 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-10-22 17:38:25 +0000
commit76ff040e3b46539625ec61e7597f06a87b927c5a (patch)
tree753667140c6be0fc2c6ef7f14a70871a8d0ae581 /theories/Classes/RelationClasses.v
parentfe1979bf47951352ce32a6709cb5138fd26f311d (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.v21
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.