let n be Nat; :: thesis: for R being Ring
for M1, M2 being Matrix of n,R st M1 commutes_with M2 holds
M1 * M1 commutes_with M2

let R be Ring; :: thesis: for M1, M2 being Matrix of n,R st M1 commutes_with M2 holds
M1 * M1 commutes_with M2

let M1, M2 be Matrix of n,R; :: thesis: ( M1 commutes_with M2 implies M1 * M1 commutes_with M2 )
A1: width M2 = n by MATRIX_0:24;
A2: ( width M1 = n & len M1 = n ) by MATRIX_0:24;
assume A3: M1 commutes_with M2 ; :: thesis: M1 * M1 commutes_with M2
A4: len M2 = n by MATRIX_0:24;
then (M1 * M1) * M2 = M1 * (M1 * M2) by A2, MATRIX_3:33
.= M1 * (M2 * M1) by A3
.= (M1 * M2) * M1 by A1, A2, A4, MATRIX_3:33
.= (M2 * M1) * M1 by A3
.= M2 * (M1 * M1) by A1, A2, MATRIX_3:33 ;
hence M1 * M1 commutes_with M2 ; :: thesis: verum