let n be Nat; :: thesis: for K being Field
for M1, M2 being Matrix of n,K holds
( M1 commutes_with M2 iff (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) )

let K be Field; :: thesis: for M1, M2 being Matrix of n,K holds
( M1 commutes_with M2 iff (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) )

let M1, M2 be Matrix of n,K; :: thesis: ( M1 commutes_with M2 iff (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) )
A1: ( len (M1 * M2) = n & width (M1 * M2) = n ) by MATRIX_0:24;
A2: ( len ((M1 * M1) + (M1 * M2)) = n & width ((M1 * M1) + (M1 * M2)) = n ) by MATRIX_0:24;
A3: ( len ((M1 * M2) + (M2 * M2)) = n & width ((M1 * M2) + (M2 * M2)) = n ) by MATRIX_0:24;
A4: ( len (M1 * M1) = n & width (M1 * M1) = n ) by MATRIX_0:24;
A5: ( len M1 = n & width M1 = n ) by MATRIX_0:24;
A6: ( len ((M1 * M1) + (M2 * M1)) = n & width ((M1 * M1) + (M2 * M1)) = n ) by MATRIX_0:24;
A7: ( len M2 = n & width M2 = n ) by MATRIX_0:24;
A8: ( len (M1 + M2) = n & width (M1 + M2) = n ) by MATRIX_0:24;
thus ( M1 commutes_with M2 implies (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) ) :: thesis: ( (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) implies M1 commutes_with M2 )
proof
assume A9: M1 commutes_with M2 ; :: thesis: (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2)
(M1 + M2) * (M1 + M2) = ((M1 + M2) * M1) + ((M1 + M2) * M2) by A5, A7, A8, MATRIX_4:62
.= ((M1 * M1) + (M2 * M1)) + ((M1 + M2) * M2) by A5, A7, MATRIX_4:63
.= ((M1 * M1) + (M2 * M1)) + ((M1 * M2) + (M2 * M2)) by A5, A7, MATRIX_4:63
.= (((M1 * M1) + (M2 * M1)) + (M1 * M2)) + (M2 * M2) by A1, A6, MATRIX_3:3 ;
hence (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) by A9; :: thesis: verum
end;
assume A10: (M1 + M2) * (M1 + M2) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) ; :: thesis: M1 commutes_with M2
A11: ( len (M2 * M1) = n & width (M2 * M1) = n ) by MATRIX_0:24;
(M1 + M2) * (M1 + M2) = ((M1 + M2) * M1) + ((M1 + M2) * M2) by A5, A7, A8, MATRIX_4:62
.= ((M1 * M1) + (M2 * M1)) + ((M1 + M2) * M2) by A5, A7, MATRIX_4:63
.= ((M1 * M1) + (M2 * M1)) + ((M1 * M2) + (M2 * M2)) by A5, A7, MATRIX_4:63
.= (((M1 * M1) + (M2 * M1)) + (M1 * M2)) + (M2 * M2) by A1, A6, MATRIX_3:3 ;
then ((M1 * M1) + (M2 * M1)) + ((M1 * M2) + (M2 * M2)) = (((M1 * M1) + (M1 * M2)) + (M1 * M2)) + (M2 * M2) by A1, A6, A10, MATRIX_3:3;
then ((M1 * M1) + (M2 * M1)) + ((M1 * M2) + (M2 * M2)) = ((M1 * M1) + (M1 * M2)) + ((M1 * M2) + (M2 * M2)) by A1, A2, MATRIX_3:3;
then (M1 * M1) + (M2 * M1) = (M1 * M1) + (M1 * M2) by A6, A3, A2, MATRIX_4:4;
then (M2 * M1) + (M1 * M1) = (M1 * M1) + (M1 * M2) by A4, A11, MATRIX_3:2;
then (M2 * M1) + (M1 * M1) = (M1 * M2) + (M1 * M1) by A4, A1, MATRIX_3:2;
hence M1 commutes_with M2 by A4, A1, A11, MATRIX_4:4; :: thesis: verum