diff --git a/theories/algebra/gmap.v b/theories/algebra/gmap.v
index 4bbb324c858e7f4179b522209b1ca9af227b3acb..13208c8d1126270c3e95019cbbff030cb9225437 100644
--- a/theories/algebra/gmap.v
+++ b/theories/algebra/gmap.v
@@ -598,24 +598,11 @@ Qed.
 Lemma big_opM_singletons m :
   ([^op map] k ↦ x ∈ m, {[ k := x ]}) = m.
 Proof.
-  rewrite big_opM_eq /big_opM_def.
-  remember (map_to_list m) as l eqn:Heql.
-  assert (map_to_list m ≡ₚ l) as Hl by by rewrite Heql.
-  clear Heql. revert m Hl. induction l as [|kx l IH].
-  - intros m ->%map_to_list_empty_inv_alt.
-    rewrite big_opL_nil. done.
-  - destruct kx as [k x].
-    intros m Hl.
-    rewrite big_opL_cons.
-    assert (NoDup ((k, x) :: l).*1) as Hnodup.
-    { rewrite -Hl. apply NoDup_fst_map_to_list. }
-    rewrite (IH (list_to_map l)).
-    + rewrite (map_to_list_insert_inv _ _ _ _ Hl).
-      rewrite insert_singleton_op //.
-      apply not_elem_of_list_to_map_1.
-      apply NoDup_cons_11 in Hnodup. done.
-    + apply map_to_list_to_map.
-      eapply NoDup_cons_12. done.
+  rewrite big_opM_eq /big_opM_def -{2}(list_to_map_to_list m).
+  assert (NoDup (map_to_list m).*1) as Hnodup by apply NoDup_fst_map_to_list.
+  revert Hnodup. induction (map_to_list m) as [|[k x] l IH]; csimpl; first done.
+  intros [??]%NoDup_cons. rewrite IH //.
+  rewrite insert_singleton_op ?not_elem_of_list_to_map_1 //.
 Qed.
 
 End properties.