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 Th34:
  block_diagonal(<*M*>,d) = M
proof
  reconsider E=<*>(D**) as Matrix-yielding FinSequence of (D**) by Th12;
  set ME=<*M*>^E;
  set B=block_diagonal(<*M*>,d);
A1: len B = Sum Len <*M*> by Def5
    .= len M by Lm4;
A2: width B = Sum Width <*M*> by Def5
    .= width M by Lm5;
  ME = <*M*> by FINSEQ_1:34;
  hence M = Segm(B,Seg len M,Seg width M) by Th32
    .= B by A1,A2,MATRIX13:46;
end;
