matrixj1.miz



    begin

    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 ;

    

     Lm1: for K be non empty addLoopStr holds for p1,p2 be FinSequence of K holds ( dom (p1 + p2)) = (( dom p1) /\ ( dom p2))

    proof

      let K be non empty addLoopStr;

      let p1,p2 be FinSequence of K;

      

       A1: ( rng p2) c= the carrier of K by FINSEQ_1:def 4;

      ( rng p1) c= the carrier of K by FINSEQ_1:def 4;

      then [:( rng p1), ( rng p2):] c= [:the carrier of K, the carrier of K:] by A1, ZFMISC_1: 96;

      then [:( rng p1), ( rng p2):] c= ( dom the addF of K) by FUNCT_2:def 1;

      hence thesis by FUNCOP_1: 69;

    end;

    theorem :: MATRIXJ1:1

    

     Th1: for K be non empty addLoopStr holds for f1,f2,g1,g2 be FinSequence of K st ( len f1) = ( len f2) holds ((f1 + f2) ^ (g1 + g2)) = ((f1 ^ g1) + (f2 ^ g2))

    proof

      let K be non empty addLoopStr;

      let f1,f2,g1,g2 be FinSequence of K such that

       A1: ( len f1) = ( len f2);

      

       A2: ( dom f1) = ( dom f2) by A1, FINSEQ_3: 29;

      

       A3: ( dom g2) = ( Seg ( len g2)) by FINSEQ_1:def 3;

      

       A4: ( dom g1) = ( Seg ( len g1)) by FINSEQ_1:def 3;

      

       A5: ( dom (f1 ^ g1)) = ( Seg (( len f1) + ( len g1))) by FINSEQ_1:def 7;

      

       A6: ( dom (f2 ^ g2)) = ( Seg (( len f2) + ( len g2))) by FINSEQ_1:def 7;

      

       A7: ( dom (g1 + g2)) = (( dom g1) /\ ( dom g2)) by Lm1;

      

       A8: ( dom (f1 + f2)) = (( dom f1) /\ ( dom f2)) by Lm1;

      then

       A9: ( len (f1 + f2)) = ( len f1) by A2, FINSEQ_3: 29;

      

       A10: ( dom ((f1 ^ g1) + (f2 ^ g2))) = (( dom (f1 ^ g1)) /\ ( dom (f2 ^ g2))) by Lm1;

       A11:

      now

        per cases ;

          suppose

           A12: ( len g1) <= ( len g2);

          then ( Seg ( len g1)) c= ( Seg ( len g2)) by FINSEQ_1: 5;

          then ( dom (g1 + g2)) = ( dom g1) by A7, A4, A3, XBOOLE_1: 28;

          then

           A13: ( len (g1 + g2)) = ( len g1) by FINSEQ_3: 29;

          (( len f1) + ( len g1)) <= (( len f2) + ( len g2)) by A1, A12, XREAL_1: 7;

          then ( dom (f1 ^ g1)) c= ( dom (f2 ^ g2)) by A5, A6, FINSEQ_1: 5;

          then ( dom ((f1 ^ g1) + (f2 ^ g2))) = ( dom (f1 ^ g1)) by A10, XBOOLE_1: 28;

          hence ( dom ((f1 + f2) ^ (g1 + g2))) = ( dom ((f1 ^ g1) + (f2 ^ g2))) by A9, A5, A13, FINSEQ_1:def 7;

        end;

          suppose

           A14: ( len g1) > ( len g2);

          then ( Seg ( len g2)) c= ( Seg ( len g1)) by FINSEQ_1: 5;

          then ( dom (g1 + g2)) = ( dom g2) by A7, A4, A3, XBOOLE_1: 28;

          then

           A15: ( len (g1 + g2)) = ( len g2) by FINSEQ_3: 29;

          (( len f1) + ( len g1)) > (( len f2) + ( len g2)) by A1, A14, XREAL_1: 8;

          then ( dom (f2 ^ g2)) c= ( dom (f1 ^ g1)) by A5, A6, FINSEQ_1: 5;

          then ( dom ((f1 ^ g1) + (f2 ^ g2))) = ( dom (f2 ^ g2)) by A10, XBOOLE_1: 28;

          hence ( dom ((f1 + f2) ^ (g1 + g2))) = ( dom ((f1 ^ g1) + (f2 ^ g2))) by A1, A9, A6, A15, FINSEQ_1:def 7;

        end;

      end;

      now

        let i such that

         A16: i in ( dom ((f1 + f2) ^ (g1 + g2)));

        now

          per cases by A16, FINSEQ_1: 25;

            suppose

             A17: i in ( dom (f1 + f2));

            then

             A18: (f2 . i) = ((f2 ^ g2) . i) by A8, A2, FINSEQ_1:def 7;

            

             A19: (f2 /. i) = (f2 . i) by A8, A2, A17, PARTFUN1:def 6;

            

             A20: (f1 . i) = ((f1 ^ g1) . i) by A8, A2, A17, FINSEQ_1:def 7;

            

             A21: (f1 /. i) = (f1 . i) by A8, A2, A17, PARTFUN1:def 6;

            

            thus (((f1 + f2) ^ (g1 + g2)) . i) = ((f1 + f2) . i) by A17, FINSEQ_1:def 7

            .= ((f1 /. i) + (f2 /. i)) by A17, A21, A19, FVSUM_1: 17

            .= (((f1 ^ g1) + (f2 ^ g2)) . i) by A11, A16, A21, A19, A20, A18, FVSUM_1: 17;

          end;

            suppose ex n st n in ( dom (g1 + g2)) & i = (( len (f1 + f2)) + n);

            then

            consider n such that

             A22: n in ( dom (g1 + g2)) and

             A23: i = (( len (f1 + f2)) + n);

            

             A24: n in ( dom g1) by A7, A22, XBOOLE_0:def 4;

            then

             A25: ((f1 ^ g1) . i) = (g1 . n) by A9, A23, FINSEQ_1:def 7;

            

             A26: (g1 . n) = (g1 /. n) by A24, PARTFUN1:def 6;

            

             A27: n in ( dom g2) by A7, A22, XBOOLE_0:def 4;

            then

             A28: ((f2 ^ g2) . i) = (g2 . n) by A1, A9, A23, FINSEQ_1:def 7;

            

             A29: (g2 . n) = (g2 /. n) by A27, PARTFUN1:def 6;

            

            thus (((f1 + f2) ^ (g1 + g2)) . i) = ((g1 + g2) . n) by A22, A23, FINSEQ_1:def 7

            .= ((g1 /. n) + (g2 /. n)) by A22, A26, A29, FVSUM_1: 17

            .= (((f1 ^ g1) + (f2 ^ g2)) . i) by A11, A16, A26, A29, A25, A28, FVSUM_1: 17;

          end;

        end;

        hence (((f1 + f2) ^ (g1 + g2)) . i) = (((f1 ^ g1) + (f2 ^ g2)) . i);

      end;

      hence thesis by A11, FINSEQ_1: 13;

    end;

    theorem :: MATRIXJ1:2

    

     Th2: for f,g be FinSequence of D st i in ( dom f) holds ( Del ((f ^ g),i)) = (( Del (f,i)) ^ g)

    proof

      let f,g be FinSequence of D such that

       A1: i in ( dom f);

      set Df = ( Del (f,i));

      consider m such that

       A2: ( len f) = (m + 1) and

       A3: ( len Df) = m by A1, FINSEQ_3: 104;

      set Dg = (Df ^ g);

      set fg = (f ^ g);

      set Dfg = ( Del (fg,i));

      

       A4: ( Seg ( len fg)) = ( dom fg) by FINSEQ_1:def 3;

      

       A5: ( len fg) = (( len f) + ( len g)) by FINSEQ_1: 22;

      then ( len f) <= ( len fg) by NAT_1: 12;

      then

       A6: ( Seg ( len f)) c= ( Seg ( len fg)) by FINSEQ_1: 5;

      

       A7: ( len fg) = ((( len g) + m) + 1) by A2, A5;

      

       A8: ( Seg ( len f)) = ( dom f) by FINSEQ_1:def 3;

       A9:

      now

        let j such that

         A10: 1 <= j and

         A11: j <= (m + ( len g));

        now

          per cases ;

            suppose

             A12: j < i;

            i <= ( len f) by A1, FINSEQ_3: 25;

            then

             A13: j < ( len f) by A12, XXREAL_0: 2;

            then

             A14: j in ( dom f) by A10, FINSEQ_3: 25;

            j <= m by A2, A13, NAT_1: 13;

            then

             A15: j in ( dom Df) by A3, A10, FINSEQ_3: 25;

            

            thus (Dfg . j) = (fg . j) by A12, FINSEQ_3: 110

            .= (f . j) by A14, FINSEQ_1:def 7

            .= (Df . j) by A12, FINSEQ_3: 110

            .= (Dg . j) by A15, FINSEQ_1:def 7;

          end;

            suppose

             A16: j >= i;

            now

              per cases ;

                suppose

                 A17: j <= m;

                

                 A18: ( 0 + 1) <= (j + 1) by XREAL_1: 7;

                (j + 1) <= ( len f) by A2, A17, XREAL_1: 7;

                then

                 A19: (j + 1) in ( dom f) by A18, FINSEQ_3: 25;

                

                 A20: j in ( dom Df) by A3, A10, A17, FINSEQ_3: 25;

                

                thus (Dfg . j) = (fg . (j + 1)) by A1, A6, A8, A4, A7, A11, A16, FINSEQ_3: 111

                .= (f . (j + 1)) by A19, FINSEQ_1:def 7

                .= (Df . j) by A1, A2, A16, A17, FINSEQ_3: 111

                .= (Dg . j) by A20, FINSEQ_1:def 7;

              end;

                suppose

                 A21: j > m;

                then j >= ( len f) by A2, NAT_1: 13;

                then (j + 1) > ( len f) by NAT_1: 13;

                then

                reconsider jL = ((j + 1) - ( len f)) as Element of NAT by NAT_1: 21;

                (j + 1) <= ((m + ( len g)) + 1) by A11, XREAL_1: 7;

                then (jL + ( len f)) <= (( len f) + ( len g)) by A2;

                then

                 A22: jL <= ( len g) by XREAL_1: 8;

                jL <> 0 by A2, A21;

                then jL >= 1 by NAT_1: 14;

                then

                 A23: jL in ( dom g) by A22, FINSEQ_3: 25;

                

                thus (Dfg . j) = (fg . (jL + ( len f))) by A1, A6, A8, A4, A7, A11, A16, FINSEQ_3: 111

                .= (g . jL) by A23, FINSEQ_1:def 7

                .= (Dg . (m + jL)) by A3, A23, FINSEQ_1:def 7

                .= (Dg . j) by A2;

              end;

            end;

            hence (Dg . j) = (Dfg . j);

          end;

        end;

        hence (Dg . j) = (Dfg . j);

      end;

      

       A24: ( len Dg) = (( len Df) + ( len g)) by FINSEQ_1: 22;

      ( len Dfg) = (m + ( len g)) by A1, A6, A8, A4, A7, FINSEQ_3: 109;

      hence thesis by A3, A24, A9;

    end;

    theorem :: MATRIXJ1:3

    

     Th3: for f,g be FinSequence of D st i in ( dom g) holds ( Del ((f ^ g),(i + ( len f)))) = (f ^ ( Del (g,i)))

    proof

      let f,g be FinSequence of D such that

       A1: i in ( dom g);

      set Dg = ( Del (g,i));

      consider m such that

       A2: ( len g) = (m + 1) and

       A3: ( len Dg) = m by A1, FINSEQ_3: 104;

      set fD = (f ^ Dg);

      set iL = (i + ( len f));

      set fg = (f ^ g);

      set Dfg = ( Del (fg,iL));

      

       A4: ( dom fg) = ( Seg ( len fg)) by FINSEQ_1:def 3;

      

       A5: ( len fg) = (( len f) + ( len g)) by FINSEQ_1: 22;

      then

       A6: ( len fg) = ((m + ( len f)) + 1) by A2;

      

       A7: i in ( Seg ( len g)) by A1, FINSEQ_1:def 3;

      then

       A8: i > 0 ;

       A9:

      now

        let j such that

         A10: 1 <= j and

         A11: j <= (m + ( len f));

        now

          per cases ;

            suppose

             A12: j <= ( len f);

            then

             A13: j in ( dom f) by A10, FINSEQ_3: 25;

            ( 0 + ( len f)) < iL by A8, XREAL_1: 8;

            then j < iL by A12, XXREAL_0: 2;

            

            hence (Dfg . j) = (fg . j) by FINSEQ_3: 110

            .= (f . j) by A13, FINSEQ_1:def 7

            .= (fD . j) by A13, FINSEQ_1:def 7;

          end;

            suppose

             A14: j > ( len f);

            then

            reconsider jL = (j - ( len f)) as Element of NAT by NAT_1: 21;

            

             A15: 1 <= (jL + 1) by NAT_1: 14;

            (jL + ( len f)) <= (m + ( len f)) by A11;

            then

             A16: jL <= m by XREAL_1: 6;

            then (jL + 1) <= ( len g) by A2, XREAL_1: 7;

            then

             A17: (jL + 1) in ( dom g) by A15, FINSEQ_3: 25;

            jL <> 0 by A14;

            then

             A18: jL >= 1 by NAT_1: 14;

            then

             A19: jL in ( dom Dg) by A3, A16, FINSEQ_3: 25;

            jL <= ( len g) by A2, A16, NAT_1: 13;

            then

             A20: jL in ( dom g) by A18, FINSEQ_3: 25;

            now

              per cases ;

                suppose

                 A21: jL < i;

                then (jL + ( len f)) < iL by XREAL_1: 8;

                

                hence (Dfg . j) = (fg . (jL + ( len f))) by FINSEQ_3: 110

                .= (g . jL) by A20, FINSEQ_1:def 7

                .= (Dg . jL) by A21, FINSEQ_3: 110

                .= (fD . (jL + ( len f))) by A19, FINSEQ_1:def 7

                .= (fD . j);

              end;

                suppose

                 A22: jL >= i;

                then (jL + ( len f)) >= iL by XREAL_1: 7;

                

                hence (Dfg . j) = (fg . ((jL + ( len f)) + 1)) by A5, A7, A4, A6, A11, FINSEQ_1: 60, FINSEQ_3: 111

                .= (fg . ((jL + 1) + ( len f)))

                .= (g . (jL + 1)) by A17, FINSEQ_1:def 7

                .= (Dg . jL) by A1, A2, A16, A22, FINSEQ_3: 111

                .= (fD . (jL + ( len f))) by A19, FINSEQ_1:def 7

                .= (fD . j);

              end;

            end;

            hence (fD . j) = (Dfg . j);

          end;

        end;

        hence (fD . j) = (Dfg . j);

      end;

      

       A23: ( len fD) = (( len f) + ( len Dg)) by FINSEQ_1: 22;

      ( len Dfg) = (m + ( len f)) by A5, A7, A4, A6, FINSEQ_1: 60, FINSEQ_3: 109;

      hence thesis by A3, A23, A9;

    end;

    theorem :: MATRIXJ1:4

    

     Th4: i in ( Seg (n + 1)) implies ( Del (((n + 1) |-> d),i)) = (n |-> d)

    proof

      set n1 = (n + 1);

      set n1d = (n1 |-> d);

      set nd = (n |-> d);

      set Dn = ( Del (n1d,i));

      

       A1: ( len n1d) = n1 by CARD_1:def 7;

      

       A2: ( dom n1d) = ( Seg ( len n1d)) by FINSEQ_1:def 3;

      

       A3: ( len nd) = n by CARD_1:def 7;

      assume

       A4: i in ( Seg (n + 1));

       A5:

      now

        let j such that

         A6: 1 <= j and

         A7: j <= n;

        j <= n1 by A7, NAT_1: 13;

        then

         A8: j in ( Seg n1) by A6;

        

         A9: j in ( Seg n) by A6, A7;

        then

         A10: (j + 1) in ( Seg (n + 1)) by FINSEQ_1: 60;

        now

          per cases ;

            suppose j < i;

            

            hence (Dn . j) = (n1d . j) by FINSEQ_3: 110

            .= d by A8, FINSEQ_2: 57

            .= (nd . j) by A9, FINSEQ_2: 57;

          end;

            suppose j >= i;

            

            hence (Dn . j) = (n1d . (j + 1)) by A4, A1, A2, A7, FINSEQ_3: 111

            .= d by A10, FINSEQ_2: 57

            .= (nd . j) by A9, FINSEQ_2: 57;

          end;

        end;

        hence (nd . j) = (Dn . j);

      end;

      ( len Dn) = n by A4, A1, A2, FINSEQ_3: 109;

      hence thesis by A3, A5;

    end;

    theorem :: MATRIXJ1:5

    ( Product (n |-> a)) = (( power K) . (a,n))

    proof

      defpred P[ Nat] means ( Product ($1 |-> a)) = (( power K) . (a,$1));

      

       A1: for k st P[k] holds P[(k + 1)]

      proof

        let k such that

         A2: P[k];

        

        thus ( Product ((k + 1) |-> a)) = (( Product (k |-> a)) * ( Product (1 |-> a))) by FVSUM_1: 83

        .= (( Product (k |-> a)) * ( Product <*a*>)) by FINSEQ_2: 59

        .= ((( power K) . (a,k)) * a) by A2, GROUP_4: 9

        .= (( power K) . (a,(k + 1))) by GROUP_1:def 7;

      end;

      ( 0 |-> a) = ( <*> the carrier of K);

      

      then ( Product ( 0 |-> a)) = ( 1_ K) by GROUP_4: 8

      .= (( power K) . (a, 0 )) by GROUP_1:def 7;

      then

       A3: P[ 0 ];

      for k holds P[k] from NAT_1:sch 2( A3, A1);

      hence thesis;

    end;

    definition

      let f;

      let i be Nat;

      :: MATRIXJ1:def1

      func min (f,i) -> Element of NAT means

      : Def1: i <= ( Sum (f | it )) & it in ( dom f) & for j st i <= ( Sum (f | j)) holds it <= j;

      existence

      proof

        defpred P[ Nat] means i <= ( Sum (f | $1)) & $1 >= 1;

        

         A2: (f | ( len f)) = f by FINSEQ_1: 58;

        

         A3: i <= ( Sum f) by A1, FINSEQ_1: 1;

        ( Sum f) <> 0 by A1;

        then

         A4: ( len f) >= 1 by FINSEQ_1: 20, RVSUM_1: 72;

        then

         A5: ex k st P[k] by A3, A2;

        consider k such that

         A6: P[k] and

         A7: for n st P[n] holds k <= n from NAT_1:sch 5( A5);

        reconsider k as Element of NAT by ORDINAL1:def 12;

        take k;

        thus i <= ( Sum (f | k)) by A6;

        k <= ( len f) by A4, A3, A2, A7;

        hence k in ( dom f) by A6, FINSEQ_3: 25;

        let j such that

         A8: i <= ( Sum (f | j));

        per cases ;

          suppose j = 0 ;

          then (f | j) = ( <*> REAL );

          hence thesis by A1, A8, RVSUM_1: 72;

        end;

          suppose j > 0 ;

          hence thesis by A7, A8, NAT_1: 14;

        end;

      end;

      uniqueness

      proof

        let n1,n2 be Element of NAT such that

         A9: i <= ( Sum (f | n1)) and n1 in ( dom f) and

         A10: for j st i <= ( Sum (f | j)) holds n1 <= j and

         A11: i <= ( Sum (f | n2)) and n2 in ( dom f) and

         A12: for j st i <= ( Sum (f | j)) holds n2 <= j;

        

         A13: n2 <= n1 by A9, A12;

        n1 <= n2 by A10, A11;

        hence thesis by A13, XXREAL_0: 1;

      end;

    end

    theorem :: MATRIXJ1:6

    i in ( dom f) & (f . i) <> 0 implies ( min (f,( Sum (f | i)))) = i

    proof

      assume that

       A1: i in ( dom f) and

       A2: (f . i) <> 0 ;

      

       A3: i <= ( len f) by A1, FINSEQ_3: 25;

      then

       A4: ( len (f | i)) = i by FINSEQ_1: 59;

      1 <= i by A1, FINSEQ_3: 25;

      then

       A5: i in ( dom (f | i)) by A4, FINSEQ_3: 25;

      then ( Sum (f | i)) >= ((f | i) . i) by POLYNOM3: 4;

      then ( Sum (f | i)) <> 0 by A2, A5, FUNCT_1: 47;

      then

       A6: ( Sum (f | i)) >= 1 by NAT_1: 14;

      

       A7: (f | ( len f)) = f by FINSEQ_1: 58;

      ( Sum (f | i)) <= ( Sum (f | ( len f))) by A3, POLYNOM3: 18;

      then

       A8: ( Sum (f | i)) in ( Seg ( Sum f)) by A7, A6;

      then

       A9: ( min (f,( Sum (f | i)))) <= i by Def1;

      thus ( min (f,( Sum (f | i)))) = i

      proof

        assume

         A10: ( min (f,( Sum (f | i)))) <> i;

        then ( min (f,( Sum (f | i)))) < i by A9, XXREAL_0: 1;

        then

        reconsider i1 = (i - 1) as Element of NAT by NAT_1: 20;

        ( min (f,( Sum (f | i)))) < (i1 + 1) by A9, A10, XXREAL_0: 1;

        then ( min (f,( Sum (f | i)))) <= i1 by NAT_1: 13;

        then

         A11: ( Sum (f | ( min (f,( Sum (f | i)))))) <= ( Sum (f | i1)) by POLYNOM3: 18;

        ( Sum (f | i)) <= ( Sum (f | ( min (f,( Sum (f | i)))))) by A8, Def1;

        then

         A12: ( Sum (f | i)) <= ( Sum (f | i1)) by A11, XXREAL_0: 2;

        (f | (i1 + 1)) = ((f | i1) ^ <*(f . i)*>) by A1, FINSEQ_5: 10;

        then

         A13: ( Sum (f | i)) = (( Sum (f | i1)) + (f . i)) by RVSUM_1: 74;

        then ( Sum (f | i)) >= ( Sum (f | i1)) by NAT_1: 11;

        then ( Sum (f | i)) = ( Sum (f | i1)) by A12, XXREAL_0: 1;

        hence thesis by A2, A13;

      end;

    end;

    theorem :: MATRIXJ1:7

    

     Th7: i in ( Seg ( Sum f)) implies (( min (f,i)) -' 1) = (( min (f,i)) - 1) & ( Sum (f | (( min (f,i)) -' 1))) < i

    proof

      set F = ( min (f,i));

      assume

       A1: i in ( Seg ( Sum f));

      then F in ( dom f) by Def1;

      then 1 <= F by FINSEQ_3: 25;

      hence

       A2: (F -' 1) = (F - 1) by XREAL_1: 233;

      assume ( Sum (f | (F -' 1))) >= i;

      then (F -' 1) >= (F - 0 ) by A1, Def1;

      hence thesis by A2, XREAL_1: 10;

    end;

    theorem :: MATRIXJ1:8

    

     Th8: i in ( Seg ( Sum f)) implies ( min ((f ^ g),i)) = ( min (f,i))

    proof

      reconsider fg = (f ^ g) as FinSequence of NAT ;

      assume

       A1: i in ( Seg ( Sum f));

      then

       A2: i <= ( Sum (f | ( min (f,i)))) by Def1;

      ( Sum fg) = (( Sum f) + ( Sum g)) by RVSUM_1: 75;

      then ( Sum fg) >= (( Sum f) + 0 ) by XREAL_1: 6;

      then

       A3: ( Seg ( Sum f)) c= ( Seg ( Sum fg)) by FINSEQ_1: 5;

      ( min (f,i)) in ( dom f) by A1, Def1;

      then

       A4: ( min (f,i)) <= ( len f) by FINSEQ_3: 25;

      then (fg | ( min (f,i))) = (f | ( min (f,i))) by FINSEQ_5: 22;

      then

       A5: ( min (fg,i)) <= ( min (f,i)) by A1, A3, A2, Def1;

      then (fg | ( min (fg,i))) = (f | ( min (fg,i))) by A4, FINSEQ_5: 22, XXREAL_0: 2;

      then i <= ( Sum (f | ( min (fg,i)))) by A1, A3, Def1;

      then ( min (f,i)) <= ( min (fg,i)) by A1, Def1;

      hence thesis by A5, XXREAL_0: 1;

    end;

    theorem :: MATRIXJ1:9

    

     Th9: i in (( Seg (( Sum f) + ( Sum g))) \ ( Seg ( Sum f))) implies ( min ((f ^ g),i)) = (( min (g,(i -' ( Sum f)))) + ( len f)) & (i -' ( Sum f)) = (i - ( Sum f))

    proof

      reconsider fg = (f ^ g) as FinSequence of NAT ;

      assume

       A1: i in (( Seg (( Sum f) + ( Sum g))) \ ( Seg ( Sum f)));

      then not i in ( Seg ( Sum f)) by XBOOLE_0:def 5;

      then

       A2: 1 > i or i > ( Sum f);

      

       A3: ( Sum fg) = (( Sum f) + ( Sum g)) by RVSUM_1: 75;

      then

       A4: i in ( Seg ( Sum fg)) by A1, XBOOLE_0:def 5;

      then

      reconsider j = (i - ( Sum f)) as Element of NAT by A2, FINSEQ_1: 1, NAT_1: 21;

      

       A5: i = (j + ( Sum f));

      (fg | (( len f) + ( min (g,j)))) = (f ^ (g | ( min (g,j)))) by FINSEQ_6: 14;

      then

       A6: ( Sum (fg | (( len f) + ( min (g,j))))) = (( Sum f) + ( Sum (g | ( min (g,j))))) by RVSUM_1: 75;

      j <> 0 by A4, A2, FINSEQ_1: 1;

      then

       A7: j in ( Seg ( Sum g)) by A3, A4, A5, FINSEQ_1: 61;

      then j <= ( Sum (g | ( min (g,j)))) by Def1;

      then ( Sum (fg | (( len f) + ( min (g,j))))) >= (( Sum f) + j) by A6, XREAL_1: 7;

      then

       A8: (( len f) + ( min (g,j))) >= ( min (fg,i)) by A4, Def1;

      

       A9: i <= ( Sum (fg | ( min (fg,i)))) by A4, Def1;

      ( min (fg,i)) > ( len f)

      proof

        

         A10: (f | ( len f)) = f by FINSEQ_1: 58;

        assume

         A11: ( min (fg,i)) <= ( len f);

        then

         A12: ( Sum (f | ( min (fg,i)))) <= ( Sum (f | ( len f))) by POLYNOM3: 18;

        (fg | ( min (fg,i))) = (f | ( min (fg,i))) by A11, FINSEQ_5: 22;

        hence thesis by A4, A9, A2, A12, A10, FINSEQ_1: 1, XXREAL_0: 2;

      end;

      then

      reconsider m = (( min (fg,i)) - ( len f)) as Element of NAT by NAT_1: 21;

      (fg | (( len f) + m)) = (f ^ (g | m)) by FINSEQ_6: 14;

      then i <= (( Sum f) + ( Sum (g | m))) by A9, RVSUM_1: 75;

      then j <= ((( Sum f) + ( Sum (g | m))) - ( Sum f)) by XREAL_1: 9;

      then m >= ( min (g,j)) by A7, Def1;

      then

       A13: (m + ( len f)) >= (( min (g,j)) + ( len f)) by XREAL_1: 7;

      j = (i -' ( Sum f)) by A4, A2, FINSEQ_1: 1, XREAL_1: 233;

      hence thesis by A13, A8, XXREAL_0: 1;

    end;

    

     Lm2: i in ( dom f) implies ( Sum (f | i)) = (( Sum (f | (i -' 1))) + (f . i))

    proof

      set g = <*(f /. i)*>;

      set h = (f | (i -' 1));

      assume

       A1: i in ( dom f);

      then i >= 1 by FINSEQ_3: 25;

      then (i -' 1) = (i - 1) by XREAL_1: 233;

      then

       A2: i = ((i -' 1) + 1);

      

       A3: (f /. i) = (f . i) by A1, PARTFUN1:def 6;

      

      hence (( Sum (f | (i -' 1))) + (f . i)) = ( Sum (h ^ g)) by RVSUM_1: 74

      .= ( Sum (f | i)) by A1, A2, A3, FINSEQ_5: 10;

    end;

    theorem :: MATRIXJ1:10

    

     Th10: i in ( dom f) & j in ( Seg (f /. i)) implies (j + ( Sum (f | (i -' 1)))) in ( Seg ( Sum (f | i))) & ( min (f,(j + ( Sum (f | (i -' 1)))))) = i

    proof

      assume that

       A1: i in ( dom f) and

       A2: j in ( Seg (f /. i));

      set fi = (f /. i);

      fi = (f . i) by A1, PARTFUN1:def 6;

      then

       A3: (fi + ( Sum (f | (i -' 1)))) = ( Sum (f | i)) by A1, Lm2;

      

       A4: (f | ( len f)) = f by FINSEQ_1: 58;

      i <= ( len f) by A1, FINSEQ_3: 25;

      then ( Sum (f | i)) <= ( Sum (f | ( len f))) by POLYNOM3: 18;

      then

       A5: ( Seg ( Sum (f | i))) c= ( Seg ( Sum f)) by A4, FINSEQ_1: 5;

      set jj = (j + ( Sum (f | (i -' 1))));

      j <= fi by A2, FINSEQ_1: 1;

      then

       A6: jj <= (fi + ( Sum (f | (i -' 1)))) by XREAL_1: 7;

      1 <= j by A2, FINSEQ_1: 1;

      then (1 + 0 ) <= jj by XREAL_1: 7;

      hence

       A7: jj in ( Seg ( Sum (f | i))) by A3, A6;

      i >= 1 by A1, FINSEQ_3: 25;

      then (i -' 1) = (i - 1) by XREAL_1: 233;

      then

       A8: i = ((i -' 1) + 1);

      

       A9: i <= ( min (f,jj))

      proof

        assume i > ( min (f,jj));

        then ( min (f,jj)) <= (i -' 1) by A8, NAT_1: 13;

        then

         A10: ( Sum (f | ( min (f,jj)))) <= ( Sum (f | (i -' 1))) by POLYNOM3: 18;

         0 < j by A2;

        then (( Sum (f | (i -' 1))) + 0 ) < jj by XREAL_1: 8;

        then ( Sum (f | ( min (f,jj)))) < jj by A10, XXREAL_0: 2;

        hence thesis by A7, A5, Def1;

      end;

      ( min (f,jj)) <= i by A3, A6, A7, A5, Def1;

      hence thesis by A9, XXREAL_0: 1;

    end;

    theorem :: MATRIXJ1:11

    for i, j st i <= ( len f) & j <= ( len f) & ( Sum (f | i)) = ( Sum (f | j)) & (i in ( dom f) implies (f . i) <> 0 ) & (j in ( dom f) implies (f . j) <> 0 ) holds i = j

    proof

       A1:

      now

        let i, j such that

         A2: i <= ( len f) and j <= ( len f) and

         A3: ( Sum (f | i)) = ( Sum (f | j)) and

         A4: i in ( dom f) implies (f . i) <> 0 and j in ( dom f) implies (f . j) <> 0 ;

        assume

         A5: i > j;

        then

        reconsider i1 = (i - 1) as Element of NAT by NAT_1: 20;

        

         A6: i = (i1 + 1);

        then j <= i1 by A5, NAT_1: 13;

        then

         A7: ( Sum (f | j)) <= ( Sum (f | i1)) by POLYNOM3: 18;

        

         A8: i >= 1 by A6, NAT_1: 14;

        then i in ( dom f) by A2, FINSEQ_3: 25;

        then (f | (i1 + 1)) = ((f | i1) ^ <*(f . i)*>) by FINSEQ_5: 10;

        then

         A9: ( Sum (f | j)) = (( Sum (f | i1)) + (f . i)) by A3, RVSUM_1: 74;

        then ( Sum (f | i1)) <= ( Sum (f | j)) by NAT_1: 11;

        then ( Sum (f | i1)) = ( Sum (f | j)) by A7, XXREAL_0: 1;

        hence contradiction by A2, A4, A8, A9, FINSEQ_3: 25;

      end;

      let i, j such that

       A10: i <= ( len f) and

       A11: j <= ( len f) and

       A12: ( Sum (f | i)) = ( Sum (f | j)) and

       A13: i in ( dom f) implies (f . i) <> 0 and

       A14: j in ( dom f) implies (f . j) <> 0 ;

      

       A15: j <= i by A1, A10, A11, A12, A13, A14;

      i <= j by A1, A10, A11, A12, A13, A14;

      hence thesis by A15, XXREAL_0: 1;

    end;

    begin

    definition

      let D;

      let F be FinSequence of ((D * ) * );

      :: MATRIXJ1:def2

      attr F is Matrix-yielding means

      : Def2: for i st i in ( dom F) holds (F . i) is Matrix of D;

    end

    registration

      let D;

      cluster Matrix-yielding for FinSequence of ((D * ) * );

      existence

      proof

        reconsider F = ( <*> ((D * ) * )) as FinSequence of ((D * ) * );

        take F;

        thus thesis;

      end;

    end

    definition

      let D;

      mode FinSequence_of_Matrix of D is Matrix-yielding FinSequence of ((D * ) * );

    end

    definition

      let K;

      mode FinSequence_of_Matrix of K is Matrix-yielding FinSequence of ((the carrier of K * ) * );

    end

    theorem :: MATRIXJ1:12

    

     Th12: {} is FinSequence_of_Matrix of D

    proof

      set F = ( <*> ((D * ) * ));

      for i st i in ( dom F) holds (F . i) is Matrix of D;

      hence thesis by Def2;

    end;

    reserve F,F1,F2 for FinSequence_of_Matrix of D,

G,G9,G1,G2 for FinSequence_of_Matrix of K;

    definition

      let D, F, x;

      :: original: .

      redefine

      func F . x -> Matrix of D ;

      coherence

      proof

        per cases ;

          suppose

           A1: x in ( dom F);

          thus thesis by A1, Def2;

        end;

          suppose not x in ( dom F);

          then (F . x) = {} by FUNCT_1:def 2;

          hence thesis by MATRIX_0: 13;

        end;

      end;

    end

    definition

      let D, F1, F2;

      :: original: ^

      redefine

      func F1 ^ F2 -> FinSequence_of_Matrix of D ;

      coherence

      proof

        (F1 ^ F2) is Matrix-yielding

        proof

          let i such that

           A1: i in ( dom (F1 ^ F2));

          per cases by A1, FINSEQ_1: 25;

            suppose i in ( dom F1);

            then ((F1 ^ F2) . i) = (F1 . i) by FINSEQ_1:def 7;

            hence thesis;

          end;

            suppose ex n st n in ( dom F2) & i = (( len F1) + n);

            then

            consider n such that

             A2: n in ( dom F2) and

             A3: i = (( len F1) + n);

            ((F1 ^ F2) . i) = (F2 . n) by A2, A3, FINSEQ_1:def 7;

            hence thesis;

          end;

        end;

        hence thesis;

      end;

    end

    

     Lm3: <*M*> is Matrix-yielding

    proof

      now

        

         A1: ( <*M*> . 1) = M by FINSEQ_1:def 8;

        

         A2: ( dom <*M*>) = {1} by FINSEQ_1: 2, FINSEQ_1:def 8;

        let i;

        assume i in ( dom <*M*>);

        hence ( <*M*> . i) is Matrix of D by A2, A1, TARSKI:def 1;

      end;

      hence thesis;

    end;

    definition

      let D, M1;

      :: original: <*

      redefine

      func <*M1*> -> FinSequence_of_Matrix of D ;

      coherence by Lm3;

      let M2;

      :: original: <*

      redefine

      func <*M1,M2*> -> FinSequence_of_Matrix of D ;

      coherence

      proof

        reconsider F1 = <*M1*>, F2 = <*M2*> as FinSequence_of_Matrix of D by Lm3;

         <*M1, M2*> = (F1 ^ F2);

        hence thesis;

      end;

    end

    definition

      let D, n, F;

      :: original: |

      redefine

      func F | n -> FinSequence_of_Matrix of D ;

      coherence

      proof

        now

          let i;

          assume i in ( dom (F | n));

          then ((F | n) . i) = (F . i) by FUNCT_1: 47;

          hence ((F | n) . i) is Matrix of D;

        end;

        hence thesis by Def2;

      end;

      :: original: /^

      redefine

      func F /^ n -> FinSequence_of_Matrix of D ;

      coherence

      proof

        now

          let i such that

           A1: i in ( dom (F /^ n));

          (i + n) in ( dom F) by A1, FINSEQ_5: 26;

          then (F . (n + i)) = (F /. (n + i)) by PARTFUN1:def 6;

          hence ((F /^ n) . i) is Matrix of D by A1, FINSEQ_5: 27;

        end;

        hence thesis by Def2;

      end;

    end

    begin

    definition

      let D, F;

      :: MATRIXJ1:def3

      func Len F -> FinSequence of NAT means

      : Def3: ( dom it ) = ( dom F) & for i st i in ( dom it ) holds (it . i) = ( len (F . i));

      existence

      proof

        deffunc F( Nat) = ( len (F . $1));

        consider p be FinSequence of NAT such that

         A1: ( len p) = ( len F) and

         A2: for i st i in ( dom p) holds (p . i) = F(i) from FINSEQ_2:sch 1;

        take p;

        thus thesis by A1, A2, FINSEQ_3: 29;

      end;

      uniqueness

      proof

        let F1,F2 be FinSequence of NAT such that

         A3: ( dom F1) = ( dom F) and

         A4: for i st i in ( dom F1) holds (F1 . i) = ( len (F . i)) and

         A5: ( dom F2) = ( dom F) and

         A6: for i st i in ( dom F2) holds (F2 . i) = ( len (F . i));

        now

          let x be object such that

           A7: x in ( dom F1);

          reconsider i = x as Element of NAT by A7;

          

          thus (F1 . x) = ( len (F . i)) by A4, A7

          .= (F2 . x) by A3, A5, A6, A7;

        end;

        hence thesis by A3, A5, FUNCT_1: 2;

      end;

      :: MATRIXJ1:def4

      func Width F -> FinSequence of NAT means

      : Def4: ( dom it ) = ( dom F) & for i st i in ( dom it ) holds (it . i) = ( width (F . i));

      existence

      proof

        deffunc F( Nat) = ( In (( width (F . $1)), NAT ));

        consider p be FinSequence of NAT such that

         A8: ( len p) = ( len F) and

         A9: for i st i in ( dom p) holds (p . i) = F(i) from FINSEQ_2:sch 1;

        take p;

        thus ( dom p) = ( dom F) by A8, FINSEQ_3: 29;

        let i;

        assume i in ( dom p);

        then (p . i) = F(i) by A9;

        hence thesis;

      end;

      uniqueness

      proof

        let F1,F2 be FinSequence of NAT such that

         A10: ( dom F1) = ( dom F) and

         A11: for i st i in ( dom F1) holds (F1 . i) = ( width (F . i)) and

         A12: ( dom F2) = ( dom F) and

         A13: for i st i in ( dom F2) holds (F2 . i) = ( width (F . i));

        now

          let x be object such that

           A14: x in ( dom F1);

          reconsider i = x as Element of NAT by A14;

          

          thus (F1 . x) = ( width (F . i)) by A11, A14

          .= (F2 . x) by A10, A12, A13, A14;

        end;

        hence thesis by A10, A12, FUNCT_1: 2;

      end;

    end

    definition

      let D, F;

      :: original: Len

      redefine

      func Len F -> Element of (( len F) -tuples_on NAT ) ;

      coherence

      proof

        ( dom ( Len F)) = ( dom F) by Def3;

        then ( len ( Len F)) = ( len F) by FINSEQ_3: 29;

        hence thesis by FINSEQ_2: 92;

      end;

      :: original: Width

      redefine

      func Width F -> Element of (( len F) -tuples_on NAT ) ;

      coherence

      proof

        ( dom ( Width F)) = ( dom F) by Def4;

        then ( len ( Width F)) = ( len F) by FINSEQ_3: 29;

        hence thesis by FINSEQ_2: 92;

      end;

    end

    theorem :: MATRIXJ1:13

    

     Th13: ( Sum ( Len F)) = 0 implies ( Sum ( Width F)) = 0

    proof

      set LF = ( Len F);

      set WF = ( Width F);

      assume

       A1: ( Sum LF) = 0 ;

      per cases by A1, RVSUM_1: 85;

        suppose ex i st i in ( dom LF) & 0 > (LF . i);

        hence thesis;

      end;

        suppose

         A2: for i st i in ( dom LF) holds 0 >= (LF . i);

        set F0 = (( len F) |-> 0 );

        

         A3: ( len WF) = ( len F) by CARD_1:def 7;

        

         A4: ( dom LF) = ( dom F) by Def3;

        

         A5: ( dom WF) = ( dom F) by Def4;

         A6:

        now

          let j such that

           A7: 1 <= j and

           A8: j <= ( len WF);

          

           A9: j in ( dom WF) by A7, A8, FINSEQ_3: 25;

          then

           A10: (WF . j) = ( width (F . j)) by Def4;

          j in ( Seg ( len F)) by A3, A7, A8;

          then

           A11: (F0 . j) = 0 by FINSEQ_2: 57;

          

           A12: 0 >= (LF . j) by A2, A5, A4, A9;

          (LF . j) = ( len (F . j)) by A5, A4, A9, Def3;

          hence (WF . j) = (F0 . j) by A10, A12, A11, MATRIX_0:def 3;

        end;

        ( len F0) = ( len F) by CARD_1:def 7;

        then WF = F0 by A3, A6;

        hence thesis by RVSUM_1: 81;

      end;

    end;

    theorem :: MATRIXJ1:14

    

     Th14: ( Len (F1 ^ F2)) = (( Len F1) ^ ( Len F2))

    proof

      set F12 = (F1 ^ F2);

      

       A1: ( len F12) = (( len F1) + ( len F2)) by FINSEQ_1: 22;

      ( len F2) = ( len ( Len F2)) by CARD_1:def 7;

      then

       A2: ( dom ( Len F2)) = ( dom F2) by FINSEQ_3: 29;

      

       A3: ( len (( Len F1) ^ ( Len F2))) = (( len F1) + ( len F2)) by CARD_1:def 7;

      

       A4: ( len ( Len F12)) = ( len F12) by CARD_1:def 7;

      then

       A5: ( dom (( Len F1) ^ ( Len F2))) = ( dom ( Len F12)) by A1, A3, FINSEQ_3: 29;

      

       A6: ( len F1) = ( len ( Len F1)) by CARD_1:def 7;

      then

       A7: ( dom ( Len F1)) = ( dom F1) by FINSEQ_3: 29;

      now

        let k such that

         A8: 1 <= k and

         A9: k <= (( len F1) + ( len F2));

        

         A10: k in ( dom (( Len F1) ^ ( Len F2))) by A3, A8, A9, FINSEQ_3: 25;

        now

          per cases by A10, FINSEQ_1: 25;

            suppose

             A11: k in ( dom ( Len F1));

            

            hence ((( Len F1) ^ ( Len F2)) . k) = (( Len F1) . k) by FINSEQ_1:def 7

            .= ( len (F1 . k)) by A11, Def3

            .= ( len (F12 . k)) by A7, A11, FINSEQ_1:def 7

            .= (( Len F12) . k) by A5, A10, Def3;

          end;

            suppose ex n st n in ( dom ( Len F2)) & k = (( len ( Len F1)) + n);

            then

            consider n such that

             A12: n in ( dom ( Len F2)) and

             A13: k = (( len F1) + n) by A6;

            

            thus ((( Len F1) ^ ( Len F2)) . k) = (( Len F2) . n) by A6, A12, A13, FINSEQ_1:def 7

            .= ( len (F2 . n)) by A12, Def3

            .= ( len (F12 . k)) by A2, A12, A13, FINSEQ_1:def 7

            .= (( Len F12) . k) by A5, A10, Def3;

          end;

        end;

        hence (( Len F12) . k) = ((( Len F1) ^ ( Len F2)) . k);

      end;

      hence thesis by A4, A1, A3;

    end;

    theorem :: MATRIXJ1:15

    

     Th15: ( Len <*M*>) = <*( len M)*>

    proof

      set F = <*M*>;

      

       A1: ( len F) = 1 by FINSEQ_1: 40;

      

       A2: (F . 1) = M by FINSEQ_1: 40;

      

       A3: ( len F) = ( len ( Len F)) by CARD_1:def 7;

      

       A4: ( dom ( Len F)) = ( Seg ( len F)) by FINSEQ_2: 124;

      1 in ( Seg 1);

      then (( Len F) . 1) = ( len (F . 1)) by A1, A4, Def3;

      hence thesis by A1, A3, A2, FINSEQ_1: 40;

    end;

    

     Lm4: ( Sum ( Len <*M*>)) = ( len M)

    proof

      ( Len <*M*>) = <*( len M)*> by Th15;

      hence thesis by RVSUM_1: 73;

    end;

    theorem :: MATRIXJ1:16

    

     Th16: ( Sum ( Len <*M1, M2*>)) = (( len M1) + ( len M2))

    proof

      

      thus ( Sum ( Len <*M1, M2*>)) = ( Sum (( Len <*M1*>) ^ ( Len <*M2*>))) by Th14

      .= (( Sum ( Len <*M1*>)) + ( Sum ( Len <*M2*>))) by RVSUM_1: 75

      .= (( len M1) + ( Sum ( Len <*M2*>))) by Lm4

      .= (( len M1) + ( len M2)) by Lm4;

    end;

    theorem :: MATRIXJ1:17

    

     Th17: ( Len (F1 | n)) = (( Len F1) | n)

    proof

      

       A1: ( len ( Len F1)) = ( len F1) by CARD_1:def 7;

      per cases ;

        suppose

         A2: n >= ( len F1);

        then (F1 | n) = F1 by FINSEQ_1: 58;

        hence thesis by A1, A2, FINSEQ_1: 58;

      end;

        suppose

         A3: n < ( len F1);

        F1 = ((F1 | n) ^ (F1 /^ n)) by RFINSEQ: 8;

        then

         A4: ( Len F1) = (( Len (F1 | n)) ^ ( Len (F1 /^ n))) by Th14;

        ( len (F1 | n)) = n by A3, FINSEQ_1: 59;

        then ( len ( Len (F1 | n))) = n by CARD_1:def 7;

        hence thesis by A4, FINSEQ_5: 23;

      end;

    end;

    theorem :: MATRIXJ1:18

    

     Th18: ( Width (F1 ^ F2)) = (( Width F1) ^ ( Width F2))

    proof

      set F12 = (F1 ^ F2);

      

       A1: ( len F12) = (( len F1) + ( len F2)) by FINSEQ_1: 22;

      ( len F2) = ( len ( Width F2)) by CARD_1:def 7;

      then

       A2: ( dom ( Width F2)) = ( dom F2) by FINSEQ_3: 29;

      

       A3: ( len (( Width F1) ^ ( Width F2))) = (( len F1) + ( len F2)) by CARD_1:def 7;

      

       A4: ( len ( Width F12)) = ( len F12) by CARD_1:def 7;

      then

       A5: ( dom (( Width F1) ^ ( Width F2))) = ( dom ( Width F12)) by A1, A3, FINSEQ_3: 29;

      

       A6: ( len F1) = ( len ( Width F1)) by CARD_1:def 7;

      then

       A7: ( dom ( Width F1)) = ( dom F1) by FINSEQ_3: 29;

      now

        let k such that

         A8: 1 <= k and

         A9: k <= (( len F1) + ( len F2));

        

         A10: k in ( dom (( Width F1) ^ ( Width F2))) by A3, A8, A9, FINSEQ_3: 25;

        now

          per cases by A10, FINSEQ_1: 25;

            suppose

             A11: k in ( dom ( Width F1));

            

            hence ((( Width F1) ^ ( Width F2)) . k) = (( Width F1) . k) by FINSEQ_1:def 7

            .= ( width (F1 . k)) by A11, Def4

            .= ( width (F12 . k)) by A7, A11, FINSEQ_1:def 7

            .= (( Width F12) . k) by A5, A10, Def4;

          end;

            suppose ex n st n in ( dom ( Width F2)) & k = (( len ( Width F1)) + n);

            then

            consider n such that

             A12: n in ( dom ( Width F2)) and

             A13: k = (( len F1) + n) by A6;

            

            thus ((( Width F1) ^ ( Width F2)) . k) = (( Width F2) . n) by A6, A12, A13, FINSEQ_1:def 7

            .= ( width (F2 . n)) by A12, Def4

            .= ( width (F12 . k)) by A2, A12, A13, FINSEQ_1:def 7

            .= (( Width F12) . k) by A5, A10, Def4;

          end;

        end;

        hence (( Width F12) . k) = ((( Width F1) ^ ( Width F2)) . k);

      end;

      hence thesis by A4, A1, A3;

    end;

    theorem :: MATRIXJ1:19

    

     Th19: ( Width <*M*>) = <*( width M)*>

    proof

      set F = <*M*>;

      

       A1: ( len F) = 1 by FINSEQ_1: 40;

      

       A2: (F . 1) = M by FINSEQ_1: 40;

      

       A3: ( len F) = ( len ( Width F)) by CARD_1:def 7;

      

       A4: ( dom ( Width F)) = ( Seg ( len F)) by FINSEQ_2: 124;

      1 in ( Seg 1);

      then (( Width F) . 1) = ( width (F . 1)) by A1, A4, Def4;

      hence thesis by A1, A3, A2, FINSEQ_1: 40;

    end;

    

     Lm5: ( Sum ( Width <*M*>)) = ( width M)

    proof

      ( Width <*M*>) = <*( width M)*> by Th19;

      hence thesis by RVSUM_1: 73;

    end;

    theorem :: MATRIXJ1:20

    

     Th20: ( Sum ( Width <*M1, M2*>)) = (( width M1) + ( width M2))

    proof

      

      thus ( Sum ( Width <*M1, M2*>)) = ( Sum (( Width <*M1*>) ^ ( Width <*M2*>))) by Th18

      .= (( Sum ( Width <*M1*>)) + ( Sum ( Width <*M2*>))) by RVSUM_1: 75

      .= (( width M1) + ( Sum ( Width <*M2*>))) by Lm5

      .= (( width M1) + ( width M2)) by Lm5;

    end;

    theorem :: MATRIXJ1:21

    

     Th21: ( Width (F1 | n)) = (( Width F1) | n)

    proof

      

       A1: ( len ( Width F1)) = ( len F1) by CARD_1:def 7;

      per cases ;

        suppose

         A2: n >= ( len F1);

        then (F1 | n) = F1 by FINSEQ_1: 58;

        hence thesis by A1, A2, FINSEQ_1: 58;

      end;

        suppose

         A3: n < ( len F1);

        F1 = ((F1 | n) ^ (F1 /^ n)) by RFINSEQ: 8;

        then

         A4: ( Width F1) = (( Width (F1 | n)) ^ ( Width (F1 /^ n))) by Th18;

        ( len (F1 | n)) = n by A3, FINSEQ_1: 59;

        then ( len ( Width (F1 | n))) = n by CARD_1:def 7;

        hence thesis by A4, FINSEQ_5: 23;

      end;

    end;

    begin

    definition

      let D;

      let d be Element of D;

      let F be FinSequence_of_Matrix of D;

      :: MATRIXJ1:def5

      func block_diagonal (F,d) -> Matrix of D means

      : Def5: ( len it ) = ( Sum ( Len F)) & ( width it ) = ( Sum ( Width F)) & for i, j st [i, j] in ( Indices it ) holds (j <= ( Sum (( Width F) | (( min (( Len F),i)) -' 1))) or j > ( Sum (( Width F) | ( min (( Len F),i)))) implies (it * (i,j)) = d) & (( Sum (( Width F) | (( min (( Len F),i)) -' 1))) < j & j <= ( Sum (( Width F) | ( min (( Len F),i)))) implies (it * (i,j)) = ((F . ( min (( Len F),i))) * ((i -' ( Sum (( Len F) | (( min (( Len F),i)) -' 1)))),(j -' ( Sum (( Width F) | (( min (( Len F),i)) -' 1)))))));

      existence

      proof

        set M = ( Sum ( Width F));

        set N = ( Sum ( Len F));

        set L = ( Len F);

        set W = ( Width F);

        defpred P[ Nat, Nat, Element of D] means ($2 <= ( Sum (W | (( min (L,$1)) -' 1))) or $2 > ( Sum (W | ( min (L,$1)))) implies $3 = d) & (( Sum (W | (( min (L,$1)) -' 1))) < $2 & $2 <= ( Sum (W | ( min (L,$1)))) implies $3 = ((F . ( min (L,$1))) * (($1 -' ( Sum (L | (( min (L,$1)) -' 1)))),($2 -' ( Sum (W | (( min (L,$1)) -' 1)))))));

        

         A1: for i, j st [i, j] in [:( Seg N), ( Seg M):] holds ex x be Element of D st P[i, j, x]

        proof

          let i, j such that [i, j] in [:( Seg N), ( Seg M):];

          per cases ;

            suppose

             A2: j <= ( Sum (W | (( min (L,i)) -' 1))) or j > ( Sum (W | ( min (L,i))));

            take d;

            thus thesis by A2;

          end;

            suppose

             A3: ( Sum (W | (( min (L,i)) -' 1))) < j & j <= ( Sum (W | ( min (L,i))));

            take ((F . ( min (L,i))) * ((i -' ( Sum (L | (( min (L,i)) -' 1)))),(j -' ( Sum (W | (( min (L,i)) -' 1))))));

            thus thesis by A3;

          end;

        end;

        consider MM be Matrix of N, M, D such that

         A4: for i, j st [i, j] in ( Indices MM) holds P[i, j, (MM * (i,j))] from MATRIX_0:sch 2( A1);

        take MM;

        per cases ;

          suppose

           A5: N = 0 ;

          then M = 0 by Th13;

          hence thesis by A5, MATRIX_0: 22;

        end;

          suppose N > 0 ;

          hence thesis by A4, MATRIX_0: 23;

        end;

      end;

      uniqueness

      proof

        set W = ( Width F);

        set L = ( Len F);

        let M1,M2 be Matrix of D such that

         A6: ( len M1) = ( Sum L) and

         A7: ( width M1) = ( Sum W) and

         A8: for i, j st [i, j] in ( Indices M1) holds (j <= ( Sum (W | (( min (L,i)) -' 1))) or j > ( Sum (W | ( min (L,i)))) implies (M1 * (i,j)) = d) & (( Sum (W | (( min (L,i)) -' 1))) < j & j <= ( Sum (W | ( min (L,i)))) implies (M1 * (i,j)) = ((F . ( min (L,i))) * ((i -' ( Sum (L | (( min (L,i)) -' 1)))),(j -' ( Sum (W | (( min (L,i)) -' 1))))))) and

         A9: ( len M2) = ( Sum L) and

         A10: ( width M2) = ( Sum W) and

         A11: for i, j st [i, j] in ( Indices M2) holds (j <= ( Sum (W | (( min (L,i)) -' 1))) or j > ( Sum (W | ( min (L,i)))) implies (M2 * (i,j)) = d) & (( Sum (W | (( min (L,i)) -' 1))) < j & j <= ( Sum (W | ( min (L,i)))) implies (M2 * (i,j)) = ((F . ( min (L,i))) * ((i -' ( Sum (L | (( min (L,i)) -' 1)))),(j -' ( Sum (W | (( min (L,i)) -' 1)))))));

        

         A12: ( Indices M1) = [:( Seg ( len M1)), ( Seg ( width M1)):] by FINSEQ_1:def 3

        .= ( Indices M2) by A6, A7, A9, A10, FINSEQ_1:def 3;

        now

          let i, j such that

           A13: [i, j] in ( Indices M1);

          (j <= ( Sum (W | (( min (L,i)) -' 1))) or j > ( Sum (W | ( min (L,i))))) or ( Sum (W | (( min (L,i)) -' 1))) < j & j <= ( Sum (W | ( min (L,i))));

          then (M1 * (i,j)) = d & (M2 * (i,j)) = d or (M1 * (i,j)) = ((F . ( min (L,i))) * ((i -' ( Sum (L | (( min (L,i)) -' 1)))),(j -' ( Sum (W | (( min (L,i)) -' 1)))))) & (M2 * (i,j)) = ((F . ( min (L,i))) * ((i -' ( Sum (L | (( min (L,i)) -' 1)))),(j -' ( Sum (W | (( min (L,i)) -' 1)))))) by A8, A11, A12, A13;

          hence (M1 * (i,j)) = (M2 * (i,j));

        end;

        hence thesis by A6, A7, A9, A10, MATRIX_0: 21;

      end;

    end

    definition

      let D;

      let d be Element of D;

      let F be FinSequence_of_Matrix of D;

      :: original: block_diagonal

      redefine

      func block_diagonal (F,d) -> Matrix of ( Sum ( Len F)), ( Sum ( Width F)), D ;

      coherence

      proof

        

         A1: ( width ( block_diagonal (F,d))) = ( Sum ( Width F)) by Def5;

        ( len ( block_diagonal (F,d))) = ( Sum ( Len F)) by Def5;

        hence thesis by A1, MATRIX_0: 51;

      end;

    end

    theorem :: MATRIXJ1:22

    for F be FinSequence_of_Matrix of D st F = {} holds ( block_diagonal (F,d)) = {}

    proof

      let F be FinSequence_of_Matrix of D;

      assume F = {} ;

      then ( len ( Len F)) = 0 ;

      then ( Len F) = ( <*> REAL );

      then 0 = ( len ( block_diagonal (F,d))) by Def5, RVSUM_1: 72;

      hence thesis;

    end;

    theorem :: MATRIXJ1:23

    

     Th23: 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 ( dom M1) implies ( Line (M,i)) = (( Line (M1,i)) ^ (( width M2) |-> d))) & (i in ( dom M2) implies ( Line (M,(i + ( len M1)))) = ((( width M1) |-> d) ^ ( Line (M2,i))))

    proof

      let M be Matrix of ( Sum ( Len <*M1, M2*>)), ( Sum ( Width <*M1, M2*>)), D;

      set F1 = <*M1*>;

      set F2 = <*M2*>;

      set F12 = <*M1, M2*>;

      set B = ( block_diagonal (F12,d));

      set L1 = ( len M1);

      set L2 = ( len M2);

      reconsider W1 = ( width M1) as Element of NAT by ORDINAL1:def 12;

      set W2 = ( width M2);

      

       A1: ( Sum <*W1*>) = W1 by RVSUM_1: 73;

      ( len B) = ( Sum ( Len F12)) by Def5;

      then

       A2: ( len B) = (L1 + L2) by Th16;

      

       A3: ( len F12) = ( len ( Len F12)) by CARD_1:def 7;

      

       A4: (( Len F12) | 0 ) = ( <*> REAL );

      

       A5: (( Width F12) | 0 ) = ( <*> REAL );

      

       A6: (1 -' 1) = 0 by XREAL_1: 232;

      

       A7: ( width B) = ( Sum ( Width F12)) by Def5;

      then

       A8: ( width B) = (W1 + W2) by Th20;

      

       A9: ( len <*W1*>) = 1 by FINSEQ_1: 40;

      

       A10: ( len F1) = 1 by FINSEQ_1: 40;

      

       A11: ( Len F1) = <*L1*> by Th15;

      

       A12: ( Len F12) = (( Len F1) ^ ( Len F2)) by Th14;

      then

       A13: (( Len F12) . 1) = L1 by A11, FINSEQ_1: 41;

      

       A14: ( len <*L1*>) = 1 by FINSEQ_1: 40;

      then

       A15: (( Len F12) | 1) = <*L1*> by A12, A11, FINSEQ_5: 23;

      

       A16: ( Width F1) = <*W1*> by Th19;

      

       A17: ( Sum <*L1*>) = L1 by RVSUM_1: 73;

      ( Width F12) = (( Width F1) ^ ( Width F2)) by Th18;

      then

       A18: (( Width F12) | 1) = <*W1*> by A16, A9, FINSEQ_5: 23;

      

       A19: ( Len F2) = <*L2*> by Th15;

      then

       A20: ( len ( Len F12)) = (1 + 1) by A12, A11, A14, FINSEQ_2: 16;

      

       A21: (( Len F12) . 2) = L2 by A12, A11, A19, A14, FINSEQ_1: 42;

      ( len ( Width F12)) = ( len F12) by CARD_1:def 7;

      then

       A22: (( Width F12) | 2) = ( Width F12) by A20, A3, FINSEQ_1: 58;

      

       A23: ( dom ( Len F12)) = {1, 2} by A20, FINSEQ_1: 2, FINSEQ_1:def 3;

      then

       A24: 1 in ( dom ( Len F12)) by TARSKI:def 2;

      then

       A25: (( Len F12) /. 1) = (( Len F12) . 1) by PARTFUN1:def 6;

      

       A26: (2 -' 1) = (2 - 1) by XREAL_1: 233;

      ( Sum ( Len F12)) = 0 implies ( Sum ( Width F12)) = 0 by Th13;

      then

       A27: ( width M) = (W1 + W2) by A7, A8, MATRIX13: 1;

      

       A28: 2 in ( dom ( Len F12)) by A23, TARSKI:def 2;

      then

       A29: (( Len F12) /. 2) = (( Len F12) . 2) by PARTFUN1:def 6;

      hereby

        assume

         A30: M = B;

        let i;

        thus i in ( dom M1) implies ( Line (M,i)) = (( Line (M1,i)) ^ (W2 |-> d))

        proof

          set W2d = (W2 |-> d);

          set LM1 = ( Line (M1,i));

          set LM = ( Line (M,i));

          

           A31: L1 <= (L1 + L2) by NAT_1: 11;

          

           A32: ( len LM1) = W1 by CARD_1:def 7;

          assume

           A33: i in ( dom M1);

          then

           A34: 1 <= i by FINSEQ_3: 25;

          i <= L1 by A33, FINSEQ_3: 25;

          then i <= (L1 + L2) by A31, XXREAL_0: 2;

          then

           A35: i in ( dom B) by A2, A34, FINSEQ_3: 25;

          

           A36: ( len W2d) = W2 by CARD_1:def 7;

          

           A37: ( len (LM1 ^ W2d)) = (( len LM1) + ( len W2d)) by FINSEQ_1: 22;

          

           A38: ( len LM) = (W1 + W2) by A27, CARD_1:def 7;

          

           A39: i in ( Seg L1) by A33, FINSEQ_1:def 3;

          now

            

             A40: ( min (( Len F12),(i + 0 ))) = 1 by A24, A6, A13, A25, A4, A39, Th10, RVSUM_1: 72;

            let j such that

             A41: 1 <= j and

             A42: j <= ( len LM);

            

             A43: j in ( Seg ( width B)) by A8, A38, A41, A42;

            then

             A44: [i, j] in ( Indices B) by A35, ZFMISC_1: 87;

            

             A45: j in ( dom (LM1 ^ W2d)) by A38, A32, A36, A37, A41, A42, FINSEQ_3: 25;

            now

              per cases ;

                suppose

                 A46: j <= W1;

                then

                 A47: j in ( Seg ( width M1)) by A41;

                

                 A48: j in ( dom LM1) by A32, A41, A46, FINSEQ_3: 25;

                

                thus (LM . j) = (M * (i,j)) by A8, A27, A43, MATRIX_0:def 7

                .= ((F12 . 1) * ((i -' ( Sum (( Len F12) | 0 ))),(j -' ( Sum (( Width F12) | 0 ))))) by A1, A6, A18, A30, A41, A44, A40, A46, Def5, RVSUM_1: 72

                .= ((F12 . 1) * (i,(j -' 0 ))) by NAT_D: 40, RVSUM_1: 72

                .= ((F12 . 1) * (i,j)) by NAT_D: 40

                .= (M1 * (i,j)) by FINSEQ_1: 41

                .= (LM1 . j) by A47, MATRIX_0:def 7

                .= ((LM1 ^ W2d) . j) by A48, FINSEQ_1:def 7;

              end;

                suppose

                 A49: j > W1;

                

                 A50: ( dom W2d) = ( Seg W2) by A36, FINSEQ_1:def 3;

                 not j in ( dom LM1) by A32, A49, FINSEQ_3: 25;

                then

                consider k such that

                 A51: k in ( dom W2d) and

                 A52: j = (( len LM1) + k) by A45, FINSEQ_1: 25;

                

                thus (LM . j) = (M * (i,j)) by A8, A27, A43, MATRIX_0:def 7

                .= d by A1, A18, A30, A44, A40, A49, Def5

                .= (W2d . k) by A51, A50, FINSEQ_2: 57

                .= ((LM1 ^ W2d) . j) by A51, A52, FINSEQ_1:def 7;

              end;

            end;

            hence (LM . j) = ((LM1 ^ W2d) . j);

          end;

          hence thesis by A38, A32, A36, A37;

        end;

        thus i in ( dom M2) implies ( Line (M,(i + ( len M1)))) = ((( width M1) |-> d) ^ ( Line (M2,i)))

        proof

          set LM2 = ( Line (M2,i));

          set W1d = (W1 |-> d);

          set LM = ( Line (M,(i + L1)));

          

           A53: ( len LM2) = W2 by CARD_1:def 7;

          

           A54: ( len (W1d ^ LM2)) = (( len W1d) + ( len LM2)) by FINSEQ_1: 22;

          

           A55: ( len W1d) = W1 by CARD_1:def 7;

          

           A56: ( len LM) = (W1 + W2) by A27, CARD_1:def 7;

          assume i in ( dom M2);

          then

           A57: i in ( Seg L2) by FINSEQ_1:def 3;

          then (L1 + i) in ( Seg (L1 + L2)) by FINSEQ_1: 60;

          then

           A58: (L1 + i) in ( dom B) by A2, FINSEQ_1:def 3;

          now

            

             A59: ( min (( Len F12),(i + L1))) = 2 by A17, A28, A26, A21, A29, A15, A57, Th10;

            let j such that

             A60: 1 <= j and

             A61: j <= ( len LM);

            

             A62: j in ( Seg ( width B)) by A8, A56, A60, A61;

            then

             A63: [(i + L1), j] in ( Indices B) by A58, ZFMISC_1: 87;

            

             A64: j in ( dom (W1d ^ LM2)) by A56, A53, A55, A54, A60, A61, FINSEQ_3: 25;

            per cases ;

              suppose

               A65: j <= W1;

              

               A66: ( dom W1d) = ( Seg W1) by A55, FINSEQ_1:def 3;

              

               A67: j in ( Seg W1) by A60, A65;

              

              thus (LM . j) = (B * ((i + L1),j)) by A30, A62, MATRIX_0:def 7

              .= d by A1, A26, A18, A63, A59, A65, Def5

              .= (W1d . j) by A67, FINSEQ_2: 57

              .= ((W1d ^ LM2) . j) by A67, A66, FINSEQ_1:def 7;

            end;

              suppose

               A68: j > W1;

              

               A69: ( dom LM2) = ( Seg W2) by A53, FINSEQ_1:def 3;

               not j in ( dom W1d) by A55, A68, FINSEQ_3: 25;

              then

              consider k such that

               A70: k in ( dom LM2) and

               A71: j = (W1 + k) by A55, A64, FINSEQ_1: 25;

              

              thus (LM . j) = (B * ((i + L1),j)) by A30, A62, MATRIX_0:def 7

              .= ((F12 . 2) * (((i + L1) -' L1),(j -' W1))) by A7, A8, A1, A17, A26, A15, A18, A22, A56, A61, A63, A59, A68, Def5

              .= ((F12 . 2) * (i,(j -' W1))) by NAT_D: 34

              .= ((F12 . (( len F1) + 1)) * (i,k)) by A10, A71, NAT_D: 34

              .= (M2 * (i,k)) by FINSEQ_1: 42

              .= (LM2 . k) by A70, A69, MATRIX_0:def 7

              .= ((W1d ^ LM2) . j) by A55, A70, A71, FINSEQ_1:def 7;

            end;

          end;

          hence thesis by A56, A53, A55, A54;

        end;

      end;

      assume

       A72: for i holds (i in ( dom M1) implies ( Line (M,i)) = (( Line (M1,i)) ^ (( width M2) |-> d))) & (i in ( dom M2) implies ( Line (M,(i + ( len M1)))) = ((( width M1) |-> d) ^ ( Line (M2,i))));

      

       A73: ( Sum (( Width F12) | 2)) = (W1 + W2) by A22, Th20;

      now

        set W1d = (W1 |-> d);

        set W2d = (W2 |-> d);

        

         A74: ( Indices M) = ( Indices B) by MATRIX_0: 26;

        let i, j such that

         A75: [i, j] in ( Indices M);

        

         A76: i in ( dom B) by A75, A74, ZFMISC_1: 87;

        then

         A77: 1 <= i by FINSEQ_3: 25;

        

         A78: j in ( Seg ( width B)) by A75, A74, ZFMISC_1: 87;

        then

         A79: 1 <= j by FINSEQ_1: 1;

        

         A80: i in ( Seg (L1 + L2)) by A2, A76, FINSEQ_1:def 3;

        set LM1 = ( Line (M1,i));

        

         A81: ( len LM1) = W1 by CARD_1:def 7;

        

         A82: ( len W1d) = W1 by CARD_1:def 7;

        

         A83: ( len W2d) = W2 by CARD_1:def 7;

        

         A84: ( len (LM1 ^ W2d)) = (( len LM1) + ( len W2d)) by FINSEQ_1: 22;

        

         A85: j <= ( width B) by A78, FINSEQ_1: 1;

        now

          per cases ;

            suppose

             A86: i <= L1;

            then i in ( Seg L1) by A77;

            then

             A87: ( min (( Len F12),(i + 0 ))) = 1 by A24, A6, A13, A25, A4, Th10, RVSUM_1: 72;

             A88:

            now

              per cases ;

                suppose

                 A89: j <= W1;

                then

                 A90: j in ( Seg ( width M1)) by A79;

                

                 A91: j in ( dom LM1) by A79, A81, A89, FINSEQ_3: 25;

                

                thus (B * (i,j)) = ((F12 . 1) * ((i -' 0 ),(j -' 0 ))) by A1, A6, A4, A5, A18, A75, A74, A79, A87, A89, Def5, RVSUM_1: 72

                .= ((F12 . 1) * (i,(j -' 0 ))) by NAT_D: 40

                .= ((F12 . 1) * (i,j)) by NAT_D: 40

                .= (M1 * (i,j)) by FINSEQ_1: 41

                .= (LM1 . j) by A90, MATRIX_0:def 7

                .= ((LM1 ^ W2d) . j) by A91, FINSEQ_1:def 7;

              end;

                suppose

                 A92: j > W1;

                then

                 A93: not j in ( dom LM1) by A81, FINSEQ_3: 25;

                

                 A94: ( dom W2d) = ( Seg W2) by A83, FINSEQ_1:def 3;

                ( dom (LM1 ^ W2d)) = ( Seg ( width B)) by A8, A81, A83, A84, FINSEQ_1:def 3;

                then

                consider k such that

                 A95: k in ( dom W2d) and

                 A96: j = (( len LM1) + k) by A78, A93, FINSEQ_1: 25;

                

                thus (B * (i,j)) = d by A1, A18, A75, A74, A87, A92, Def5

                .= (W2d . k) by A95, A94, FINSEQ_2: 57

                .= ((LM1 ^ W2d) . j) by A95, A96, FINSEQ_1:def 7;

              end;

            end;

            i in ( dom M1) by A77, A86, FINSEQ_3: 25;

            then ( Line (M,i)) = (LM1 ^ W2d) by A72;

            hence (M * (i,j)) = (B * (i,j)) by A8, A27, A78, A88, MATRIX_0:def 7;

          end;

            suppose

             A97: i > L1;

            then

            reconsider iL = (i - L1) as Element of NAT by NAT_1: 21;

            

             A98: iL <> 0 by A97;

            set LM2 = ( Line (M2,iL));

            i = (iL + L1);

            then iL in ( Seg L2) by A80, A98, FINSEQ_1: 61;

            then

             A99: ( min (( Len F12),(iL + L1))) = 2 by A17, A28, A26, A21, A29, A15, Th10;

             A100:

            now

              per cases ;

                suppose

                 A101: j <= W1;

                then

                 A102: j in ( Seg W1) by A79;

                

                 A103: j in ( dom W1d) by A79, A82, A101, FINSEQ_3: 25;

                

                thus (B * (i,j)) = d by A1, A26, A18, A75, A74, A99, A101, Def5

                .= (W1d . j) by A102, FINSEQ_2: 57

                .= ((W1d ^ LM2) . j) by A103, FINSEQ_1:def 7;

              end;

                suppose

                 A104: j > W1;

                ( len LM2) = W2 by MATRIX_0:def 7;

                then

                 A105: ( dom W2d) = ( dom LM2) by A83, FINSEQ_3: 29;

                

                 A106: not j in ( dom LM1) by A81, A104, FINSEQ_3: 25;

                

                 A107: ( dom W2d) = ( Seg W2) by A83, FINSEQ_1:def 3;

                ( dom (LM1 ^ W2d)) = ( Seg ( width B)) by A8, A81, A83, A84, FINSEQ_1:def 3;

                then

                consider k such that

                 A108: k in ( dom W2d) and

                 A109: j = (W1 + k) by A78, A81, A106, FINSEQ_1: 25;

                

                thus (B * (i,j)) = ((F12 . 2) * (((iL + L1) -' L1),(j -' W1))) by A8, A1, A17, A26, A15, A18, A73, A75, A74, A85, A99, A104, Def5

                .= ((F12 . 2) * (iL,(j -' W1))) by NAT_D: 34

                .= ((F12 . (( len F1) + 1)) * (iL,k)) by A10, A109, NAT_D: 34

                .= (M2 * (iL,k)) by FINSEQ_1: 42

                .= (LM2 . k) by A108, A107, MATRIX_0:def 7

                .= ((W1d ^ LM2) . j) by A82, A108, A109, A105, FINSEQ_1:def 7;

              end;

            end;

            ( Seg L2) = ( dom M2) by FINSEQ_1:def 3;

            then ( Line (M,(iL + L1))) = ((W1 |-> d) ^ ( Line (M2,iL))) by A72, A80, A98, FINSEQ_1: 61;

            hence (M * (i,j)) = (B * (i,j)) by A8, A27, A78, A100, MATRIX_0:def 7;

          end;

        end;

        hence (M * (i,j)) = (B * (i,j));

      end;

      hence thesis by MATRIX_0: 27;

    end;

    theorem :: MATRIXJ1:24

    

     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;

    theorem :: MATRIXJ1:25

    

     Th25: ( Indices ( block_diagonal (F1,d1))) is Subset of ( Indices ( block_diagonal ((F1 ^ F2),d2)))

    proof

      set B1 = ( block_diagonal (F1,d1));

      set B2 = ( block_diagonal ((F1 ^ F2),d2));

      ( Indices B1) c= ( Indices B2)

      proof

        (( Len F1) ^ ( Len F2)) = ( Len (F1 ^ F2)) by Th14;

        then (( Sum ( Len F1)) + ( Sum ( Len F2))) = ( Sum ( Len (F1 ^ F2))) by RVSUM_1: 75;

        then ( 0 + ( Sum ( Len F1))) <= ( Sum ( Len (F1 ^ F2))) by XREAL_1: 6;

        then

         A1: ( Seg ( Sum ( Len F1))) c= ( Seg ( Sum ( Len (F1 ^ F2)))) by FINSEQ_1: 5;

        

         A2: ( dom B2) = ( Seg ( len B2)) by FINSEQ_1:def 3;

        (( Width F1) ^ ( Width F2)) = ( Width (F1 ^ F2)) by Th18;

        then (( Sum ( Width F1)) + ( Sum ( Width F2))) = ( Sum ( Width (F1 ^ F2))) by RVSUM_1: 75;

        then ( 0 + ( Sum ( Width F1))) <= ( Sum ( Width (F1 ^ F2))) by XREAL_1: 6;

        then

         A3: ( Seg ( Sum ( Width F1))) c= ( Seg ( Sum ( Width (F1 ^ F2)))) by FINSEQ_1: 5;

        

         A4: ( len B1) = ( Sum ( Len F1)) by Def5;

        let x be object;

        assume x in ( Indices B1);

        then

         A5: ex i,j be object st i in ( dom B1) & j in ( Seg ( width B1)) & x = [i, j] by ZFMISC_1:def 2;

        

         A6: ( dom B1) = ( Seg ( len B1)) by FINSEQ_1:def 3;

        

         A7: ( width B1) = ( Sum ( Width F1)) by Def5;

        

         A8: ( width B2) = ( Sum ( Width (F1 ^ F2))) by Def5;

        ( len B2) = ( Sum ( Len (F1 ^ F2))) by Def5;

        hence thesis by A5, A6, A2, A4, A8, A7, A1, A3, ZFMISC_1: 87;

      end;

      hence thesis;

    end;

    theorem :: MATRIXJ1:26

    

     Th26: [i, j] in ( Indices ( block_diagonal (F1,d))) implies (( block_diagonal (F1,d)) * (i,j)) = (( block_diagonal ((F1 ^ F2),d)) * (i,j))

    proof

      set B1 = ( block_diagonal (F1,d));

      set L1 = ( Len F1);

      set W1 = ( Width F1);

      set L2 = ( Len F2);

      set W2 = ( Width F2);

      set F12 = (F1 ^ F2);

      set L = ( Len F12);

      set W = ( Width F12);

      set B12 = ( block_diagonal (F12,d));

      

       A1: ( len F1) = ( len W1) by CARD_1:def 7;

      

       A2: ( len B1) = ( Sum L1) by Def5;

      assume

       A3: [i, j] in ( Indices ( block_diagonal (F1,d)));

      then i in ( dom B1) by ZFMISC_1: 87;

      then

       A4: i in ( Seg ( len B1)) by FINSEQ_1:def 3;

      then

       A5: ( min (L1,i)) in ( dom L1) by A2, Def1;

      then

       A6: ( min (L1,i)) <= ( len L1) by FINSEQ_3: 25;

      (L1 ^ L2) = L by Th14;

      then

       A7: ( min (L1,i)) = ( min (L,i)) by A4, A2, Th8;

      

       A8: ( dom L1) = ( dom F1) by Def3;

      

       A9: (W1 ^ W2) = W by Th18;

      

       A10: (L1 ^ L2) = L by Th14;

      

       A11: ( Indices B1) is Subset of ( Indices B12) by Th25;

      

       A12: ( len L1) = ( len F1) by CARD_1:def 7;

      then

       A13: ((W1 ^ W2) | ( min (L,i))) = (W1 | ( min (L1,i))) by A7, A6, A1, FINSEQ_5: 22;

      

       A14: (( min (L1,i)) -' 1) <= ( min (L1,i)) by NAT_D: 35;

      then

       A15: ((L1 ^ L2) | (( min (L,i)) -' 1)) = (L1 | (( min (L1,i)) -' 1)) by A7, A6, FINSEQ_5: 22, XXREAL_0: 2;

      

       A16: ((W1 ^ W2) | (( min (L,i)) -' 1)) = (W1 | (( min (L1,i)) -' 1)) by A7, A6, A14, A12, A1, FINSEQ_5: 22, XXREAL_0: 2;

      per cases ;

        suppose

         A17: j <= ( Sum (W1 | (( min (L1,i)) -' 1))) or j > ( Sum (W1 | ( min (L1,i))));

        then (B1 * (i,j)) = d by A3, Def5;

        hence thesis by A3, A11, A13, A16, A9, A17, Def5;

      end;

        suppose

         A18: j > ( Sum (W1 | (( min (L1,i)) -' 1))) & j <= ( Sum (W1 | ( min (L1,i))));

        then

         A19: (B1 * (i,j)) = ((F1 . ( min (L1,i))) * ((i -' ( Sum (L1 | (( min (L1,i)) -' 1)))),(j -' ( Sum (W1 | (( min (L1,i)) -' 1)))))) by A3, Def5;

        (B12 * (i,j)) = ((F12 . ( min (L1,i))) * ((i -' ( Sum (L1 | (( min (L1,i)) -' 1)))),(j -' ( Sum (W1 | (( min (L1,i)) -' 1)))))) by A3, A11, A7, A13, A16, A15, A9, A10, A18, Def5;

        hence thesis by A5, A8, A19, FINSEQ_1:def 7;

      end;

    end;

    theorem :: MATRIXJ1:27

    

     Th27: [i, j] in ( Indices ( block_diagonal (F2,d1))) iff i > 0 & j > 0 & [(i + ( Sum ( Len F1))), (j + ( Sum ( Width F1)))] in ( Indices ( block_diagonal ((F1 ^ F2),d2)))

    proof

      set B2 = ( block_diagonal (F2,d1));

      set B12 = ( block_diagonal ((F1 ^ F2),d2));

      

       A1: ( dom B12) = ( Seg ( len B12)) by FINSEQ_1:def 3;

      

       A2: ( len B12) = ( Sum ( Len (F1 ^ F2))) by Def5;

      (( Len F1) ^ ( Len F2)) = ( Len (F1 ^ F2)) by Th14;

      then

       A3: (( Sum ( Len F1)) + ( Sum ( Len F2))) = ( Sum ( Len (F1 ^ F2))) by RVSUM_1: 75;

      

       A4: ( len B2) = ( Sum ( Len F2)) by Def5;

      (( Width F1) ^ ( Width F2)) = ( Width (F1 ^ F2)) by Th18;

      then

       A5: (( Sum ( Width F1)) + ( Sum ( Width F2))) = ( Sum ( Width (F1 ^ F2))) by RVSUM_1: 75;

      

       A6: ( width B12) = ( Sum ( Width (F1 ^ F2))) by Def5;

      

       A7: ( width B2) = ( Sum ( Width F2)) by Def5;

      

       A8: ( dom B2) = ( Seg ( len B2)) by FINSEQ_1:def 3;

      hereby

        assume

         A9: [i, j] in ( Indices B2);

        then

         A10: j in ( Seg ( width B2)) by ZFMISC_1: 87;

        then

         A11: (j + ( Sum ( Width F1))) in ( Seg ( width B12)) by A6, A7, A5, FINSEQ_1: 60;

        

         A12: i in ( Seg ( len B2)) by A8, A9, ZFMISC_1: 87;

        then (i + ( Sum ( Len F1))) in ( Seg ( len B12)) by A2, A4, A3, FINSEQ_1: 60;

        hence i > 0 & j > 0 & [(i + ( Sum ( Len F1))), (j + ( Sum ( Width F1)))] in ( Indices B12) by A1, A12, A10, A11, ZFMISC_1: 87;

      end;

      assume that

       A13: i > 0 and

       A14: j > 0 and

       A15: [(i + ( Sum ( Len F1))), (j + ( Sum ( Width F1)))] in ( Indices B12);

      (i + ( Sum ( Len F1))) in ( Seg ( len B12)) by A1, A15, ZFMISC_1: 87;

      then

       A16: i in ( Seg ( len B2)) by A2, A4, A3, A13, FINSEQ_1: 61;

      (j + ( Sum ( Width F1))) in ( Seg ( width B12)) by A15, ZFMISC_1: 87;

      then

       A17: j in ( Seg ( width B2)) by A6, A7, A5, A14, FINSEQ_1: 61;

      ( dom B2) = ( Seg ( len B2)) by FINSEQ_1:def 3;

      hence thesis by A16, A17, ZFMISC_1: 87;

    end;

    theorem :: MATRIXJ1:28

    

     Th28: [i, j] in ( Indices ( block_diagonal (F2,d))) implies (( block_diagonal (F2,d)) * (i,j)) = (( block_diagonal ((F1 ^ F2),d)) * ((i + ( Sum ( Len F1))),(j + ( Sum ( Width F1)))))

    proof

      set L1 = ( Len F1);

      set W1 = ( Width F1);

      set L2 = ( Len F2);

      set W2 = ( Width F2);

      set F12 = (F1 ^ F2);

      set L = ( Len F12);

      set W = ( Width F12);

      set B2 = ( block_diagonal (F2,d));

      set B12 = ( block_diagonal (F12,d));

      

       A1: ( dom B12) = ( Seg ( len B12)) by FINSEQ_1:def 3;

      

       A2: ( len B12) = ( Sum L) by Def5;

      

       A3: (L1 ^ L2) = L by Th14;

      then

       A4: ( Sum L) = (( Sum L1) + ( Sum L2)) by RVSUM_1: 75;

      assume

       A5: [i, j] in ( Indices B2);

      then i > 0 by Th27;

      then (i + ( Sum L1)) > ( 0 + ( Sum L1)) by XREAL_1: 6;

      then

       A6: not (i + ( Sum L1)) in ( Seg ( Sum L1)) by FINSEQ_1: 1;

      

       A7: [(i + ( Sum L1)), (j + ( Sum W1))] in ( Indices B12) by A5, Th27;

      then (i + ( Sum L1)) in ( dom B12) by ZFMISC_1: 87;

      then

       A8: (i + ( Sum L1)) in (( Seg (( Sum L1) + ( Sum L2))) \ ( Seg ( Sum L1))) by A4, A1, A2, A6, XBOOLE_0:def 5;

      then

       A9: ( min (L,(i + ( Sum L1)))) = (( min (L2,((i + ( Sum L1)) -' ( Sum L1)))) + ( len L1)) by A3, Th9;

      

       A10: ( len B2) = ( Sum L2) by Def5;

      

       A11: ( len W1) = ( len F1) by CARD_1:def 7;

      i in ( dom B2) by A5, ZFMISC_1: 87;

      then i in ( Seg ( len B2)) by FINSEQ_1:def 3;

      then

       A12: ( min (L2,i)) in ( dom L2) by A10, Def1;

      then

       A13: ( min (L2,i)) <= ( len L2) by FINSEQ_3: 25;

      

       A14: ((i + ( Sum L1)) -' ( Sum L1)) = ((i + ( Sum L1)) - ( Sum L1)) by A8, Th9;

      

       A15: ((j + ( Sum W1)) -' (( Sum W1) + ( Sum (W2 | (( min (L2,i)) -' 1))))) = (j -' ( Sum (W2 | (( min (L2,i)) -' 1)))) by PRGCOR_1: 1;

      

       A16: ( len L2) = ( len F2) by CARD_1:def 7;

      

       A17: ((i + ( Sum L1)) -' (( Sum L1) + ( Sum (L2 | (( min (L2,i)) -' 1))))) = (i -' ( Sum (L2 | (( min (L2,i)) -' 1)))) by PRGCOR_1: 1;

      

       A18: ( len F1) = ( len L1) by CARD_1:def 7;

      

       A19: (W1 ^ W2) = W by Th18;

      then (W1 ^ (W2 | ( min (L2,i)))) = (W | ( min (L,(i + ( Sum L1))))) by A11, A18, A9, A14, FINSEQ_6: 14;

      then

       A20: (( Sum W1) + ( Sum (W2 | ( min (L2,i))))) = ( Sum (W | ( min (L,(i + ( Sum L1)))))) by RVSUM_1: 75;

      

       A21: ( min (L2,i)) >= 1 by A12, FINSEQ_3: 25;

      then

       A22: ((( min (L2,i)) + ( len L1)) -' 1) = ((( min (L2,i)) -' 1) + ( len L1)) by NAT_D: 38;

      then (L1 ^ (L2 | (( min (L2,i)) -' 1))) = (L | (( min (L,(i + ( Sum L1)))) -' 1)) by A3, A9, A14, FINSEQ_6: 14;

      then

       A23: (( Sum L1) + ( Sum (L2 | (( min (L2,i)) -' 1)))) = ( Sum (L | (( min (L,(i + ( Sum L1)))) -' 1))) by RVSUM_1: 75;

      (W1 ^ (W2 | (( min (L2,i)) -' 1))) = (W | (( min (L,(i + ( Sum L1)))) -' 1)) by A19, A11, A18, A9, A14, A22, FINSEQ_6: 14;

      then

       A24: (( Sum W1) + ( Sum (W2 | (( min (L2,i)) -' 1)))) = ( Sum (W | (( min (L,(i + ( Sum L1)))) -' 1))) by RVSUM_1: 75;

      per cases ;

        suppose

         A25: j <= ( Sum (W2 | (( min (L2,i)) -' 1))) or j > ( Sum (W2 | ( min (L2,i))));

        then (j + ( Sum W1)) <= ( Sum (W | (( min (L,(i + ( Sum L1)))) -' 1))) or (j + ( Sum W1)) > ( Sum (W | ( min (L,(i + ( Sum L1)))))) by A20, A24, XREAL_1: 7, XREAL_1: 8;

        then (B12 * ((i + ( Sum L1)),(j + ( Sum W1)))) = d by A7, Def5;

        hence thesis by A5, A25, Def5;

      end;

        suppose

         A26: j > ( Sum (W2 | (( min (L2,i)) -' 1))) & j <= ( Sum (W2 | ( min (L2,i))));

        then

         A27: (j + ( Sum W1)) <= ( Sum (W | ( min (L,(i + ( Sum L1)))))) by A20, XREAL_1: 7;

        

         A28: (B2 * (i,j)) = ((F2 . ( min (L2,i))) * ((i -' ( Sum (L2 | (( min (L2,i)) -' 1)))),(j -' ( Sum (W2 | (( min (L2,i)) -' 1)))))) by A5, A26, Def5;

        (j + ( Sum W1)) > ( Sum (W | (( min (L,(i + ( Sum L1)))) -' 1))) by A24, A26, XREAL_1: 8;

        then (B12 * ((i + ( Sum L1)),(j + ( Sum W1)))) = ((F12 . ( min (L,(i + ( Sum L1))))) * ((i -' ( Sum (L2 | (( min (L2,i)) -' 1)))),(j -' ( Sum (W2 | (( min (L2,i)) -' 1)))))) by A7, A24, A23, A17, A15, A27, Def5;

        hence thesis by A18, A16, A21, A13, A9, A14, A28, FINSEQ_1: 65;

      end;

    end;

    theorem :: MATRIXJ1:29

    

     Th29: [i, j] in ( Indices ( block_diagonal ((F1 ^ F2),d))) & (i <= ( Sum ( Len F1)) & j > ( Sum ( Width F1)) or i > ( Sum ( Len F1)) & j <= ( Sum ( Width F1))) implies (( block_diagonal ((F1 ^ F2),d)) * (i,j)) = d

    proof

      set L1 = ( Len F1);

      set W1 = ( Width F1);

      set L2 = ( Len F2);

      set W2 = ( Width F2);

      set F12 = (F1 ^ F2);

      set L = ( Len F12);

      set W = ( Width F12);

      set B12 = ( block_diagonal (F12,d));

      

       A1: ( dom B12) = ( Seg ( len B12)) by FINSEQ_1:def 3;

      

       A2: ( len W1) = ( len F1) by CARD_1:def 7;

      

       A3: ( len B12) = ( Sum L) by Def5;

      

       A4: ( len F1) = ( len L1) by CARD_1:def 7;

      assume that

       A5: [i, j] in ( Indices ( block_diagonal ((F1 ^ F2),d))) and

       A6: i <= ( Sum ( Len F1)) & j > ( Sum ( Width F1)) or i > ( Sum ( Len F1)) & j <= ( Sum ( Width F1));

      i in ( dom B12) by A5, ZFMISC_1: 87;

      then

       A7: 1 <= i by FINSEQ_3: 25;

      

       A8: (W1 ^ W2) = W by Th18;

      

       A9: (L1 ^ L2) = L by Th14;

      then

       A10: ( Sum L) = (( Sum L1) + ( Sum L2)) by RVSUM_1: 75;

      per cases by A6;

        suppose

         A11: i <= ( Sum ( Len F1)) & j > ( Sum ( Width F1));

        then

         A12: i in ( Seg ( Sum L1)) by A7;

        then ( min (L1,i)) in ( dom L1) by Def1;

        then ( min (L1,i)) <= ( len L1) by FINSEQ_3: 25;

        then

         A13: ( Sum (W | ( min (L1,i)))) <= ( Sum (W | ( len L1))) by POLYNOM3: 18;

        

         A14: (W | ( len L1)) = W1 by A8, A2, A4, FINSEQ_5: 23;

        ( min (L,i)) = ( min (L1,i)) by A9, A12, Th8;

        then ( Sum (W | ( min (L,i)))) < j by A11, A14, A13, XXREAL_0: 2;

        hence thesis by A5, Def5;

      end;

        suppose

         A15: i > ( Sum L1) & j <= ( Sum W1);

        

         A16: i in ( Seg ( Sum L)) by A1, A3, A5, ZFMISC_1: 87;

         not i in ( Seg ( Sum L1)) by A15, FINSEQ_1: 1;

        then

         A17: i in (( Seg (( Sum L1) + ( Sum L2))) \ ( Seg ( Sum L1))) by A10, A16, XBOOLE_0:def 5;

        then

         A18: (i -' ( Sum L1)) = (i - ( Sum L1)) by Th9;

        then

         A19: i = ((i -' ( Sum L1)) + ( Sum L1));

        (i -' ( Sum L1)) <> 0 by A15, A18;

        then (i -' ( Sum L1)) in ( Seg ( Sum L2)) by A10, A16, A19, FINSEQ_1: 61;

        then ( min (L2,(i -' ( Sum L1)))) in ( dom L2) by Def1;

        then

         A20: ( min (L2,(i -' ( Sum L1)))) >= 1 by FINSEQ_3: 25;

        ( min (L,i)) = (( min (L2,(i -' ( Sum L1)))) + ( len L1)) by A9, A17, Th9;

        then (( min (L,i)) -' 1) = ((( min (L2,(i -' ( Sum L1)))) -' 1) + ( len L1)) by A20, NAT_D: 38;

        then (( min (L,i)) -' 1) >= (( len L1) + 0 ) by XREAL_1: 7;

        then

         A21: ( Sum (W | (( min (L,i)) -' 1))) >= ( Sum ((W1 ^ W2) | ( len W1))) by A8, A2, A4, POLYNOM3: 18;

        ((W1 ^ W2) | ( len W1)) = W1 by FINSEQ_5: 23;

        then ( Sum (W | (( min (L,i)) -' 1))) >= j by A15, A21, XXREAL_0: 2;

        hence thesis by A5, Def5;

      end;

    end;

    theorem :: MATRIXJ1:30

    

     Th30: for i, j, k st i in ( dom F) & [j, k] in ( Indices (F . i)) holds [(j + ( Sum (( Len F) | (i -' 1)))), (k + ( Sum (( Width F) | (i -' 1))))] in ( Indices ( block_diagonal (F,d))) & ((F . i) * (j,k)) = (( block_diagonal (F,d)) * ((j + ( Sum (( Len F) | (i -' 1)))),(k + ( Sum (( Width F) | (i -' 1))))))

    proof

      let i, j, k such that

       A1: i in ( dom F) and

       A2: [j, k] in ( Indices (F . i));

      set Fi = (F . i);

      

       A3: k in ( Seg ( width Fi)) by A2, ZFMISC_1: 87;

      set L = ( Len F);

      ( len F) = ( len L) by CARD_1:def 7;

      then

       A4: (L | ( len F)) = L by FINSEQ_1: 58;

      

       A5: i <= ( len F) by A1, FINSEQ_3: 25;

      then ( Sum (L | i)) <= ( Sum (L | ( len F))) by POLYNOM3: 18;

      then

       A6: ( Seg ( Sum (L | i))) c= ( Seg ( Sum L)) by A4, FINSEQ_1: 5;

      

       A7: ( dom F) = ( dom L) by Def3;

      then

       A8: (L . i) = (L /. i) by A1, PARTFUN1:def 6;

      set W = ( Width F);

      

       A9: ( dom F) = ( dom W) by Def4;

      then

       A10: (W . i) = (W /. i) by A1, PARTFUN1:def 6;

      set kS = (k + ( Sum (W | (i -' 1))));

      (W . i) = ( width Fi) by A1, A9, Def4;

      then

       A11: kS in ( Seg ( Sum (W | i))) by A1, A9, A3, A10, Th10;

      then

       A12: kS <= ( Sum (W | i)) by FINSEQ_1: 1;

      ( len F) = ( len W) by CARD_1:def 7;

      then

       A13: (W | ( len F)) = W by FINSEQ_1: 58;

      set B = ( block_diagonal (F,d));

      

       A14: ( len B) = ( Sum L) by Def5;

      

       A15: ( width B) = ( Sum W) by Def5;

      set jS = (j + ( Sum (L | (i -' 1))));

      j in ( dom Fi) by A2, ZFMISC_1: 87;

      then

       A16: j in ( Seg ( len Fi)) by FINSEQ_1:def 3;

      ( Sum (W | i)) <= ( Sum (W | ( len F))) by A5, POLYNOM3: 18;

      then

       A17: ( Seg ( Sum (W | i))) c= ( Seg ( Sum W)) by A13, FINSEQ_1: 5;

      (( Sum (L | (i -' 1))) + 0 ) <= jS by XREAL_1: 6;

      then

       A18: (jS -' ( Sum (L | (i -' 1)))) = (jS - ( Sum (L | (i -' 1)))) by XREAL_1: 233;

      

       A19: (L . i) = ( len Fi) by A1, A7, Def3;

      then

       A20: ( min (L,jS)) = i by A1, A7, A16, A8, Th10;

      jS in ( Seg ( Sum (L | i))) by A1, A7, A16, A8, A19, Th10;

      then [jS, kS] in [:( Seg ( len B)), ( Seg ( width B)):] by A14, A15, A11, A6, A17, ZFMISC_1: 87;

      hence

       A21: [jS, kS] in ( Indices B) by FINSEQ_1:def 3;

       0 < k by A3;

      then

       A22: (( Sum (W | (i -' 1))) + 0 ) < kS by XREAL_1: 6;

      then (kS -' ( Sum (W | (i -' 1)))) = (kS - ( Sum (W | (i -' 1)))) by XREAL_1: 233;

      hence thesis by A20, A21, A22, A12, A18, Def5;

    end;

    theorem :: MATRIXJ1:31

    

     Th31: i in ( dom F) implies (F . i) = ( Segm (( block_diagonal (F,d)),(( Seg ( Sum (( Len F) | i))) \ ( Seg ( Sum (( Len F) | (i -' 1))))),(( Seg ( Sum (( Width F) | i))) \ ( Seg ( Sum (( Width F) | (i -' 1)))))))

    proof

      assume

       A1: i in ( dom F);

      set L = ( Len F);

      set Fi = (F . i);

      

       A2: ( dom F) = ( dom L) by Def3;

      then

       A3: ( len Fi) = (L . i) by A1, Def3;

      set SL = ( Sum (L | i));

      set SL1 = ( Sum (L | (i -' 1)));

      

       A4: (SL1 + (L . i)) = SL by A1, A2, Lm2;

      reconsider FI = Fi as Matrix of ( len Fi), ( width Fi), D by MATRIX_0: 51;

      set B = ( block_diagonal (F,d));

      set W = ( Width F);

      set SW1 = ( Sum (W | (i -' 1)));

      set SW = ( Sum (W | i));

      

       A5: ( dom F) = ( dom W) by Def4;

      then

       A6: (SW1 + (W . i)) = SW by A1, Lm2;

      SL1 <= SL by NAT_D: 35, POLYNOM3: 18;

      then ( Seg SL1) c= ( Seg SL) by FINSEQ_1: 5;

      

      then

       A7: ( card (( Seg SL) \ ( Seg SL1))) = (( card ( Seg SL)) - ( card ( Seg SL1))) by CARD_2: 44

      .= (SL - ( card ( Seg SL1))) by FINSEQ_1: 57

      .= ((SL1 + (L . i)) - SL1) by A4, FINSEQ_1: 57

      .= ( len Fi) by A1, A2, Def3;

      SW1 <= SW by NAT_D: 35, POLYNOM3: 18;

      then ( Seg SW1) c= ( Seg SW) by FINSEQ_1: 5;

      

      then

       A8: ( card (( Seg SW) \ ( Seg SW1))) = (( card ( Seg SW)) - ( card ( Seg SW1))) by CARD_2: 44

      .= (SW - ( card ( Seg SW1))) by FINSEQ_1: 57

      .= ((SW1 + (W . i)) - SW1) by A6, FINSEQ_1: 57

      .= ( width Fi) by A1, A5, Def4;

      

       A9: ( width Fi) = (W . i) by A1, A5, Def4;

      now

        

         A10: ( Indices FI) = ( Indices ( Segm (B,(( Seg SL) \ ( Seg SL1)),(( Seg SW) \ ( Seg SW1))))) by A7, A8, MATRIX_0: 26;

        

         A11: ( dom FI) = ( Seg (L . i)) by A3, FINSEQ_1:def 3;

        let j, k such that

         A12: [j, k] in ( Indices FI);

        k in ( Seg (W . i)) by A9, A12, ZFMISC_1: 87;

        then

         A13: (( Sgm (( Seg SW) \ ( Seg SW1))) . k) = (k + SW1) by A6, MATRIX15: 8;

        j in ( dom FI) by A12, ZFMISC_1: 87;

        then (( Sgm (( Seg SL) \ ( Seg SL1))) . j) = (j + SL1) by A4, A11, MATRIX15: 8;

        

        hence (( Segm (B,(( Seg SL) \ ( Seg SL1)),(( Seg SW) \ ( Seg SW1)))) * (j,k)) = (B * ((j + SL1),(k + SW1))) by A12, A10, A13, MATRIX13:def 1

        .= (Fi * (j,k)) by A1, A12, Th30;

      end;

      hence thesis by A7, A8, MATRIX_0: 27;

    end;

    theorem :: MATRIXJ1:32

    

     Th32: M = ( Segm (( block_diagonal (( <*M*> ^ F),d)),( Seg ( len M)),( Seg ( width M))))

    proof

      set MF = ( <*M*> ^ F);

      set L = ( Len MF);

      set W = ( Width MF);

      

       A1: ( Seg ( Sum (L | 0 ))) = {} by RVSUM_1: 72;

      

       A2: ( Seg ( Sum (W | 0 ))) = {} by RVSUM_1: 72;

      

       A3: ( Len <*M*>) = <*( len M)*> by Th15;

      

       A4: ( len <*( len M)*>) = 1 by FINSEQ_1: 39;

      L = (( Len <*M*>) ^ ( Len F)) by Th14;

      then (L | 1) = <*( len M)*> by A3, A4, FINSEQ_5: 23;

      then

       A5: ( Sum (L | 1)) = ( len M) by RVSUM_1: 73;

      

       A6: ( len <*( width M)*>) = 1 by FINSEQ_1: 39;

      

       A7: ( Width <*M*>) = <*( width M)*> by Th19;

      

       A8: (MF . 1) = M by FINSEQ_1: 41;

      1 in ( Seg 1);

      then

       A9: 1 in ( dom <*M*>) by FINSEQ_1: 38;

      

       A10: ( dom <*M*>) c= ( dom MF) by FINSEQ_1: 26;

      W = (( Width <*M*>) ^ ( Width F)) by Th18;

      then

       A11: (W | 1) = <*( width M)*> by A7, A6, FINSEQ_5: 23;

      (1 -' 1) = 0 by XREAL_1: 232;

      

      hence M = ( Segm (( block_diagonal (MF,d)),(( Seg ( Sum (L | 1))) \ {} ),(( Seg ( Sum (W | 1))) \ {} ))) by A1, A2, A9, A10, A8, Th31

      .= ( Segm (( block_diagonal (MF,d)),( Seg ( len M)),( Seg ( width M)))) by A11, A5, RVSUM_1: 73;

    end;

    theorem :: MATRIXJ1:33

    

     Th33: M = ( Segm (( block_diagonal ((F ^ <*M*>),d)),(( Seg (( len M) + ( Sum ( Len F)))) \ ( Seg ( Sum ( Len F)))),(( Seg (( width M) + ( Sum ( Width F)))) \ ( Seg ( Sum ( Width F))))))

    proof

      set FM = (F ^ <*M*>);

      set L = ( Len FM);

      set W = ( Width FM);

      set 1F = (1 + ( len F));

      

       A1: ( len FM) = 1F by FINSEQ_2: 16;

      ( len L) = ( len FM) by CARD_1:def 7;

      then

       A2: (L | 1F) = L by A1, FINSEQ_1: 58;

      ( len W) = ( len FM) by CARD_1:def 7;

      then

       A3: (W | 1F) = W by A1, FINSEQ_1: 58;

      1F in ( Seg (( len F) + 1)) by FINSEQ_1: 4;

      then

       A4: 1F in ( dom FM) by A1, FINSEQ_1:def 3;

      

       A5: W = (( Width F) ^ ( Width <*M*>)) by Th18;

      ( len ( Width F)) = ( len F) by CARD_1:def 7;

      then

       A6: (W | ( len F)) = ( Width F) by A5, FINSEQ_5: 23;

      ( Width <*M*>) = <*( width M)*> by Th19;

      then

       A7: ( Sum W) = (( Sum ( Width F)) + ( width M)) by A5, RVSUM_1: 74;

      

       A8: L = (( Len F) ^ ( Len <*M*>)) by Th14;

      ( len ( Len F)) = ( len F) by CARD_1:def 7;

      then

       A9: (L | ( len F)) = ( Len F) by A8, FINSEQ_5: 23;

      ( Len <*M*>) = <*( len M)*> by Th15;

      then

       A10: ( Sum L) = (( Sum ( Len F)) + ( len M)) by A8, RVSUM_1: 74;

      

       A11: (FM . 1F) = M by FINSEQ_1: 42;

      (1F -' 1) = (1F - 1) by NAT_D: 37;

      hence thesis by A9, A6, A10, A7, A4, A11, A3, A2, Th31;

    end;

    theorem :: MATRIXJ1:34

    

     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;

    theorem :: MATRIXJ1:35

    

     Th35: ( block_diagonal ((F1 ^ F2),d)) = ( block_diagonal (( <*( block_diagonal (F1,d))*> ^ F2),d))

    proof

      set F12 = (F1 ^ F2);

      set D1 = ( block_diagonal (F1,d));

      set D2 = ( block_diagonal (F2,d));

      set D12 = ( block_diagonal (F12,d));

      set DF = ( <*D1*> ^ F2);

      set DF2 = ( block_diagonal (DF,d));

      set LF1 = ( Len F1);

      set WF1 = ( Width F1);

      set LF2 = ( Len F2);

      set WF2 = ( Width F2);

      set LF = ( Len F12);

      set WF = ( Width F12);

      

       A1: LF = (LF1 ^ LF2) by Th14;

      ( len D12) = ( Sum LF) by Def5;

      then

       A2: ( len D12) = (( Sum LF1) + ( Sum LF2)) by A1, RVSUM_1: 75;

      

       A3: ( Len <*D1*>) = <*( len D1)*> by Th15;

      then

       A4: ( Sum ( Len <*D1*>)) = ( len D1) by RVSUM_1: 73;

      

       A5: ( block_diagonal ( <*D1*>,d)) = D1 by Th34;

      

       A6: ( Sum WF1) = ( width D1) by Def5;

      

       A7: ( Len DF) = (( Len <*D1*>) ^ LF2) by Th14;

      

       A8: WF = (WF1 ^ WF2) by Th18;

      ( len DF2) = ( Sum ( Len DF)) by Def5;

      then

       A9: ( len DF2) = (( len D1) + ( Sum LF2)) by A7, A3, RVSUM_1: 76;

      

       A10: ( Width <*D1*>) = <*( width D1)*> by Th19;

      then

       A11: ( Sum ( Width <*D1*>)) = ( width D1) by RVSUM_1: 73;

      

       A12: ( Sum LF1) = ( len D1) by Def5;

      

       A13: ( width D1) = ( Sum WF1) by Def5;

      

       A14: ( width D12) = ( Sum WF) by Def5;

      then

       A15: ( width D12) = (( Sum WF1) + ( Sum WF2)) by A8, RVSUM_1: 75;

      

       A16: ( Width DF) = (( Width <*D1*>) ^ WF2) by Th18;

      

       A17: ( len D1) = ( Sum LF1) by Def5;

      ( width DF2) = ( Sum ( Width DF)) by Def5;

      then

       A18: ( width DF2) = (( width D1) + ( Sum WF2)) by A16, A10, RVSUM_1: 76;

      

       A19: ( Indices D12) = [:( Seg ( len D12)), ( Seg ( width D12)):] by FINSEQ_1:def 3

      .= ( Indices DF2) by A2, A15, A17, A13, A9, A18, FINSEQ_1:def 3;

      now

        

         A20: ( dom D12) = ( Seg ( len D12)) by FINSEQ_1:def 3;

        let i, j such that

         A21: [i, j] in ( Indices D12);

        i in ( dom D12) by A21, ZFMISC_1: 87;

        then

         A22: 1 <= i by A20, FINSEQ_1: 1;

        j in ( Seg ( width D12)) by A21, ZFMISC_1: 87;

        then

         A23: 1 <= j by FINSEQ_1: 1;

        now

          per cases ;

            suppose

             A24: i <= ( Sum LF1) & j <= ( Sum WF1);

            then

             A25: i in ( dom D1) by A12, A22, FINSEQ_3: 25;

            j in ( Seg ( width D1)) by A6, A23, A24;

            then

             A26: [i, j] in ( Indices D1) by A25, ZFMISC_1: 87;

            

            hence (D12 * (i,j)) = (D1 * (i,j)) by Th26

            .= (DF2 * (i,j)) by A5, A26, Th26;

          end;

            suppose

             A27: i > ( Sum LF1) & j <= ( Sum WF1) or i <= ( Sum LF1) & j > ( Sum WF1);

            

            hence (D12 * (i,j)) = d by A21, Th29

            .= (DF2 * (i,j)) by A17, A13, A4, A11, A19, A21, A27, Th29;

          end;

            suppose

             A28: i > ( Sum LF1) & j > ( Sum WF1);

            then

            reconsider ii = (i - ( Sum LF1)), jj = (j - ( Sum WF1)) as Element of NAT by NAT_1: 21;

            

             A29: jj <> 0 by A28;

            

             A30: i = (ii + ( Sum LF1));

            

             A31: j = (jj + ( Sum WF1));

            ii <> 0 by A28;

            then

             A32: [ii, jj] in ( Indices D2) by A21, A30, A31, A29, Th27;

            

            hence (D12 * (i,j)) = (D2 * (ii,jj)) by A30, A31, Th28

            .= (DF2 * (i,j)) by A17, A13, A4, A11, A30, A31, A32, Th28;

          end;

        end;

        hence (D12 * (i,j)) = (DF2 * (i,j));

      end;

      hence thesis by A14, A8, A2, A17, A13, A9, A18, MATRIX_0: 21, RVSUM_1: 75;

    end;

    theorem :: MATRIXJ1:36

    

     Th36: ( block_diagonal ((F1 ^ F2),d)) = ( block_diagonal ((F1 ^ <*( block_diagonal (F2,d))*>),d))

    proof

      set F12 = (F1 ^ F2);

      set D1 = ( block_diagonal (F1,d));

      set D2 = ( block_diagonal (F2,d));

      set D12 = ( block_diagonal (F12,d));

      set FD = (F1 ^ <*D2*>);

      set FD2 = ( block_diagonal (FD,d));

      set LF1 = ( Len F1);

      set WF1 = ( Width F1);

      set LF2 = ( Len F2);

      set WF2 = ( Width F2);

      set LF = ( Len F12);

      set WF = ( Width F12);

      

       A1: LF = (LF1 ^ LF2) by Th14;

      ( len D12) = ( Sum LF) by Def5;

      then

       A2: ( len D12) = (( Sum LF1) + ( Sum LF2)) by A1, RVSUM_1: 75;

      

       A3: ( Sum ( Width <*D2*>)) = ( width D2) by Lm5;

      

       A4: ( Len FD) = (LF1 ^ ( Len <*D2*>)) by Th14;

      ( len FD2) = ( Sum ( Len FD)) by Def5;

      then

       A5: ( len FD2) = (( Sum ( Len <*D2*>)) + ( Sum LF1)) by A4, RVSUM_1: 75;

      

       A6: ( Sum LF1) = ( len D1) by Def5;

      

       A7: WF = (WF1 ^ WF2) by Th18;

      

       A8: ( Width FD) = (WF1 ^ ( Width <*D2*>)) by Th18;

      ( width FD2) = ( Sum ( Width FD)) by Def5;

      then

       A9: ( width FD2) = (( Sum ( Width <*D2*>)) + ( Sum WF1)) by A8, RVSUM_1: 75;

      

       A10: ( Sum WF1) = ( width D1) by Def5;

      

       A11: ( len D2) = ( Sum LF2) by Def5;

      

       A12: ( width D12) = ( Sum WF) by Def5;

      then

       A13: ( width D12) = (( Sum WF1) + ( Sum WF2)) by A7, RVSUM_1: 75;

      

       A14: ( Sum ( Len <*D2*>)) = ( len D2) by Lm4;

      

       A15: ( block_diagonal ( <*D2*>,d)) = D2 by Th34;

      

       A16: ( width D2) = ( Sum WF2) by Def5;

      

       A17: ( Indices D12) = [:( Seg ( len D12)), ( Seg ( width D12)):] by FINSEQ_1:def 3

      .= ( Indices FD2) by A2, A13, A11, A16, A5, A9, A14, A3, FINSEQ_1:def 3;

      now

        

         A18: ( dom D12) = ( Seg ( len D12)) by FINSEQ_1:def 3;

        let i, j such that

         A19: [i, j] in ( Indices D12);

        i in ( dom D12) by A19, ZFMISC_1: 87;

        then

         A20: 1 <= i by A18, FINSEQ_1: 1;

        j in ( Seg ( width D12)) by A19, ZFMISC_1: 87;

        then

         A21: 1 <= j by FINSEQ_1: 1;

        now

          per cases ;

            suppose

             A22: i <= ( Sum LF1) & j <= ( Sum WF1);

            then

             A23: i in ( dom D1) by A6, A20, FINSEQ_3: 25;

            j in ( Seg ( width D1)) by A10, A21, A22;

            then

             A24: [i, j] in ( Indices D1) by A23, ZFMISC_1: 87;

            

            hence (D12 * (i,j)) = (D1 * (i,j)) by Th26

            .= (FD2 * (i,j)) by A24, Th26;

          end;

            suppose

             A25: i > ( Sum LF1) & j <= ( Sum WF1) or i <= ( Sum LF1) & j > ( Sum WF1);

            

            hence (D12 * (i,j)) = d by A19, Th29

            .= (FD2 * (i,j)) by A17, A19, A25, Th29;

          end;

            suppose

             A26: i > ( Sum LF1) & j > ( Sum WF1);

            then

            reconsider ii = (i - ( Sum LF1)), jj = (j - ( Sum WF1)) as Element of NAT by NAT_1: 21;

            

             A27: jj <> 0 by A26;

            

             A28: i = (ii + ( Sum LF1));

            

             A29: j = (jj + ( Sum WF1));

            ii <> 0 by A26;

            then

             A30: [ii, jj] in ( Indices D2) by A19, A28, A29, A27, Th27;

            

            hence (D12 * (i,j)) = (D2 * (ii,jj)) by A28, A29, Th28

            .= (FD2 * (i,j)) by A15, A28, A29, A30, Th28;

          end;

        end;

        hence (D12 * (i,j)) = (FD2 * (i,j));

      end;

      hence thesis by A12, A7, A2, A11, A16, A5, A9, A14, A3, MATRIX_0: 21, RVSUM_1: 75;

    end;

    theorem :: MATRIXJ1:37

    i in ( Seg ( Sum ( Len F))) & m = ( min (( Len F),i)) implies ( Line (( block_diagonal (F,d)),i)) = (((( Sum ( Width (F | (m -' 1)))) |-> d) ^ ( Line ((F . m),(i -' ( Sum ( Len (F | (m -' 1)))))))) ^ ((( Sum ( Width F)) -' ( Sum ( Width (F | m)))) |-> d))

    proof

      assume that

       A1: i in ( Seg ( Sum ( Len F))) and

       A2: m = ( min (( Len F),i));

      set L = ( Len F);

      

       A3: ((L | m) . m) = (L . m) by FINSEQ_3: 112;

      set BF9m = ( block_diagonal ((F /^ m),d));

      set BFm = ( block_diagonal ((F | m),d));

      

       A4: ( len BFm) = ( Sum ( Len (F | m))) by Def5

      .= ( Sum (L | m)) by Th17;

      F = ((F | m) ^ (F /^ m)) by RFINSEQ: 8;

      

      then

       A5: ( block_diagonal (F,d)) = ( block_diagonal (((F | m) ^ <*BF9m*>),d)) by Th36

      .= ( block_diagonal ( <*BFm, BF9m*>,d)) by Th35;

      

      then ( Sum ( Width F)) = ( width ( block_diagonal ( <*BFm, BF9m*>,d))) by Def5

      .= ( Sum ( Width <*BFm, BF9m*>)) by Def5

      .= (( width BFm) + ( width BF9m)) by Th20

      .= (( Sum ( Width (F | m))) + ( width BF9m)) by Def5;

      

      then

       A6: (( Sum ( Width F)) -' ( Sum ( Width (F | m)))) = ((( Sum ( Width (F | m))) + ( width BF9m)) - ( Sum ( Width (F | m)))) by NAT_1: 11, XREAL_1: 233

      .= ( width BF9m);

      ( Sum (L | (m -' 1))) < i by A1, A2, Th7;

      then

       A7: (i - ( Sum (L | (m -' 1)))) = (i -' ( Sum (L | (m -' 1)))) by XREAL_1: 233;

      

       A8: m in ( dom L) by A1, A2, Def1;

      then 1 <= m by FINSEQ_3: 25;

      then (m -' 1) = (m - 1) by XREAL_1: 233;

      then

       A9: m = ((m -' 1) + 1);

      then (m -' 1) <= m by NAT_1: 11;

      then

       A10: ( Seg (m -' 1)) c= ( Seg m) by FINSEQ_1: 5;

      then

       A11: ((F | m) | (m -' 1)) = (F | (m -' 1)) by RELAT_1: 74;

      m <= ( len L) by A8, FINSEQ_3: 25;

      then ( len (L | m)) = m by FINSEQ_1: 59;

      then

       A12: (L | m) = (((L | m) | (m -' 1)) ^ <*((L | m) . m)*>) by A9, FINSEQ_3: 55;

      ((L | m) | (m -' 1)) = (L | (m -' 1)) by A10, RELAT_1: 74;

      

      then ( Sum (L | m)) = (( Sum (L | (m -' 1))) + (L . m)) by A12, A3, RVSUM_1: 74

      .= (( Sum (L | (m -' 1))) + ( len (F . m))) by A8, Def3;

      then (( len (F . m)) + ( Sum (L | (m -' 1)))) >= ((i -' ( Sum (L | (m -' 1)))) + ( Sum (L | (m -' 1)))) by A1, A2, A7, Def1;

      then

       A13: ( len (F . m)) >= (i -' ( Sum (L | (m -' 1)))) by XREAL_1: 6;

      (i - ( Sum (L | (m -' 1)))) <> 0 by A1, A2, Th7;

      then (i -' ( Sum (L | (m -' 1)))) >= 1 by A7, NAT_1: 14;

      then

       A14: (i -' ( Sum (L | (m -' 1)))) in ( dom (F . m)) by A13, FINSEQ_3: 25;

      set BFm1 = ( block_diagonal ((F | (m -' 1)),d));

      

       A15: ((F | m) . m) = (F . m) by FINSEQ_3: 112;

      

       A16: ( width BFm1) = ( Sum ( Width (F | (m -' 1)))) by Def5

      .= ( Sum (( Width F) | (m -' 1))) by Th21;

      

       A17: 1 <= i by A1, FINSEQ_1: 1;

      i <= ( Sum (L | m)) by A1, A2, Def1;

      then i in ( dom BFm) by A17, A4, FINSEQ_3: 25;

      then

       A18: ( Line (( block_diagonal (F,d)),i)) = (( Line (BFm,i)) ^ (( width BF9m) |-> d)) by A5, Th23;

      ( dom L) = ( dom F) by Def3;

      then m <= ( len F) by A8, FINSEQ_3: 25;

      then ( len (F | m)) = m by FINSEQ_1: 59;

      then (F | m) = (((F | m) | (m -' 1)) ^ <*((F | m) . m)*>) by A9, FINSEQ_3: 55;

      then

       A19: BFm = ( block_diagonal ( <*BFm1, (F . m)*>,d)) by A15, A11, Th35;

      ( len BFm1) = ( Sum ( Len (F | (m -' 1)))) by Def5

      .= ( Sum (L | (m -' 1))) by Th17;

      

      then ((( Sum (( Width F) | (m -' 1))) |-> d) ^ ( Line ((F . m),(i -' ( Sum (L | (m -' 1))))))) = ( Line (BFm,(( Sum (L | (m -' 1))) + (i -' ( Sum (L | (m -' 1))))))) by A14, A16, A19, Th23

      .= ( Line (BFm,i)) by A7;

      then ( Line (BFm,i)) = ((( Sum ( Width (F | (m -' 1)))) |-> d) ^ ( Line ((F . m),(i -' ( Sum (L | (m -' 1))))))) by Th21;

      hence thesis by A6, A18, Th17;

    end;

    theorem :: MATRIXJ1:38

    i in ( Seg ( Sum ( Width F))) & m = ( min (( Width F),i)) implies ( Col (( block_diagonal (F,d)),i)) = (((( Sum ( Len (F | (m -' 1)))) |-> d) ^ ( Col ((F . m),(i -' ( Sum ( Width (F | (m -' 1)))))))) ^ ((( Sum ( Len F)) -' ( Sum ( Len (F | m)))) |-> d))

    proof

      assume that

       A1: i in ( Seg ( Sum ( Width F))) and

       A2: m = ( min (( Width F),i));

      set W = ( Width F);

      

       A3: ((W | m) . m) = (W . m) by FINSEQ_3: 112;

      set BF9m = ( block_diagonal ((F /^ m),d));

      set BFm = ( block_diagonal ((F | m),d));

      set L = ( Len F);

      

       A4: ( width BFm) = ( Sum ( Width (F | m))) by Def5

      .= ( Sum (W | m)) by Th21;

      F = ((F | m) ^ (F /^ m)) by RFINSEQ: 8;

      

      then

       A5: ( block_diagonal (F,d)) = ( block_diagonal (((F | m) ^ <*BF9m*>),d)) by Th36

      .= ( block_diagonal ( <*BFm, BF9m*>,d)) by Th35;

      

      then ( Sum L) = ( len ( block_diagonal ( <*BFm, BF9m*>,d))) by Def5

      .= ( Sum ( Len <*BFm, BF9m*>)) by Def5

      .= (( len BFm) + ( len BF9m)) by Th16

      .= (( Sum ( Len (F | m))) + ( len BF9m)) by Def5;

      

      then

       A6: (( Sum ( Len F)) -' ( Sum ( Len (F | m)))) = ((( Sum ( Len (F | m))) + ( len BF9m)) - ( Sum ( Len (F | m)))) by NAT_1: 11, XREAL_1: 233

      .= ( len BF9m);

      ( Sum (W | (m -' 1))) < i by A1, A2, Th7;

      then

       A7: (i - ( Sum (W | (m -' 1)))) = (i -' ( Sum (W | (m -' 1)))) by XREAL_1: 233;

      

       A8: m in ( dom W) by A1, A2, Def1;

      then 1 <= m by FINSEQ_3: 25;

      then (m -' 1) = (m - 1) by XREAL_1: 233;

      then

       A9: m = ((m -' 1) + 1);

      then (m -' 1) <= m by NAT_1: 11;

      then

       A10: ( Seg (m -' 1)) c= ( Seg m) by FINSEQ_1: 5;

      then

       A11: ((F | m) | (m -' 1)) = (F | (m -' 1)) by RELAT_1: 74;

      m <= ( len W) by A8, FINSEQ_3: 25;

      then ( len (W | m)) = m by FINSEQ_1: 59;

      then

       A12: (W | m) = (((W | m) | (m -' 1)) ^ <*((W | m) . m)*>) by A9, FINSEQ_3: 55;

      ((W | m) | (m -' 1)) = (W | (m -' 1)) by A10, RELAT_1: 74;

      

      then ( Sum (W | m)) = (( Sum (W | (m -' 1))) + (W . m)) by A12, A3, RVSUM_1: 74

      .= (( Sum (W | (m -' 1))) + ( width (F . m))) by A8, Def4;

      then (( width (F . m)) + ( Sum (W | (m -' 1)))) >= ((i -' ( Sum (W | (m -' 1)))) + ( Sum (W | (m -' 1)))) by A1, A2, A7, Def1;

      then

       A13: ( width (F . m)) >= (i -' ( Sum (W | (m -' 1)))) by XREAL_1: 6;

      (i - ( Sum (W | (m -' 1)))) <> 0 by A1, A2, Th7;

      then (i -' ( Sum (W | (m -' 1)))) >= 1 by A7, NAT_1: 14;

      then

       A14: (i -' ( Sum (W | (m -' 1)))) in ( Seg ( width (F . m))) by A13;

      set BFm1 = ( block_diagonal ((F | (m -' 1)),d));

      

       A15: ((F | m) . m) = (F . m) by FINSEQ_3: 112;

      

       A16: ( width BFm1) = ( Sum ( Width (F | (m -' 1)))) by Def5

      .= ( Sum (W | (m -' 1))) by Th21;

      

       A17: 1 <= i by A1, FINSEQ_1: 1;

      i <= ( Sum (W | m)) by A1, A2, Def1;

      then i in ( Seg ( width BFm)) by A17, A4;

      then

       A18: ( Col (( block_diagonal (F,d)),i)) = (( Col (BFm,i)) ^ (( len BF9m) |-> d)) by A5, Th24;

      ( dom W) = ( dom F) by Def4;

      then m <= ( len F) by A8, FINSEQ_3: 25;

      then ( len (F | m)) = m by FINSEQ_1: 59;

      then (F | m) = (((F | m) | (m -' 1)) ^ <*((F | m) . m)*>) by A9, FINSEQ_3: 55;

      then

       A19: BFm = ( block_diagonal ( <*BFm1, (F . m)*>,d)) by A15, A11, Th35;

      ( len BFm1) = ( Sum ( Len (F | (m -' 1)))) by Def5

      .= ( Sum (L | (m -' 1))) by Th17;

      

      then ((( Sum (L | (m -' 1))) |-> d) ^ ( Col ((F . m),(i -' ( Sum (W | (m -' 1))))))) = ( Col (BFm,(( Sum (W | (m -' 1))) + (i -' ( Sum (W | (m -' 1))))))) by A14, A16, A19, Th24

      .= ( Col (BFm,i)) by A7;

      then ( Col (BFm,i)) = ((( Sum ( Len (F | (m -' 1)))) |-> d) ^ ( Col ((F . m),(i -' ( Sum (W | (m -' 1))))))) by Th17;

      hence thesis by A6, A18, Th21;

    end;

    theorem :: MATRIXJ1:39

    for M1,M2,N1,N2 be Matrix of D st ( len M1) = ( len N1) & ( width M1) = ( width N1) & ( len M2) = ( len N2) & ( width M2) = ( width N2) & ( block_diagonal ( <*M1, M2*>,d1)) = ( block_diagonal ( <*N1, N2*>,d2)) holds M1 = N1 & M2 = N2

    proof

      let M1,M2,N1,N2 be Matrix of D such that

       A1: ( len M1) = ( len N1) and

       A2: ( width M1) = ( width N1) and

       A3: ( len M2) = ( len N2) and

       A4: ( width M2) = ( width N2) and

       A5: ( block_diagonal ( <*M1, M2*>,d1)) = ( block_diagonal ( <*N1, N2*>,d2));

      set G1 = <*N1*>;

      set F1 = <*M1*>;

      reconsider W1 = ( width M1) as Element of NAT by ORDINAL1:def 12;

      

       A6: ( Sum ( Width F1)) = ( Sum <*W1*>) by Th19

      .= ( Sum ( Width G1)) by A2, Th19;

      set G2 = <*N2*>;

      set F2 = <*M2*>;

      

      thus M1 = ( Segm (( block_diagonal ((F1 ^ F2),d1)),( Seg ( len M1)),( Seg ( width M1)))) by Th32

      .= ( Segm (( block_diagonal ((G1 ^ G2),d2)),( Seg ( len N1)),( Seg ( width N1)))) by A1, A2, A5

      .= N1 by Th32;

      

       A7: ( Sum ( Len F1)) = ( Sum <*( len M1)*>) by Th15

      .= ( Sum ( Len G1)) by A1, Th15;

      

      thus M2 = ( Segm (( block_diagonal ((F1 ^ F2),d1)),(( Seg (( len M2) + ( Sum ( Len F1)))) \ ( Seg ( Sum ( Len F1)))),(( Seg (( width M2) + ( Sum ( Width F1)))) \ ( Seg ( Sum ( Width F1)))))) by Th33

      .= N2 by A3, A4, A5, A7, A6, Th33;

    end;

    theorem :: MATRIXJ1:40

    

     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;

    theorem :: MATRIXJ1:41

    

     Th41: i in ( dom A) & ( width A) = ( width ( DelLine (A,i))) implies ( DelLine (( block_diagonal (( <*A*> ^ G),a)),i)) = ( block_diagonal (( <*( DelLine (A,i))*> ^ G),a))

    proof

      assume that

       A1: i in ( dom A) and

       A2: ( width A) = ( width ( DelLine (A,i)));

      

       A3: i in ( Seg ( len A)) by A1, FINSEQ_1:def 3;

      set da = ( DelLine (A,i));

      consider m such that

       A4: ( len A) = (m + 1) and

       A5: ( len da) = m by A1, FINSEQ_3: 104;

      set bG = ( block_diagonal (G,a));

      set DA = <*da*>;

      set AA = <*A*>;

      set BG = <*bG*>;

      set bAG = ( block_diagonal ( <*A, bG*>,a));

      set bdAG = ( block_diagonal ( <*da, bG*>,a));

      

       A6: ( Seg ( len bAG)) = ( dom bAG) by FINSEQ_1:def 3;

      

       A7: ( len bAG) = ( Sum ( Len (AA ^ BG))) by Def5;

      then

       A8: ( len bAG) = (( len A) + ( len bG)) by Th16;

      then ( len bAG) >= ( len A) by NAT_1: 11;

      then

       A9: ( Seg ( len A)) c= ( Seg ( len bAG)) by FINSEQ_1: 5;

      

       A10: ( len bdAG) = ( Sum ( Len (DA ^ BG))) by Def5;

      then

       A11: ( len bdAG) = (m + ( len bG)) by A5, Th16;

      

       A12: ( len bAG) = ((m + ( len bG)) + 1) by A4, A8;

      

       A13: ( len bdAG) = (( len da) + ( len bG)) by A10, Th16;

       A14:

      now

        (m + ( len bG)) <= ( len bAG) by A12, NAT_1: 11;

        then

         A15: ( Seg (m + ( len bG))) c= ( Seg ( len bAG)) by FINSEQ_1: 5;

        reconsider da9 = da as Matrix of ( len da), ( width da), K by MATRIX_0: 51;

        reconsider A9 = A as Matrix of ( len A), ( width A), K by MATRIX_0: 51;

        let j such that

         A16: 1 <= j and

         A17: j <= (m + ( len bG));

        

         A18: j in ( Seg (m + ( len bG))) by A16, A17;

        

         A19: 1 <= (1 + j) by NAT_1: 11;

        (j + 1) <= ( len bAG) by A12, A17, XREAL_1: 7;

        then

         A20: (j + 1) in ( Seg ( len bAG)) by A19;

        now

          per cases ;

            suppose

             A21: j < i;

            i <= ( len A) by A3, FINSEQ_1: 1;

            then

             A22: j < ( len A) by A21, XXREAL_0: 2;

            then

             A23: j <= m by A4, NAT_1: 13;

            then

             A24: j in ( dom da) by A5, A16, FINSEQ_3: 25;

            

             A25: j in ( dom A) by A16, A22, FINSEQ_3: 25;

            

             A26: j in ( Seg m) by A16, A23;

            j in ( Seg ( len A)) by A16, A22;

            

            then

             A27: ( Line (A9,j)) = (A . j) by MATRIX_0: 52

            .= (da9 . j) by A21, FINSEQ_3: 110

            .= ( Line (da,j)) by A5, A26, MATRIX_0: 52;

            

            thus (( Del (bAG,i)) . j) = (bAG . j) by A21, FINSEQ_3: 110

            .= ( Line (bAG,j)) by A7, A18, A15, MATRIX_0: 52

            .= (( Line (da,j)) ^ (( width bG) |-> a)) by A25, A27, Th23

            .= ( Line (bdAG,j)) by A24, Th23

            .= (bdAG . j) by A5, A10, A13, A18, MATRIX_0: 52;

          end;

            suppose

             A28: j >= i;

            

            then

             A29: (( Del (bAG,i)) . j) = (bAG . (j + 1)) by A12, A9, A3, A6, A17, FINSEQ_3: 111

            .= ( Line (bAG,(j + 1))) by A7, A20, MATRIX_0: 52;

            now

              per cases ;

                suppose

                 A30: (j + 1) <= ( len A);

                then

                 A31: (j + 1) in ( dom A) by A19, FINSEQ_3: 25;

                

                 A32: j <= m by A4, A30, XREAL_1: 8;

                then

                 A33: j in ( Seg m) by A16;

                

                 A34: j in ( dom da) by A5, A16, A32, FINSEQ_3: 25;

                (j + 1) in ( Seg ( len A)) by A19, A30;

                

                then ( Line (A9,(j + 1))) = (A . (j + 1)) by MATRIX_0: 52

                .= (da9 . j) by A1, A4, A28, A32, FINSEQ_3: 111

                .= ( Line (da,j)) by A5, A33, MATRIX_0: 52;

                

                hence (( Del (bAG,i)) . j) = (( Line (da,j)) ^ (( width bG) |-> a)) by A29, A31, Th23

                .= ( Line (bdAG,j)) by A34, Th23;

              end;

                suppose

                 A35: (j + 1) > ( len A);

                then

                reconsider jL = ((j + 1) - ( len A)) as Element of NAT by NAT_1: 21;

                jL <> 0 by A35;

                then

                 A36: jL >= 1 by NAT_1: 14;

                (jL + ( len A)) <= (( len bG) + ( len A)) by A8, A12, A17, XREAL_1: 7;

                then jL <= ( len bG) by XREAL_1: 8;

                then

                 A37: jL in ( dom bG) by A36, FINSEQ_3: 25;

                

                thus (( Del (bAG,i)) . j) = ( Line (bAG,(jL + ( len A)))) by A29

                .= ((( width da) |-> a) ^ ( Line (bG,jL))) by A2, A37, Th23

                .= ( Line (bdAG,(jL + ( len da)))) by A37, Th23

                .= ( Line (bdAG,j)) by A4, A5;

              end;

            end;

            hence (( Del (bAG,i)) . j) = (bdAG . j) by A5, A10, A13, A18, MATRIX_0: 52;

          end;

        end;

        hence (( Del (bAG,i)) . j) = (bdAG . j);

      end;

      

       A38: ( block_diagonal ((DA ^ G),a)) = bdAG by Th36;

      

       A39: ( block_diagonal ((AA ^ G),a)) = bAG by Th36;

      ( len ( Del (bAG,i))) = (m + ( len bG)) by A12, A9, A3, A6, FINSEQ_3: 109;

      hence thesis by A11, A39, A38, A14;

    end;

    theorem :: MATRIXJ1:42

    

     Th42: i in ( dom A) & ( width A) = ( width ( DelLine (A,i))) implies ( DelLine (( block_diagonal ((G ^ <*A*>),a)),(( Sum ( Len G)) + i))) = ( block_diagonal ((G ^ <*( DelLine (A,i))*>),a))

    proof

      assume that

       A1: i in ( dom A) and

       A2: ( width A) = ( width ( DelLine (A,i)));

      

       A3: i in ( Seg ( len A)) by A1, FINSEQ_1:def 3;

      set da = ( DelLine (A,i));

      consider m such that

       A4: ( len A) = (m + 1) and

       A5: ( len da) = m by A1, FINSEQ_3: 104;

      set Si = (( Sum ( Len G)) + i);

      set bG = ( block_diagonal (G,a));

      set DA = <*da*>;

      set AA = <*A*>;

      set BG = <*bG*>;

      set bGA = ( block_diagonal ( <*bG, A*>,a));

      set bGdA = ( block_diagonal ( <*bG, da*>,a));

      

       A6: ( Seg ( len bGA)) = ( dom bGA) by FINSEQ_1:def 3;

      

       A7: ( len bGdA) = ( Sum ( Len (BG ^ DA))) by Def5;

      then

       A8: ( len bGdA) = (m + ( len bG)) by A5, Th16;

      

       A9: ( len bG) = ( Sum ( Len G)) by Def5;

      

       A10: ( len bGA) = ( Sum ( Len (BG ^ AA))) by Def5;

      then

       A11: ( len bGA) = (( len A) + ( len bG)) by Th16;

      then

       A12: ( len bGA) = ((m + ( len bG)) + 1) by A4;

      

       A13: ( len bGdA) = (( len da) + ( len bG)) by A7, Th16;

       A14:

      now

        (m + ( len bG)) <= ( len bGA) by A12, NAT_1: 11;

        then

         A15: ( Seg (m + ( len bG))) c= ( Seg ( len bGA)) by FINSEQ_1: 5;

        reconsider da9 = da as Matrix of ( len da), ( width da), K by MATRIX_0: 51;

        reconsider A9 = A as Matrix of ( len A), ( width A), K by MATRIX_0: 51;

        let j such that

         A16: 1 <= j and

         A17: j <= (m + ( len bG));

        

         A18: j in ( Seg (m + ( len bG))) by A16, A17;

        

         A19: 1 <= (1 + j) by NAT_1: 11;

        (j + 1) <= ( len bGA) by A12, A17, XREAL_1: 7;

        then

         A20: (j + 1) in ( Seg ( len bGA)) by A19;

        now

          per cases ;

            suppose

             A21: j <= ( len bG);

            then

             A22: j in ( dom bG) by A16, FINSEQ_3: 25;

             0 < i by A3;

            then (j + 0 ) < (( len bG) + i) by A21, XREAL_1: 8;

            then j < Si by Def5;

            

            hence (( Del (bGA,Si)) . j) = (bGA . j) by FINSEQ_3: 110

            .= ( Line (bGA,j)) by A10, A18, A15, MATRIX_0: 52

            .= (( Line (bG,j)) ^ (( width da) |-> a)) by A2, A22, Th23

            .= ( Line (bGdA,j)) by A22, Th23

            .= (bGdA . j) by A5, A7, A13, A18, MATRIX_0: 52;

          end;

            suppose

             A23: j > ( len bG);

            then

            reconsider jL = (j - ( len bG)) as Element of NAT by NAT_1: 21;

            

             A24: ( 0 + 1) <= (jL + 1) by NAT_1: 13;

            (jL + ( len bG)) <= (m + ( len bG)) by A17;

            then

             A25: jL <= m by XREAL_1: 8;

            then

             A26: (jL + 1) <= ( len A) by A4, XREAL_1: 7;

            then

             A27: (jL + 1) in ( dom A) by A24, FINSEQ_3: 25;

            jL <> 0 by A23;

            then

             A28: 1 <= jL by NAT_1: 14;

            then

             A29: jL in ( dom da) by A5, A25, FINSEQ_3: 25;

            

             A30: (jL + 1) in ( Seg ( len A)) by A24, A26;

            

             A31: jL in ( Seg ( len da)) by A5, A28, A25;

            

             A32: jL <= ( len A) by A4, A25, NAT_1: 13;

            then

             A33: jL in ( Seg ( len A)) by A28;

            

             A34: jL in ( dom A) by A28, A32, FINSEQ_3: 25;

            now

              per cases ;

                suppose

                 A35: j < Si;

                then (jL + ( len bG)) < (i + ( len bG)) by Def5;

                then

                 A36: jL < i by XREAL_1: 7;

                

                 A37: ( Line (A,jL)) = (A9 . jL) by A33, MATRIX_0: 52

                .= (da9 . jL) by A36, FINSEQ_3: 110

                .= ( Line (da,jL)) by A31, MATRIX_0: 52;

                

                thus (( Del (bGA,Si)) . j) = (bGA . j) by A35, FINSEQ_3: 110

                .= ( Line (bGA,(jL + ( len bG)))) by A10, A18, A15, MATRIX_0: 52

                .= ((( width bG) |-> a) ^ ( Line (da,jL))) by A34, A37, Th23

                .= ( Line (bGdA,(jL + ( len bG)))) by A29, Th23;

              end;

                suppose

                 A38: j >= Si;

                then (jL + ( len bG)) >= (i + ( len bG)) by Def5;

                then

                 A39: jL >= i by XREAL_1: 8;

                

                 A40: ( Line (A,(1 + jL))) = (A9 . (1 + jL)) by A30, MATRIX_0: 52

                .= (da9 . jL) by A1, A4, A25, A39, FINSEQ_3: 111

                .= ( Line (da,jL)) by A31, MATRIX_0: 52;

                

                thus (( Del (bGA,Si)) . j) = (bGA . (j + 1)) by A9, A11, A12, A3, A6, A17, A38, FINSEQ_1: 60, FINSEQ_3: 111

                .= ( Line (bGA,((jL + 1) + ( len bG)))) by A10, A20, MATRIX_0: 52

                .= ((( width bG) |-> a) ^ ( Line (da,jL))) by A27, A40, Th23

                .= ( Line (bGdA,(jL + ( len bG)))) by A29, Th23;

              end;

            end;

            hence (( Del (bGA,Si)) . j) = (bGdA . j) by A5, A7, A13, A18, MATRIX_0: 52;

          end;

        end;

        hence (( Del (bGA,(i + ( Sum ( Len G))))) . j) = (bGdA . j);

      end;

      

       A41: ( block_diagonal ((G ^ DA),a)) = bGdA by Th35;

      

       A42: ( block_diagonal ((G ^ AA),a)) = bGA by Th35;

      ( len ( Del (bGA,Si))) = (m + ( len bG)) by A9, A11, A12, A3, A6, FINSEQ_1: 60, FINSEQ_3: 109;

      hence thesis by A8, A42, A41, A14;

    end;

    theorem :: MATRIXJ1:43

    

     Th43: i in ( Seg ( width A)) implies ( DelCol (( block_diagonal (( <*A*> ^ G),a)),i)) = ( block_diagonal (( <*( DelCol (A,i))*> ^ G),a))

    proof

      assume

       A1: i in ( Seg ( width A));

      set bG = ( block_diagonal (G,a));

      set Da = ( DelCol (A,i));

      set AA = <*A*>;

      set DA = <*Da*>;

      set BG = <*bG*>;

      set BAG = ( block_diagonal ( <*A, bG*>,a));

      set BDG = ( block_diagonal ( <*Da, bG*>,a));

      

       A2: ( len Da) = ( len A) by MATRIX_0:def 13;

      ( len BAG) = ( Sum ( Len (AA ^ BG))) by Def5;

      then

       A3: ( len BAG) = (( len A) + ( len bG)) by Th16;

      

       A4: ( len BDG) = ( Sum ( Len (DA ^ BG))) by Def5;

      then

       A5: ( len BDG) = (( len Da) + ( len bG)) by Th16;

       A6:

      now

        reconsider Da9 = Da as Matrix of ( len Da), ( width Da), K by MATRIX_0: 51;

        let j such that

         A7: 1 <= j and

         A8: j <= ( len BDG);

        

         A9: j in ( Seg ( len BDG)) by A7, A8;

         A10:

        now

          per cases ;

            suppose

             A11: j <= ( len A);

            then

             A12: j in ( Seg ( len A)) by A7;

            

             A13: j in ( dom Da) by A2, A7, A11, FINSEQ_3: 25;

            

             A14: ( dom ( Line (A,j))) = ( Seg ( width A)) by FINSEQ_2: 124;

            

             A15: j in ( dom A) by A7, A11, FINSEQ_3: 25;

            then

             A16: ( Line (BAG,j)) = (( Line (A,j)) ^ (( width bG) |-> a)) by Th23;

            ( Del (( Line (A,j)),i)) = (Da9 . j) by A15, MATRIX_0:def 13

            .= ( Line (Da,j)) by A2, A12, MATRIX_0: 52;

            

            hence ( Del (( Line (BAG,j)),i)) = (( Line (Da,j)) ^ (( width bG) |-> a)) by A1, A16, A14, Th2

            .= ( Line (BDG,j)) by A13, Th23

            .= (BDG . j) by A4, A9, MATRIX_0: 52;

          end;

            suppose

             A17: j > ( len A);

            then

            reconsider jL = (j - ( len A)) as Element of NAT by NAT_1: 21;

            jL <> 0 by A17;

            then

             A18: jL >= 1 by NAT_1: 14;

            ( width A) <> 0 by A1;

            then

            reconsider w1 = (( width A) - 1) as Element of NAT by NAT_1: 14, NAT_1: 21;

            

             A19: ( dom (( width A) |-> a)) = ( Seg ( width A)) by FINSEQ_2: 124;

            

             A20: ( width Da) = ((w1 + 1) -' 1) by A1, LAPLACE: 3

            .= w1 by NAT_D: 34;

            (jL + ( len A)) <= (( len bG) + ( len A)) by A5, A8, MATRIX_0:def 13;

            then jL <= ( len bG) by XREAL_1: 8;

            then

             A21: jL in ( dom bG) by A18, FINSEQ_3: 25;

            then ( Line (BAG,(jL + ( len A)))) = ((( width A) |-> a) ^ ( Line (bG,jL))) by Th23;

            

            hence ( Del (( Line (BAG,j)),i)) = (( Del (((w1 + 1) |-> a),i)) ^ ( Line (bG,jL))) by A1, A19, Th2

            .= ((( width Da) |-> a) ^ ( Line (bG,jL))) by A1, A20, Th4

            .= ( Line (BDG,(( len A) + jL))) by A2, A21, Th23

            .= (BDG . j) by A4, A9, MATRIX_0: 52;

          end;

        end;

        j in ( dom BAG) by A2, A5, A3, A7, A8, FINSEQ_3: 25;

        hence (( DelCol (BAG,i)) . j) = (BDG . j) by A10, MATRIX_0:def 13;

      end;

      

       A22: ( block_diagonal ((DA ^ G),a)) = BDG by Th36;

      

       A23: ( len ( DelCol (BAG,i))) = ( len BAG) by MATRIX_0:def 13;

      ( block_diagonal ((AA ^ G),a)) = BAG by Th36;

      hence thesis by A2, A23, A4, A3, A6, A22, Th16, FINSEQ_1: 14;

    end;

    theorem :: MATRIXJ1:44

    

     Th44: i in ( Seg ( width A)) implies ( DelCol (( block_diagonal ((G ^ <*A*>),a)),(i + ( Sum ( Width G))))) = ( block_diagonal ((G ^ <*( DelCol (A,i))*>),a))

    proof

      assume

       A1: i in ( Seg ( width A));

      set iS = (i + ( Sum ( Width G)));

      set bG = ( block_diagonal (G,a));

      set Da = ( DelCol (A,i));

      set AA = <*A*>;

      set DA = <*Da*>;

      set BG = <*bG*>;

      set BGA = ( block_diagonal ( <*bG, A*>,a));

      set BGD = ( block_diagonal ( <*bG, Da*>,a));

      

       A2: ( len Da) = ( len A) by MATRIX_0:def 13;

      ( len BGA) = ( Sum ( Len (BG ^ AA))) by Def5;

      then

       A3: ( len BGA) = (( len bG) + ( len A)) by Th16;

      

       A4: ( width bG) = ( Sum ( Width G)) by Def5;

      

       A5: ( len BGD) = ( Sum ( Len (BG ^ DA))) by Def5;

      then

       A6: ( len BGD) = (( len bG) + ( len Da)) by Th16;

       A7:

      now

        ( width A) <> 0 by A1;

        then ( width A) >= 1 by NAT_1: 14;

        then (( width A) -' 1) = (( width A) - 1) by XREAL_1: 233;

        then

         A8: ( width A) = ((( width A) -' 1) + 1);

        

         A9: ( dom (( width A) |-> a)) = ( Seg ( width A)) by FINSEQ_2: 124;

        

         A10: ( len (( width bG) |-> a)) = ( width bG) by CARD_1:def 7;

        reconsider Da9 = Da as Matrix of ( len Da), ( width Da), K by MATRIX_0: 51;

        let j such that

         A11: 1 <= j and

         A12: j <= ( len BGD);

        

         A13: j in ( Seg ( len BGD)) by A11, A12;

        

         A14: ( len ( Line (bG,j))) = ( width bG) by MATRIX_0:def 7;

         A15:

        now

          per cases ;

            suppose j <= ( len bG);

            then

             A16: j in ( dom bG) by A11, FINSEQ_3: 25;

            then ( Line (BGA,j)) = (( Line (bG,j)) ^ (( width A) |-> a)) by Th23;

            

            hence ( Del (( Line (BGA,j)),iS)) = (( Line (bG,j)) ^ ( Del ((( width A) |-> a),i))) by A1, A4, A9, A14, Th3

            .= (( Line (bG,j)) ^ ((( width A) -' 1) |-> a)) by A1, A8, Th4

            .= (( Line (bG,j)) ^ (( width Da) |-> a)) by A1, LAPLACE: 3

            .= ( Line (BGD,j)) by A16, Th23

            .= (BGD . j) by A5, A13, MATRIX_0: 52;

          end;

            suppose

             A17: j > ( len bG);

            then

            reconsider jL = (j - ( len bG)) as Element of NAT by NAT_1: 21;

            jL <> 0 by A17;

            then

             A18: jL >= 1 by NAT_1: 14;

            (jL + ( len bG)) <= (( len bG) + ( len A)) by A6, A12, MATRIX_0:def 13;

            then

             A19: jL <= ( len A) by XREAL_1: 8;

            then

             A20: jL in ( dom Da) by A2, A18, FINSEQ_3: 25;

            

             A21: jL in ( Seg ( len A)) by A18, A19;

            

             A22: jL in ( dom A) by A18, A19, FINSEQ_3: 25;

            

            then

             A23: ( Del (( Line (A,jL)),i)) = (Da9 . jL) by MATRIX_0:def 13

            .= ( Line (Da,jL)) by A2, A21, MATRIX_0: 52;

            

             A24: ( dom ( Line (A,jL))) = ( Seg ( width A)) by FINSEQ_2: 124;

            ( Line (BGA,(jL + ( len bG)))) = ((( width bG) |-> a) ^ ( Line (A,jL))) by A22, Th23;

            

            hence ( Del (( Line (BGA,j)),iS)) = ((( width bG) |-> a) ^ ( Del (( Line (A,jL)),i))) by A1, A4, A10, A24, Th3

            .= ( Line (BGD,(( len bG) + jL))) by A20, A23, Th23

            .= (BGD . j) by A5, A13, MATRIX_0: 52;

          end;

        end;

        j in ( dom BGA) by A2, A6, A3, A11, A12, FINSEQ_3: 25;

        hence (( DelCol (BGA,iS)) . j) = (BGD . j) by A15, MATRIX_0:def 13;

      end;

      

       A25: ( block_diagonal ((G ^ DA),a)) = BGD by Th35;

      

       A26: ( len ( DelCol (BGA,iS))) = ( len BGA) by MATRIX_0:def 13;

      ( block_diagonal ((G ^ AA),a)) = BGA by Th35;

      hence thesis by A2, A26, A5, A3, A7, A25, Th16, FINSEQ_1: 14;

    end;

    definition

      let D;

      let F be FinSequence of ((D * ) * );

      :: MATRIXJ1:def6

      attr F is Square-Matrix-yielding means

      : Def6: for i st i in ( dom F) holds ex n st (F . i) is Matrix of n, D;

    end

    registration

      let D;

      cluster Square-Matrix-yielding for FinSequence of ((D * ) * );

      existence

      proof

        reconsider F = ( <*> ((D * ) * )) as FinSequence of ((D * ) * );

        take F;

        thus thesis;

      end;

    end

    registration

      let D;

      cluster Square-Matrix-yielding -> Matrix-yielding for FinSequence of ((D * ) * );

      coherence

      proof

        let F be FinSequence of ((D * ) * ) such that

         A1: F is Square-Matrix-yielding;

        let i;

        assume i in ( dom F);

        then ex n st (F . i) is Matrix of n, D by A1;

        hence thesis;

      end;

    end

    definition

      let D;

      mode FinSequence_of_Square-Matrix of D is Square-Matrix-yielding FinSequence of ((D * ) * );

    end

    definition

      let K;

      mode FinSequence_of_Square-Matrix of K is Square-Matrix-yielding FinSequence of ((the carrier of K * ) * );

    end

    reserve S,S1,S2 for FinSequence_of_Square-Matrix of D,

R,R1,R2 for FinSequence_of_Square-Matrix of K;

    theorem :: MATRIXJ1:45

     {} is FinSequence_of_Square-Matrix of D

    proof

      set F = ( <*> ((D * ) * ));

      for i st i in ( dom F) holds ex n st (F . i) is Matrix of n, D;

      hence thesis by Def6;

    end;

    definition

      let D, S, x;

      :: original: .

      redefine

      func S . x -> Matrix of ( len (S . x)), D ;

      coherence

      proof

        reconsider E = {} as Matrix of 0 , D by MATRIX_0: 13;

        per cases ;

          suppose

           A1: x in ( dom S);

          then

          reconsider i = x as Element of NAT ;

          consider n such that

           A2: (S . i) is Matrix of n, D by A1, Def6;

          ( len (S . i)) = n by A2, MATRIX_0: 24;

          hence thesis by A2;

        end;

          suppose

           A3: not x in ( dom S);

          (S . x) = E by A3, FUNCT_1:def 2;

          hence thesis;

        end;

      end;

    end

    definition

      let D, S1, S2;

      :: original: ^

      redefine

      func S1 ^ S2 -> FinSequence_of_Square-Matrix of D ;

      coherence

      proof

        (S1 ^ S2) is Square-Matrix-yielding

        proof

          let i such that

           A1: i in ( dom (S1 ^ S2));

          take ( len ((S1 ^ S2) . i));

          per cases by A1, FINSEQ_1: 25;

            suppose i in ( dom S1);

            then ((S1 ^ S2) . i) = (S1 . i) by FINSEQ_1:def 7;

            hence thesis;

          end;

            suppose ex n st n in ( dom S2) & i = (( len S1) + n);

            then

            consider n such that

             A2: n in ( dom S2) and

             A3: i = (( len S1) + n);

            ((S1 ^ S2) . i) = (S2 . n) by A2, A3, FINSEQ_1:def 7;

            hence thesis;

          end;

        end;

        hence thesis;

      end;

    end

    

     Lm6: for M be Matrix of n, D holds <*M*> is FinSequence_of_Square-Matrix of D

    proof

      let M be Matrix of n, D;

      now

        let i such that

         A1: i in ( dom <*M*>);

        take n;

        

         A2: ( <*M*> . 1) = M by FINSEQ_1:def 8;

        ( dom <*M*>) = {1} by FINSEQ_1: 2, FINSEQ_1:def 8;

        hence ( <*M*> . i) is Matrix of n, D by A1, A2, TARSKI:def 1;

      end;

      hence thesis by Def6;

    end;

    definition

      let D, n;

      let M1 be Matrix of n, D;

      :: original: <*

      redefine

      func <*M1*> -> FinSequence_of_Square-Matrix of D ;

      coherence by Lm6;

    end

    definition

      let D, n, m;

      let M1 be Matrix of n, D;

      let M2 be Matrix of m, D;

      :: original: <*

      redefine

      func <*M1,M2*> -> FinSequence_of_Square-Matrix of D ;

      coherence

      proof

        reconsider F1 = <*M1*>, F2 = <*M2*> as FinSequence_of_Square-Matrix of D;

         <*M1, M2*> = (F1 ^ F2);

        hence thesis;

      end;

    end

    definition

      let D, n, S;

      :: original: |

      redefine

      func S | n -> FinSequence_of_Square-Matrix of D ;

      coherence

      proof

        (S | n) is Square-Matrix-yielding

        proof

          let i such that

           A1: i in ( dom (S | n));

          take L = ( len (S . i));

          thus ((S | n) . i) is Matrix of L, D by A1, FUNCT_1: 47;

        end;

        hence thesis;

      end;

      :: original: /^

      redefine

      func S /^ n -> FinSequence_of_Square-Matrix of D ;

      coherence

      proof

        (S /^ n) is Square-Matrix-yielding

        proof

          let i such that

           A2: i in ( dom (S /^ n));

          take L = ( len (S . (n + i)));

          thus ((S /^ n) . i) is Matrix of L, D by A2, FINSEQ_5: 27;

        end;

        hence thesis;

      end;

    end

    theorem :: MATRIXJ1:46

    

     Th46: ( Len S) = ( Width S)

    proof

      set L = ( Len S);

      set W = ( Width S);

      

       A1: ( dom W) = ( dom S) by Def4;

      

       A2: ( dom L) = ( dom S) by Def3;

      now

        let k such that

         A3: k in ( dom L);

        

        thus (L . k) = ( len (S . k)) by A3, Def3

        .= ( width (S . k)) by MATRIX_0: 24

        .= (W . k) by A2, A1, A3, Def4;

      end;

      hence thesis by A2, A1, FINSEQ_1: 13;

    end;

    definition

      let D;

      let d be Element of D;

      let S be FinSequence_of_Square-Matrix of D;

      :: original: block_diagonal

      redefine

      func block_diagonal (S,d) -> Matrix of ( Sum ( Len S)), D ;

      coherence

      proof

        

         A1: ( block_diagonal (S,d)) is Matrix of ( Sum ( Len S)), ( Sum ( Width S)), D;

        ( Len S) = ( Width S) by Th46;

        hence thesis by A1;

      end;

    end

    theorem :: MATRIXJ1:47

    

     Th47: for A be Matrix of n, K st i in ( dom A) & j in ( Seg n) holds ( Deleting (( block_diagonal (( <*A*> ^ R),a)),i,j)) = ( block_diagonal (( <*( Deleting (A,i,j))*> ^ R),a))

    proof

      let A be Matrix of n, K such that

       A1: i in ( dom A) and

       A2: j in ( Seg n);

      n <> 0 by A2;

      then

       A3: n >= 1 by NAT_1: 14;

      set AA = <*A*>;

      set b = ( block_diagonal (R,a));

      set B = <*b*>;

      set LAR = ( Sum ( Len (AA ^ R)));

      set LAB = ( Sum ( Len (AA ^ B)));

      

       A4: ( width A) = n by MATRIX_0: 24;

      ( Width AA) = <*( width A)*> by Th19;

      then

       A5: ( Sum ( Width AA)) = ( width A) by RVSUM_1: 73;

      

       A6: ( Width B) = <*( width b)*> by Th19;

      

       A7: ( Len AA) = <*( len A)*> by Th15;

      then

       A8: ( Sum ( Len AA)) = ( len A) by RVSUM_1: 73;

      ( Len (AA ^ B)) = (( Len AA) ^ ( Len B)) by Th14;

      then

       A9: LAB = (( len A) + ( Sum ( Len B))) by A7, RVSUM_1: 76;

      

       A10: ( Len (AA ^ B)) = ( Width (AA ^ B)) by Th46;

      ( Width (AA ^ B)) = (( Width AA) ^ ( Width B)) by Th18;

      then

       A11: LAB = (( Sum ( Width AA)) + ( width b)) by A6, A10, RVSUM_1: 74;

      ( Len B) = <*( len b)*> by Th15;

      then

       A12: ( Sum ( Len B)) = ( len b) by RVSUM_1: 73;

      

       A13: ( len A) = n by MATRIX_0: 24;

      then

       A14: ( dom A) = ( Seg n) by FINSEQ_1:def 3;

      per cases by A3, XXREAL_0: 1;

        suppose

         A15: n = 1;

        then

         A16: i = 1 by A1, A14, FINSEQ_1: 2, TARSKI:def 1;

        

         A17: j = 1 by A2, A15, FINSEQ_1: 2, TARSKI:def 1;

        ( len ( Deleting (A,i,j))) = (1 -' 1) by A1, A15, LAPLACE: 2

        .= 0 by XREAL_1: 232;

        then

         A18: ( Deleting (A,i,j)) = {} ;

        

        thus ( Deleting (( block_diagonal ((AA ^ R),a)),i,j)) = ( Deleting (( block_diagonal ((AA ^ B),a)),i,j)) by Th36

        .= ( Segm (( block_diagonal ((AA ^ B),a)),(( Seg LAB) \ {i}),(( Seg LAB) \ {j}))) by MATRIX13: 58

        .= b by A13, A4, A9, A11, A12, A8, A5, A15, A16, A17, Th33, FINSEQ_1: 2

        .= ( block_diagonal (B,a)) by Th34

        .= ( block_diagonal (( <*( Deleting (A,i,j))*> ^ B),a)) by A18, Th40

        .= ( block_diagonal (( <*( Deleting (A,i,j))*> ^ R),a)) by Th36;

      end;

        suppose n > 1;

        then

         A19: ( width A) = ( width ( DelLine (A,i))) by A13, LAPLACE: 4;

        

        thus ( Deleting (( block_diagonal ((AA ^ R),a)),i,j)) = ( DelCol (( DelLine (( block_diagonal ((AA ^ R),a)),i)),j))

        .= ( DelCol (( block_diagonal (( <*( DelLine (A,i))*> ^ R),a)),j)) by A1, A19, Th41

        .= ( block_diagonal (( <*( DelCol (( DelLine (A,i)),j))*> ^ R),a)) by A2, A4, A19, Th43

        .= ( block_diagonal (( <*( Deleting (A,i,j))*> ^ R),a));

      end;

    end;

    theorem :: MATRIXJ1:48

    for A be Matrix of n, K st i in ( dom A) & j in ( Seg n) holds ( Deleting (( block_diagonal ((R ^ <*A*>),a)),(i + ( Sum ( Len R))),(j + ( Sum ( Len R))))) = ( block_diagonal ((R ^ <*( Deleting (A,i,j))*>),a))

    proof

      let A be Matrix of n, K such that

       A1: i in ( dom A) and

       A2: j in ( Seg n);

      n <> 0 by A2;

      then

       A3: n >= 1 by NAT_1: 14;

      set jS = (j + ( Sum ( Len R)));

      set iS = (i + ( Sum ( Len R)));

      set AA = <*A*>;

      set b = ( block_diagonal (R,a));

      set B = <*b*>;

      set LRA = ( Sum ( Len (R ^ AA)));

      set LBA = ( Sum ( Len (B ^ AA)));

      

       A4: ( width A) = n by MATRIX_0: 24;

      

       A5: ( Len R) = ( Width R) by Th46;

      

       A6: ( len A) = n by MATRIX_0: 24;

      then

       A7: ( dom A) = ( Seg n) by FINSEQ_1:def 3;

      

       A8: ( Width AA) = <*( width A)*> by Th19;

      

       A9: ( len b) = ( Sum ( Len R)) by Def5;

      

       A10: ( Len (B ^ AA)) = ( Width (B ^ AA)) by Th46;

      

       A11: ( Len AA) = <*( len A)*> by Th15;

      then

       A12: ( Sum ( Len AA)) = ( len A) by RVSUM_1: 73;

      ( Len (B ^ AA)) = (( Len B) ^ ( Len AA)) by Th14;

      then

       A13: LBA = (( len A) + ( Sum ( Len B))) by A11, RVSUM_1: 74;

      

       A14: ( Width B) = <*( width b)*> by Th19;

      then

       A15: ( Sum ( Width B)) = ( width b) by RVSUM_1: 73;

      ( Width (B ^ AA)) = (( Width B) ^ ( Width AA)) by Th18;

      then

       A16: LBA = (( Sum ( Width AA)) + ( width b)) by A14, A10, RVSUM_1: 76;

      ( Len B) = <*( len b)*> by Th15;

      then

       A17: ( Sum ( Len B)) = ( len b) by RVSUM_1: 73;

      per cases by A3, XXREAL_0: 1;

        suppose

         A18: n = 1;

        then

         A19: i = 1 by A1, A7, FINSEQ_1: 2, TARSKI:def 1;

        

         A20: j = 1 by A2, A18, FINSEQ_1: 2, TARSKI:def 1;

        ( len ( Deleting (A,i,j))) = (1 -' 1) by A1, A18, LAPLACE: 2

        .= 0 by XREAL_1: 232;

        then

         A21: ( Deleting (A,i,j)) = {} ;

        

        thus ( Deleting (( block_diagonal ((R ^ AA),a)),iS,jS)) = ( Deleting (( block_diagonal ((B ^ AA),a)),iS,jS)) by Th35

        .= ( Segm (( block_diagonal ((B ^ AA),a)),(( Seg LBA) \ {iS}),(( Seg LBA) \ {jS}))) by MATRIX13: 58

        .= ( Segm (( block_diagonal ((B ^ AA),a)),( Seg ( Sum ( Len B))),(( Seg LBA) \ {jS}))) by A6, A9, A13, A17, A18, A19, FINSEQ_1: 10

        .= ( Segm (( block_diagonal ((B ^ AA),a)),( Seg ( Sum ( Len B))),( Seg ( Sum ( Width B))))) by A6, A4, A9, A11, A8, A13, A16, A17, A12, A15, A18, A20, FINSEQ_1: 10

        .= b by A17, A15, Th32

        .= ( block_diagonal (B,a)) by Th34

        .= ( block_diagonal ((B ^ <*( Deleting (A,i,j))*>),a)) by A21, Th40

        .= ( block_diagonal ((R ^ <*( Deleting (A,i,j))*>),a)) by Th35;

      end;

        suppose n > 1;

        then

         A22: ( width A) = ( width ( DelLine (A,i))) by A6, LAPLACE: 4;

        

        thus ( Deleting (( block_diagonal ((R ^ AA),a)),iS,jS)) = ( DelCol (( DelLine (( block_diagonal ((R ^ AA),a)),iS)),jS))

        .= ( DelCol (( block_diagonal ((R ^ <*( DelLine (A,i))*>),a)),jS)) by A1, A22, Th42

        .= ( block_diagonal ((R ^ <*( DelCol (( DelLine (A,i)),j))*>),a)) by A2, A4, A5, A22, Th44

        .= ( block_diagonal ((R ^ <*( Deleting (A,i,j))*>),a));

      end;

    end;

    definition

      let K, R;

      :: MATRIXJ1:def7

      func Det R -> FinSequence of K means

      : Def7: ( dom it ) = ( dom R) & for i st i in ( dom it ) holds (it . i) = ( Det (R . i));

      existence

      proof

        deffunc D( Nat) = ( Det (R . $1));

        consider p be FinSequence of K such that

         A1: ( len p) = ( len R) and

         A2: for i st i in ( dom p) holds (p . i) = D(i) from FINSEQ_2:sch 1;

        take p;

        thus thesis by A1, A2, FINSEQ_3: 29;

      end;

      uniqueness

      proof

        let F1,F2 be FinSequence of K such that

         A3: ( dom F1) = ( dom R) and

         A4: for i st i in ( dom F1) holds (F1 . i) = ( Det (R . i)) and

         A5: ( dom F2) = ( dom R) and

         A6: for i st i in ( dom F2) holds (F2 . i) = ( Det (R . i));

        now

          let x be object such that

           A7: x in ( dom F1);

          reconsider i = x as Element of NAT by A7;

          

          thus (F1 . x) = ( Det (R . i)) by A4, A7

          .= (F2 . x) by A3, A5, A6, A7;

        end;

        hence thesis by A3, A5, FUNCT_1: 2;

      end;

    end

    definition

      let K, R;

      :: original: Det

      redefine

      func Det R -> Element of (( len R) -tuples_on the carrier of K) ;

      coherence

      proof

        ( dom ( Det R)) = ( dom R) by Def7;

        then ( len ( Det R)) = ( len R) by FINSEQ_3: 29;

        hence thesis by FINSEQ_2: 92;

      end;

    end

    reserve N for Matrix of n, K,

N1 for Matrix of m, K;

    theorem :: MATRIXJ1:49

    

     Th49: ( Det <*N*>) = <*( Det N)*>

    proof

      set F = <*N*>;

      

       A1: ( len F) = 1 by FINSEQ_1: 40;

      

       A2: n = ( len N) by MATRIX_0:def 2;

      

       A3: (F . 1) = N by FINSEQ_1: 40;

      

       A4: ( len F) = ( len ( Det F)) by CARD_1:def 7;

      

       A5: ( dom ( Det F)) = ( Seg ( len F)) by FINSEQ_2: 124;

      1 in ( Seg 1);

      then (( Det F) . 1) = ( Det (F . 1)) by A1, A5, Def7;

      hence thesis by A1, A4, A3, A2, FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:50

    

     Th50: ( Det (R1 ^ R2)) = (( Det R1) ^ ( Det R2))

    proof

      set R12 = (R1 ^ R2);

      

       A1: ( len R12) = (( len R1) + ( len R2)) by FINSEQ_1: 22;

      

       A2: ( len (( Det R1) ^ ( Det R2))) = (( len R1) + ( len R2)) by CARD_1:def 7;

      ( len R2) = ( len ( Det R2)) by CARD_1:def 7;

      then

       A3: ( dom ( Det R2)) = ( dom R2) by FINSEQ_3: 29;

      

       A4: ( len R1) = ( len ( Det R1)) by CARD_1:def 7;

      then

       A5: ( dom ( Det R1)) = ( dom R1) by FINSEQ_3: 29;

      

       A6: ( len ( Det R12)) = ( len R12) by CARD_1:def 7;

      then

       A7: ( dom (( Det R1) ^ ( Det R2))) = ( dom ( Det R12)) by A1, A2, FINSEQ_3: 29;

      now

        let k such that

         A8: 1 <= k and

         A9: k <= (( len R1) + ( len R2));

        

         A10: k in ( dom (( Det R1) ^ ( Det R2))) by A2, A8, A9, FINSEQ_3: 25;

        now

          per cases by A10, FINSEQ_1: 25;

            suppose

             A11: k in ( dom ( Det R1));

            then

             A12: ( len (R1 . k)) = ( len (R12 . k)) by A5, FINSEQ_1:def 7;

            

            thus ((( Det R1) ^ ( Det R2)) . k) = (( Det R1) . k) by A11, FINSEQ_1:def 7

            .= ( Det (R1 . k)) by A11, Def7

            .= ( Det (R12 . k)) by A5, A11, A12, FINSEQ_1:def 7

            .= (( Det R12) . k) by A7, A10, Def7;

          end;

            suppose ex n st n in ( dom ( Det R2)) & k = (( len ( Det R1)) + n);

            then

            consider n such that

             A13: n in ( dom ( Det R2)) and

             A14: k = (( len R1) + n) by A4;

            

             A15: ( len (R2 . n)) = ( len (R12 . k)) by A3, A13, A14, FINSEQ_1:def 7;

            

            thus ((( Det R1) ^ ( Det R2)) . k) = (( Det R2) . n) by A4, A13, A14, FINSEQ_1:def 7

            .= ( Det (R2 . n)) by A13, Def7

            .= ( Det (R12 . k)) by A3, A13, A14, A15, FINSEQ_1:def 7

            .= (( Det R12) . k) by A7, A10, Def7;

          end;

        end;

        hence (( Det R12) . k) = ((( Det R1) ^ ( Det R2)) . k);

      end;

      hence thesis by A6, A1, A2;

    end;

    theorem :: MATRIXJ1:51

    ( Det (R | n)) = (( Det R) | n)

    proof

      

       A1: ( len ( Det R)) = ( len R) by CARD_1:def 7;

      per cases ;

        suppose

         A2: n >= ( len R);

        then (R | n) = R by FINSEQ_1: 58;

        hence thesis by A1, A2, FINSEQ_1: 58;

      end;

        suppose

         A3: n < ( len R);

        R = ((R | n) ^ (R /^ n)) by RFINSEQ: 8;

        then

         A4: ( Det R) = (( Det (R | n)) ^ ( Det (R /^ n))) by Th50;

        ( len (R | n)) = n by A3, FINSEQ_1: 59;

        then ( len ( Det (R | n))) = n by CARD_1:def 7;

        hence thesis by A4, FINSEQ_5: 23;

      end;

    end;

    theorem :: MATRIXJ1:52

    

     Th52: ( Det ( block_diagonal ( <*N, N1*>,( 0. K)))) = (( Det N) * ( Det N1))

    proof

      defpred P[ Nat] means for n, m, N, N1 st n = $1 holds ( Det ( block_diagonal ( <*N, N1*>,( 0. K)))) = (( Det N) * ( Det N1));

      

       A1: for i st P[i] holds P[(i + 1)]

      proof

        let i such that

         A2: P[i];

        set i1 = (i + 1);

        let n, m, N, N1 such that

         A3: n = i1;

        1 <= ((i + m) + 1) by NAT_1: 11;

        then

         A4: 1 in ( Seg (n + m)) by A3;

        1 <= i1 by NAT_1: 11;

        then

         A5: 1 in ( Seg n) by A3;

        set L0 = (( len N1) |-> ( 0. K));

        reconsider nn = n as Element of NAT by ORDINAL1:def 12;

        set D = ( Det N1);

        set L1 = ( LaplaceExpL (N,1));

        set NN = <*N, N1*>;

        reconsider M = N as Matrix of K;

        set bN = ( block_diagonal (NN,( 0. K)));

        set L = ( LaplaceExpL (bN,1));

        

         A6: ( width N) = n by MATRIX_0: 24;

        set Ln = (L | n);

        

         A7: ( len L1) = n by LAPLACE:def 7;

        set L9n = (L /^ n);

        

         A8: L = ((L | n) ^ (L /^ n)) by RFINSEQ: 8;

        

         A9: ( len N) = n by MATRIX_0: 24;

        then

         A10: ( dom N) = ( Seg n) by FINSEQ_1:def 3;

        reconsider L1 as Element of (nn -tuples_on the carrier of K) by A7, FINSEQ_2: 92;

        

         A11: ( len N1) = m by MATRIX_0: 24;

        then

         A12: ( len L0) = m by CARD_1:def 7;

        

         A13: ( Sum ( Len NN)) = (( len N) + ( len N1)) by Th16;

        then

         A14: ( len L) = (n + m) by A9, A11, LAPLACE:def 7;

        then

         A15: ( len Ln) = n by FINSEQ_1: 59, NAT_1: 11;

        

         A16: ( width bN) = ( Sum ( Len NN)) by MATRIX_0: 24;

         A17:

        now

          

           A18: i = (n -' 1) by A3, NAT_D: 34;

          let j such that

           A19: 1 <= j and

           A20: j <= n;

          

           A21: ( len ( Delete (N,1,j))) = (n -' 1) by MATRIX_0:def 2;

          

           A22: j in ( dom Ln) by A15, A19, A20, FINSEQ_3: 25;

          then j in (( dom L) /\ ( Seg n)) by RELAT_1: 61;

          then

           A23: j in ( dom L) by XBOOLE_0:def 4;

          j in ( dom L1) by A7, A19, A20, FINSEQ_3: 25;

          then

           A24: ((N * (1,j)) * ( Cofactor (N,1,j))) = (L1 . j) by LAPLACE:def 7;

          

           A25: (((i + m) + 1) -' 1) = (i + m) by NAT_D: 34;

          

           A26: ( dom ( Line (N,1))) = ( Seg n) by A6, FINSEQ_2: 124;

          

           A27: ( dom Ln) = ( Seg n) by A15, FINSEQ_1:def 3;

          

           A28: ( dom L) = ( Seg (n + m)) by A14, FINSEQ_1:def 3;

          

          then

           A29: ( Delete (bN,1,j)) = ( Deleting (bN,1,j)) by A13, A9, A11, A4, A23, LAPLACE:def 1

          .= ( block_diagonal (( <*( Deleting (N,1,j))*> ^ <*N1*>),( 0. K))) by A5, A10, A22, A27, Th47

          .= ( block_diagonal ( <*( Delete (N,1,j)), N1*>,( 0. K))) by A5, A22, A27, LAPLACE:def 1;

          (( Minor (N,1,j)) * D) = ( Det ( block_diagonal ( <*( Delete (N,1,j)), N1*>,( 0. K)))) by A2, A3, NAT_D: 34

          .= ( Minor (bN,1,j)) by A3, A13, A9, A11, A29, A18, A25, A21, Th16;

          then

           A30: ( Cofactor (bN,1,j)) = (D * ( Cofactor (N,1,j))) by GROUP_1:def 3;

          

           A31: (bN * (1,j)) = (( Line (( block_diagonal ( <*M, N1*>,( 0. K))),1)) . j) by A16, A13, A9, A11, A23, A28, MATRIX_0:def 7

          .= ((( Line (N,1)) ^ (( width N1) |-> ( 0. K))) . j) by A5, A10, Th23

          .= (( Line (N,1)) . j) by A22, A27, A26, FINSEQ_1:def 7

          .= (N * (1,j)) by A6, A22, A27, MATRIX_0:def 7;

          

          thus (Ln . j) = (L . j) by A22, FUNCT_1: 47

          .= ((N * (1,j)) * (D * ( Cofactor (N,1,j)))) by A23, A30, A31, LAPLACE:def 7

          .= (D * ((N * (1,j)) * ( Cofactor (N,1,j)))) by GROUP_1:def 3

          .= ((D * L1) . j) by A22, A27, A24, FVSUM_1: 51;

        end;

        n <= (n + m) by NAT_1: 11;

        then

         A32: ( len L9n) = ((n + m) - n) by A14, RFINSEQ:def 1;

        

         A33: ( width N1) = m by MATRIX_0: 24;

        now

          

           A34: ( len ( Line (N,1))) = n by A6, CARD_1:def 7;

          let i such that

           A35: 1 <= i and

           A36: i <= m;

          

           A37: i in ( Seg m) by A35, A36;

          

           A38: i in ( dom L0) by A12, A35, A36, FINSEQ_3: 25;

          

           A39: i in ( dom L9n) by A32, A35, A36, FINSEQ_3: 25;

          then

           A40: (n + i) in ( dom L) by FINSEQ_5: 26;

          ( dom L) = ( Seg ( width bN)) by A16, A13, A9, A11, A14, FINSEQ_1:def 3;

          

          then

           A41: (bN * (1,(i + n))) = (( Line (( block_diagonal ( <*M, N1*>,( 0. K))),1)) . (i + n)) by A40, MATRIX_0:def 7

          .= ((( Line (N,1)) ^ L0) . (i + n)) by A11, A33, A5, A10, Th23

          .= (L0 . i) by A38, A34, FINSEQ_1:def 7

          .= ( 0. K) by A11, A37, FINSEQ_2: 57;

          

          thus (L9n . i) = (L9n /. i) by A39, PARTFUN1:def 6

          .= (L /. (i + n)) by A39, FINSEQ_5: 27

          .= (L . (i + n)) by A40, PARTFUN1:def 6

          .= ((bN * (1,(i + n))) * ( Cofactor (bN,1,(i + n)))) by A40, LAPLACE:def 7

          .= ( 0. K) by A41

          .= (L0 . i) by A11, A37, FINSEQ_2: 57;

        end;

        then

         A42: (L /^ n) = (( len N1) |-> ( 0. K)) by A32, A12;

        ( len (D * L1)) = nn by A7, MATRIXR1: 16;

        then (L | n) = (D * L1) by A15, A17;

        

        then ( Sum L) = (( Sum (D * L1)) + ( Sum (( len N1) |-> ( 0. K)))) by A42, A8, RLVECT_1: 41

        .= (( Sum (D * L1)) + ( Sum (( len N1) |-> (( 0. K) * ( 0. K)))))

        .= (( Sum (D * L1)) + ( Sum (( 0. K) * (( len N1) |-> ( 0. K))))) by FVSUM_1: 53

        .= ((D * ( Sum L1)) + ( Sum (( 0. K) * (( len N1) |-> ( 0. K))))) by FVSUM_1: 73

        .= ((D * ( Sum L1)) + (( 0. K) * ( Sum (( len N1) |-> ( 0. K))))) by FVSUM_1: 73

        .= ((D * ( Sum L1)) + ( 0. K))

        .= (D * ( Sum L1)) by RLVECT_1:def 4

        .= (D * ( Det N)) by A5, LAPLACE: 25;

        hence thesis by A13, A9, A11, A4, LAPLACE: 25;

      end;

      

       A43: P[ 0 ]

      proof

        let n, m, N, N1 such that

         A44: n = 0 ;

        

         A45: ( len N) = n by MATRIX_0:def 2;

        then N = {} by A44;

        

        then

         A46: ( block_diagonal ( <*N, N1*>,( 0. K))) = ( block_diagonal ( <*N1*>,( 0. K))) by Th40

        .= N1 by Th34;

        ( len N1) = m by MATRIX_0:def 2;

        then ( Sum ( Len <*N, N1*>)) = ( 0 + m) by A44, A45, Th16;

        

        hence ( Det ( block_diagonal ( <*N, N1*>,( 0. K)))) = (( Det N1) * ( 1_ K)) by A46

        .= (( Det N) * ( Det N1)) by A44, MATRIXR2: 41;

      end;

      for i holds P[i] from NAT_1:sch 2( A43, A1);

      hence thesis;

    end;

    theorem :: MATRIXJ1:53

    ( Det ( block_diagonal (R,( 0. K)))) = ( Product ( Det R))

    proof

      defpred P[ Nat] means for R st ( len R) = $1 holds ( Det ( block_diagonal (R,( 0. K)))) = ( Product ( Det R));

      

       A1: for n st P[n] holds P[(n + 1)]

      proof

        let n such that

         A2: P[n];

        set n1 = (n + 1);

        let R such that

         A3: ( len R) = n1;

        set Rn = (R | n);

        

         A4: ( len Rn) = n by A3, FINSEQ_1: 59, NAT_1: 11;

        set R1 = (R . n1);

        set bR = ( block_diagonal (Rn,( 0. K)));

        

         A5: R = (Rn ^ <*R1*>) by A3, FINSEQ_3: 55;

        then

         A6: ( block_diagonal (R,( 0. K))) = ( block_diagonal ( <*bR, R1*>,( 0. K))) by Th35;

        ( Sum ( Len <*bR, R1*>)) = (( len bR) + ( len R1)) by Th16

        .= (( Sum ( Len Rn)) + ( len R1)) by Def5

        .= ( Sum (( Len Rn) ^ <*( len R1)*>)) by RVSUM_1: 74

        .= ( Sum (( Len Rn) ^ ( Len <*R1*>))) by Th15

        .= ( Sum ( Len R)) by A5, Th14;

        

        hence ( Det ( block_diagonal (R,( 0. K)))) = (( Det bR) * ( Det R1)) by A6, Th52

        .= (( Product ( Det Rn)) * ( Det R1)) by A2, A4

        .= ( Product (( Det Rn) ^ <*( Det R1)*>)) by GROUP_4: 6

        .= ( Product (( Det Rn) ^ ( Det <*R1*>))) by Th49

        .= ( Product ( Det R)) by A5, Th50;

      end;

      

       A7: P[ 0 ]

      proof

        let R such that

         A8: ( len R) = 0 ;

        ( Len R) = {} by A8;

        

        hence ( Det ( block_diagonal (R,( 0. K)))) = ( 1_ K) by MATRIXR2: 41, RVSUM_1: 72

        .= ( Product ( Det R)) by A8, FVSUM_1: 80;

      end;

      for n holds P[n] from NAT_1:sch 2( A7, A1);

      hence thesis;

    end;

    theorem :: MATRIXJ1:54

    

     Th54: ( len A1) <> ( width A1) & N = ( block_diagonal ( <*A1, A2*>,( 0. K))) implies ( Det N) = ( 0. K)

    proof

      defpred P[ Nat] means for A1 st ( len A1) <> ( width A1) & ( width A1) = $1 holds for n, N st N = ( block_diagonal ( <*A1, A2*>,( 0. K))) holds ( Det N) = ( 0. K);

      

       A1: for k st P[k] holds P[(k + 1)]

      proof

        let k such that

         A2: P[k];

        set k1 = (k + 1);

        let A1 such that

         A3: ( len A1) <> ( width A1) and

         A4: ( width A1) = k1;

        

         A5: ( Sum ( Len <*A1, A2*>)) = (( len A1) + ( len A2)) by Th16;

        1 <= k1 by NAT_1: 14;

        then

         A6: 1 in ( Seg ( width A1)) by A4;

        

         A7: ( len (A1 ^ A2)) = (( len A1) + ( len A2)) by FINSEQ_1: 22;

        

         A8: ( Sum ( Width <*A1, A2*>)) = (( width A1) + ( width A2)) by Th20;

        let n, N such that

         A9: N = ( block_diagonal ( <*A1, A2*>,( 0. K)));

        

         A10: ( len N) = ( Sum ( Len <*A1, A2*>)) by A9, Def5;

        set C = ( LaplaceExpC (N,1));

        

         A11: n = ( len N) by MATRIX_0: 24;

        then

         A12: ( len C) = ( len N) by LAPLACE:def 8;

        

         A13: ( len A1) <> 0 by A3, MATRIX_0:def 3;

        then

         A14: (1 + 0 ) <= ( len N) by A10, A5, NAT_1: 14;

        then

         A15: 1 in ( Seg n) by A11;

        

         A16: ( width N) = ( Sum ( Width <*A1, A2*>)) by A9, Def5;

        set L0 = (( len N) |-> ( 0. K));

        

         A17: n = ( width N) by MATRIX_0: 24;

        

         A18: ( len A1) >= 1 by A13, NAT_1: 14;

         A19:

        now

          let i such that

           A20: 1 <= i and

           A21: i <= ( len N);

          

           A22: i in ( Seg n) by A11, A20, A21;

          i in ( dom C) by A12, A20, A21, FINSEQ_3: 25;

          then

           A23: (C . i) = ((N * (i,1)) * ( Cofactor (N,i,1))) by LAPLACE:def 8;

          

           A24: (N * (i,1)) = (( Line (N,i)) . 1) by A17, A15, MATRIX_0:def 7;

          

           A25: i in ( dom (A1 ^ A2)) by A10, A5, A7, A20, A21, FINSEQ_3: 25;

          now

            per cases by A25, FINSEQ_1: 25;

              suppose

               A26: i in ( dom A1);

              now

                per cases by A18, XXREAL_0: 1;

                  suppose

                   A27: ( len A1) = 1;

                  then k <> 0 by A3, A4;

                  then k in ( Seg k) by FINSEQ_1: 3;

                  then

                   A28: 1 <= k by FINSEQ_1: 1;

                  then (1 + 1) <= k1 by XREAL_1: 7;

                  then

                   A29: 2 in ( Seg k1);

                  

                   A30: 1 <= i by A26, FINSEQ_3: 25;

                  i <= 1 by A26, A27, FINSEQ_3: 25;

                  then

                   A31: i = 1 by A30, XXREAL_0: 1;

                  set Q = (( Seg n) \ {1});

                  ( Seg 1) c= ( Seg n) by A11, A14, FINSEQ_1: 5;

                  

                  then

                   A32: ( card Q) = (( card ( Seg n)) - ( card ( Seg 1))) by CARD_2: 44, FINSEQ_1: 2

                  .= (( card ( Seg n)) - 1) by FINSEQ_1: 57

                  .= (n - 1) by FINSEQ_1: 57

                  .= (k + ( width A2)) by A4, A17, A16, A8;

                  

                  then

                   A33: ( card Q) = (((k + ( width A2)) + 1) -' 1) by NAT_D: 34

                  .= (n -' 1) by A4, A9, A17, A8, Def5;

                  (1 + 0 ) <= ( card Q) by A32, A28, XREAL_1: 7;

                  then

                   A34: 1 in ( Seg ( card Q));

                  ( Delete (N,i,1)) = ( Deleting (N,i,1)) by A15, A22, LAPLACE:def 1

                  .= ( Segm (N,Q,Q)) by A31, MATRIX13: 58;

                  then

                   A35: ( Col (( Delete (N,i,1)),1)) = (( Col (N,(( Sgm Q) . 1))) * ( Sgm Q)) by A11, A34, MATRIX13: 49, XBOOLE_1: 36;

                  now

                    

                     A36: ( dom (( len A2) |-> ( 0. K))) = ( Seg ( len A2)) by FINSEQ_2: 124;

                    

                     A37: n = (1 + ( card Q)) by A4, A9, A17, A8, A32, Def5;

                    

                     A38: ( len ( Col (A1,2))) = 1 by A27, CARD_1:def 7;

                    let j be Element of NAT such that

                     A39: j in ( Seg (n -' 1));

                    ( dom ( Sgm Q)) = ( Seg ( card Q)) by FINSEQ_3: 40, XBOOLE_1: 36;

                    

                    hence (( Col (( Delete (N,i,1)),1)) . j) = (( Col (N,(( Sgm Q) . 1))) . (( Sgm Q) . j)) by A33, A35, A39, FUNCT_1: 13

                    .= (( Col (N,(1 + 1))) . (( Sgm Q) . j)) by A34, A37, FINSEQ_1: 2, MATRIX15: 8

                    .= (( Col (N,(1 + 1))) . (j + 1)) by A33, A39, A37, FINSEQ_1: 2, MATRIX15: 8

                    .= ((( Col (A1,2)) ^ (( len A2) |-> ( 0. K))) . (j + 1)) by A4, A9, A29, Th24

                    .= ((( len A2) |-> ( 0. K)) . j) by A4, A10, A11, A17, A16, A5, A8, A27, A32, A33, A39, A38, A36, FINSEQ_1:def 7

                    .= ( 0. K) by A4, A10, A11, A17, A16, A5, A8, A27, A32, A33, A39, FINSEQ_2: 57;

                  end;

                  hence ( Det ( Delete (N,i,1))) = ( 0. K) by A33, A34, MATRIX_9: 53;

                end;

                  suppose

                   A40: ( len A1) > 1;

                  set DL = ( DelLine (A1,i));

                  set DC = ( DelCol (DL,1));

                  

                   A41: (k1 -' 1) = k by NAT_D: 34;

                  reconsider L1 = (( len A1) - 1) as Element of NAT by A40, NAT_1: 21;

                  

                   A42: ( len DC) = ( len DL) by MATRIX_0:def 13;

                  

                   A43: ( width A1) = ( width DL) by A40, LAPLACE: 4;

                  then

                   A44: ( width DC) = (( width A1) -' 1) by A6, LAPLACE: 3;

                  

                   A45: ( Delete (N,i,1)) = ( Deleting (N,i,1)) by A15, A22, LAPLACE:def 1

                  .= ( DelCol (( DelLine (N,i)),1))

                  .= ( DelCol (( block_diagonal (( <*DL*> ^ <*A2*>),( 0. K))),1)) by A9, A26, A43, Th41

                  .= ( block_diagonal ( <*DC, A2*>,( 0. K))) by A6, A43, Th43;

                  ( len A1) = (L1 + 1);

                  then ( len DC) <> ( width DC) by A3, A4, A26, A44, A42, A41, FINSEQ_3: 109;

                  hence ( 0. K) = ( Det ( Delete (N,i,1))) by A2, A4, A44, A45, NAT_D: 34;

                end;

              end;

              then ( 0. K) = ( Cofactor (N,i,1));

              hence ( 0. K) = (C . i) by A23;

            end;

              suppose

               A46: ex j st j in ( dom A2) & i = (( len A1) + j);

              

               A47: ( dom (( width A1) |-> ( 0. K))) = ( Seg ( width A1)) by FINSEQ_2: 124;

              consider j such that

               A48: j in ( dom A2) and

               A49: i = (( len A1) + j) by A46;

              (N * (i,1)) = (((( width A1) |-> ( 0. K)) ^ ( Line (A2,j))) . 1) by A9, A24, A48, A49, Th23

              .= ((( width A1) |-> ( 0. K)) . 1) by A6, A47, FINSEQ_1:def 7

              .= ( 0. K) by A6, FINSEQ_2: 57;

              hence ( 0. K) = (C . i) by A23;

            end;

          end;

          hence (C . i) = (L0 . i) by A11, A22, FINSEQ_2: 57;

        end;

        ( len L0) = ( len N) by CARD_1:def 7;

        then C = L0 by A12, A19;

        then C = (( len N) |-> (( 0. K) * ( 0. K)));

        

        then ( Sum C) = ( Sum (( 0. K) * (( len N) |-> ( 0. K)))) by FVSUM_1: 53

        .= (( 0. K) * ( Sum (( len N) |-> ( 0. K)))) by FVSUM_1: 73

        .= ( 0. K);

        hence thesis by A15, LAPLACE: 27;

      end;

      

       A50: P[ 0 ]

      proof

        let A1 such that

         A51: ( len A1) <> ( width A1) and

         A52: ( width A1) = 0 ;

        

         A53: ( len A1) in ( Seg ( len A1)) by A51, A52, FINSEQ_1: 3;

        

         A54: ( Sum ( Width <*A1, A2*>)) = (( width A1) + ( width A2)) by Th20;

        

         A55: ( Sum ( Len <*A1, A2*>)) = (( len A1) + ( len A2)) by Th16;

        

         A56: ( len A1) <= (( len A1) + ( len A2)) by NAT_1: 11;

        let n, N such that

         A57: N = ( block_diagonal ( <*A1, A2*>,( 0. K)));

        

         A58: ( width N) = ( Sum ( Width <*A1, A2*>)) by A57, Def5;

        ( len N) = ( Sum ( Len <*A1, A2*>)) by A57, Def5;

        then

         A59: ( Seg ( len A1)) c= ( Seg ( len N)) by A55, A56, FINSEQ_1: 5;

        

         A60: n = ( len N) by MATRIX_0:def 2;

        ( dom A1) = ( Seg ( len A1)) by FINSEQ_1:def 3;

        

        then ( Line (N,( len A1))) = (( Line (A1,( len A1))) ^ (( width A2) |-> ( 0. K))) by A57, A53, Th23

        .= (( <*> the carrier of K) ^ (( width A2) |-> ( 0. K))) by A52

        .= (( width A2) |-> ( 0. K)) by FINSEQ_1: 34

        .= (( 0. K) * ( Line (N,( len A1)))) by A52, A58, A54, FVSUM_1: 58;

        

        hence ( Det N) = ( Det ( RLine (N,( len A1),(( 0. K) * ( Line (N,( len A1))))))) by MATRIX11: 30

        .= (( 0. K) * ( Det N)) by A60, A53, A59, MATRIX11: 35

        .= ( 0. K);

      end;

      for n holds P[n] from NAT_1:sch 2( A50, A1);

      hence thesis;

    end;

    theorem :: MATRIXJ1:55

    ( Len G) <> ( Width G) implies for M be Matrix of n, K st M = ( block_diagonal (G,( 0. K))) holds ( Det M) = ( 0. K)

    proof

      set B = ( block_diagonal (G,( 0. K)));

      defpred P[ Nat] means $1 in ( Seg ( len G)) & (( Len G) . $1) <> (( Width G) . $1);

      

       A1: ( Seg ( len G)) = ( dom G) by FINSEQ_1:def 3;

      assume ( Len G) <> ( Width G);

      then

       A2: ex k st P[k] by FINSEQ_2: 119;

      consider k such that

       A3: P[k] and

       A4: for n st P[n] holds k <= n from NAT_1:sch 5( A2);

      1 <= k by A3, FINSEQ_1: 1;

      then

      reconsider k1 = (k - 1) as Element of NAT by NAT_1: 21;

      set Gk = (G | k1);

      

       A5: ( len G) = ( len ( Width G)) by CARD_1:def 7;

      then k in ( dom ( Width G)) by A3, FINSEQ_1:def 3;

      then

       A6: ( width (G . k)) = (( Width G) . k) by Def4;

      set bGk = ( block_diagonal (Gk,( 0. K)));

      set bGk1 = ( block_diagonal ((G /^ k),( 0. K)));

      set bGG = ( block_diagonal ( <*(G . k), bGk1*>,( 0. K)));

      (k1 + 1) <= ( len G) by A3, FINSEQ_1: 1;

      then

       A7: k1 < ( len G) by NAT_1: 13;

      then ( len (( Width G) | k1)) = k1 by A5, FINSEQ_1: 59;

      then

       A8: ( dom (( Width G) | k1)) = ( Seg k1) by FINSEQ_1:def 3;

      

       A9: ( len G) = ( len ( Len G)) by CARD_1:def 7;

      then ( len (( Len G) | k1)) = k1 by A7, FINSEQ_1: 59;

      then

       A10: ( dom (( Len G) | k1)) = ( Seg k1) by FINSEQ_1:def 3;

      

       A11: ( Seg k1) c= ( Seg ( len G)) by A7, FINSEQ_1: 5;

       A12:

      now

        let j such that

         A13: j in ( Seg k1);

        j <= k1 by A13, FINSEQ_1: 1;

        then j < (k1 + 1) by NAT_1: 13;

        then

         A14: (( Len G) . j) = (( Width G) . j) by A4, A11, A13;

        

        thus (( Len Gk) . j) = ((( Len G) | k1) . j) by Th17

        .= (( Len G) . j) by A10, A13, FUNCT_1: 47

        .= ((( Width G) | k1) . j) by A8, A13, A14, FUNCT_1: 47

        .= (( Width Gk) . j) by Th21;

      end;

      ( len Gk) = k1 by A7, FINSEQ_1: 59;

      then ( Len Gk) = ( Width Gk) by A12, FINSEQ_2: 119;

      then

      reconsider bGk as Matrix of ( Sum ( Len Gk)), K;

      let M be Matrix of n, K;

      assume M = B;

      

      then

       A15: M = ( block_diagonal (((G | (k1 + 1)) ^ (G /^ k)),( 0. K))) by RFINSEQ: 8

      .= ( block_diagonal (((Gk ^ <*(G . k)*>) ^ (G /^ k)),( 0. K))) by A3, A1, FINSEQ_5: 10

      .= ( block_diagonal ((Gk ^ ( <*(G . k)*> ^ (G /^ k))),( 0. K))) by FINSEQ_1: 32

      .= ( block_diagonal (( <*bGk*> ^ ( <*(G . k)*> ^ (G /^ k))),( 0. K))) by Th35

      .= ( block_diagonal (( <*bGk*> ^ <*( block_diagonal (( <*(G . k)*> ^ (G /^ k)),( 0. K)))*>),( 0. K))) by Th36

      .= ( block_diagonal ( <*bGk, bGG*>,( 0. K))) by Th36;

      then

       A16: ( len M) = ( Sum ( Len <*bGk, bGG*>)) by Def5;

      

       A17: ( Sum ( Width <*bGk, bGG*>)) = (( width bGk) + ( width bGG)) by Th20;

      

       A18: ( width bGk) = ( Sum ( Len Gk)) by MATRIX_0: 24;

      

       A19: ( len bGk) = ( Sum ( Len Gk)) by Def5;

      

       A20: ( width M) = n by MATRIX_0: 24;

      

       A21: ( Sum ( Len <*bGk, bGG*>)) = (( len bGk) + ( len bGG)) by Th16;

      

       A22: ( len M) = n by MATRIX_0: 24;

      ( width M) = ( Sum ( Width <*bGk, bGG*>)) by A15, Def5;

      then

      reconsider bGG9 = bGG as Matrix of ( len bGG), K by A16, A22, A20, A21, A19, A18, A17, MATRIX_0: 51;

      k in ( dom ( Len G)) by A3, A9, FINSEQ_1:def 3;

      then ( len (G . k)) = (( Len G) . k) by Def3;

      then ( Det bGG9) = ( 0. K) by A3, A6, Th54;

      

      hence ( Det M) = (( Det bGk) * ( 0. K)) by A15, A16, A22, Th52

      .= ( 0. K);

    end;

    begin

    definition

      let K;

      let f be FinSequence of NAT ;

      :: MATRIXJ1:def8

      func 1. (K,f) -> FinSequence_of_Square-Matrix of K means

      : Def8: ( dom it ) = ( dom f) & for i st i in ( dom it ) holds (it . i) = ( 1. (K,(f . i)));

      existence

      proof

        deffunc G( Nat) = ( 1. (K,(f . $1)));

        consider IT be FinSequence such that

         A1: ( len IT) = ( len f) and

         A2: for k st k in ( dom IT) holds (IT . k) = G(k) from FINSEQ_1:sch 2;

        ( rng IT) c= ((the carrier of K * ) * )

        proof

          let y be object;

          assume y in ( rng IT);

          then

          consider x be object such that

           A3: x in ( dom IT) and

           A4: (IT . x) = y by FUNCT_1:def 3;

          reconsider x as Nat by A3;

          (IT . x) = ( 1. (K,(f . x))) by A2, A3;

          hence thesis by A4, FINSEQ_1:def 11;

        end;

        then

        reconsider IT as FinSequence of ((the carrier of K * ) * ) by FINSEQ_1:def 4;

        now

          let i;

          assume i in ( dom IT);

          then (IT . i) = ( 1. (K,(f . i))) by A2;

          hence (IT . i) is Matrix of K;

        end;

        then

        reconsider IT as FinSequence_of_Matrix of K by Def2;

        now

          let i;

          assume i in ( dom IT);

          then (IT . i) = ( 1. (K,(f . i))) by A2;

          hence ex n st (IT . i) is Matrix of n, K;

        end;

        then

        reconsider IT as FinSequence_of_Square-Matrix of K by Def6;

        take IT;

        thus thesis by A1, A2, FINSEQ_3: 29;

      end;

      uniqueness

      proof

        let T1,T2 be FinSequence_of_Square-Matrix of K such that

         A5: ( dom T1) = ( dom f) and

         A6: for i st i in ( dom T1) holds (T1 . i) = ( 1. (K,(f . i))) and

         A7: ( dom T2) = ( dom f) and

         A8: for i st i in ( dom T2) holds (T2 . i) = ( 1. (K,(f . i)));

        now

          let i such that

           A9: i in ( dom f);

          

          thus (T1 . i) = ( 1. (K,(f . i))) by A5, A6, A9

          .= (T2 . i) by A7, A8, A9;

        end;

        hence thesis by A5, A7, FINSEQ_1: 13;

      end;

    end

    theorem :: MATRIXJ1:56

    ( Len ( 1. (K,f))) = f & ( Width ( 1. (K,f))) = f

    proof

      set ONE = ( 1. (K,f));

      

       A1: ( dom ONE) = ( dom f) by Def8;

      

       A2: ( dom ( Len ONE)) = ( dom ONE) by Def3;

      now

        let i such that

         A3: i in ( dom ( Len ONE));

        

        thus (( Len ONE) . i) = ( len (ONE . i)) by A3, Def3

        .= ( len ( 1. (K,(f . i)))) by A2, A3, Def8

        .= (f . i) by MATRIX_0: 24;

      end;

      hence ( Len ONE) = f by A2, A1, FINSEQ_1: 13;

      

       A4: ( dom ( Width ONE)) = ( dom ONE) by Def4;

      now

        let i such that

         A5: i in ( dom ( Width ONE));

        

        thus (( Width ONE) . i) = ( width (ONE . i)) by A5, Def4

        .= ( width ( 1. (K,(f . i)))) by A4, A5, Def8

        .= (f . i) by MATRIX_0: 24;

      end;

      hence thesis by A4, A1, FINSEQ_1: 13;

    end;

    theorem :: MATRIXJ1:57

    

     Th57: for i be Element of NAT holds ( 1. (K, <*i*>)) = <*( 1. (K,i))*>

    proof

      let i be Element of NAT ;

      

       A1: ( dom ( 1. (K, <*i*>))) = ( dom <*i*>) by Def8

      .= ( Seg 1) by FINSEQ_1: 38;

      then 1 in ( dom ( 1. (K, <*i*>)));

      

      then

       A2: (( 1. (K, <*i*>)) . 1) = ( 1. (K,( <*i*> . 1))) by Def8

      .= ( 1. (K,i)) by FINSEQ_1: 40;

      ( len ( 1. (K, <*i*>))) = 1 by A1, FINSEQ_1:def 3;

      hence thesis by A2, FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:58

    

     Th58: ( 1. (K,(f ^ g))) = (( 1. (K,f)) ^ ( 1. (K,g)))

    proof

      set F = ( 1. (K,f));

      set G = ( 1. (K,g));

      set FG = (F ^ G);

      set ONE = ( 1. (K,(f ^ g)));

      

       A1: ( len (f ^ g)) = (( len f) + ( len g)) by FINSEQ_1: 22;

      

       A2: ( dom ONE) = ( dom (f ^ g)) by Def8;

      

       A3: ( dom G) = ( dom g) by Def8;

      then

       A4: ( len G) = ( len g) by FINSEQ_3: 29;

      

       A5: ( dom F) = ( dom f) by Def8;

      then

       A6: ( len F) = ( len f) by FINSEQ_3: 29;

      

       A7: ( len FG) = (( len F) + ( len G)) by FINSEQ_1: 22;

       A8:

      now

        let i such that

         A9: 1 <= i and

         A10: i <= ( len FG);

        i in ( dom ONE) by A2, A6, A4, A7, A1, A9, A10, FINSEQ_3: 25;

        then

         A11: (ONE . i) = ( 1. (K,((f ^ g) . i))) by Def8;

        

         A12: i in ( dom FG) by A9, A10, FINSEQ_3: 25;

        now

          per cases by A12, FINSEQ_1: 25;

            suppose

             A13: i in ( dom F);

            

            hence (ONE . i) = ( 1. (K,(f . i))) by A5, A11, FINSEQ_1:def 7

            .= (F . i) by A13, Def8

            .= (FG . i) by A13, FINSEQ_1:def 7;

          end;

            suppose ex n st n in ( dom G) & i = (( len F) + n);

            then

            consider n such that

             A14: n in ( dom G) and

             A15: i = (( len F) + n);

            

            thus (ONE . i) = ( 1. (K,(g . n))) by A3, A6, A11, A14, A15, FINSEQ_1:def 7

            .= (G . n) by A14, Def8

            .= (FG . i) by A14, A15, FINSEQ_1:def 7;

          end;

        end;

        hence (ONE . i) = (FG . i);

      end;

      ( len ONE) = ( len (f ^ g)) by A2, FINSEQ_3: 29;

      hence thesis by A6, A4, A1, A8, FINSEQ_1: 14, FINSEQ_1: 22;

    end;

    theorem :: MATRIXJ1:59

    ( 1. (K,(f | n))) = (( 1. (K,f)) | n)

    proof

      ( dom ( 1. (K,(f | n)))) = ( dom (f | n)) by Def8;

      then

       A1: ( len ( 1. (K,(f | n)))) = ( len (f | n)) by FINSEQ_3: 29;

      ( dom ( 1. (K,f))) = ( dom f) by Def8;

      then

       A2: ( len ( 1. (K,f))) = ( len f) by FINSEQ_3: 29;

      per cases ;

        suppose

         A3: n > ( len f);

        then (f | n) = f by FINSEQ_1: 58;

        hence thesis by A2, A3, FINSEQ_1: 58;

      end;

        suppose

         A4: n <= ( len f);

        f = ((f | n) ^ (f /^ n)) by RFINSEQ: 8;

        then

         A5: ( 1. (K,f)) = (( 1. (K,(f | n))) ^ ( 1. (K,(f /^ n)))) by Th58;

        ( len ( 1. (K,(f | n)))) = n by A1, A4, FINSEQ_1: 59;

        hence thesis by A5, FINSEQ_5: 23;

      end;

    end;

    theorem :: MATRIXJ1:60

    

     Th60: ( block_diagonal ( <*( 1. (K,i)), ( 1. (K,j))*>,( 0. K))) = ( 1. (K,(i + j)))

    proof

      set I = ( 1. (K,i));

      set J = ( 1. (K,j));

      set B = ( block_diagonal ( <*I, J*>,( 0. K)));

      

       A1: ( len I) = i by MATRIX_0: 24;

      

       A2: ( Sum ( Len <*J*>)) = ( len J) by Lm4;

      

       A3: ( len J) = j by MATRIX_0: 24;

      then

       A4: ( Indices ( block_diagonal ( <*J*>,( 0. K)))) = [:( Seg j), ( Seg j):] by A2, MATRIX_0: 24;

      ( Sum ( Len <*I, J*>)) = (( len I) + ( len J)) by Th16;

      then

      reconsider B as Matrix of (i + j), K by A1, A3;

      

       A5: ( Indices B) = [:( Seg (i + j)), ( Seg (i + j)):] by MATRIX_0: 24;

      

       A6: ( Indices J) = [:( Seg j), ( Seg j):] by MATRIX_0: 24;

      

       A7: ( width I) = i by MATRIX_0: 24;

      

       A8: ( Indices I) = [:( Seg i), ( Seg i):] by MATRIX_0: 24;

      

       A9: ( Sum ( Width <*I*>)) = ( width I) by Lm5;

      

       A10: ( Sum ( Len <*I*>)) = ( len I) by Lm4;

      then

       A11: ( Indices ( block_diagonal ( <*I*>,( 0. K)))) = [:( Seg i), ( Seg i):] by A1, MATRIX_0: 24;

       A12:

      now

        let n, m such that

         A13: [n, m] in ( Indices B) and

         A14: n <> m;

        m in ( Seg (i + j)) by A5, A13, ZFMISC_1: 87;

        then

         A15: m >= 1 by FINSEQ_1: 1;

        n in ( Seg (i + j)) by A5, A13, ZFMISC_1: 87;

        then

         A16: n >= 1 by FINSEQ_1: 1;

        now

          per cases ;

            suppose

             A17: n <= i & m <= i;

            then

             A18: m in ( Seg i) by A15;

            n in ( Seg i) by A16, A17;

            then

             A19: [n, m] in [:( Seg i), ( Seg i):] by A18, ZFMISC_1: 87;

            

            hence (B * (n,m)) = (( block_diagonal ( <*I*>,( 0. K))) * (n,m)) by A2, A11, Th26

            .= (I * (n,m)) by Th34

            .= ( 0. K) by A8, A14, A19, MATRIX_1:def 3;

          end;

            suppose

             A20: n > i & m > i;

            then

             A21: (m - i) <> 0 ;

            (n -' i) = (n - i) by A20, XREAL_1: 233;

            then

             A22: n = ((n -' i) + i);

            (m -' i) = (m - i) by A20, XREAL_1: 233;

            then

             A23: m = ((m -' i) + i);

            (n - i) <> 0 by A20;

            then

             A24: [(n -' i), (m -' i)] in [:( Seg j), ( Seg j):] by A10, A9, A1, A7, A4, A13, A21, A22, A23, Th27;

            

            hence (B * (n,m)) = (( block_diagonal ( <*J*>,( 0. K))) * ((n -' i),(m -' i))) by A10, A9, A1, A7, A4, A22, A23, Th28

            .= (J * ((n -' i),(m -' i))) by Th34

            .= ( 0. K) by A6, A14, A22, A23, A24, MATRIX_1:def 3;

          end;

            suppose n <= i & m > i or n > i & m <= i;

            hence (B * (n,m)) = ( 0. K) by A10, A9, A2, A1, A7, A13, Th29;

          end;

        end;

        hence (B * (n,m)) = ( 0. K);

      end;

      now

        let n such that

         A25: [n, n] in ( Indices B);

        n in ( Seg (i + j)) by A5, A25, ZFMISC_1: 87;

        then

         A26: n >= 1 by FINSEQ_1: 1;

        now

          per cases ;

            suppose n <= i;

            then n in ( Seg i) by A26;

            then

             A27: [n, n] in [:( Seg i), ( Seg i):] by ZFMISC_1: 87;

            

            hence (B * (n,n)) = (( block_diagonal ( <*I*>,( 0. K))) * (n,n)) by A2, A11, Th26

            .= (I * (n,n)) by Th34

            .= ( 1_ K) by A8, A27, MATRIX_1:def 3;

          end;

            suppose

             A28: n > i;

            then (n -' i) = (n - i) by XREAL_1: 233;

            then

             A29: n = ((n -' i) + i);

            (n - i) <> 0 by A28;

            then

             A30: [(n -' i), (n -' i)] in [:( Seg j), ( Seg j):] by A10, A9, A1, A7, A4, A25, A29, Th27;

            

            hence (B * (n,n)) = (( block_diagonal ( <*J*>,( 0. K))) * ((n -' i),(n -' i))) by A10, A9, A1, A7, A4, A29, Th28

            .= (J * ((n -' i),(n -' i))) by Th34

            .= ( 1_ K) by A6, A30, MATRIX_1:def 3;

          end;

        end;

        hence (B * (n,n)) = ( 1_ K);

      end;

      hence thesis by A12, MATRIX_1:def 3;

    end;

    theorem :: MATRIXJ1:61

    ( block_diagonal (( 1. (K,f)),( 0. K))) = ( 1. (K,( Sum f)))

    proof

      defpred P[ Nat] means for f st ( len f) = $1 holds ( block_diagonal (( 1. (K,f)),( 0. K))) = ( 1. (K,( Sum f)));

      

       A1: for n st P[n] holds P[(n + 1)]

      proof

        let n such that

         A2: P[n];

        set n1 = (n + 1);

        let f such that

         A3: ( len f) = n1;

        

         A4: ( len (f | n)) = n by A3, FINSEQ_1: 59, NAT_1: 11;

        1 <= n1 by NAT_1: 11;

        then n1 in ( dom f) by A3, FINSEQ_3: 25;

        then

         A5: (f /. n1) = (f . n1) by PARTFUN1:def 6;

        

         A6: f = ((f | n) ^ <*(f . n1)*>) by A3, FINSEQ_3: 55;

        

        hence ( block_diagonal (( 1. (K,f)),( 0. K))) = ( block_diagonal ((( 1. (K,(f | n))) ^ ( 1. (K, <*(f /. n1)*>))),( 0. K))) by A5, Th58

        .= ( block_diagonal ((( 1. (K,(f | n))) ^ <*( 1. (K,(f . n1)))*>),( 0. K))) by A5, Th57

        .= ( block_diagonal (( <*( block_diagonal (( 1. (K,(f | n))),( 0. K)))*> ^ <*( 1. (K,(f . n1)))*>),( 0. K))) by Th35

        .= ( block_diagonal ( <*( 1. (K,( Sum (f | n)))), ( 1. (K,(f . n1)))*>,( 0. K))) by A2, A4

        .= ( 1. (K,(( Sum (f | n)) + (f . n1)))) by Th60

        .= ( 1. (K,( Sum f))) by A6, RVSUM_1: 74;

      end;

      

       A7: P[ 0 ]

      proof

        let f such that

         A8: ( len f) = 0 ;

        ( dom ( 1. (K,f))) = ( dom f) by Def8;

        then ( len ( 1. (K,f))) = 0 by A8, FINSEQ_3: 29;

        then

         A9: ( Sum ( Len ( 1. (K,f)))) = 0 by RVSUM_1: 72;

        f = {} by A8;

        hence thesis by A9, MATRIX_0: 45, RVSUM_1: 72;

      end;

      for n holds P[n] from NAT_1:sch 2( A7, A1);

      then P[( len f)];

      hence thesis;

    end;

    reserve p,p1 for FinSequence of K;

    begin

    definition

      let K, G, p;

      :: MATRIXJ1:def9

      func mlt (p,G) -> FinSequence_of_Matrix of K means

      : Def9: ( dom it ) = ( dom G) & for i st i in ( dom it ) holds (it . i) = ((p /. i) * (G . i));

      existence

      proof

        deffunc G( Nat) = ((p /. $1) * (G . $1));

        consider IT be FinSequence such that

         A1: ( len IT) = ( len G) and

         A2: for k st k in ( dom IT) holds (IT . k) = G(k) from FINSEQ_1:sch 2;

        ( rng IT) c= ((the carrier of K * ) * )

        proof

          let y be object;

          assume y in ( rng IT);

          then

          consider x be object such that

           A3: x in ( dom IT) and

           A4: (IT . x) = y by FUNCT_1:def 3;

          reconsider x as Nat by A3;

          (IT . x) = ((p /. x) * (G . x)) by A2, A3;

          hence thesis by A4, FINSEQ_1:def 11;

        end;

        then

        reconsider IT as FinSequence of ((the carrier of K * ) * ) by FINSEQ_1:def 4;

        now

          let i;

          assume i in ( dom IT);

          then (IT . i) = ((p /. i) * (G . i)) by A2;

          hence (IT . i) is Matrix of K;

        end;

        then

        reconsider IT as FinSequence_of_Matrix of K by Def2;

        take IT;

        thus thesis by A1, A2, FINSEQ_3: 29;

      end;

      uniqueness

      proof

        let T1,T2 be FinSequence_of_Matrix of K such that

         A5: ( dom T1) = ( dom G) and

         A6: for i st i in ( dom T1) holds (T1 . i) = ((p /. i) * (G . i)) and

         A7: ( dom T2) = ( dom G) and

         A8: for i st i in ( dom T2) holds (T2 . i) = ((p /. i) * (G . i));

        now

          let i such that

           A9: i in ( dom G);

          

          thus (T1 . i) = ((p /. i) * (G . i)) by A5, A6, A9

          .= (T2 . i) by A7, A8, A9;

        end;

        hence thesis by A5, A7, FINSEQ_1: 13;

      end;

    end

    registration

      let K;

      let R, p;

      cluster ( mlt (p,R)) -> Square-Matrix-yielding;

      coherence

      proof

        set M = ( mlt (p,R));

        let i;

        assume i in ( dom M);

        then

         A1: (M . i) = ((p /. i) * (R . i)) by Def9;

        consider n such that

         A2: (R . i) is Matrix of n, K;

        take n;

        ( len (R . i)) = n by A2, MATRIX_0: 24;

        hence (M . i) is Matrix of n, K by A1;

      end;

    end

    theorem :: MATRIXJ1:62

    ( Len ( mlt (p,G))) = ( Len G) & ( Width ( mlt (p,G))) = ( Width G)

    proof

      set M = ( mlt (p,G));

      

       A1: ( dom ( Len M)) = ( dom M) by Def3;

      

       A2: ( dom M) = ( dom G) by Def9;

      

       A3: ( dom ( Len G)) = ( dom G) by Def3;

      now

        let i such that

         A4: i in ( dom ( Len M));

        

        thus (( Len M) . i) = ( len (M . i)) by A4, Def3

        .= ( len ((p /. i) * (G . i))) by A1, A4, Def9

        .= ( len (G . i)) by MATRIX_3:def 5

        .= (( Len G) . i) by A1, A3, A2, A4, Def3;

      end;

      hence ( Len M) = ( Len G) by A1, A3, A2, FINSEQ_1: 13;

      

       A5: ( dom ( Width M)) = ( dom M) by Def4;

      

       A6: ( dom ( Width G)) = ( dom G) by Def4;

      now

        let i such that

         A7: i in ( dom ( Width M));

        

        thus (( Width M) . i) = ( width (M . i)) by A7, Def4

        .= ( width ((p /. i) * (G . i))) by A5, A7, Def9

        .= ( width (G . i)) by MATRIX_3:def 5

        .= (( Width G) . i) by A6, A5, A2, A7, Def4;

      end;

      hence thesis by A6, A5, A2, FINSEQ_1: 13;

    end;

    theorem :: MATRIXJ1:63

    

     Th63: ( mlt (p, <*A*>)) = <*((p /. 1) * A)*>

    proof

      

       A1: ( dom ( mlt (p, <*A*>))) = ( dom <*A*>) by Def9

      .= ( Seg 1) by FINSEQ_1: 38;

      then 1 in ( dom ( mlt (p, <*A*>)));

      

      then

       A2: (( mlt (p, <*A*>)) . 1) = ((p /. 1) * ( <*A*> . 1)) by Def9

      .= ((p /. 1) * A) by FINSEQ_1: 40;

      ( len ( mlt (p, <*A*>))) = 1 by A1, FINSEQ_1:def 3;

      hence thesis by A2, FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:64

    

     Th64: ( len G) = ( len p) & ( len G1) <= ( len p1) implies ( mlt ((p ^ p1),(G ^ G1))) = (( mlt (p,G)) ^ ( mlt (p1,G1)))

    proof

      assume that

       A1: ( len G) = ( len p) and

       A2: ( len G1) <= ( len p1);

      

       A3: ( dom G) = ( dom p) by A1, FINSEQ_3: 29;

      ( dom G1) = ( Seg ( len G1)) by FINSEQ_1:def 3;

      then ( dom G1) c= ( Seg ( len p1)) by A2, FINSEQ_1: 5;

      then

       A4: ( dom G1) c= ( dom p1) by FINSEQ_1:def 3;

      set M1 = ( mlt (p1,G1));

      set M = ( mlt (p,G));

      set GG1 = (G ^ G1);

      set pp1 = (p ^ p1);

      set MM = ( mlt (pp1,GG1));

      

       A5: ( dom GG1) = ( Seg ( len GG1)) by FINSEQ_1:def 3;

      

       A6: ( dom MM) = ( dom GG1) by Def9;

      

       A7: ( dom M1) = ( dom G1) by Def9;

      then

       A8: ( len M1) = ( len G1) by FINSEQ_3: 29;

      

       A9: ( dom M) = ( dom G) by Def9;

      then

       A10: ( len M) = ( len G) by FINSEQ_3: 29;

      ( len GG1) = (( len G) + ( len G1)) by FINSEQ_1: 22;

      then ( len GG1) <= (( len p) + ( len p1)) by A1, A2, XREAL_1: 7;

      then ( dom GG1) c= ( Seg (( len p) + ( len p1))) by A5, FINSEQ_1: 5;

      then

       A11: ( dom GG1) c= ( dom pp1) by FINSEQ_1:def 7;

       A12:

      now

        let i such that

         A13: 1 <= i and

         A14: i <= ( len GG1);

        

         A15: i in ( dom GG1) by A13, A14, FINSEQ_3: 25;

        then

         A16: (pp1 /. i) = (pp1 . i) by A11, PARTFUN1:def 6;

        

         A17: (MM . i) = ((pp1 /. i) * (GG1 . i)) by A6, A15, Def9;

        now

          per cases by A15, FINSEQ_1: 25;

            suppose

             A18: i in ( dom G);

            then

             A19: (GG1 . i) = (G . i) by FINSEQ_1:def 7;

            

             A20: (p . i) = (p /. i) by A3, A18, PARTFUN1:def 6;

            (pp1 . i) = (p . i) by A3, A18, FINSEQ_1:def 7;

            

            hence (MM . i) = (M . i) by A9, A17, A16, A18, A19, A20, Def9

            .= ((M ^ M1) . i) by A9, A18, FINSEQ_1:def 7;

          end;

            suppose ex n st n in ( dom G1) & i = (( len G) + n);

            then

            consider n such that

             A21: n in ( dom G1) and

             A22: i = (( len G) + n);

            

             A23: (GG1 . i) = (G1 . n) by A21, A22, FINSEQ_1:def 7;

            

             A24: (p1 /. n) = (p1 . n) by A4, A21, PARTFUN1:def 6;

            (pp1 . i) = (p1 . n) by A1, A4, A21, A22, FINSEQ_1:def 7;

            

            hence (MM . i) = (M1 . n) by A7, A17, A16, A21, A23, A24, Def9

            .= ((M ^ M1) . i) by A7, A10, A21, A22, FINSEQ_1:def 7;

          end;

        end;

        hence (MM . i) = ((M ^ M1) . i);

      end;

      

       A25: ( len (M ^ M1)) = (( len M) + ( len M1)) by FINSEQ_1: 22;

      ( len MM) = ( len GG1) by A6, FINSEQ_3: 29;

      hence thesis by A10, A8, A25, A12, FINSEQ_1: 22;

    end;

    

     Lm7: (a * ( block_diagonal ( <*A1, A2*>,a1))) = ( block_diagonal ( <*(a * A1), (a * A2)*>,(a * a1)))

    proof

      set AA1 = (a * A1);

      set AA2 = (a * A2);

      set aa1 = (a * a1);

      set B = ( block_diagonal ( <*A1, A2*>,a1));

      

       A1: ( width AA2) = ( width A2) by MATRIX_3:def 5;

      

       A2: ( width AA1) = ( width A1) by MATRIX_3:def 5;

      then

       A3: ( Sum ( Width <*AA1, AA2*>)) = (( width A1) + ( width A2)) by A1, Th20;

      

       A4: ( len B) = ( Sum ( Len <*A1, A2*>)) by Def5;

      

       A5: ( len AA2) = ( len A2) by MATRIX_3:def 5;

      then

       A6: ( dom AA2) = ( dom A2) by FINSEQ_3: 29;

      

       A7: ( Sum ( Width <*A1, A2*>)) = (( width A1) + ( width A2)) by Th20;

      

       A8: ( Sum ( Len <*A1, A2*>)) = (( len A1) + ( len A2)) by Th16;

      

       A9: ( len AA1) = ( len A1) by MATRIX_3:def 5;

      then

       A10: ( dom AA1) = ( dom A1) by FINSEQ_3: 29;

       A11:

      now

        let i;

        thus i in ( dom AA1) implies ( Line ((a * B),i)) = (( Line (AA1,i)) ^ (( width AA2) |-> aa1))

        proof

          assume

           A12: i in ( dom AA1);

          then

           A13: 1 <= i by FINSEQ_3: 25;

          

           A14: i <= ( len A1) by A9, A12, FINSEQ_3: 25;

          ( len A1) <= ( len B) by A8, A4, NAT_1: 11;

          then i <= ( len B) by A14, XXREAL_0: 2;

          

          hence ( Line ((a * B),i)) = (a * ( Line (B,i))) by A13, MATRIXR1: 20

          .= (a * (( Line (A1,i)) ^ (( width A2) |-> a1))) by A10, A12, Th23

          .= ((a * ( Line (A1,i))) ^ (a * (( width A2) |-> a1))) by MATRIX15: 4

          .= (( Line (AA1,i)) ^ (a * (( width A2) |-> a1))) by A13, A14, MATRIXR1: 20

          .= (( Line (AA1,i)) ^ (( width AA2) |-> aa1)) by A1, FVSUM_1: 53;

        end;

        thus i in ( dom AA2) implies ( Line ((a * B),(i + ( len AA1)))) = ((( width AA1) |-> aa1) ^ ( Line (AA2,i)))

        proof

          assume

           A15: i in ( dom AA2);

          then

           A16: 1 <= i by FINSEQ_3: 25;

          then

           A17: ( 0 + 1) <= (i + ( len A1)) by XREAL_1: 7;

          

           A18: i <= ( len A2) by A5, A15, FINSEQ_3: 25;

          then (i + ( len A1)) <= ( len B) by A8, A4, XREAL_1: 7;

          

          hence ( Line ((a * B),(i + ( len AA1)))) = (a * ( Line (B,(i + ( len A1))))) by A9, A17, MATRIXR1: 20

          .= (a * ((( width A1) |-> a1) ^ ( Line (A2,i)))) by A6, A15, Th23

          .= ((a * (( width A1) |-> a1)) ^ (a * ( Line (A2,i)))) by MATRIX15: 4

          .= ((( width A1) |-> aa1) ^ (a * ( Line (A2,i)))) by FVSUM_1: 53

          .= ((( width AA1) |-> aa1) ^ ( Line (AA2,i))) by A2, A16, A18, MATRIXR1: 20;

        end;

      end;

      ( Sum ( Len <*AA1, AA2*>)) = (( len A1) + ( len A2)) by A9, A5, Th16;

      hence thesis by A8, A3, A7, A11, Th23;

    end;

    theorem :: MATRIXJ1:65

    (a * ( block_diagonal (G,a1))) = ( block_diagonal (( mlt ((( len G) |-> a),G)),(a * a1)))

    proof

      defpred P[ Nat] means for a, a1, G st ( len G) = $1 holds (a * ( block_diagonal (G,a1))) = ( block_diagonal (( mlt ((( len G) |-> a),G)),(a * a1)));

      

       A1: for n st P[n] holds P[(n + 1)]

      proof

        let n such that

         A2: P[n];

        set n1 = (n + 1);

        let a, a1, G such that

         A3: ( len G) = n1;

        

         A4: G = ((G | n) ^ <*(G . n1)*>) by A3, FINSEQ_3: 55;

        n <= n1 by NAT_1: 13;

        then

         A5: ( len (G | n)) = n by A3, FINSEQ_1: 59;

        1 in ( Seg 1);

        then 1 in ( dom <*a*>) by FINSEQ_1:def 8;

        then

         A6: ( <*a*> . 1) = ( <*a*> /. 1) by PARTFUN1:def 6;

        

         A7: ( <*a*> . 1) = a by FINSEQ_1:def 8;

        

         A8: ( len <*a*>) = 1 by FINSEQ_1: 39;

        

         A9: ( len <*(G . n1)*>) = 1 by FINSEQ_1: 39;

        

         A10: ( len (n |-> a)) = n by CARD_1:def 7;

        (n1 |-> a) = ((n |-> a) ^ <*a*>) by FINSEQ_2: 60;

        

        hence ( block_diagonal (( mlt ((( len G) |-> a),G)),(a * a1))) = ( block_diagonal ((( mlt ((n |-> a),(G | n))) ^ ( mlt ( <*a*>, <*(G . n1)*>))),(a * a1))) by A3, A4, A5, A10, A9, A8, Th64

        .= ( block_diagonal ((( mlt ((n |-> a),(G | n))) ^ <*(a * (G . n1))*>),(a * a1))) by A6, A7, Th63

        .= ( block_diagonal (( <*( block_diagonal (( mlt ((n |-> a),(G | n))),(a * a1)))*> ^ <*(a * (G . n1))*>),(a * a1))) by Th35

        .= ( block_diagonal ( <*(a * ( block_diagonal ((G | n),a1))), (a * (G . n1))*>,(a * a1))) by A2, A5

        .= (a * ( block_diagonal ( <*( block_diagonal ((G | n),a1)), (G . n1)*>,a1))) by Lm7

        .= (a * ( block_diagonal (G,a1))) by A4, Th35;

      end;

      

       A11: P[ 0 ]

      proof

        let a, a1, G such that

         A12: ( len G) = 0 ;

        ( dom ( mlt ((( len G) |-> a),G))) = ( dom G) by Def9;

        then ( len ( mlt ((( len G) |-> a),G))) = ( len G) by FINSEQ_3: 29;

        then ( Len ( mlt ((( len G) |-> a),G))) = {} by A12;

        then ( len ( block_diagonal (( mlt ((( len G) |-> a),G)),(a * a1)))) = 0 by Def5, RVSUM_1: 72;

        then

         A13: ( block_diagonal (( mlt ((( len G) |-> a),G)),(a * a1))) = {} ;

        ( Len G) = {} by A12;

        then ( len ( block_diagonal (G,a1))) = 0 by Def5, RVSUM_1: 72;

        then ( len (a * ( block_diagonal (G,a1)))) = 0 by MATRIX_3:def 5;

        hence thesis by A13;

      end;

      for n holds P[n] from NAT_1:sch 2( A11, A1);

      hence thesis;

    end;

    definition

      let K;

      let G1,G2 be FinSequence_of_Matrix of K;

      :: MATRIXJ1:def10

      func G1 (+) G2 -> FinSequence_of_Matrix of K means

      : Def10: ( dom it ) = ( dom G1) & for i st i in ( dom it ) holds (it . i) = ((G1 . i) + (G2 . i));

      existence

      proof

        deffunc G( Nat) = ((G1 . $1) + (G2 . $1));

        consider IT be FinSequence such that

         A1: ( len IT) = ( len G1) and

         A2: for k st k in ( dom IT) holds (IT . k) = G(k) from FINSEQ_1:sch 2;

        ( rng IT) c= ((the carrier of K * ) * )

        proof

          let y be object;

          assume y in ( rng IT);

          then

          consider x be object such that

           A3: x in ( dom IT) and

           A4: (IT . x) = y by FUNCT_1:def 3;

          reconsider x as Nat by A3;

          (IT . x) = ((G1 . x) + (G2 . x)) by A2, A3;

          hence thesis by A4, FINSEQ_1:def 11;

        end;

        then

        reconsider IT as FinSequence of ((the carrier of K * ) * ) by FINSEQ_1:def 4;

        now

          let i;

          assume i in ( dom IT);

          then (IT . i) = ((G1 . i) + (G2 . i)) by A2;

          hence (IT . i) is Matrix of K;

        end;

        then

        reconsider IT as FinSequence_of_Matrix of K by Def2;

        take IT;

        thus thesis by A1, A2, FINSEQ_3: 29;

      end;

      uniqueness

      proof

        let T1,T2 be FinSequence_of_Matrix of K such that

         A5: ( dom T1) = ( dom G1) and

         A6: for i st i in ( dom T1) holds (T1 . i) = ((G1 . i) + (G2 . i)) and

         A7: ( dom T2) = ( dom G1) and

         A8: for i st i in ( dom T2) holds (T2 . i) = ((G1 . i) + (G2 . i));

        now

          let i such that

           A9: i in ( dom G1);

          

          thus (T1 . i) = ((G1 . i) + (G2 . i)) by A5, A6, A9

          .= (T2 . i) by A7, A8, A9;

        end;

        hence thesis by A5, A7, FINSEQ_1: 13;

      end;

    end

    registration

      let K;

      let R, G;

      cluster (R (+) G) -> Square-Matrix-yielding;

      coherence

      proof

        set RG = (R (+) G);

        let i;

        assume i in ( dom RG);

        then

         A1: (RG . i) = ((R . i) + (G . i)) by Def10;

        consider n such that

         A2: (R . i) is Matrix of n, K;

        take n;

        

         A3: ( len ((R . i) + (G . i))) = ( len (R . i)) by MATRIX_3:def 3;

        

         A4: ( width ((R . i) + (G . i))) = ( width (R . i)) by MATRIX_3:def 3;

        ( width (R . i)) = n by A2, MATRIX_0: 24;

        hence (RG . i) is Matrix of n, K by A2, A1, A3, A4, MATRIX_0: 24, MATRIX_0: 51;

      end;

    end

    theorem :: MATRIXJ1:66

    

     Th66: ( Len (G1 (+) G2)) = ( Len G1) & ( Width (G1 (+) G2)) = ( Width G1)

    proof

      set G12 = (G1 (+) G2);

      

       A1: ( dom ( Len G12)) = ( dom G12) by Def3;

      

       A2: ( dom G12) = ( dom G1) by Def10;

      

       A3: ( dom ( Len G1)) = ( dom G1) by Def3;

      now

        let i such that

         A4: i in ( dom ( Len G12));

        

        thus (( Len G12) . i) = ( len (G12 . i)) by A4, Def3

        .= ( len ((G1 . i) + (G2 . i))) by A1, A4, Def10

        .= ( len (G1 . i)) by MATRIX_3:def 3

        .= (( Len G1) . i) by A3, A1, A2, A4, Def3;

      end;

      hence ( Len G12) = ( Len G1) by A3, A1, A2, FINSEQ_1: 13;

      

       A5: ( dom ( Width G12)) = ( dom G12) by Def4;

      

       A6: ( dom ( Width G1)) = ( dom G1) by Def4;

      now

        let i such that

         A7: i in ( dom ( Width G12));

        

        thus (( Width G12) . i) = ( width (G12 . i)) by A7, Def4

        .= ( width ((G1 . i) + (G2 . i))) by A5, A7, Def10

        .= ( width (G1 . i)) by MATRIX_3:def 3

        .= (( Width G1) . i) by A6, A5, A2, A7, Def4;

      end;

      hence thesis by A6, A5, A2, FINSEQ_1: 13;

    end;

    theorem :: MATRIXJ1:67

    

     Th67: ( len G) = ( len G9) implies ((G ^ G1) (+) (G9 ^ G2)) = ((G (+) G9) ^ (G1 (+) G2))

    proof

      set GG9 = (G (+) G9);

      set G12 = (G1 (+) G2);

      set GG1 = (G ^ G1);

      set GG2 = (G9 ^ G2);

      

       A1: ( len GG1) = (( len G) + ( len G1)) by FINSEQ_1: 22;

      

       A2: ( dom GG9) = ( dom G) by Def10;

      then

       A3: ( len GG9) = ( len G) by FINSEQ_3: 29;

      

       A4: ( dom (GG1 (+) GG2)) = ( dom GG1) by Def10;

      then

       A5: ( len (GG1 (+) GG2)) = ( len GG1) by FINSEQ_3: 29;

      assume

       A6: ( len G) = ( len G9);

      then

       A7: ( len GG2) = (( len G) + ( len G2)) by FINSEQ_1: 22;

      

       A8: ( len (GG9 ^ G12)) = (( len GG9) + ( len G12)) by FINSEQ_1: 22;

      

       A9: ( dom G12) = ( dom G1) by Def10;

      

       A10: ( dom G) = ( dom G9) by A6, FINSEQ_3: 29;

       A11:

      now

        let i such that

         A12: 1 <= i and

         A13: i <= (( len G) + ( len G1));

        

         A14: i in ( dom (GG1 (+) GG2)) by A4, A1, A12, A13, FINSEQ_3: 25;

        then

         A15: ((GG1 (+) GG2) . i) = ((GG1 . i) + (GG2 . i)) by Def10;

        now

          per cases by A4, A14, FINSEQ_1: 25;

            suppose

             A16: i in ( dom G);

            

            hence ((GG1 (+) GG2) . i) = ((G . i) + (GG2 . i)) by A15, FINSEQ_1:def 7

            .= ((G . i) + (G9 . i)) by A10, A16, FINSEQ_1:def 7

            .= (GG9 . i) by A2, A16, Def10

            .= ((GG9 ^ G12) . i) by A2, A16, FINSEQ_1:def 7;

          end;

            suppose ex n st n in ( dom G1) & i = (( len G) + n);

            then

            consider n such that

             A17: n in ( dom G1) and

             A18: i = (( len G) + n);

            now

              per cases ;

                suppose n in ( dom G2);

                hence (GG2 . i) = (G2 . n) by A6, A18, FINSEQ_1:def 7;

              end;

                suppose

                 A19: not n in ( dom G2);

                then n < 1 or n > ( len G2) by FINSEQ_3: 25;

                then i > (( len G) + ( len G2)) by A17, A18, FINSEQ_3: 25, XREAL_1: 8;

                then not i in ( dom GG2) by A7, FINSEQ_3: 25;

                

                hence (GG2 . i) = {} by FUNCT_1:def 2

                .= (G2 . n) by A19, FUNCT_1:def 2;

              end;

            end;

            

            hence ((GG1 (+) GG2) . i) = ((G1 . n) + (G2 . n)) by A15, A17, A18, FINSEQ_1:def 7

            .= (G12 . n) by A9, A17, Def10

            .= ((GG9 ^ G12) . i) by A9, A3, A17, A18, FINSEQ_1:def 7;

          end;

        end;

        hence ((GG1 (+) GG2) . i) = ((GG9 ^ G12) . i);

      end;

      ( len G12) = ( len G1) by A9, FINSEQ_3: 29;

      hence thesis by A3, A5, A1, A8, A11;

    end;

    theorem :: MATRIXJ1:68

    

     Th68: ( <*A*> (+) G) = <*(A + (G . 1))*>

    proof

      ( dom ( <*A*> (+) G)) = ( dom <*A*>) by Def10;

      

      then

       A1: ( len ( <*A*> (+) G)) = ( len <*A*>) by FINSEQ_3: 29

      .= 1 by FINSEQ_1: 39;

      then ( dom ( <*A*> (+) G)) = {1} by FINSEQ_1: 2, FINSEQ_1:def 3;

      then 1 in ( dom ( <*A*> (+) G)) by TARSKI:def 1;

      

      then (( <*A*> (+) G) . 1) = (( <*A*> . 1) + (G . 1)) by Def10

      .= (A + (G . 1)) by FINSEQ_1: 40;

      hence thesis by A1, FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:69

    

     Th69: ( <*A1*> (+) <*A2*>) = <*(A1 + A2)*>

    proof

      

      thus ( <*A1*> (+) <*A2*>) = <*(A1 + ( <*A2*> . 1))*> by Th68

      .= <*(A1 + A2)*> by FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:70

    

     Th70: ( <*A1, B1*> (+) <*A2, B2*>) = <*(A1 + A2), (B1 + B2)*>

    proof

      

       A1: ( len <*A2*>) = 1 by FINSEQ_1: 39;

      ( len <*A1*>) = 1 by FINSEQ_1: 39;

      

      hence ( <*A1, B1*> (+) <*A2, B2*>) = (( <*A1*> (+) <*A2*>) ^ ( <*B1*> (+) <*B2*>)) by A1, Th67

      .= (( <*A1*> (+) <*A2*>) ^ <*(B1 + B2)*>) by Th69

      .= <*(A1 + A2), (B1 + B2)*> by Th69;

    end;

    

     Lm8: ( width A1) = ( width A2) & i in ( dom A1) implies ( Line ((A1 + A2),i)) = (( Line (A1,i)) + ( Line (A2,i)))

    proof

      assume that

       A1: ( width A1) = ( width A2) and

       A2: i in ( dom A1);

      reconsider L1 = ( Line (A1,i)), L2 = ( Line (A2,i)) as Element of (( width A1) -tuples_on the carrier of K) by A1;

      per cases ;

        suppose

         A3: ( width A1) = 0 ;

        then ( width (A1 + A2)) = 0 by MATRIX_3:def 3;

        

        then ( Line ((A1 + A2),i)) = ( <*> the carrier of K)

        .= (L1 + L2) by A3;

        hence thesis;

      end;

        suppose ( width A1) > 0 ;

        then ( width A1) in ( Seg ( width A1)) by FINSEQ_1: 3;

        then [i, ( width A1)] in ( Indices A1) by A2, ZFMISC_1: 87;

        hence thesis by A1, MATRIX_4: 59;

      end;

    end;

    theorem :: MATRIXJ1:71

    

     Th71: ( len A1) = ( len B1) & ( len A2) = ( len B2) & ( width A1) = ( width B1) & ( width A2) = ( width B2) implies (( block_diagonal ( <*A1, A2*>,a1)) + ( block_diagonal ( <*B1, B2*>,a2))) = ( block_diagonal (( <*A1, A2*> (+) <*B1, B2*>),(a1 + a2)))

    proof

      assume that

       A1: ( len A1) = ( len B1) and

       A2: ( len A2) = ( len B2) and

       A3: ( width A1) = ( width B1) and

       A4: ( width A2) = ( width B2);

      set b12 = <*B1, B2*>;

      set a12 = <*A1, A2*>;

      set AB2 = (A2 + B2);

      set AB1 = (A1 + B1);

      set ab = (a12 (+) b12);

      set bA = ( block_diagonal (a12,a1));

      set bB = ( block_diagonal (b12,a2));

      set bAB = ( block_diagonal (ab,(a1 + a2)));

      

       A5: ( len (bA + bB)) = ( len bA) by MATRIX_3:def 3;

      ( width (bA + bB)) = ( width bA) by MATRIX_3:def 3;

      then

      reconsider bAbB = (bA + bB) as Matrix of ( len bA), ( width bA), K by A5, MATRIX_0: 51;

      

       A6: ( len AB1) = ( len A1) by MATRIX_3:def 3;

      

       A7: ( len bA) = ( Sum ( Len a12)) by Def5;

      

       A8: ( Sum ( Len a12)) = (( len A1) + ( len A2)) by Th16;

      

       A9: ( len AB2) = ( len A2) by MATRIX_3:def 3;

      

       A10: ( Sum ( Width b12)) = (( width B1) + ( width B2)) by Th20;

      

       A11: ( len bAB) = ( Sum ( Len ab)) by Def5;

      

       A12: ( width bB) = ( Sum ( Width b12)) by Def5;

      

       A13: ( width bA) = ( Sum ( Width a12)) by Def5;

      

       A14: ( width AB2) = ( width A2) by MATRIX_3:def 3;

      

       A15: ( width AB1) = ( width A1) by MATRIX_3:def 3;

      

       A16: ( Len ab) = ( Len a12) by Th66;

      

       A17: ab = <*AB1, AB2*> by Th70;

      now

        

         A18: ( dom bA) = ( Seg ( len bA)) by FINSEQ_1:def 3;

        let i such that

         A19: 1 <= i and

         A20: i <= ( len bAB);

        

         A21: i in ( Seg ( len bAB)) by A19, A20;

        then

         A22: (bAB . i) = ( Line (( block_diagonal ( <*AB1, AB2*>,(a1 + a2))),i)) by A17, A11, MATRIX_0: 52;

        

         A23: (bAbB . i) = ( Line ((bA + bB),i)) by A16, A7, A11, A21, MATRIX_0: 52;

        

         A24: ( dom (A1 ^ A2)) = ( Seg ( len bAB)) by A8, A16, A11, FINSEQ_1:def 7;

        now

          per cases by A21, A24, FINSEQ_1: 25;

            suppose

             A25: i in ( dom A1);

            

             A26: ( len ( Line (B1,i))) = ( width B1) by CARD_1:def 7;

            

             A27: ( dom A1) = ( dom B1) by A1, FINSEQ_3: 29;

            

             A28: ( len ( Line (A1,i))) = ( width A1) by CARD_1:def 7;

            ( dom A1) = ( dom AB1) by A6, FINSEQ_3: 29;

            

            hence (bAB . i) = (( Line (AB1,i)) ^ (( width AB2) |-> (a1 + a2))) by A22, A25, Th23

            .= ((( Line (A1,i)) + ( Line (B1,i))) ^ (( width AB2) |-> (a1 + a2))) by A3, A25, Lm8

            .= ((( Line (A1,i)) + ( Line (B1,i))) ^ ((( width AB2) |-> a1) + (( width AB2) |-> a2))) by FVSUM_1: 20

            .= ((( Line (A1,i)) ^ (( width A2) |-> a1)) + (( Line (B1,i)) ^ (( width B2) |-> a2))) by A3, A4, A14, A28, A26, Th1

            .= (( Line (bA,i)) + (( Line (B1,i)) ^ (( width B2) |-> a2))) by A25, Th23

            .= (( Line (bA,i)) + ( Line (bB,i))) by A25, A27, Th23

            .= (bAbB . i) by A3, A4, A10, A16, A7, A13, A12, A11, A21, A18, A23, Lm8, Th20;

          end;

            suppose

             A29: ex n st n in ( dom A2) & i = (( len A1) + n);

            

             A30: ( len (( width AB1) |-> a1)) = ( width AB1) by CARD_1:def 7;

            

             A31: ( dom A2) = ( dom B2) by A2, FINSEQ_3: 29;

            

             A32: ( len (( width AB1) |-> a2)) = ( width AB1) by CARD_1:def 7;

            consider n such that

             A33: n in ( dom A2) and

             A34: i = (( len A1) + n) by A29;

            ( dom A2) = ( dom AB2) by A9, FINSEQ_3: 29;

            

            hence (bAB . i) = ((( width AB1) |-> (a1 + a2)) ^ ( Line (AB2,n))) by A6, A22, A33, A34, Th23

            .= ((( width AB1) |-> (a1 + a2)) ^ (( Line (A2,n)) + ( Line (B2,n)))) by A4, A33, Lm8

            .= (((( width AB1) |-> a1) + (( width AB1) |-> a2)) ^ (( Line (A2,n)) + ( Line (B2,n)))) by FVSUM_1: 20

            .= (((( width AB1) |-> a1) ^ ( Line (A2,n))) + ((( width AB1) |-> a2) ^ ( Line (B2,n)))) by A30, A32, Th1

            .= (( Line (bA,i)) + ((( width B1) |-> a2) ^ ( Line (B2,n)))) by A3, A15, A33, A34, Th23

            .= (( Line (bA,i)) + ( Line (bB,i))) by A1, A33, A34, A31, Th23

            .= (bAbB . i) by A3, A4, A10, A16, A7, A13, A12, A11, A21, A18, A23, Lm8, Th20;

          end;

        end;

        hence (bAB . i) = ((bA + bB) . i);

      end;

      hence thesis by A16, A7, A11, A5;

    end;

    theorem :: MATRIXJ1:72

    ( Len R1) = ( Len R2) & ( Width R1) = ( Width R2) implies (( block_diagonal (R1,a1)) + ( block_diagonal (R2,a2))) = ( block_diagonal ((R1 (+) R2),(a1 + a2)))

    proof

      defpred P[ Nat] means for R1, R2, a1, a2 st ( Len R1) = ( Len R2) & ( Width R1) = ( Width R2) & ( len R1) = $1 holds (( block_diagonal (R1,a1)) + ( block_diagonal (R2,a2))) = ( block_diagonal ((R1 (+) R2),(a1 + a2)));

      assume that

       A1: ( Len R1) = ( Len R2) and

       A2: ( Width R1) = ( Width R2);

      

       A3: for n st P[n] holds P[(n + 1)]

      proof

        let n such that

         A4: P[n];

        set n1 = (n + 1);

        let R1, R2, a1, a2 such that

         A5: ( Len R1) = ( Len R2) and

         A6: ( Width R1) = ( Width R2) and

         A7: ( len R1) = n1;

        

         A8: n1 in ( Seg n1) by FINSEQ_1: 4;

        set R2n = (R2 | n);

        

         A9: R1 = ((R1 | n) ^ <*(R1 . n1)*>) by A7, FINSEQ_3: 55;

        set R1n = (R1 | n);

        set b2n = ( block_diagonal (R2n,a2));

        set b1n = ( block_diagonal (R1n,a1));

        

         A10: ( len R1n) = n by A7, FINSEQ_1: 59, NAT_1: 11;

        

         A11: ( dom ( Len R1)) = ( Seg n1) by A7, FINSEQ_2: 124;

        

        then

         A12: ( len (R1 . n1)) = (( Len R1) . n1) by A8, Def3

        .= ( len (R2 . n1)) by A5, A8, A11, Def3;

        

         A13: ( len R1) = ( len ( Len R2)) by A5, CARD_1:def 7

        .= ( len R2) by CARD_1:def 7;

        then

         A14: ( len R2n) = n by A7, FINSEQ_1: 59, NAT_1: 11;

        

         A15: ( dom ( Width R1)) = ( Seg n1) by A7, FINSEQ_2: 124;

        

        then

         A16: ( width (R1 . n1)) = (( Width R1) . n1) by A8, Def4

        .= ( width (R2 . n1)) by A6, A8, A15, Def4;

        

         A17: ( Len R1n) = (( Len R1) | n) by Th17

        .= ( Len R2n) by A5, Th17;

        

        then

         A18: ( len b1n) = ( Sum ( Len R2n)) by Def5

        .= ( len b2n) by Def5;

        

         A19: ( Width R1n) = (( Width R1) | n) by Th21

        .= ( Width R2n) by A6, Th21;

        

        then

         A20: ( width b1n) = ( Sum ( Width R2n)) by Def5

        .= ( width b2n) by Def5;

        

         A21: R2 = ((R2 | n) ^ <*(R2 . n1)*>) by A7, A13, FINSEQ_3: 55;

        

        hence (( block_diagonal (R1,a1)) + ( block_diagonal (R2,a2))) = (( block_diagonal ( <*b1n, (R1 . n1)*>,a1)) + ( block_diagonal ((R2n ^ <*(R2 . n1)*>),a2))) by A9, Th35

        .= (( block_diagonal ( <*b1n, (R1 . n1)*>,a1)) + ( block_diagonal ( <*b2n, (R2 . n1)*>,a2))) by Th35

        .= ( block_diagonal (( <*b1n, (R1 . n1)*> (+) <*b2n, (R2 . n1)*>),(a1 + a2))) by A18, A20, A12, A16, Th71

        .= ( block_diagonal ( <*(b1n + b2n), ((R1 . n1) + (R2 . n1))*>,(a1 + a2))) by Th70

        .= ( block_diagonal ( <*( block_diagonal ((R1n (+) R2n),(a1 + a2))), ((R1 . n1) + (R2 . n1))*>,(a1 + a2))) by A4, A10, A17, A19

        .= ( block_diagonal (((R1n (+) R2n) ^ <*((R1 . n1) + (R2 . n1))*>),(a1 + a2))) by Th35

        .= ( block_diagonal (((R1n (+) R2n) ^ ( <*(R1 . n1)*> (+) <*(R2 . n1)*>)),(a1 + a2))) by Th69

        .= ( block_diagonal ((R1 (+) R2),(a1 + a2))) by A10, A14, A9, A21, Th67;

      end;

      

       A22: P[ 0 ]

      proof

        let R1, R2, a1, a2 such that ( Len R1) = ( Len R2) and ( Width R1) = ( Width R2) and

         A23: ( len R1) = 0 ;

        set b12 = ( block_diagonal ((R1 (+) R2),(a1 + a2)));

        set b2 = ( block_diagonal (R2,a2));

        set b1 = ( block_diagonal (R1,a1));

        

         A24: ( Len R1) = {} by A23;

        ( Len R1) = ( Len (R1 (+) R2)) by Th66;

        then ( len b12) = 0 by A24, Def5, RVSUM_1: 72;

        then

         A25: b12 = {} ;

        ( len b1) = 0 by A24, Def5, RVSUM_1: 72;

        then ( len (b1 + b2)) = 0 by MATRIX_3:def 3;

        hence thesis by A25;

      end;

      for n holds P[n] from NAT_1:sch 2( A22, A3);

      hence thesis by A1, A2;

    end;

    definition

      let K;

      let G1,G2 be FinSequence_of_Matrix of K;

      :: MATRIXJ1:def11

      func G1 (#) G2 -> FinSequence_of_Matrix of K means

      : Def11: ( dom it ) = ( dom G1) & for i st i in ( dom it ) holds (it . i) = ((G1 . i) * (G2 . i));

      existence

      proof

        deffunc G( Nat) = ((G1 . $1) * (G2 . $1));

        consider IT be FinSequence such that

         A1: ( len IT) = ( len G1) and

         A2: for k st k in ( dom IT) holds (IT . k) = G(k) from FINSEQ_1:sch 2;

        ( rng IT) c= ((the carrier of K * ) * )

        proof

          let y be object;

          assume y in ( rng IT);

          then

          consider x be object such that

           A3: x in ( dom IT) and

           A4: (IT . x) = y by FUNCT_1:def 3;

          reconsider x as Nat by A3;

          (IT . x) = ((G1 . x) * (G2 . x)) by A2, A3;

          hence thesis by A4, FINSEQ_1:def 11;

        end;

        then

        reconsider IT as FinSequence of ((the carrier of K * ) * ) by FINSEQ_1:def 4;

        now

          let i;

          assume i in ( dom IT);

          then (IT . i) = ((G1 . i) * (G2 . i)) by A2;

          hence (IT . i) is Matrix of K;

        end;

        then

        reconsider IT as FinSequence_of_Matrix of K by Def2;

        take IT;

        thus thesis by A1, A2, FINSEQ_3: 29;

      end;

      uniqueness

      proof

        let T1,T2 be FinSequence_of_Matrix of K such that

         A5: ( dom T1) = ( dom G1) and

         A6: for i st i in ( dom T1) holds (T1 . i) = ((G1 . i) * (G2 . i)) and

         A7: ( dom T2) = ( dom G1) and

         A8: for i st i in ( dom T2) holds (T2 . i) = ((G1 . i) * (G2 . i));

        now

          let i such that

           A9: i in ( dom G1);

          

          thus (T1 . i) = ((G1 . i) * (G2 . i)) by A5, A6, A9

          .= (T2 . i) by A7, A8, A9;

        end;

        hence thesis by A5, A7, FINSEQ_1: 13;

      end;

    end

    theorem :: MATRIXJ1:73

    

     Th73: ( Width G1) = ( Len G2) implies ( Len (G1 (#) G2)) = ( Len G1) & ( Width (G1 (#) G2)) = ( Width G2)

    proof

      assume

       A1: ( Width G1) = ( Len G2);

      set G12 = (G1 (#) G2);

      

       A2: ( dom ( Len G12)) = ( dom G12) by Def3;

      

       A3: ( dom G12) = ( dom G1) by Def11;

      

       A4: ( dom ( Width G2)) = ( dom G2) by Def4;

      

       A5: ( dom ( Width G1)) = ( dom G1) by Def4;

      

       A6: ( dom ( Len G1)) = ( dom G1) by Def3;

      now

        let i such that

         A7: i in ( dom ( Len G12));

        

         A8: ( width (G1 . i)) = (( Width G1) . i) by A2, A5, A3, A7, Def4

        .= ( len (G2 . i)) by A1, A2, A5, A3, A7, Def3;

        

        thus (( Len G12) . i) = ( len (G12 . i)) by A7, Def3

        .= ( len ((G1 . i) * (G2 . i))) by A2, A7, Def11

        .= ( len (G1 . i)) by A8, MATRIX_3:def 4

        .= (( Len G1) . i) by A6, A2, A3, A7, Def3;

      end;

      hence ( Len G12) = ( Len G1) by A6, A2, A3, FINSEQ_1: 13;

      

       A9: ( dom ( Width G12)) = ( dom G12) by Def4;

      

       A10: ( dom ( Len G2)) = ( dom G2) by Def3;

      now

        let i such that

         A11: i in ( dom ( Width G12));

        

         A12: ( width (G1 . i)) = (( Width G1) . i) by A5, A9, A3, A11, Def4

        .= ( len (G2 . i)) by A1, A5, A9, A3, A11, Def3;

        

        thus (( Width G12) . i) = ( width (G12 . i)) by A11, Def4

        .= ( width ((G1 . i) * (G2 . i))) by A9, A11, Def11

        .= ( width (G2 . i)) by A12, MATRIX_3:def 4

        .= (( Width G2) . i) by A1, A5, A10, A9, A4, A3, A11, Def4;

      end;

      hence thesis by A1, A5, A10, A9, A4, A3, FINSEQ_1: 13;

    end;

    theorem :: MATRIXJ1:74

    

     Th74: ( len G) = ( len G9) implies ((G ^ G1) (#) (G9 ^ G2)) = ((G (#) G9) ^ (G1 (#) G2))

    proof

      set GG9 = (G (#) G9);

      set G12 = (G1 (#) G2);

      set GG1 = (G ^ G1);

      set GG2 = (G9 ^ G2);

      

       A1: ( len GG1) = (( len G) + ( len G1)) by FINSEQ_1: 22;

      

       A2: ( dom GG9) = ( dom G) by Def11;

      then

       A3: ( len GG9) = ( len G) by FINSEQ_3: 29;

      

       A4: ( dom (GG1 (#) GG2)) = ( dom GG1) by Def11;

      then

       A5: ( len (GG1 (#) GG2)) = ( len GG1) by FINSEQ_3: 29;

      assume

       A6: ( len G) = ( len G9);

      then

       A7: ( len GG2) = (( len G) + ( len G2)) by FINSEQ_1: 22;

      

       A8: ( len (GG9 ^ G12)) = (( len GG9) + ( len G12)) by FINSEQ_1: 22;

      

       A9: ( dom G12) = ( dom G1) by Def11;

      

       A10: ( dom G) = ( dom G9) by A6, FINSEQ_3: 29;

       A11:

      now

        let i such that

         A12: 1 <= i and

         A13: i <= (( len G) + ( len G1));

        

         A14: i in ( dom (GG1 (#) GG2)) by A4, A1, A12, A13, FINSEQ_3: 25;

        then

         A15: ((GG1 (#) GG2) . i) = ((GG1 . i) * (GG2 . i)) by Def11;

        now

          per cases by A4, A14, FINSEQ_1: 25;

            suppose

             A16: i in ( dom G);

            

            hence ((GG1 (#) GG2) . i) = ((G . i) * (GG2 . i)) by A15, FINSEQ_1:def 7

            .= ((G . i) * (G9 . i)) by A10, A16, FINSEQ_1:def 7

            .= (GG9 . i) by A2, A16, Def11

            .= ((GG9 ^ G12) . i) by A2, A16, FINSEQ_1:def 7;

          end;

            suppose ex n st n in ( dom G1) & i = (( len G) + n);

            then

            consider n such that

             A17: n in ( dom G1) and

             A18: i = (( len G) + n);

            now

              per cases ;

                suppose n in ( dom G2);

                hence (GG2 . i) = (G2 . n) by A6, A18, FINSEQ_1:def 7;

              end;

                suppose

                 A19: not n in ( dom G2);

                then n < 1 or n > ( len G2) by FINSEQ_3: 25;

                then i > (( len G) + ( len G2)) by A17, A18, FINSEQ_3: 25, XREAL_1: 8;

                then not i in ( dom GG2) by A7, FINSEQ_3: 25;

                

                hence (GG2 . i) = {} by FUNCT_1:def 2

                .= (G2 . n) by A19, FUNCT_1:def 2;

              end;

            end;

            

            hence ((GG1 (#) GG2) . i) = ((G1 . n) * (G2 . n)) by A15, A17, A18, FINSEQ_1:def 7

            .= (G12 . n) by A9, A17, Def11

            .= ((GG9 ^ G12) . i) by A9, A3, A17, A18, FINSEQ_1:def 7;

          end;

        end;

        hence ((GG1 (#) GG2) . i) = ((GG9 ^ G12) . i);

      end;

      ( len G12) = ( len G1) by A9, FINSEQ_3: 29;

      hence thesis by A3, A5, A1, A8, A11;

    end;

    theorem :: MATRIXJ1:75

    

     Th75: ( <*A*> (#) G) = <*(A * (G . 1))*>

    proof

      ( dom ( <*A*> (#) G)) = ( dom <*A*>) by Def11;

      

      then

       A1: ( len ( <*A*> (#) G)) = ( len <*A*>) by FINSEQ_3: 29

      .= 1 by FINSEQ_1: 39;

      then ( dom ( <*A*> (#) G)) = {1} by FINSEQ_1: 2, FINSEQ_1:def 3;

      then 1 in ( dom ( <*A*> (#) G)) by TARSKI:def 1;

      

      then (( <*A*> (#) G) . 1) = (( <*A*> . 1) * (G . 1)) by Def11

      .= (A * (G . 1)) by FINSEQ_1: 40;

      hence thesis by A1, FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:76

    

     Th76: ( <*A1*> (#) <*A2*>) = <*(A1 * A2)*>

    proof

      

      thus ( <*A1*> (#) <*A2*>) = <*(A1 * ( <*A2*> . 1))*> by Th75

      .= <*(A1 * A2)*> by FINSEQ_1: 40;

    end;

    theorem :: MATRIXJ1:77

    

     Th77: ( <*A1, B1*> (#) <*A2, B2*>) = <*(A1 * A2), (B1 * B2)*>

    proof

      

       A1: ( len <*A2*>) = 1 by FINSEQ_1: 39;

      ( len <*A1*>) = 1 by FINSEQ_1: 39;

      

      hence ( <*A1, B1*> (#) <*A2, B2*>) = (( <*A1*> (#) <*A2*>) ^ ( <*B1*> (#) <*B2*>)) by A1, Th74

      .= (( <*A1*> (#) <*A2*>) ^ <*(B1 * B2)*>) by Th76

      .= <*(A1 * A2), (B1 * B2)*> by Th76;

    end;

    

     Lm9: for R1,S1 be Element of (i -tuples_on the carrier of K), R2,S2 be Element of (j -tuples_on the carrier of K) holds ( Sum ( mlt ((R1 ^ R2),(S1 ^ S2)))) = (( Sum ( mlt (R1,S1))) + ( Sum ( mlt (R2,S2))))

    proof

      let R1,S1 be Element of (i -tuples_on the carrier of K), R2,S2 be Element of (j -tuples_on the carrier of K);

      ( mlt ((R1 ^ R2),(S1 ^ S2))) = (( mlt (R1,S1)) ^ ( mlt (R2,S2))) by FINSEQOP: 11;

      hence thesis by RLVECT_1: 41;

    end;

    theorem :: MATRIXJ1:78

    

     Th78: ( width A1) = ( len B1) & ( width A2) = ( len B2) implies (( block_diagonal ( <*A1, A2*>,( 0. K))) * ( block_diagonal ( <*B1, B2*>,( 0. K)))) = ( block_diagonal (( <*A1, A2*> (#) <*B1, B2*>),( 0. K)))

    proof

      assume that

       A1: ( width A1) = ( len B1) and

       A2: ( width A2) = ( len B2);

      

       A3: ( width (A1 * B1)) = ( width B1) by A1, MATRIX_3:def 4;

      set b12 = <*B1, B2*>;

      set a12 = <*A1, A2*>;

      set b2 = <*B2*>;

      set b1 = <*B1*>;

      set a2 = <*A2*>;

      set a1 = <*A1*>;

      set ab = (a12 (#) b12);

      

       A4: ( Len b12) = (( Len b1) ^ ( Len b2)) by Th14;

      set bB = ( block_diagonal (b12,( 0. K)));

      set bA = ( block_diagonal (a12,( 0. K)));

      

       A5: ( Sum ( Width a12)) = ( width bA) by Def5;

      

       A6: ( Sum ( Len b12)) = ( len bB) by Def5;

      

       A7: ( Width a1) = <*( width A1)*> by Th19;

      set bAbB = (bA * bB);

      set bAB = ( block_diagonal (ab,( 0. K)));

      

       A8: ( Sum ( Len ab)) = ( len bAB) by Def5;

      

       A9: ( Sum ( Width ab)) = ( width bAB) by Def5;

      

       A10: ( Sum ( Len a12)) = (( len A1) + ( len A2)) by Th16;

      

       A11: ( Sum ( Width b12)) = (( width B1) + ( width B2)) by Th20;

      

       A12: ( len (A2 * B2)) = ( len A2) by A2, MATRIX_3:def 4;

      

       A13: ab = <*(A1 * B1), (A2 * B2)*> by Th77;

      

       A14: ( Width a2) = <*( width A2)*> by Th19;

      

       A15: ( Len b2) = <*( len B2)*> by Th15;

      

       A16: ( Len b1) = <*( len B1)*> by Th15;

      

       A17: ( Width a12) = (( Width a1) ^ ( Width a2)) by Th18;

      then

       A18: ( Len ab) = ( Len a12) by A1, A2, A4, A7, A14, A16, A15, Th73;

      

       A19: ( Width ab) = ( Width b12) by A1, A2, A17, A4, A7, A14, A16, A15, Th73;

      ( Sum ( Len a12)) = ( len bA) by Def5;

      then

       A20: ( len (bA * bB)) = ( Sum ( Len a12)) by A1, A2, A17, A4, A7, A14, A16, A15, A5, A6, MATRIX_3:def 4;

      

       A21: ( len (A1 * B1)) = ( len A1) by A1, MATRIX_3:def 4;

      ( Sum ( Width b12)) = ( width bB) by Def5;

      then

       A22: ( width (bA * bB)) = ( Sum ( Width b12)) by A1, A2, A17, A4, A7, A14, A16, A15, A5, A6, MATRIX_3:def 4;

      

       A23: ( width (A2 * B2)) = ( width B2) by A2, MATRIX_3:def 4;

      

       A24: ( Indices (A1 * B1)) = [:( Seg ( len (A1 * B1))), ( Seg ( width (A1 * B1))):] by FINSEQ_1:def 3

      .= [:( dom A1), ( Seg ( width B1)):] by A3, A21, FINSEQ_1:def 3;

      now

        

         A25: ( dom bAB) = ( Seg ( len bAB)) by FINSEQ_1:def 3;

        let i, j such that

         A26: [i, j] in ( Indices bAB);

        

         A27: j in ( Seg ( width bAB)) by A26, ZFMISC_1: 87;

        

         A28: i in ( dom bAB) by A26, ZFMISC_1: 87;

        then

         A29: 1 <= i by A25, FINSEQ_1: 1;

        ( Indices bAB) = [:( Seg ( len bAB)), ( Seg ( width bAB)):] by FINSEQ_1:def 3

        .= ( Indices bAbB) by A8, A9, A20, A22, A18, A19, FINSEQ_1:def 3;

        

        then

         A30: (bAbB * (i,j)) = (( Line (bA,i)) "*" ( Col (bB,j))) by A1, A2, A17, A4, A7, A14, A16, A15, A5, A6, A26, MATRIX_3:def 4

        .= ( Sum ( mlt (( Line (bA,i)),( Col (bB,j)))));

        

         A31: 1 <= j by A27, FINSEQ_1: 1;

        now

          per cases ;

            suppose

             A32: i <= ( len A1);

            then

             A33: i in ( dom (A1 * B1)) by A21, A29, FINSEQ_3: 25;

            

             A34: i in ( dom A1) by A29, A32, FINSEQ_3: 25;

            then

             A35: ( Line (bA,i)) = (( Line (A1,i)) ^ (( width A2) |-> ( 0. K))) by Th23;

            now

              per cases ;

                suppose j <= ( width B1);

                then

                 A36: j in ( Seg ( width B1)) by A31;

                then

                 A37: [i, j] in ( Indices (A1 * B1)) by A24, A34, ZFMISC_1: 87;

                

                 A38: ( dom ( Line ((A1 * B1),i))) = ( Seg ( width B1)) by A3, FINSEQ_2: 124;

                ( Col (bB,j)) = (( Col (B1,j)) ^ (( len B2) |-> ( 0. K))) by A36, Th24;

                

                hence (bAbB * (i,j)) = (( Sum ( mlt (( Line (A1,i)),( Col (B1,j))))) + ( Sum ( mlt ((( width A2) |-> ( 0. K)),(( len B2) |-> ( 0. K)))))) by A1, A2, A30, A35, Lm9

                .= (( Sum ( mlt (( Line (A1,i)),( Col (B1,j))))) + ( Sum (( 0. K) * (( width A2) |-> ( 0. K))))) by A2, FVSUM_1: 66

                .= (( Sum ( mlt (( Line (A1,i)),( Col (B1,j))))) + (( 0. K) * ( Sum (( width A2) |-> ( 0. K))))) by FVSUM_1: 73

                .= (( Sum ( mlt (( Line (A1,i)),( Col (B1,j))))) + ( 0. K))

                .= (( Line (A1,i)) "*" ( Col (B1,j))) by RLVECT_1:def 4

                .= ((A1 * B1) * (i,j)) by A1, A37, MATRIX_3:def 4

                .= (( Line ((A1 * B1),i)) . j) by A3, A36, MATRIX_0:def 7

                .= ((( Line ((A1 * B1),i)) ^ (( width (A2 * B2)) |-> ( 0. K))) . j) by A36, A38, FINSEQ_1:def 7

                .= (( Line (bAB,i)) . j) by A13, A33, Th23

                .= (bAB * (i,j)) by A27, MATRIX_0:def 7;

              end;

                suppose

                 A39: j > ( width B1);

                then

                reconsider J = (j - ( width B1)) as Element of NAT by NAT_1: 21;

                

                 A40: j = (J + ( width B1));

                

                 A41: ( len ( Line ((A1 * B1),i))) = ( width B1) by A3, CARD_1:def 7;

                

                 A42: ( dom (( width (A2 * B2)) |-> ( 0. K))) = ( Seg ( width B2)) by A23, FINSEQ_2: 124;

                J <> 0 by A39;

                then

                 A43: J in ( Seg ( width B2)) by A9, A19, A11, A27, A40, FINSEQ_1: 61;

                then ( Col (bB,(J + ( width B1)))) = ((( len B1) |-> ( 0. K)) ^ ( Col (B2,J))) by Th24;

                

                hence (bAbB * (i,j)) = (( Sum ( mlt (( Line (A1,i)),(( len B1) |-> ( 0. K))))) + ( Sum ( mlt ((( width A2) |-> ( 0. K)),( Col (B2,J)))))) by A1, A2, A30, A35, Lm9

                .= (( Sum ( mlt (( Line (A1,i)),(( len B1) |-> ( 0. K))))) + ( Sum (( 0. K) * ( Col (B2,J))))) by A2, FVSUM_1: 66

                .= (( Sum (( 0. K) * ( Line (A1,i)))) + ( Sum (( 0. K) * ( Col (B2,J))))) by A1, FVSUM_1: 66

                .= (( Sum (( 0. K) * ( Line (A1,i)))) + (( 0. K) * ( Sum ( Col (B2,J))))) by FVSUM_1: 73

                .= ((( 0. K) * ( Sum ( Line (A1,i)))) + (( 0. K) * ( Sum ( Col (B2,J))))) by FVSUM_1: 73

                .= ((( 0. K) * ( Sum ( Line (A1,i)))) + ( 0. K))

                .= (( 0. K) + ( 0. K))

                .= ( 0. K) by RLVECT_1:def 4

                .= ((( width (A2 * B2)) |-> ( 0. K)) . J) by A23, A43, FINSEQ_2: 57

                .= ((( Line ((A1 * B1),i)) ^ (( width (A2 * B2)) |-> ( 0. K))) . (J + ( width (A1 * B1)))) by A3, A43, A41, A42, FINSEQ_1:def 7

                .= (( Line (bAB,i)) . j) by A13, A3, A33, Th23

                .= (bAB * (i,j)) by A27, MATRIX_0:def 7;

              end;

            end;

            hence (bAbB * (i,j)) = (bAB * (i,j));

          end;

            suppose

             A44: i > ( len A1);

            then

            reconsider I = (i - ( len A1)) as Element of NAT by NAT_1: 21;

            

             A45: i = (I + ( len A1));

            

             A46: ( dom A2) = ( dom (A2 * B2)) by A12, FINSEQ_3: 29;

            I <> 0 by A44;

            then I in ( Seg ( len A2)) by A8, A18, A10, A28, A25, A45, FINSEQ_1: 61;

            then

             A47: I in ( dom A2) by FINSEQ_1:def 3;

            then

             A48: ( Line (bA,(I + ( len A1)))) = ((( width A1) |-> ( 0. K)) ^ ( Line (A2,I))) by Th23;

            now

              per cases ;

                suppose

                 A49: j <= ( width B1);

                

                 A50: ( dom (( width (A1 * B1)) |-> ( 0. K))) = ( Seg ( width B1)) by A3, FINSEQ_2: 124;

                

                 A51: j in ( Seg ( width B1)) by A31, A49;

                then ( Col (bB,j)) = (( Col (B1,j)) ^ (( len B2) |-> ( 0. K))) by Th24;

                

                hence (bAbB * (i,j)) = (( Sum ( mlt ((( width A1) |-> ( 0. K)),( Col (B1,j))))) + ( Sum ( mlt (( Line (A2,I)),(( len B2) |-> ( 0. K)))))) by A1, A2, A30, A48, Lm9

                .= (( Sum ( mlt ((( width A1) |-> ( 0. K)),( Col (B1,j))))) + ( Sum (( 0. K) * ( Line (A2,I))))) by A2, FVSUM_1: 66

                .= (( Sum (( 0. K) * ( Col (B1,j)))) + ( Sum (( 0. K) * ( Line (A2,I))))) by A1, FVSUM_1: 66

                .= (( Sum (( 0. K) * ( Col (B1,j)))) + (( 0. K) * ( Sum ( Line (A2,I))))) by FVSUM_1: 73

                .= ((( 0. K) * ( Sum ( Col (B1,j)))) + (( 0. K) * ( Sum ( Line (A2,I))))) by FVSUM_1: 73

                .= ((( 0. K) * ( Sum ( Col (B1,j)))) + ( 0. K))

                .= (( 0. K) + ( 0. K))

                .= ( 0. K) by RLVECT_1:def 4

                .= ((( width (A1 * B1)) |-> ( 0. K)) . j) by A3, A51, FINSEQ_2: 57

                .= (((( width (A1 * B1)) |-> ( 0. K)) ^ ( Line ((A2 * B2),I))) . j) by A51, A50, FINSEQ_1:def 7

                .= (( Line (bAB,(I + ( len A1)))) . j) by A13, A21, A47, A46, Th23

                .= (bAB * (i,j)) by A27, MATRIX_0:def 7;

              end;

                suppose

                 A52: j > ( width B1);

                then

                reconsider J = (j - ( width B1)) as Element of NAT by NAT_1: 21;

                

                 A53: j = (J + ( width B1));

                J <> 0 by A52;

                then

                 A54: J in ( Seg ( width B2)) by A9, A19, A11, A27, A53, FINSEQ_1: 61;

                then

                 A55: [I, J] in ( Indices (A2 * B2)) by A23, A47, A46, ZFMISC_1: 87;

                

                 A56: ( len (( width (A1 * B1)) |-> ( 0. K))) = ( width B1) by A3, CARD_1:def 7;

                

                 A57: ( dom ( Line ((A2 * B2),I))) = ( Seg ( width B2)) by A23, FINSEQ_2: 124;

                ( Col (bB,(J + ( width B1)))) = ((( len B1) |-> ( 0. K)) ^ ( Col (B2,J))) by A54, Th24;

                

                hence (bAbB * (i,j)) = (( Sum ( mlt ((( width A1) |-> ( 0. K)),(( len B1) |-> ( 0. K))))) + ( Sum ( mlt (( Line (A2,I)),( Col (B2,J)))))) by A1, A2, A30, A48, Lm9

                .= (( Sum (( 0. K) * (( width A1) |-> ( 0. K)))) + ( Sum ( mlt (( Line (A2,I)),( Col (B2,J)))))) by A1, FVSUM_1: 66

                .= ((( 0. K) * ( Sum (( width A1) |-> ( 0. K)))) + ( Sum ( mlt (( Line (A2,I)),( Col (B2,J)))))) by FVSUM_1: 73

                .= (( 0. K) + ( Sum ( mlt (( Line (A2,I)),( Col (B2,J))))))

                .= (( Line (A2,I)) "*" ( Col (B2,J))) by RLVECT_1:def 4

                .= ((A2 * B2) * (I,J)) by A2, A55, MATRIX_3:def 4

                .= (( Line ((A2 * B2),I)) . J) by A23, A54, MATRIX_0:def 7

                .= (((( width (A1 * B1)) |-> ( 0. K)) ^ ( Line ((A2 * B2),I))) . (J + ( width B1))) by A54, A57, A56, FINSEQ_1:def 7

                .= (( Line (bAB,(I + ( len A1)))) . j) by A13, A21, A47, A46, Th23

                .= (bAB * (i,j)) by A27, MATRIX_0:def 7;

              end;

            end;

            hence (bAbB * (i,j)) = (bAB * (i,j));

          end;

        end;

        hence (bAB * (i,j)) = (bAbB * (i,j));

      end;

      hence thesis by A8, A9, A20, A22, A18, A19, MATRIX_0: 21;

    end;

    theorem :: MATRIXJ1:79

    ( Width R1) = ( Len R2) implies (( block_diagonal (R1,( 0. K))) * ( block_diagonal (R2,( 0. K)))) = ( block_diagonal ((R1 (#) R2),( 0. K)))

    proof

      defpred P[ Nat] means for R1, R2 st ( Width R1) = ( Len R2) & ( len R1) = $1 holds (( block_diagonal (R1,( 0. K))) * ( block_diagonal (R2,( 0. K)))) = ( block_diagonal ((R1 (#) R2),( 0. K)));

      assume

       A1: ( Width R1) = ( Len R2);

      

       A2: for n st P[n] holds P[(n + 1)]

      proof

        let n such that

         A3: P[n];

        set n1 = (n + 1);

        let R1, R2 such that

         A4: ( Width R1) = ( Len R2) and

         A5: ( len R1) = n1;

        

         A6: n1 in ( Seg n1) by FINSEQ_1: 4;

        set R1n = (R1 | n);

        

         A7: ( len R1n) = n by A5, FINSEQ_1: 59, NAT_1: 11;

        set R2n = (R2 | n);

        

         A8: ( len R1) = ( len ( Len R2)) by A4, CARD_1:def 7

        .= ( len R2) by CARD_1:def 7;

        then

         A9: ( len R2n) = n by A5, FINSEQ_1: 59, NAT_1: 11;

        set b2n = ( block_diagonal (R2n,( 0. K)));

        set b1n = ( block_diagonal (R1n,( 0. K)));

        

         A10: ( Width R1n) = (( Width R1) | n) by Th21

        .= ( Len R2n) by A4, Th17;

        

         A11: ( dom ( Width R1)) = ( Seg n1) by A5, FINSEQ_2: 124;

        

        then

         A12: ( width (R1 . n1)) = (( Len R2) . n1) by A4, A6, Def4

        .= ( len (R2 . n1)) by A4, A6, A11, Def3;

        

         A13: R1 = ((R1 | n) ^ <*(R1 . n1)*>) by A5, FINSEQ_3: 55;

        

         A14: ( width b1n) = ( Sum ( Width R1n)) by Def5

        .= ( len b2n) by A10, Def5;

        

         A15: R2 = ((R2 | n) ^ <*(R2 . n1)*>) by A5, A8, FINSEQ_3: 55;

        

        hence (( block_diagonal (R1,( 0. K))) * ( block_diagonal (R2,( 0. K)))) = (( block_diagonal ( <*b1n, (R1 . n1)*>,( 0. K))) * ( block_diagonal ((R2n ^ <*(R2 . n1)*>),( 0. K)))) by A13, Th35

        .= (( block_diagonal ( <*b1n, (R1 . n1)*>,( 0. K))) * ( block_diagonal ( <*b2n, (R2 . n1)*>,( 0. K)))) by Th35

        .= ( block_diagonal (( <*b1n, (R1 . n1)*> (#) <*b2n, (R2 . n1)*>),( 0. K))) by A14, A12, Th78

        .= ( block_diagonal ( <*(b1n * b2n), ((R1 . n1) * (R2 . n1))*>,( 0. K))) by Th77

        .= ( block_diagonal ( <*( block_diagonal ((R1n (#) R2n),( 0. K))), ((R1 . n1) * (R2 . n1))*>,( 0. K))) by A3, A7, A10

        .= ( block_diagonal (((R1n (#) R2n) ^ <*((R1 . n1) * (R2 . n1))*>),( 0. K))) by Th35

        .= ( block_diagonal (((R1n (#) R2n) ^ ( <*(R1 . n1)*> (#) <*(R2 . n1)*>)),( 0. K))) by Th76

        .= ( block_diagonal ((R1 (#) R2),( 0. K))) by A7, A9, A13, A15, Th74;

      end;

      

       A16: P[ 0 ]

      proof

        let R1, R2 such that

         A17: ( Width R1) = ( Len R2) and

         A18: ( len R1) = 0 ;

        

         A19: ( Sum ( Width R1)) = 0 by A18, RVSUM_1: 72;

        set b2 = ( block_diagonal (R2,( 0. K)));

        ( Len R2) = {} by A17, A18;

        then

         A20: ( len b2) = 0 by Def5, RVSUM_1: 72;

        set b1 = ( block_diagonal (R1,( 0. K)));

        

         A21: ( Sum ( Width R1)) = ( width b1) by Def5;

        set b12 = ( block_diagonal ((R1 (#) R2),( 0. K)));

        

         A22: ( Len R1) = {} by A18;

        ( Len R1) = ( Len (R1 (#) R2)) by A17, Th73;

        then ( len b12) = 0 by A22, Def5, RVSUM_1: 72;

        then

         A23: b12 = {} ;

        ( len b1) = 0 by A22, Def5, RVSUM_1: 72;

        then ( len (b1 * b2)) = 0 by A20, A21, A19, MATRIX_3:def 4;

        hence thesis by A23;

      end;

      for n holds P[n] from NAT_1:sch 2( A16, A2);

      hence thesis by A1;

    end;