diff --git a/theories/fin_maps.v b/theories/fin_maps.v index 0fda1a27d4490ed3c21ab0eba2649ac008a42cbd..fae2bb19f27a9b6aa2c41f7658eae62cb12ae7e9 100644 --- a/theories/fin_maps.v +++ b/theories/fin_maps.v @@ -2568,8 +2568,19 @@ Section map_kmap. map_kmap f m !!! f i = m !!! i. Proof. by rewrite !lookup_total_alt, lookup_map_kmap. Qed. + Global Instance map_kmap_inj {A} : Inj (=@{M1 A}) (=) (map_kmap f). + Proof. + intros m1 m2 Hm. apply map_eq. intros i. by rewrite <-!lookup_map_kmap, Hm. + Qed. + Lemma map_kmap_empty {A} : map_kmap f ∅ =@{M2 A} ∅. Proof. unfold map_kmap. by rewrite map_to_list_empty. Qed. + Lemma map_kmap_empty_inv {A} (m : M1 A) : map_kmap f m = ∅ → m = ∅. + Proof. + intros Hm. apply map_empty; intros i. + apply (lookup_map_kmap_None _ (f i)); [|done]. by rewrite Hm, lookup_empty. + Qed. + Lemma map_kmap_singleton {A} i (x : A) : map_kmap f {[ i := x ]} = {[ f i := x ]}. Proof. unfold map_kmap. by rewrite map_to_list_singleton. Qed.