diff --git a/algebra/gset.v b/algebra/gset.v
index 4bd7d5a42c08d2240e16ca494f3c79613102348e..1ee25c530e536cb01ec33ff3b8b265f4327715d6 100644
--- a/algebra/gset.v
+++ b/algebra/gset.v
@@ -1,6 +1,6 @@
 From iris.algebra Require Export cmra.
 From iris.algebra Require Import updates local_updates.
-From iris.prelude Require Export collections gmap.
+From iris.prelude Require Export collections gmap mapset.
 
 (* The union CMRA *)
 Section gset.
@@ -11,11 +11,11 @@ Section gset.
 
   Instance gset_valid : Valid (gset K) := λ _, True.
   Instance gset_op : Op (gset K) := union.
-  Instance gset_pcore : PCore (gset K) := λ _, Some ∅.
+  Instance gset_pcore : PCore (gset K) := λ X, Some X.
 
   Lemma gset_op_union X Y : X ⋅ Y = X ∪ Y.
   Proof. done. Qed.
-  Lemma gset_core_empty X : core X = ∅.
+  Lemma gset_core_self X : core X = X.
   Proof. done. Qed.
   Lemma gset_included X Y : X ≼ Y ↔ X ⊆ Y.
   Proof.
@@ -32,8 +32,7 @@ Section gset.
     - solve_proper.
     - intros X1 X2 X3. by rewrite !gset_op_union assoc_L.
     - intros X1 X2. by rewrite !gset_op_union comm_L.
-    - intros X. by rewrite gset_op_union gset_core_empty left_id_L.
-    - intros X1 X2 _. by rewrite gset_included !gset_core_empty.
+    - intros X. by rewrite gset_core_self idemp_L.
   Qed.
   Canonical Structure gsetR := discreteR (gset K) gset_ra_mixin.
 
@@ -54,8 +53,15 @@ Section gset.
     intros; apply local_update_total; split; [done|]; simpl.
     intros mZ _. rewrite !gset_opM=> HX. by rewrite (comm_L _ X) -!assoc_L HX.
   Qed.
+
+  Global Instance gset_persistent X : Persistent X.
+  Proof. by apply persistent_total; rewrite gset_core_self. Qed.
+
 End gset.
 
+Arguments gsetR _ {_ _}.
+Arguments gsetUR _ {_ _}.
+
 (* The disjoint union CMRA *)
 Inductive gset_disj K `{Countable K} :=
   | GSet : gset K → gset_disj K