aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/FSets/FMapFacts.v
diff options
context:
space:
mode:
Diffstat (limited to 'theories/FSets/FMapFacts.v')
-rw-r--r--theories/FSets/FMapFacts.v17
1 files changed, 9 insertions, 8 deletions
diff --git a/theories/FSets/FMapFacts.v b/theories/FSets/FMapFacts.v
index 0c1448c9b..db24a417f 100644
--- a/theories/FSets/FMapFacts.v
+++ b/theories/FSets/FMapFacts.v
@@ -18,12 +18,13 @@ Require Export FMapInterface.
Set Implicit Arguments.
Unset Strict Implicit.
-Hint Extern 1 (Equivalence _) => constructor; congruence.
-
(** * Facts about weak maps *)
Module WFacts_fun (E:DecidableType)(Import M:WSfun E).
+Module UEq := Equalities.UpdateEq(E)(E).
+Import UEq.
+
Notation eq_dec := E.eq_dec.
Definition eqb x y := if eq_dec x y then true else false.
@@ -1184,7 +1185,7 @@ Module WProperties_fun (E:DecidableType)(M:WSfun E).
Equal m m' -> cardinal m = cardinal m'.
Proof.
intros; do 2 rewrite cardinal_fold.
- apply fold_Equal with (eqA:=eq); compute; auto.
+ apply fold_Equal with (eqA:=eq); compute; auto. apply _.
Qed.
Lemma cardinal_1 : forall m : t elt, Empty m -> cardinal m = 0.
@@ -1197,7 +1198,7 @@ Module WProperties_fun (E:DecidableType)(M:WSfun E).
Proof.
intros; do 2 rewrite cardinal_fold.
change S with ((fun _ _ => S) x e).
- apply fold_Add with (eqA:=eq); compute; auto.
+ apply fold_Add with (eqA:=eq); compute; auto. apply _.
Qed.
Lemma cardinal_inv_1 : forall m : t elt,
@@ -1544,7 +1545,7 @@ Module WProperties_fun (E:DecidableType)(M:WSfun E).
setoid_replace (fold f m 0) with (fold f m1 (fold f m2 0)).
rewrite <- cardinal_fold.
apply fold_rel with (R:=fun u v => u = v + cardinal m2); simpl; auto.
- apply Partition_fold with (eqA:=eq); repeat red; auto.
+ apply Partition_fold with (eqA:=eq); repeat red; auto. apply _.
Qed.
Lemma Partition_partition : forall m m1 m2, Partition m m1 m2 ->
@@ -1694,7 +1695,7 @@ Module WProperties_fun (E:DecidableType)(M:WSfun E).
Proof.
intros m1 m1' Hm1 m2 m2' Hm2.
setoid_replace (update m1 m2) with (update m1' m2); unfold update.
- apply fold_Equal with (eqA:=Equal); auto.
+ apply fold_Equal with (eqA:=Equal); auto. apply _.
intros k k' Hk e e' He m m' Hm; rewrite Hk,He,Hm; red; auto.
intros k k' e e' i Hneq x.
rewrite !add_o; do 2 destruct eq_dec; auto. elim Hneq; eauto.
@@ -1712,7 +1713,7 @@ Module WProperties_fun (E:DecidableType)(M:WSfun E).
intros k e i i' H Hii' x.
pattern (mem k m2); rewrite Hm2. (* UGLY, see with Matthieu *)
destruct mem; rewrite Hii'; auto.
- apply fold_Equal with (eqA:=Equal); auto.
+ apply fold_Equal with (eqA:=Equal); auto. apply _.
intros k k' Hk e e' He m m' Hm; simpl in *.
pattern (mem k m2); rewrite Hk. (* idem *)
destruct mem; rewrite ?Hk,?He,Hm; red; auto.
@@ -1731,7 +1732,7 @@ Module WProperties_fun (E:DecidableType)(M:WSfun E).
intros k e i i' H Hii' x.
pattern (mem k m2); rewrite Hm2. (* idem *)
destruct mem; simpl; rewrite Hii'; auto.
- apply fold_Equal with (eqA:=Equal); auto.
+ apply fold_Equal with (eqA:=Equal); auto. apply _.
intros k k' Hk e e' He m m' Hm; simpl in *.
pattern (mem k m2); rewrite Hk. (* idem *)
destruct mem; simpl; rewrite ?Hk,?He,Hm; red; auto.