diff --git a/theories/fin_map_dom.v b/theories/fin_map_dom.v
index f0e3e9b1361e5d7976daea9245013125d247672a..c8b7097abfeb12654258762ff0da3fc8ad580295 100644
--- a/theories/fin_map_dom.v
+++ b/theories/fin_map_dom.v
@@ -198,6 +198,15 @@ Proof.
       naive_solver.
 Qed.
 
+Lemma dom_map_kmap `{!Elements K D, !FinSet K D, FinMapDom K2 M2 D2}
+    {A} (f : K → K2) `{!Inj (=) (=) f} (m : M A) :
+  dom D2 (map_kmap (M2:=M2) f m) ≡ set_map f (dom D m).
+Proof.
+  apply set_equiv. intros i.
+  rewrite !elem_of_dom, (lookup_map_kmap_is_Some _), elem_of_map.
+  by setoid_rewrite elem_of_dom.
+Qed.
+
 (** If [D] has Leibniz equality, we can show an even stronger result.  This is a
 common case e.g. when having a [gmap K A] where the key [K] has Leibniz equality
 (and thus also [gset K], the usual domain) but the value type [A] does not. *)
@@ -252,6 +261,11 @@ Section leibniz.
   Proof. unfold_leibniz. apply dom_union_inv. Qed.
 End leibniz.
 
+Lemma dom_map_kmap_L `{!Elements K D, !FinSet K D, FinMapDom K2 M2 D2}
+    `{!LeibnizEquiv D2} {A} (f : K → K2) `{!Inj (=) (=) f} (m : M A) :
+  dom D2 (map_kmap (M2:=M2) f m) = set_map f (dom D m).
+Proof. unfold_leibniz. by apply dom_map_kmap. Qed.
+
 (** * Set solver instances *)
 Global Instance set_unfold_dom_empty {A} i : SetUnfoldElemOf i (dom D (∅:M A)) False.
 Proof. constructor. by rewrite dom_empty, elem_of_empty. Qed.