From f372c5c1530963f73148bf1231ac7b45e0e0e5cf Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Tue, 29 Mar 2016 12:41:55 +0200
Subject: [PATCH] Rename algebra/fin_maps.v -> algebra/gmap.v

Also remove some superfluous map_ prefixes.
---
 _CoqProject                     |   2 +-
 algebra/{fin_maps.v => gmap.v}  | 190 ++++++++++++++++----------------
 heap_lang/lib/heap.v            |  16 +--
 program_logic/ghost_ownership.v |  20 ++--
 program_logic/global_functor.v  |   4 +-
 program_logic/ownership.v       |   2 +-
 program_logic/resources.v       |   6 +-
 program_logic/wsat.v            |   2 +-
 8 files changed, 119 insertions(+), 123 deletions(-)
 rename algebra/{fin_maps.v => gmap.v} (66%)

diff --git a/_CoqProject b/_CoqProject
index 11ce70ea2..6c8d1e3ca 100644
--- a/_CoqProject
+++ b/_CoqProject
@@ -41,7 +41,7 @@ algebra/cmra_big_op.v
 algebra/cmra_tactics.v
 algebra/sts.v
 algebra/auth.v
-algebra/fin_maps.v
+algebra/gmap.v
 algebra/cofe.v
 algebra/base.v
 algebra/dra.v
diff --git a/algebra/fin_maps.v b/algebra/gmap.v
similarity index 66%
rename from algebra/fin_maps.v
rename to algebra/gmap.v
index 52ef68d60..1adec3526 100644
--- a/algebra/fin_maps.v
+++ b/algebra/gmap.v
@@ -6,14 +6,14 @@ Section cofe.
 Context `{Countable K} {A : cofeT}.
 Implicit Types m : gmap K A.
 
-Instance map_dist : Dist (gmap K A) := λ n m1 m2,
+Instance gmap_dist : Dist (gmap K A) := λ n m1 m2,
   ∀ i, m1 !! i ≡{n}≡ m2 !! i.
-Program Definition map_chain (c : chain (gmap K A))
+Program Definition gmap_chain (c : chain (gmap K A))
   (k : K) : chain (option A) := {| chain_car n := c n !! k |}.
 Next Obligation. by intros c k n i ?; apply (chain_cauchy c). Qed.
-Instance map_compl : Compl (gmap K A) := λ c,
-  map_imap (λ i _, compl (map_chain c i)) (c 0).
-Definition map_cofe_mixin : CofeMixin (gmap K A).
+Instance gmap_compl : Compl (gmap K A) := λ c,
+  map_imap (λ i _, compl (gmap_chain c i)) (c 0).
+Definition gmap_cofe_mixin : CofeMixin (gmap K A).
 Proof.
   split.
   - intros m1 m2; split.
@@ -24,15 +24,15 @@ Proof.
     + by intros m1 m2 ? k.
     + by intros m1 m2 m3 ?? k; trans (m2 !! k).
   - by intros n m1 m2 ? k; apply dist_S.
-  - intros n c k; rewrite /compl /map_compl lookup_imap.
+  - intros n c k; rewrite /compl /gmap_compl lookup_imap.
     feed inversion (λ H, chain_cauchy c 0 n H k); simpl; auto with lia.
     by rewrite conv_compl /=; apply reflexive_eq.
 Qed.
-Canonical Structure mapC : cofeT := CofeT map_cofe_mixin.
-Global Instance map_discrete : Discrete A → Discrete mapC.
+Canonical Structure gmapC : cofeT := CofeT gmap_cofe_mixin.
+Global Instance gmap_discrete : Discrete A → Discrete gmapC.
 Proof. intros ? m m' ? i. by apply (timeless _). Qed.
 (* why doesn't this go automatic? *)
-Global Instance mapC_leibniz: LeibnizEquiv A → LeibnizEquiv mapC.
+Global Instance gmapC_leibniz: LeibnizEquiv A → LeibnizEquiv gmapC.
 Proof. intros; change (LeibnizEquiv (gmap K A)); apply _. Qed.
 
 Global Instance lookup_ne n k :
@@ -62,47 +62,47 @@ Proof.
     [by constructor|by apply lookup_ne].
 Qed.
 
-Instance map_empty_timeless : Timeless (∅ : gmap K A).
+Instance gmap_empty_timeless : Timeless (∅ : gmap K A).
 Proof.
   intros m Hm i; specialize (Hm i); rewrite lookup_empty in Hm |- *.
   inversion_clear Hm; constructor.
 Qed.
-Global Instance map_lookup_timeless m i : Timeless m → Timeless (m !! i).
+Global Instance gmap_lookup_timeless m i : Timeless m → Timeless (m !! i).
 Proof.
   intros ? [x|] Hx; [|by symmetry; apply: timeless].
   assert (m ≡{0}≡ <[i:=x]> m)
     by (by symmetry in Hx; inversion Hx; cofe_subst; rewrite insert_id).
   by rewrite (timeless m (<[i:=x]>m)) // lookup_insert.
 Qed.
-Global Instance map_insert_timeless m i x :
+Global Instance gmap_insert_timeless m i x :
   Timeless x → Timeless m → Timeless (<[i:=x]>m).
 Proof.
   intros ?? m' Hm j; destruct (decide (i = j)); simplify_map_eq.
   { by apply: timeless; rewrite -Hm lookup_insert. }
   by apply: timeless; rewrite -Hm lookup_insert_ne.
 Qed.
-Global Instance map_singleton_timeless i x :
+Global Instance gmap_singleton_timeless i x :
   Timeless x → Timeless ({[ i := x ]} : gmap K A) := _.
 End cofe.
 
-Arguments mapC _ {_ _} _.
+Arguments gmapC _ {_ _} _.
 
 (* CMRA *)
 Section cmra.
 Context `{Countable K} {A : cmraT}.
 Implicit Types m : gmap K A.
 
-Instance map_op : Op (gmap K A) := merge op.
-Instance map_core : Core (gmap K A) := fmap core.
-Instance map_valid : Valid (gmap K A) := λ m, ∀ i, ✓ (m !! i).
-Instance map_validN : ValidN (gmap K A) := λ n m, ∀ i, ✓{n} (m !! i).
+Instance gmap_op : Op (gmap K A) := merge op.
+Instance gmap_core : Core (gmap K A) := fmap core.
+Instance gmap_valid : Valid (gmap K A) := λ m, ∀ i, ✓ (m !! i).
+Instance gmap_validN : ValidN (gmap K A) := λ n m, ∀ i, ✓{n} (m !! i).
 
 Lemma lookup_op m1 m2 i : (m1 â‹… m2) !! i = m1 !! i â‹… m2 !! i.
 Proof. by apply lookup_merge. Qed.
 Lemma lookup_core m i : core m !! i = core (m !! i).
 Proof. by apply lookup_fmap. Qed.
 
-Lemma map_included_spec (m1 m2 : gmap K A) : m1 ≼ m2 ↔ ∀ i, m1 !! i ≼ m2 !! i.
+Lemma gmap_included_spec (m1 m2 : gmap K A) : m1 ≼ m2 ↔ ∀ i, m1 !! i ≼ m2 !! i.
 Proof.
   split; [by intros [m Hm] i; exists (m !! i); rewrite -lookup_op Hm|].
   revert m2. induction m1 as [|i x m Hi IH] using map_ind=> m2 Hm.
@@ -118,7 +118,7 @@ Proof.
       lookup_insert_ne // lookup_partial_alter_ne.
 Qed.
 
-Definition map_cmra_mixin : CMRAMixin (gmap K A).
+Definition gmap_cmra_mixin : CMRAMixin (gmap K A).
 Proof.
   split.
   - by intros n m1 m2 m3 Hm i; rewrite !lookup_op (Hm i).
@@ -132,7 +132,7 @@ Proof.
   - by intros m1 m2 i; rewrite !lookup_op comm.
   - by intros m i; rewrite lookup_op !lookup_core cmra_core_l.
   - by intros m i; rewrite !lookup_core cmra_core_idemp.
-  - intros x y; rewrite !map_included_spec; intros Hm i.
+  - intros x y; rewrite !gmap_included_spec; intros Hm i.
     by rewrite !lookup_core; apply cmra_core_preserving.
   - intros n m1 m2 Hm i; apply cmra_validN_op_l with (m2 !! i).
     by rewrite -lookup_op.
@@ -152,25 +152,25 @@ Proof.
       pose proof (Hm12' i) as Hm12''; rewrite Hx in Hm12''.
       by symmetry; apply option_op_positive_dist_r with (m1 !! i).
 Qed.
-Canonical Structure mapR : cmraT := CMRAT map_cofe_mixin map_cmra_mixin.
-Global Instance map_cmra_unit : CMRAUnit mapR.
+Canonical Structure gmapR : cmraT := CMRAT gmap_cofe_mixin gmap_cmra_mixin.
+Global Instance gmap_cmra_unit : CMRAUnit gmapR.
 Proof.
   split.
   - by intros i; rewrite lookup_empty.
   - by intros m i; rewrite /= lookup_op lookup_empty (left_id_L None _).
-  - apply map_empty_timeless.
+  - apply gmap_empty_timeless.
 Qed.
-Global Instance map_cmra_discrete : CMRADiscrete A → CMRADiscrete mapR.
+Global Instance gmap_cmra_discrete : CMRADiscrete A → CMRADiscrete gmapR.
 Proof. split; [apply _|]. intros m ? i. by apply: cmra_discrete_valid. Qed.
 
 (** Internalized properties *)
-Lemma map_equivI {M} m1 m2 : (m1 ≡ m2) ⊣⊢ (∀ i, m1 !! i ≡ m2 !! i : uPred M).
+Lemma gmap_equivI {M} m1 m2 : (m1 ≡ m2) ⊣⊢ (∀ i, m1 !! i ≡ m2 !! i : uPred M).
 Proof. by uPred.unseal. Qed.
-Lemma map_validI {M} m : (✓ m) ⊣⊢ (∀ i, ✓ (m !! i) : uPred M).
+Lemma gmap_validI {M} m : (✓ m) ⊣⊢ (∀ i, ✓ (m !! i) : uPred M).
 Proof. by uPred.unseal. Qed.
 End cmra.
 
-Arguments mapR _ {_ _} _.
+Arguments gmapR _ {_ _} _.
 
 Section properties.
 Context `{Countable K} {A : cmraT}.
@@ -178,23 +178,23 @@ Implicit Types m : gmap K A.
 Implicit Types i : K.
 Implicit Types a : A.
 
-Lemma map_lookup_validN n m i x : ✓{n} m → m !! i ≡{n}≡ Some x → ✓{n} x.
+Lemma lookup_validN n m i x : ✓{n} m → m !! i ≡{n}≡ Some x → ✓{n} x.
 Proof. by move=> /(_ i) Hm Hi; move:Hm; rewrite Hi. Qed.
-Lemma map_lookup_valid m i x : ✓ m → m !! i ≡ Some x → ✓ x.
+Lemma lookup_valid m i x : ✓ m → m !! i ≡ Some x → ✓ x.
 Proof. move=> Hm Hi. move:(Hm i). by rewrite Hi. Qed.
-Lemma map_insert_validN n m i x : ✓{n} x → ✓{n} m → ✓{n} <[i:=x]>m.
+Lemma insert_validN n m i x : ✓{n} x → ✓{n} m → ✓{n} <[i:=x]>m.
 Proof. by intros ?? j; destruct (decide (i = j)); simplify_map_eq. Qed.
-Lemma map_insert_valid m i x : ✓ x → ✓ m → ✓ <[i:=x]>m.
+Lemma insert_valid m i x : ✓ x → ✓ m → ✓ <[i:=x]>m.
 Proof. by intros ?? j; destruct (decide (i = j)); simplify_map_eq. Qed.
-Lemma map_singleton_validN n i x : ✓{n} ({[ i := x ]} : gmap K A) ↔ ✓{n} x.
+Lemma singleton_validN n i x : ✓{n} ({[ i := x ]} : gmap K A) ↔ ✓{n} x.
 Proof.
-  split; [|by intros; apply map_insert_validN, cmra_unit_validN].
+  split; [|by intros; apply insert_validN, cmra_unit_validN].
   by move=>/(_ i); simplify_map_eq.
 Qed.
-Lemma map_singleton_valid i x : ✓ ({[ i := x ]} : gmap K A) ↔ ✓ x.
-Proof. rewrite !cmra_valid_validN. by setoid_rewrite map_singleton_validN. Qed.
+Lemma singleton_valid i x : ✓ ({[ i := x ]} : gmap K A) ↔ ✓ x.
+Proof. rewrite !cmra_valid_validN. by setoid_rewrite singleton_validN. Qed.
 
-Lemma map_insert_singleton_opN n m i x :
+Lemma insert_singleton_opN n m i x :
   m !! i = None ∨ m !! i ≡{n}≡ Some (core x) → <[i:=x]> m ≡{n}≡ {[ i := x ]} ⋅ m.
 Proof.
   intros Hi j; destruct (decide (i = j)) as [->|];
@@ -202,24 +202,22 @@ Proof.
   rewrite lookup_op lookup_insert lookup_singleton.
   by destruct Hi as [->| ->]; constructor; rewrite ?cmra_core_r.
 Qed.
-Lemma map_insert_singleton_op m i x :
+Lemma insert_singleton_op m i x :
   m !! i = None ∨ m !! i ≡ Some (core x) → <[i:=x]> m ≡ {[ i := x ]} ⋅ m.
-Proof.
-  rewrite !equiv_dist; naive_solver eauto using map_insert_singleton_opN.
-Qed.
+Proof. rewrite !equiv_dist; naive_solver eauto using insert_singleton_opN. Qed.
 
-Lemma map_core_singleton (i : K) (x : A) :
+Lemma core_singleton (i : K) (x : A) :
   core ({[ i := x ]} : gmap K A) = {[ i := core x ]}.
 Proof. apply map_fmap_singleton. Qed.
-Lemma map_op_singleton (i : K) (x y : A) :
+Lemma op_singleton (i : K) (x y : A) :
   {[ i := x ]} â‹… {[ i := y ]} = ({[ i := x â‹… y ]} : gmap K A).
 Proof. by apply (merge_singleton _ _ _ x y). Qed.
 
-Global Instance map_persistent m : (∀ x : A, Persistent x) → Persistent m.
+Global Instance gmap_persistent m : (∀ x : A, Persistent x) → Persistent m.
 Proof. intros ? i. by rewrite lookup_core persistent. Qed.
-Global Instance map_singleton_persistent i (x : A) :
+Global Instance gmap_singleton_persistent i (x : A) :
   Persistent x → Persistent {[ i := x ]}.
-Proof. intros. by rewrite /Persistent map_core_singleton persistent. Qed.
+Proof. intros. by rewrite /Persistent core_singleton persistent. Qed.
 
 Lemma singleton_includedN n m i x :
   {[ i := x ]} ≼{n} m ↔ ∃ y, m !! i ≡{n}≡ Some y ∧ x ≼{n} y.
@@ -234,14 +232,14 @@ Proof.
     + rewrite Hi lookup_op lookup_singleton lookup_insert. by constructor.
     + by rewrite lookup_op lookup_singleton_ne // lookup_insert_ne // left_id.
 Qed.
-Lemma map_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.
   unfold is_Some; setoid_rewrite lookup_op.
   destruct (m1 !! i), (m2 !! i); naive_solver.
 Qed.
 
-Lemma map_insert_updateP (P : A → Prop) (Q : gmap K A → Prop) m i x :
+Lemma insert_updateP (P : A → Prop) (Q : gmap K A → Prop) m i x :
   x ~~>: P → (∀ y, P y → Q (<[i:=y]>m)) → <[i:=x]>m ~~>: Q.
 Proof.
   intros Hx%option_updateP' HP n mf Hm.
@@ -251,24 +249,22 @@ Proof.
   intros j; move: (Hm j)=>{Hm}; rewrite !lookup_op=>Hm.
   destruct (decide (i = j)); simplify_map_eq/=; auto.
 Qed.
-Lemma map_insert_updateP' (P : A → Prop) m i x :
+Lemma insert_updateP' (P : A → Prop) m i x :
   x ~~>: P → <[i:=x]>m ~~>: λ m', ∃ y, m' = <[i:=y]>m ∧ P y.
-Proof. eauto using map_insert_updateP. Qed.
-Lemma map_insert_update m i x y : x ~~> y → <[i:=x]>m ~~> <[i:=y]>m.
-Proof.
-  rewrite !cmra_update_updateP; eauto using map_insert_updateP with subst.
-Qed.
+Proof. eauto using insert_updateP. Qed.
+Lemma insert_update m i x y : x ~~> y → <[i:=x]>m ~~> <[i:=y]>m.
+Proof. rewrite !cmra_update_updateP; eauto using insert_updateP with subst. Qed.
 
-Lemma map_singleton_updateP (P : A → Prop) (Q : gmap K A → Prop) i x :
+Lemma singleton_updateP (P : A → Prop) (Q : gmap K A → Prop) i x :
   x ~~>: P → (∀ y, P y → Q {[ i := y ]}) → {[ i := x ]} ~~>: Q.
-Proof. apply map_insert_updateP. Qed.
-Lemma map_singleton_updateP' (P : A → Prop) i x :
+Proof. apply insert_updateP. Qed.
+Lemma singleton_updateP' (P : A → Prop) i x :
   x ~~>: P → {[ i := x ]} ~~>: λ m, ∃ y, m = {[ i := y ]} ∧ P y.
-Proof. apply map_insert_updateP'. Qed.
-Lemma map_singleton_update i (x y : A) : x ~~> y → {[ i := x ]} ~~> {[ i := y ]}.
-Proof. apply map_insert_update. Qed.
+Proof. apply insert_updateP'. Qed.
+Lemma singleton_update i (x y : A) : x ~~> y → {[ i := x ]} ~~> {[ i := y ]}.
+Proof. apply insert_update. Qed.
 
-Lemma map_singleton_updateP_empty `{Empty A, !CMRAUnit A}
+Lemma singleton_updateP_empty `{Empty A, !CMRAUnit A}
     (P : A → Prop) (Q : gmap K A → Prop) i :
   ∅ ~~>: P → (∀ y, P y → Q {[ i := y ]}) → ∅ ~~>: Q.
 Proof.
@@ -283,34 +279,34 @@ Proof.
     by rewrite right_id.
   - move:(Hg i'). by rewrite !lookup_op lookup_singleton_ne // !left_id.
 Qed.
-Lemma map_singleton_updateP_empty' `{Empty A, !CMRAUnit A} (P: A → Prop) i :
+Lemma singleton_updateP_empty' `{Empty A, !CMRAUnit A} (P: A → Prop) i :
   ∅ ~~>: P → ∅ ~~>: λ m, ∃ y, m = {[ i := y ]} ∧ P y.
-Proof. eauto using map_singleton_updateP_empty. Qed.
+Proof. eauto using singleton_updateP_empty. Qed.
 
 Section freshness.
 Context `{Fresh K (gset K), !FreshSpec K (gset K)}.
-Lemma map_updateP_alloc_strong (Q : gmap K A → Prop) (I : gset K) m x :
+Lemma updateP_alloc_strong (Q : gmap K A → Prop) (I : gset K) m x :
   ✓ x → (∀ i, m !! i = None → i ∉ I → Q (<[i:=x]>m)) → m ~~>: Q.
 Proof.
   intros ? HQ n mf Hm. set (i := fresh (I ∪ dom (gset K) (m ⋅ mf))).
   assert (i ∉ I ∧ i ∉ dom (gset K) m ∧ i ∉ dom (gset K) mf) as [?[??]].
-  { rewrite -not_elem_of_union -map_dom_op -not_elem_of_union; apply is_fresh. }
+  { 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 map_insert_singleton_opN; last by left; apply not_elem_of_dom.
-  rewrite -assoc -map_insert_singleton_opN;
-    last by left; apply not_elem_of_dom; rewrite map_dom_op not_elem_of_union.
-  by apply map_insert_validN; [apply cmra_valid_validN|].
+  rewrite insert_singleton_opN; last by left; apply not_elem_of_dom.
+  rewrite -assoc -insert_singleton_opN;
+    last by left; apply not_elem_of_dom; rewrite dom_op not_elem_of_union.
+  by apply insert_validN; [apply cmra_valid_validN|].
 Qed.
-Lemma map_updateP_alloc (Q : gmap K A → Prop) m x :
+Lemma updateP_alloc (Q : gmap K A → Prop) m x :
   ✓ x → (∀ i, m !! i = None → Q (<[i:=x]>m)) → m ~~>: Q.
-Proof. move=>??. eapply map_updateP_alloc_strong with (I:=∅); by eauto. Qed.
-Lemma map_updateP_alloc_strong' m x (I : gset K) :
+Proof. move=>??. eapply updateP_alloc_strong with (I:=∅); by eauto. Qed.
+Lemma updateP_alloc_strong' m x (I : gset K) :
   ✓ x → m ~~>: λ m', ∃ i, i ∉ I ∧ m' = <[i:=x]>m ∧ m !! i = None.
-Proof. eauto using map_updateP_alloc_strong. Qed.
-Lemma map_updateP_alloc' m x :
+Proof. eauto using updateP_alloc_strong. Qed.
+Lemma updateP_alloc' m x :
   ✓ x → m ~~>: λ m', ∃ i, m' = <[i:=x]>m ∧ m !! i = None.
-Proof. eauto using map_updateP_alloc. Qed.
+Proof. eauto using updateP_alloc. Qed.
 End freshness.
 
 (* Allocation is a local update: Just use composition with a singleton map. *)
@@ -319,7 +315,7 @@ End freshness.
    deallocation. *)
 
 (* Applying a local update at a position we own is a local update. *)
-Global Instance map_alter_update `{!LocalUpdate Lv L} i :
+Global Instance gmap_alter_update `{!LocalUpdate Lv L} i :
   LocalUpdate (λ m, ∃ x, m !! i = Some x ∧ Lv x) (alter L i).
 Proof.
   split; first apply _.
@@ -332,32 +328,32 @@ Qed.
 End properties.
 
 (** Functor *)
-Instance map_fmap_ne `{Countable K} {A B : cofeT} (f : A → B) n :
+Instance gmap_fmap_ne `{Countable K} {A B : cofeT} (f : A → B) n :
   Proper (dist n ==> dist n) f → Proper (dist n ==>dist n) (fmap (M:=gmap K) f).
 Proof. by intros ? m m' Hm k; rewrite !lookup_fmap; apply option_fmap_ne. Qed.
-Instance map_fmap_cmra_monotone `{Countable K} {A B : cmraT} (f : A → B)
+Instance gmap_fmap_cmra_monotone `{Countable K} {A B : cmraT} (f : A → B)
   `{!CMRAMonotone f} : CMRAMonotone (fmap f : gmap K A → gmap K B).
 Proof.
   split; try apply _.
   - by intros n m ? i; rewrite lookup_fmap; apply (validN_preserving _).
-  - intros m1 m2; rewrite !map_included_spec=> Hm i.
+  - intros m1 m2; rewrite !gmap_included_spec=> Hm i.
     by rewrite !lookup_fmap; apply: included_preserving.
 Qed.
-Definition mapC_map `{Countable K} {A B} (f: A -n> B) : mapC K A -n> mapC K B :=
-  CofeMor (fmap f : mapC K A → mapC K B).
-Instance mapC_map_ne `{Countable K} {A B} n :
-  Proper (dist n ==> dist n) (@mapC_map K _ _ A B).
+Definition gmapC_map `{Countable K} {A B} (f: A -n> B) :
+  gmapC K A -n> gmapC K B := CofeMor (fmap f : gmapC K A → gmapC K B).
+Instance gmapC_map_ne `{Countable K} {A B} n :
+  Proper (dist n ==> dist n) (@gmapC_map K _ _ A B).
 Proof.
   intros f g Hf m k; rewrite /= !lookup_fmap.
   destruct (_ !! k) eqn:?; simpl; constructor; apply Hf.
 Qed.
 
-Program Definition mapCF K `{Countable K} (F : cFunctor) : cFunctor := {|
-  cFunctor_car A B := mapC K (cFunctor_car F A B);
-  cFunctor_map A1 A2 B1 B2 fg := mapC_map (cFunctor_map F fg)
+Program Definition gmapCF K `{Countable K} (F : cFunctor) : cFunctor := {|
+  cFunctor_car A B := gmapC K (cFunctor_car F A B);
+  cFunctor_map A1 A2 B1 B2 fg := gmapC_map (cFunctor_map F fg)
 |}.
 Next Obligation.
-  by intros K ?? F A1 A2 B1 B2 n f g Hfg; apply mapC_map_ne, cFunctor_ne.
+  by intros K ?? F A1 A2 B1 B2 n f g Hfg; apply gmapC_map_ne, cFunctor_ne.
 Qed.
 Next Obligation.
   intros K ?? F A B x. rewrite /= -{2}(map_fmap_id x).
@@ -367,18 +363,18 @@ Next Obligation.
   intros K ?? F A1 A2 A3 B1 B2 B3 f g f' g' x. rewrite /= -map_fmap_compose.
   apply map_fmap_setoid_ext=>y ??; apply cFunctor_compose.
 Qed.
-Instance mapCF_contractive K `{Countable K} F :
-  cFunctorContractive F → cFunctorContractive (mapCF K F).
+Instance gmapCF_contractive K `{Countable K} F :
+  cFunctorContractive F → cFunctorContractive (gmapCF K F).
 Proof.
-  by intros ? A1 A2 B1 B2 n f g Hfg; apply mapC_map_ne, cFunctor_contractive.
+  by intros ? A1 A2 B1 B2 n f g Hfg; apply gmapC_map_ne, cFunctor_contractive.
 Qed.
 
-Program Definition mapRF K `{Countable K} (F : rFunctor) : rFunctor := {|
-  rFunctor_car A B := mapR K (rFunctor_car F A B);
-  rFunctor_map A1 A2 B1 B2 fg := mapC_map (rFunctor_map F fg)
+Program Definition gmapRF K `{Countable K} (F : rFunctor) : rFunctor := {|
+  rFunctor_car A B := gmapR K (rFunctor_car F A B);
+  rFunctor_map A1 A2 B1 B2 fg := gmapC_map (rFunctor_map F fg)
 |}.
 Next Obligation.
-  by intros K ?? F A1 A2 B1 B2 n f g Hfg; apply mapC_map_ne, rFunctor_ne.
+  by intros K ?? F A1 A2 B1 B2 n f g Hfg; apply gmapC_map_ne, rFunctor_ne.
 Qed.
 Next Obligation.
   intros K ?? F A B x. rewrite /= -{2}(map_fmap_id x).
@@ -388,8 +384,8 @@ Next Obligation.
   intros K ?? F A1 A2 A3 B1 B2 B3 f g f' g' x. rewrite /= -map_fmap_compose.
   apply map_fmap_setoid_ext=>y ??; apply rFunctor_compose.
 Qed.
-Instance mapRF_contractive K `{Countable K} F :
-  rFunctorContractive F → rFunctorContractive (mapRF K F).
+Instance gmapRF_contractive K `{Countable K} F :
+  rFunctorContractive F → rFunctorContractive (gmapRF K F).
 Proof.
-  by intros ? A1 A2 B1 B2 n f g Hfg; apply mapC_map_ne, rFunctor_contractive.
+  by intros ? A1 A2 B1 B2 n f g Hfg; apply gmapC_map_ne, rFunctor_contractive.
 Qed.
diff --git a/heap_lang/lib/heap.v b/heap_lang/lib/heap.v
index fd0d90e90..88e25dac6 100644
--- a/heap_lang/lib/heap.v
+++ b/heap_lang/lib/heap.v
@@ -7,7 +7,7 @@ Import uPred.
    a finmap as their state. Or maybe even beyond "as their state", i.e. arbitrary
    predicates over finmaps instead of just ownP. *)
 
-Definition heapR : cmraT := mapR loc (fracR (dec_agreeR val)).
+Definition heapR : cmraT := gmapR loc (fracR (dec_agreeR val)).
 
 (** The CMRA we need. *)
 Class heapG Σ := HeapG {
@@ -108,9 +108,9 @@ Section heap.
     induction σ as [|l v σ Hl IH] using map_ind.
     { rewrite big_sepM_empty; apply True_intro. }
     rewrite to_heap_insert big_sepM_insert //.
-    rewrite (map_insert_singleton_op (to_heap σ));
+    rewrite (insert_singleton_op (to_heap σ));
       last by rewrite lookup_fmap Hl; auto.
-    by rewrite auth_own_op IH. 
+    by rewrite auth_own_op IH.
   Qed.
 
   Context `{heapG Σ}.
@@ -121,16 +121,16 @@ Section heap.
 
   Lemma heap_mapsto_op_eq l q1 q2 v :
     (l ↦{q1} v ★ l ↦{q2} v) ⊣⊢ (l ↦{q1+q2} v).
-  Proof. by rewrite -auth_own_op map_op_singleton Frac_op dec_agree_idemp. Qed.
+  Proof. by rewrite -auth_own_op op_singleton Frac_op dec_agree_idemp. Qed.
 
   Lemma heap_mapsto_op l q1 q2 v1 v2 :
     (l ↦{q1} v1 ★ l ↦{q2} v2) ⊣⊢ (v1 = v2 ∧ l ↦{q1+q2} v1).
   Proof.
     destruct (decide (v1 = v2)) as [->|].
     { by rewrite heap_mapsto_op_eq const_equiv // left_id. }
-    rewrite -auth_own_op map_op_singleton Frac_op dec_agree_ne //.
+    rewrite -auth_own_op op_singleton Frac_op dec_agree_ne //.
     apply (anti_symm (⊢)); last by apply const_elim_l.
-    rewrite auth_own_valid map_validI (forall_elim l) lookup_singleton.
+    rewrite auth_own_valid gmap_validI (forall_elim l) lookup_singleton.
     rewrite option_validI frac_validI discrete_valid. by apply const_elim_r.
   Qed.
 
@@ -160,8 +160,8 @@ Section heap.
     repeat erewrite <-exist_intro by apply _; simpl.
     rewrite -of_heap_insert left_id right_id.
     rewrite /heap_mapsto. ecancel [_ -★ Φ _]%I.
-    rewrite -(map_insert_singleton_op h); last by apply of_heap_None.
-    rewrite const_equiv; last by apply (map_insert_valid h).
+    rewrite -(insert_singleton_op h); last by apply of_heap_None.
+    rewrite const_equiv; last by apply (insert_valid h).
     by rewrite left_id -later_intro.
   Qed.
 
diff --git a/program_logic/ghost_ownership.v b/program_logic/ghost_ownership.v
index 3955afbf0..a136bdbae 100644
--- a/program_logic/ghost_ownership.v
+++ b/program_logic/ghost_ownership.v
@@ -12,7 +12,7 @@ Typeclasses Opaque to_globalF own.
 
 (** Properties about ghost ownership *)
 Section global.
-Context `{i : inG Λ Σ A}.
+Context `{inG Λ Σ A}.
 Implicit Types a : A.
 
 (** * Transport empty *)
@@ -35,12 +35,12 @@ Global Instance own_proper γ : Proper ((≡) ==> (⊣⊢)) (own γ) := ne_prope
 Lemma own_op γ a1 a2 : own γ (a1 ⋅ a2) ⊣⊢ (own γ a1 ★ own γ a2).
 Proof. by rewrite /own -ownG_op to_globalF_op. Qed.
 Global Instance own_mono γ : Proper (flip (≼) ==> (⊢)) (own γ).
-Proof. move=>a b [c H]. rewrite H own_op. eauto with I. Qed.
+Proof. move=>a b [c ->]. rewrite own_op. eauto with I. Qed.
 Lemma own_valid γ a : own γ a ⊢ ✓ a.
 Proof.
   rewrite /own ownG_valid /to_globalF.
   rewrite iprod_validI (forall_elim inG_id) iprod_lookup_singleton.
-  rewrite map_validI (forall_elim γ) lookup_singleton option_validI.
+  rewrite gmap_validI (forall_elim γ) lookup_singleton option_validI.
   (* implicit arguments differ a bit *)
   by trans (✓ cmra_transport inG_prf a : iPropG Λ Σ)%I; last destruct inG_prf.
 Qed.
@@ -60,8 +60,9 @@ Lemma own_alloc_strong a E (G : gset gname) :
 Proof.
   intros Ha.
   rewrite -(pvs_mono _ _ (∃ m, ■ (∃ γ, γ ∉ G ∧ m = to_globalF γ a) ∧ ownG m)%I).
-  - rewrite ownG_empty. eapply pvs_ownG_updateP, (iprod_singleton_updateP_empty inG_id);
-      first (eapply map_updateP_alloc_strong', cmra_transport_valid, Ha);
+  - rewrite ownG_empty.
+    eapply pvs_ownG_updateP, (iprod_singleton_updateP_empty inG_id);
+      first (eapply updateP_alloc_strong', cmra_transport_valid, Ha);
       naive_solver.
   - apply exist_elim=>m; apply const_elim_l=>-[γ [Hfresh ->]].
     by rewrite -(exist_intro γ) const_equiv // left_id.
@@ -78,7 +79,7 @@ Proof.
   intros Ha.
   rewrite -(pvs_mono _ _ (∃ m, ■ (∃ a', m = to_globalF γ a' ∧ P a') ∧ ownG m)%I).
   - eapply pvs_ownG_updateP, iprod_singleton_updateP;
-      first by (eapply map_singleton_updateP', cmra_transport_updateP', Ha).
+      first by (eapply singleton_updateP', cmra_transport_updateP', Ha).
     naive_solver.
   - apply exist_elim=>m; apply const_elim_l=>-[a' [-> HP]].
     rewrite -(exist_intro a'). by apply and_intro; [apply const_intro|].
@@ -90,13 +91,12 @@ Proof.
   by apply pvs_mono, exist_elim=> a''; apply const_elim_l=> ->.
 Qed.
 
-Lemma own_empty `{Empty A, !CMRAUnit A} γ E :
-  True ⊢ (|={E}=> own γ ∅).
+Lemma own_empty `{Empty A, !CMRAUnit A} γ E : True ⊢ (|={E}=> own γ ∅).
 Proof.
   rewrite ownG_empty /own. apply pvs_ownG_update, cmra_update_updateP.
   eapply iprod_singleton_updateP_empty;
-      first by eapply map_singleton_updateP_empty', cmra_transport_updateP',
-               cmra_update_updateP, cmra_update_unit.
+    first by eapply singleton_updateP_empty', cmra_transport_updateP',
+    cmra_update_updateP, cmra_update_unit.
   naive_solver.
 Qed.
 End global.
diff --git a/program_logic/global_functor.v b/program_logic/global_functor.v
index 2e3bf775a..03219ee21 100644
--- a/program_logic/global_functor.v
+++ b/program_logic/global_functor.v
@@ -18,7 +18,7 @@ Definition gid (Σ : gFunctors) := fin (projT1 Σ).
 Definition gname := positive.
 
 Definition globalF (Σ : gFunctors) : iFunctor :=
-  IFunctor (iprodRF (λ i, mapRF gname (projT2 Σ i))).
+  IFunctor (iprodRF (λ i, gmapRF gname (projT2 Σ i))).
 Notation iPropG Λ Σ := (iProp Λ (globalF Σ)).
 
 Class inG (Λ : language) (Σ : gFunctors) (A : cmraT) := InG {
@@ -39,7 +39,7 @@ Proof. by intros a a' Ha; apply iprod_singleton_ne; rewrite Ha. Qed.
 Lemma to_globalF_op γ a1 a2 :
   to_globalF γ (a1 ⋅ a2) ≡ to_globalF γ a1 ⋅ to_globalF γ a2.
 Proof.
-  by rewrite /to_globalF iprod_op_singleton map_op_singleton cmra_transport_op.
+  by rewrite /to_globalF iprod_op_singleton op_singleton cmra_transport_op.
 Qed.
 Global Instance to_globalF_timeless γ m: Timeless m → Timeless (to_globalF γ m).
 Proof. rewrite /to_globalF; apply _. Qed.
diff --git a/program_logic/ownership.v b/program_logic/ownership.v
index f89003cae..51a536405 100644
--- a/program_logic/ownership.v
+++ b/program_logic/ownership.v
@@ -65,7 +65,7 @@ Proof.
   rewrite /uPred_holds/=res_includedN/= singleton_includedN; split.
   - intros [(P'&Hi&HP) _]; rewrite Hi.
     apply Some_dist, symmetry, agree_valid_includedN; last done.
-    by apply map_lookup_validN with (wld r) i.
+    by apply lookup_validN with (wld r) i.
   - intros ?; split_and?; try apply cmra_unit_leastN; eauto.
 Qed.
 Lemma ownP_spec n r σ : ✓{n} r → (ownP σ) n r ↔ pst r ≡ Excl σ.
diff --git a/program_logic/resources.v b/program_logic/resources.v
index 795899302..7d7714521 100644
--- a/program_logic/resources.v
+++ b/program_logic/resources.v
@@ -1,9 +1,9 @@
-From iris.algebra Require Export fin_maps agree excl.
+From iris.algebra Require Export gmap agree excl.
 From iris.algebra Require Import upred.
 From iris.program_logic Require Export language.
 
 Record res (Λ : language) (A : cofeT) (M : cmraT) := Res {
-  wld : mapR positive (agreeR A);
+  wld : gmapR positive (agreeR A);
   pst : exclR (stateC Λ);
   gst : M;
 }.
@@ -216,7 +216,7 @@ Instance resC_map_ne {Λ A A' M M'} n :
   Proper (dist n ==> dist n ==> dist n) (@resC_map Λ A A' M M').
 Proof.
   intros f g Hfg r; split; simpl; auto.
-  - by apply (mapC_map_ne _ (agreeC_map f) (agreeC_map g)), agreeC_map_ne.
+  - by apply (gmapC_map_ne _ (agreeC_map f) (agreeC_map g)), agreeC_map_ne.
 Qed.
 
 Program Definition resRF (Λ : language)
diff --git a/program_logic/wsat.v b/program_logic/wsat.v
index 7eee60b1e..70149985f 100644
--- a/program_logic/wsat.v
+++ b/program_logic/wsat.v
@@ -53,7 +53,7 @@ Proof.
   assert (P' ≡{S n}≡ to_agree $ Next $ iProp_unfold $
                        iProp_fold $ later_car $ P' (S n)) as HPiso.
   { rewrite iProp_unfold_fold later_eta to_agree_car //.
-    apply (map_lookup_validN _ (wld (r â‹… big_opM rs)) i); rewrite ?HP'; auto. }
+    apply (lookup_validN _ (wld (r â‹… big_opM rs)) i); rewrite ?HP'; auto. }
   assert (P ≡{n'}≡ iProp_fold (later_car (P' (S n)))) as HPP'.
   { apply (inj iProp_unfold), (inj Next), (inj to_agree).
     by rewrite -HiP -(dist_le _ _ _ _ HPiso). }
-- 
GitLab