diff --git a/algebra/fin_maps.v b/algebra/fin_maps.v
index 57ee5eb186c7154911e88a67a6e56bbef0d9c74c..8ed52405c0585f8f16ed57a20492d6b8d44fa486 100644
--- a/algebra/fin_maps.v
+++ b/algebra/fin_maps.v
@@ -248,22 +248,21 @@ Lemma map_singleton_update i (x y : A) : x ~~> y → {[ i ↦ x ]} ~~> {[ i ↦
 Proof. apply map_insert_update. Qed.
 
 Lemma map_singleton_updateP_empty `{Empty A, !CMRAIdentity A}
-      (P : A → Prop) (Q : gmap K A → Prop) i :
+    (P : A → Prop) (Q : gmap K A → Prop) i :
   ∅ ~~>: P → (∀ y, P y → Q {[ i ↦ y ]}) → ∅ ~~>: Q.
-  Proof.
-    intros Hx HQ gf n Hg.
-    destruct (Hx (default ∅ (gf !! i) id) n) as (y&?&Hy).
-    { move:(Hg i). rewrite !left_id. case _: (gf !! i); first done.
-      intros. apply cmra_empty_valid. }
-    exists {[ i ↦ y]}. split; first by apply HQ.
-    intros i'. rewrite lookup_op.
-    destruct (decide (i' = i)).
-    - subst i'. rewrite lookup_singleton. move:Hy.
-      case _: (gf !! i); first done.
-      by rewrite right_id.
-    - move:(Hg i'). rewrite lookup_singleton_ne // !left_id. done.
+Proof.
+  intros Hx HQ gf n Hg.
+  destruct (Hx (from_option ∅ (gf !! i)) n) as (y&?&Hy).
+  { move:(Hg i). rewrite !left_id.
+    case _: (gf !! i); simpl; auto using cmra_empty_valid. }
+  exists {[ i ↦ y ]}; split; first by auto.
+  intros i'; destruct (decide (i' = i)) as [->|].
+  - rewrite lookup_op lookup_singleton.
+    move:Hy; case _: (gf !! i); first done.
+    by rewrite right_id.
+  - move:(Hg i'). by rewrite !lookup_op lookup_singleton_ne // !left_id.
 Qed.
-Lemma map_singleton_updateP_empty' `{Empty A, !CMRAIdentity A} (P : A → Prop) i :
+Lemma map_singleton_updateP_empty' `{Empty A, !CMRAIdentity A} (P: A → Prop) i :
   ∅ ~~>: P → ∅ ~~>: λ m, ∃ y, m = {[ i ↦ y ]} ∧ P y.
 Proof. eauto using map_singleton_updateP_empty. Qed.