reserve i,j,n for Nat,
  K for Field,
  a for Element of K,
  M,M1,M2,M3,M4 for Matrix of n,K;
reserve A for Matrix of K;

theorem
  M1 commutes_with M2 iff 
  (M1+M2)*(M1+M2)=M1*M1+M1*M2+M1*M2+M2*M2
proof
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
  proof
    assume
A9: M1 commutes_with 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 thesis by A9;
  end;
  assume
A10: (M1+M2)*(M1+M2)=M1*M1+M1*M2+M1*M2+M2*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 thesis by A4,A1,A11,MATRIX_4:4;
end;
