aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Classes
diff options
context:
space:
mode:
Diffstat (limited to 'theories/Classes')
-rw-r--r--theories/Classes/Equivalence.v8
-rw-r--r--theories/Classes/RelationClasses.v10
2 files changed, 10 insertions, 8 deletions
diff --git a/theories/Classes/Equivalence.v b/theories/Classes/Equivalence.v
index 03b0e9ad5..197786c8b 100644
--- a/theories/Classes/Equivalence.v
+++ b/theories/Classes/Equivalence.v
@@ -55,11 +55,6 @@ Program Instance equiv_reflexive [ sa : Equivalence A ] : Reflexive equiv.
Program Instance equiv_symmetric [ sa : Equivalence A ] : Symmetric equiv.
- Next Obligation.
- Proof.
- symmetry ; auto.
- Qed.
-
Program Instance equiv_transitive [ sa : Equivalence A ] : Transitive equiv.
Next Obligation.
@@ -133,10 +128,7 @@ End Respecting.
Program Instance pointwise_equivalence [ eqb : Equivalence B eqB ] :
Equivalence (A -> B) (pointwise_relation eqB) | 9.
- Solve Obligations using simpl_relation ; first [ reflexivity | (symmetry ; auto) ].
-
Next Obligation.
Proof.
transitivity (y a) ; auto.
Qed.
-
diff --git a/theories/Classes/RelationClasses.v b/theories/Classes/RelationClasses.v
index cfcd93c0a..c1d7f34ce 100644
--- a/theories/Classes/RelationClasses.v
+++ b/theories/Classes/RelationClasses.v
@@ -59,6 +59,16 @@ Hint Resolve @irreflexivity : ord.
Unset Implicit Arguments.
+(** A HintDb for relations. *)
+
+Ltac solve_relation :=
+ match goal with
+ | [ |- ?R ?x ?x ] => reflexivity
+ | [ H : ?R ?x ?y |- ?R ?y ?x ] => symmetry ; exact H
+ end.
+
+Hint Extern 4 => solve_relation : relations.
+
(** We can already dualize all these properties. *)
Program Instance flip_Reflexive [ Reflexive A R ] : Reflexive (flip R) :=