reserve i,j,m,n,k for Nat,
  x,y for set,
  K for Field,
  a,a1,a2 for Element of K,
  D for non empty set,
  d,d1,d2 for Element of D,
  M,M1,M2 for (Matrix of D),
  A,A1,A2,B1,B2 for (Matrix of K),
  f,g for FinSequence of NAT;
reserve F,F1,F2 for FinSequence_of_Matrix of D,
  G,G9,G1,G2 for FinSequence_of_Matrix of K;

theorem Th40:
  M={} implies block_diagonal(F^<*M*>,d) = block_diagonal(F,d) &
  block_diagonal(<*M*>^F,d) = block_diagonal(F,d)
proof
  set MM=<*M*>;
  set bf=block_diagonal(F,d);
  set BF=<*bf*>;
  set bFM=block_diagonal(BF^MM,d);
  set bMF=block_diagonal(MM^BF,d);
  set BFM=block_diagonal(F^MM,d);
  set BMF=block_diagonal(MM^F,d);
A1: width bMF=Sum Width(MM^BF) by Def5;
A2: Len(BF^MM)=Len BF^Len MM by Th14;
A3: Sum Len BF=len bf by Lm4;
  assume
A4: M={};
  then
A5: len M=0;
  then
A6: Sum Len MM=0 by Lm4;
A7: width M=0 by A4,CARD_1:27,MATRIX_0:def 3;
  then
A8: Sum Width MM=0 by Lm5;
A9: Sum Len MM=len M by Lm4;
A10: Seg Sum Width MM = {} by A8;
  len bFM=Sum Len(BF^MM) by Def5;
  then
A11: len bFM=len bf + len M by A2,A9,A3,RVSUM_1:75;
A12: Len(MM^BF) = Len MM^Len BF by Th14;
  len bMF=Sum Len(MM^BF) by Def5;
  then
A13: len bMF=len M+len bf by A12,A9,A3,RVSUM_1:75;
A14: Width (MM^BF)= Width MM^Width BF by Th18;
A15: Width(BF^MM)=Width BF^Width MM by Th18;
A16: Sum Width MM=width M by Lm5;
A17: Sum Width BF=width bf by Lm5;
  width bFM=Sum Width(BF^MM) by Def5;
  then
A18: width bFM=width bf+width M by A15,A16,A17,RVSUM_1:75;
  thus BFM = bFM by Th35
    .= Segm(bFM,Seg len bFM,Seg width bFM) by MATRIX13:46
    .= bf by A5,A7,A11,A18,Th32;
  thus BMF = bMF by Th36
    .= Segm(bMF,Seg len bMF,Seg width bMF) by MATRIX13:46
    .= Segm(bMF,Seg(len bf+Sum Len MM)\Seg Sum Len MM, Seg (width bf+Sum
  Width MM)\Seg Sum Width MM) by A5,A1,A14,A17,A13,A6,A8,A10,RVSUM_1:75
    .= bf by Th33;
end;
