diff --git a/theories/algebra/gmultiset.v b/theories/algebra/gmultiset.v
index a9acacd07a2b3ad33384181bd0bf615a5b4f4fbb..576918daaf3c93a40d856673505d6120e58c6452 100644
--- a/theories/algebra/gmultiset.v
+++ b/theories/algebra/gmultiset.v
@@ -61,19 +61,22 @@ Section gmultiset.
   Lemma gmultiset_update X Y : X ~~> Y.
   Proof. done. Qed.
 
-  Lemma gmultiset_local_update_alloc X Y X' : (X,Y) ~l~> (X ⊎ X', Y ⊎ X').
+  Lemma gmultiset_local_update X Y X' Y' : X ⊎ Y' = X' ⊎ Y → (X,Y) ~l~> (X', Y').
   Proof.
-    rewrite local_update_unital_discrete=> Z' _ /leibniz_equiv_iff->.
-    split. done. rewrite !gmultiset_op_disj_union.
-    by rewrite -!assoc (comm _ Z' X').
+    intros HXY. rewrite local_update_unital_discrete=> Z' _. intros ->%leibniz_equiv.
+    split; first done. apply leibniz_equiv_iff, (inj (⊎ Y)).
+    rewrite -HXY !gmultiset_op_disj_union.
+    by rewrite -(comm_L _ Y) (comm_L _ Y') assoc_L.
   Qed.
 
+  Lemma gmultiset_local_update_alloc X Y X' : (X,Y) ~l~> (X ⊎ X', Y ⊎ X').
+  Proof. apply gmultiset_local_update. by rewrite (comm_L _ Y) assoc_L. Qed.
+
   Lemma gmultiset_local_update_dealloc X Y X' :
     X' ⊆ X → X' ⊆ Y → (X,Y) ~l~> (X ∖ X', Y ∖ X').
   Proof.
     intros ->%gmultiset_disj_union_difference ->%gmultiset_disj_union_difference.
-    rewrite local_update_unital_discrete=> Z' _ /leibniz_equiv_iff->.
-    split. done. rewrite !gmultiset_op_disj_union=> x.
+    apply gmultiset_local_update. apply gmultiset_eq=> x.
     repeat (rewrite multiplicity_difference || rewrite multiplicity_disj_union).
     lia.
   Qed.