Canonical swizzle_mx_scalable m n p q f g k :=
  AddLinear (@swizzle_mx_is_scalable m n p q f g k).Canonical trmx_linear m n := SwizzleLin (@trmx R m n).Canonical row_linear m n i := SwizzleLin (@row R m n i).Canonical col_linear m n j := SwizzleLin (@col R m n j).Canonical row'_linear m n i := SwizzleLin (@row' R m n i).Canonical col'_linear m n j := SwizzleLin (@col' R m n j).Canonical row_perm_linear m n s := SwizzleLin (@row_perm R m n s).Canonical col_perm_linear m n s := SwizzleLin (@col_perm R m n s).Canonical xrow_linear m n i1 i2 := SwizzleLin (@xrow R m n i1 i2).Canonical xcol_linear m n j1 j2 := SwizzleLin (@xcol R m n j1 j2).Canonical lsubmx_linear m n1 n2 := SwizzleLin (@lsubmx R m n1 n2).Canonical rsubmx_linear m n1 n2 := SwizzleLin (@rsubmx R m n1 n2).Canonical usubmx_linear m1 m2 n := SwizzleLin (@usubmx R m1 m2 n).Canonical dsubmx_linear m1 m2 n := SwizzleLin (@dsubmx R m1 m2 n).Canonical vec_mx_linear m n := SwizzleLin (@vec_mx R m n).Definition mxvec_is_linear m n := can2_linear (@vec_mxK R m n) mxvecK.Canonical mxvec_linear m n := AddLinear (@mxvec_is_linear m n).

Lemma delta_mx_lshift m n1 n2 i j : delta_mx i (lshift n2 j) = row_mx (delta_mx i j) 0 :> 'M_(m, n1 + n2).