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 Th24:
  for M be Matrix of Sum Len (<*M1,M2*>),Sum Width (<*M1,M2*>),D
  holds M = block_diagonal(<*M1,M2*>,d) iff for i holds (i in Seg width M1
implies Col(M,i) = Col(M1,i)^(len M2 |-> d)) & (i in Seg width M2 implies Col(M
  ,i+width M1)=(len M1|->d)^Col(M2,i))
proof
  let M be Matrix of Sum Len (<*M1,M2*>),Sum Width (<*M1,M2*>),D;
  set m12=<*M1,M2*>;
  set B=block_diagonal(m12,d);
A1: Seg len M=dom M by FINSEQ_1:def 3;
A2: Seg len M1=dom M1 by FINSEQ_1:def 3;
A3: dom M2=Seg len M2 by FINSEQ_1:def 3;
A4: Sum Len m12=len M1+len M2 by Th16;
A5: Sum Len m12=0 implies Sum Width m12=0 by Th13;
  then
A6: len M=Sum Len m12 by MATRIX13:1;
A7: width M=Sum Width m12 by A5,MATRIX13:1;
A8: Sum Width m12=width M1+width M2 by Th20;
  then width M1<=width M by A7,NAT_1:12;
  then
A9: Seg width M1 c= Seg width M by FINSEQ_1:5;
  thus M = B implies for i holds (i in Seg width M1 implies Col(M,i)=Col(M1,i)
  ^(len M2 |-> d)) & (i in Seg width M2 implies Col(M,i+width M1)=(len M1|->d)^
  Col(M2,i))
  proof
A10: dom (width M2 |-> d) =Seg width M2 by FINSEQ_2:124;
A11: dom (width M1 |-> d) =Seg width M1 by FINSEQ_2:124;
    set L2=len M2|->d;
    set L1=len M1|->d;
    assume
A12: M=B;
    let i;
    set CM=Col(M,i);
    set CM1=Col(M1,i);
A13: len CM=len M by CARD_1:def 7;
A14: dom L1=Seg len M1 by FINSEQ_2:124;
A15: dom L2=Seg len M2 by FINSEQ_2:124;
A16: len CM1=len M1 by CARD_1:def 7;
    then
A17: dom CM1=dom M1 by FINSEQ_3:29;
A18: len L2=len M2 by CARD_1:def 7;
    then
A19: dom L2=dom M2 by FINSEQ_3:29;
    thus i in Seg width M1 implies CM=CM1^L2
    proof
      assume
A20:  i in Seg width M1;
A21:  len (CM1^L2)=len CM1+len L2 by FINSEQ_1:22;
      now
        let j such that
A22:    1<=j and
A23:    j<=len CM;
        j in dom M by A13,A22,A23,FINSEQ_3:25;
        then
A24:    CM.j=Line(M,j).i by A9,A20,MATRIX_0:42;
A25:    dom Line(M1,j)=Seg width M1 by FINSEQ_2:124;
A26:    j in dom (CM1^L2) by A6,A4,A13,A16,A18,A21,A22,A23,FINSEQ_3:25;
        now
          per cases by A26,FINSEQ_1:25;
          suppose
A27:        j in dom CM1;
            hence CM.j = (Line(M1,j)^(width M2 |-> d)).i by A12,A17,A24,Th23
              .= Line(M1,j).i by A20,A25,FINSEQ_1:def 7
              .= CM1.j by A17,A20,A27,MATRIX_0:42
              .= (CM1^L2).j by A27,FINSEQ_1:def 7;
          end;
          suppose
            ex k st k in dom L2 & j=len CM1+k;
            then consider k such that
A28:        k in dom L2 and
A29:        j = len CM1+k;
            thus CM.j = ((width M1 |-> d)^Line(M2,k)).i by A12,A16,A19,A24,A28
,A29,Th23
              .= (width M1|->d).i by A11,A20,FINSEQ_1:def 7
              .= d by A20,FINSEQ_2:57
              .= L2.k by A15,A28,FINSEQ_2:57
              .= (CM1^L2).j by A28,A29,FINSEQ_1:def 7;
          end;
        end;
        hence (CM1^L2).j=CM.j;
      end;
      hence thesis by A6,A13,A16,A18,A21,Th16;
    end;
    set CM2=Col(M2,i);
    set CMi=Col(M,i+width M1);
A30: len CMi=len M by CARD_1:def 7;
A31: len CM2=len M2 by CARD_1:def 7;
    then
A32: dom CM2=dom M2 by FINSEQ_3:29;
A33: len (L1^CM2)=len L1+len CM2 by FINSEQ_1:22;
    assume
A34: i in Seg width M2;
A35: len L1=len M1 by CARD_1:def 7;
    then
A36: dom L1=dom M1 by FINSEQ_3:29;
    now
A37:  len (width M1|->d)=width M1 by CARD_1:def 7;
      let j such that
A38:  1<=j and
A39:  j<=len CMi;
A40:  j in dom M by A30,A38,A39,FINSEQ_3:25;
      i+width M1 in Seg width M by A7,A8,A34,FINSEQ_1:60;
      then
A41:  CMi.j=Line(M,j).(i+width M1) by A40,MATRIX_0:42;
A42:  len Line(M1,j)=width M1 by CARD_1:def 7;
A43:  j in dom (L1^CM2) by A6,A4,A30,A31,A35,A33,A38,A39,FINSEQ_3:25;
      now
        per cases by A43,FINSEQ_1:25;
        suppose
A44:      j in dom L1;
          hence CMi.j = (Line(M1,j)^(width M2 |-> d)).(i+width M1) by A12,A36
,A41,Th23
            .= (width M2 |-> d).i by A10,A34,A42,FINSEQ_1:def 7
            .= d by A34,FINSEQ_2:57
            .= L1.j by A14,A44,FINSEQ_2:57
            .= (L1^CM2).j by A44,FINSEQ_1:def 7;
        end;
        suppose
          ex k st k in dom CM2 & j=len L1+k;
          then consider k such that
A45:      k in dom CM2 and
A46:      j = len L1+k;
A47:      dom Line(M2,k)=Seg width M2 by FINSEQ_2:124;
          thus CMi.j = ((width M1 |-> d)^Line(M2,k)).(i+width M1) by A12,A35
,A32,A41,A45,A46,Th23
            .= Line(M2,k).i by A34,A37,A47,FINSEQ_1:def 7
            .= CM2.k by A32,A34,A45,MATRIX_0:42
            .= (L1^CM2).j by A45,A46,FINSEQ_1:def 7;
        end;
      end;
      hence (L1^CM2).j=CMi.j;
    end;
    hence thesis by A6,A30,A31,A35,A33,Th16;
  end;
  assume
A48: for i holds (i in Seg width M1 implies Col(M,i)=Col(M1,i)^(len M2
|-> d)) & (i in Seg width M2 implies Col(M,i+width M1)=(len M1|->d)^Col(M2,i));
  len M1 <=len M by A6,A4,NAT_1:12;
  then
A49: Seg len M1 c= Seg len M by FINSEQ_1:5;
  now
    set W2=width M2|->d;
    set W1=width M1|->d;
    let i;
    set LM=Line(M,i);
    set LMi=Line(M,i+len M1);
    set LM1=Line(M1,i);
    set LM2=Line(M2,i);
A50: len LMi=width M by CARD_1:def 7;
A51: len W2=width M2 by CARD_1:def 7;
    then
A52: dom W2=Seg width M2 by FINSEQ_1:def 3;
A53: len LM=width M by CARD_1:def 7;
    then
A54: dom LM=Seg width M by FINSEQ_1:def 3;
A55: len LM1=width M1 by CARD_1:def 7;
    then
A56: dom LM1=Seg width M1 by FINSEQ_1:def 3;
    thus i in dom M1 implies LM=LM1^W2
    proof
      assume
A57:  i in dom M1;
A58:  len (LM1^W2)=len LM1+len W2 by FINSEQ_1:22;
      now
A59:    dom (len M1|->d) =Seg len M1 by FINSEQ_2:124;
        let j such that
A60:    1<=j and
A61:    j<=len LM;
        j in Seg width M by A54,A60,A61,FINSEQ_3:25;
        then
A62:    LM.j=Col(M,j).i by A49,A1,A2,A57,MATRIX_0:42;
A63:    dom Col(M1,j)=Seg len M1 by FINSEQ_2:124;
A64:    j in dom (LM1^W2) by A7,A8,A53,A55,A51,A58,A60,A61,FINSEQ_3:25;
        now
          per cases by A64,FINSEQ_1:25;
          suppose
A65:        j in dom LM1;
            hence LM.j = (Col(M1,j)^(len M2 |-> d)).i by A48,A56,A62
              .= Col(M1,j).i by A2,A57,A63,FINSEQ_1:def 7
              .= LM1.j by A56,A57,A65,MATRIX_0:42
              .= (LM1^W2).j by A65,FINSEQ_1:def 7;
          end;
          suppose
            ex n st n in dom W2 & j=len LM1+n;
            then consider n such that
A66:        n in dom W2 and
A67:        j=len LM1+n;
            thus LM.j =((len M1|->d)^Col(M2,n)).i by A48,A55,A52,A62,A66,A67
              .= (len M1|->d).i by A2,A57,A59,FINSEQ_1:def 7
              .= d by A2,A57,FINSEQ_2:57
              .= W2.n by A52,A66,FINSEQ_2:57
              .= (LM1^W2).j by A66,A67,FINSEQ_1:def 7;
          end;
        end;
        hence LM.j=(LM1^W2).j;
      end;
      hence thesis by A7,A53,A55,A51,A58,Th20;
    end;
A68: len LM2=width M2 by CARD_1:def 7;
    then
A69: dom LM2=Seg width M2 by FINSEQ_1:def 3;
A70: len W1=width M1 by CARD_1:def 7;
    then
A71: dom W1=Seg width M1 by FINSEQ_1:def 3;
    thus i in dom M2 implies LMi=W1^LM2
    proof
      assume
A72:  i in dom M2;
A73:  len (W1^LM2)=len W1 + len LM2 by FINSEQ_1:22;
      now
A74:    len (len M1|->d)=len M1 by CARD_1:def 7;
A75:    dom (len M2|->d)=Seg len M2 by FINSEQ_2:124;
A76:    dom M2=Seg len M2 by FINSEQ_1:def 3;
        let j such that
A77:    1<=j and
A78:    j<=len LMi;
        j in Seg width M by A50,A77,A78;
        then
A79:    LMi.j=Col(M,j).(i+len M1) by A6,A4,A1,A72,A76,FINSEQ_1:60,MATRIX_0:42;
A80:    len Col(M1,j)=len M1 by CARD_1:def 7;
A81:    j in dom (W1^LM2) by A7,A8,A50,A68,A70,A73,A77,A78,FINSEQ_3:25;
        now
          per cases by A81,FINSEQ_1:25;
          suppose
A82:        j in dom W1;
            hence LMi.j = (Col(M1,j)^(len M2 |-> d)).(i+len M1) by A48,A71,A79
              .= (len M2 |-> d).i by A3,A72,A80,A75,FINSEQ_1:def 7
              .= d by A3,A72,FINSEQ_2:57
              .= W1.j by A71,A82,FINSEQ_2:57
              .= (W1^LM2).j by A82,FINSEQ_1:def 7;
          end;
          suppose
            ex n st n in dom LM2 & j=len W1+n;
            then consider n such that
A83:        n in dom LM2 and
A84:        j=len W1+n;
A85:        dom Col(M2,n)=Seg len M2 by FINSEQ_2:124;
            thus LMi.j = ((len M1|->d)^Col(M2,n)).(i+len M1) by A48,A70,A69,A79
,A83,A84
              .= Col(M2,n).i by A3,A72,A74,A85,FINSEQ_1:def 7
              .= LM2.n by A69,A72,A83,MATRIX_0:42
              .= (W1^LM2).j by A83,A84,FINSEQ_1:def 7;
          end;
        end;
        hence LMi.j=(W1^LM2).j;
      end;
      hence thesis by A7,A50,A68,A70,A73,Th20;
    end;
  end;
  hence thesis by Th23;
end;
