From 72a7ac7b642193e562ee61fbced04682ecf97f13 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Sun, 14 Mar 2021 14:18:57 +0100
Subject: [PATCH] add map_difference_delete_insert

---
 theories/fin_maps.v | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/theories/fin_maps.v b/theories/fin_maps.v
index bab9041d..ec1f3abf 100644
--- a/theories/fin_maps.v
+++ b/theories/fin_maps.v
@@ -2390,6 +2390,16 @@ Qed.
 Global Instance map_difference_right_id {A} : RightId (=) (∅:M A) (∖) := _.
 Lemma map_difference_empty {A} (m : M A) : m ∖ ∅ = m.
 Proof. by rewrite (right_id _ _). Qed.
+Lemma map_difference_delete_insert {A} (m m0 : M A) k v :
+  delete k (m ∖ m0) = m ∖ <[k:=v]> m0.
+Proof.
+  apply map_eq. intros i. apply option_eq. intros x.
+  rewrite lookup_delete_Some. rewrite !lookup_difference_Some. split.
+  - intros (Hne & Hm & Hm0). rewrite lookup_insert_ne by done. done.
+  - destruct (decide (k = i)) as [->|Hne].
+    + rewrite lookup_insert. naive_solver.
+    + rewrite lookup_insert_ne by done. done.
+Qed.
 End theorems.
 
 (** ** The seq operation *)
-- 
GitLab