Fact map_mx_key : unit.Definition map_mx m n (A : 'M_(m, n)) := \matrix[map_mx_key]_(i, j) f (A i j).

(* Specifications: *)
Lemma map_trmx : A^f^T = A^T^f.
Lemma map_const_mx a : (const_mx a)^f = const_mx (f a) :> 'M_(m, n).
Lemma map_row i : (row i A)^f = row i A^f.
Lemma map_col j : (col j A)^f = col j A^f.
Lemma map_row' i0 : (row' i0 A)^f = row' i0 A^f.
Lemma map_col' j0 : (col' j0 A)^f = col' j0 A^f.
Lemma map_row_perm s : (row_perm s A)^f = row_perm s A^f.
Lemma map_col_perm s : (col_perm s A)^f = col_perm s A^f.
Lemma map_xrow i1 i2 : (xrow i1 i2 A)^f = xrow i1 i2 A^f.
Lemma map_xcol j1 j2 : (xcol j1 j2 A)^f = xcol j1 j2 A^f.
Lemma map_castmx m' n' c : (castmx c A)^f = castmx c A^f :> 'M_(m', n').
Lemma map_conform_mx m' n' (B : 'M_(m', n')) : (conform_mx B A)^f = conform_mx B^f A^f.
Lemma map_mxvec : (mxvec A)^f = mxvec A^f.
Lemma map_vec_mx (v : 'rV_(m * n)) : (vec_mx v)^f = vec_mx v^f.
Lemma map_row_mx : (row_mx Aul Aur)^f = row_mx Aul^f Aur^f.
Lemma map_col_mx : (col_mx Aul Adl)^f = col_mx Aul^f Adl^f.
Lemma map_block_mx : (block_mx Aul Aur Adl Adr)^f = block_mx Aul^f Aur^f Adl^f Adr^f.
Lemma map_lsubmx : (lsubmx Bh)^f = lsubmx Bh^f.
Lemma map_rsubmx : (rsubmx Bh)^f = rsubmx Bh^f.
Lemma map_usubmx : (usubmx Bv)^f = usubmx Bv^f.
Lemma map_dsubmx : (dsubmx Bv)^f = dsubmx Bv^f.
Lemma map_ulsubmx : (ulsubmx B)^f = ulsubmx B^f.
Lemma map_ursubmx : (ursubmx B)^f = ursubmx B^f.
Lemma map_dlsubmx : (dlsubmx B)^f = dlsubmx B^f.
Lemma map_drsubmx : (drsubmx B)^f = drsubmx B^f.