From 20de7e7c5e6940336b9ccff1639ad4a2db377486 Mon Sep 17 00:00:00 2001 From: Robbert Krebbers <mail@robbertkrebbers.nl> Date: Mon, 11 Jul 2016 15:14:01 +0200 Subject: [PATCH] Strengthen some gmap lemmas by using Leibniz equality. --- algebra/gmap.v | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/algebra/gmap.v b/algebra/gmap.v index 948d7f97e..8b2ce73d1 100644 --- a/algebra/gmap.v +++ b/algebra/gmap.v @@ -205,15 +205,12 @@ Qed. Lemma singleton_valid i x : ✓ ({[ i := x ]} : gmap K A) ↔ ✓ x. Proof. rewrite !cmra_valid_validN. by setoid_rewrite singleton_validN. Qed. -Lemma insert_singleton_opN n m i x : - m !! i = None → <[i:=x]> m ≡{n}≡ {[ i := x ]} ⋅ m. +Lemma insert_singleton_op m i x : m !! i = None → <[i:=x]> m = {[ i := x ]} ⋅ m. Proof. - intros Hi j; destruct (decide (i = j)) as [->|]. - - by rewrite lookup_op lookup_insert lookup_singleton Hi right_id. - - by rewrite lookup_op lookup_insert_ne // lookup_singleton_ne // left_id. + intros Hi; apply map_eq=> j; destruct (decide (i = j)) as [->|]. + - by rewrite lookup_op lookup_insert lookup_singleton Hi right_id_L. + - by rewrite lookup_op lookup_insert_ne // lookup_singleton_ne // left_id_L. Qed. -Lemma insert_singleton_op m i x : m !! i = None → <[i:=x]> m ≡ {[ i := x ]} ⋅ m. -Proof. rewrite !equiv_dist; naive_solver eauto using insert_singleton_opN. Qed. Lemma core_singleton (i : K) (x : A) cx : pcore x = Some cx → core ({[ i := x ]} : gmap K A) = {[ i := cx ]}. @@ -252,9 +249,9 @@ Proof. * by rewrite Hi lookup_op lookup_singleton lookup_delete. * by rewrite lookup_op lookup_singleton_ne // lookup_delete_ne // left_id. Qed. -Lemma dom_op m1 m2 : dom (gset K) (m1 ⋅ m2) ≡ dom _ m1 ∪ dom _ m2. +Lemma dom_op m1 m2 : dom (gset K) (m1 ⋅ m2) = dom _ m1 ∪ dom _ m2. Proof. - apply elem_of_equiv; intros i; rewrite elem_of_union !elem_of_dom. + apply elem_of_equiv_L=> i; rewrite elem_of_union !elem_of_dom. unfold is_Some; setoid_rewrite lookup_op. destruct (m1 !! i), (m2 !! i); naive_solver. Qed. @@ -303,8 +300,8 @@ Section freshness. { rewrite -not_elem_of_union -dom_op -not_elem_of_union; apply is_fresh. } exists (<[i:=x]>m); split. { by apply HQ; last done; apply not_elem_of_dom. } - rewrite insert_singleton_opN; last by apply not_elem_of_dom. - rewrite -assoc -insert_singleton_opN; + rewrite insert_singleton_op; last by apply not_elem_of_dom. + rewrite -assoc -insert_singleton_op; last by apply not_elem_of_dom; rewrite dom_op not_elem_of_union. by apply insert_validN; [apply cmra_valid_validN|]. Qed. -- GitLab