From 6d37f4511cab252ecd557a82f1bc8029dd69f121 Mon Sep 17 00:00:00 2001
From: Robbert Krebbers
Date: Mon, 9 Apr 2018 22:53:52 +0200
Subject: [PATCH] Consistent and higher precedence for default [Equiv]
instances on maps/collections.
---
theories/collections.v | 8 +++++---
theories/fin_maps.v | 4 +++-
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/theories/collections.v b/theories/collections.v
index 007e95e..2004d07 100644
--- a/theories/collections.v
+++ b/theories/collections.v
@@ -7,11 +7,13 @@ From stdpp Require Export orders list.
(* FIXME: This file needs a 'Proof Using' hint, but the default we use
everywhere makes for lots of extra ssumptions. *)
-Instance collection_equiv `{ElemOf A C} : Equiv C := λ X Y,
+(* Higher precedence to make sure these instances are not used for other types
+with an [ElemOf] instance, such as lists. *)
+Instance collection_equiv `{ElemOf A C} : Equiv C | 20 := λ X Y,
∀ x, x ∈ X ↔ x ∈ Y.
-Instance collection_subseteq `{ElemOf A C} : SubsetEq C := λ X Y,
+Instance collection_subseteq `{ElemOf A C} : SubsetEq C | 20 := λ X Y,
∀ x, x ∈ X → x ∈ Y.
-Instance collection_disjoint `{ElemOf A C} : Disjoint C := λ X Y,
+Instance collection_disjoint `{ElemOf A C} : Disjoint C | 20 := λ X Y,
∀ x, x ∈ X → x ∈ Y → False.
Typeclasses Opaque collection_equiv collection_subseteq collection_disjoint.
diff --git a/theories/fin_maps.v b/theories/fin_maps.v
index 121a13f..d53ea32 100644
--- a/theories/fin_maps.v
+++ b/theories/fin_maps.v
@@ -80,7 +80,9 @@ Instance map_intersection_with `{Merge M} {A} : IntersectionWith A (M A) :=
Instance map_difference_with `{Merge M} {A} : DifferenceWith A (M A) :=
λ f, merge (difference_with f).
-Instance map_equiv `{∀ A, Lookup K A (M A), Equiv A} : Equiv (M A) | 18 :=
+(** Higher precedence to make sure it's not used for other types with a [Lookup]
+instance, such as lists. *)
+Instance map_equiv `{∀ A, Lookup K A (M A), Equiv A} : Equiv (M A) | 20 :=
λ m1 m2, ∀ i, m1 !! i ≡ m2 !! i.
(** The relation [intersection_forall R] on finite maps describes that the
--
GitLab