Section AlgC.
Variable (gT : finGroupType).
Definition trowb n1 m2 n2 B A :=  @trow n1 A m2 n2 B.
Canonical Structure trowb_linear n1 m2 n2 B :=
Linear (@trowb_is_linear n1 m2 n2 B).
Canonical Structure trow_linear n1 m2 n2 A :=
Linear (@trow_is_linear n1 m2 n2 A).
Fixpoint tprod  (m1 : nat) :
forall n1 (A : 'M[F]_(m1,n1)) m2 n2 (B : 'M[F]_(m2,n2)),
'M[F]_(m1 * m2,n1 * n2) :=
if m1 is m'1.+1
return forall n1 (A : 'M[F]_(m1,n1)) m2 n2 (B : 'M[F]_(m2,n2)),
'M[F]_(m1 * m2,n1 * n2)
then
fun n1 (A : 'M[F]_(1 + m'1,n1)) m2 n2 B =>
(col_mx (trow (usubmx A) B) (tprod (dsubmx A) B))
else (fun _ _ _ _ _ => 0).

Lemma usumx_mul m1 m2 n p A B :
usubmx ((A *m B) : 'M[F]_(m1 + m2, n)) = usubmx (A : 'M_(m1 + m2, p)) *m B.