matrix_3.miz
    
    begin
    
    reserve x,y,z,x1,x2,y1,y2,z1,z2 for
    object, 
    
i,j,k,l,n,m for
    Nat, 
    
D for non
    empty  
    set, 
    
K for
    Ring;
    
    definition
    
      let K be
    Ring;
    
      let n,m be
    Nat;
    
      :: 
    
    MATRIX_3:def1
    
      func
    
    0. (K,n,m) -> 
    Matrix of n, m, K equals (n 
    |-> (m 
    |-> ( 
    0. K))); 
    
      coherence by
    MATRIX_0: 10;
    
    end
    
    definition
    
      let K be
    Ring;
    
      let A be
    Matrix of K; 
    
      :: 
    
    MATRIX_3:def2
    
      func
    
    - A -> 
    Matrix of K means 
    
      :
    
    Def2: ( 
    len it ) 
    = ( 
    len A) & ( 
    width it ) 
    = ( 
    width A) & for i, j holds 
    [i, j]
    in ( 
    Indices A) implies (it 
    * (i,j)) 
    = ( 
    - (A 
    * (i,j))); 
    
      existence
    
      proof
    
        set n = (
    len A); 
    
        deffunc
    
    F(
    Nat, 
    Nat) = (
    - (A 
    * ($1,$2))); 
    
        consider M be
    Matrix of ( 
    len A), ( 
    width A), K such that 
    
        
    
    A1: for i, j st 
    [i, j]
    in ( 
    Indices M) holds (M 
    * (i,j)) 
    =  
    F(i,j) from
    MATRIX_0:sch 1;
    
        reconsider A1 = A as
    Matrix of n, ( 
    width A), K by 
    MATRIX_0: 51;
    
        
    
        
    
    A2: ( 
    Indices A1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width A)):] by 
    MATRIX_0: 25;
    
        
    
    A3: 
    
        now
    
          per cases ;
    
            case n
    >  
    0 ; 
    
            hence (
    len M) 
    = ( 
    len A) & ( 
    width M) 
    = ( 
    width A) & ( 
    Indices A) 
    = ( 
    Indices M) by 
    A2,
    MATRIX_0: 23;
    
          end;
    
            case
    
            
    
    A4: n 
    =  
    0 ; 
    
            then (
    len M) 
    =  
    0 by 
    MATRIX_0:def 2;
    
            then
    
            
    
    A5: ( 
    width M) 
    =  
    0 by 
    MATRIX_0:def 3;
    
            (
    width A) 
    =  
    0 by 
    A4,
    MATRIX_0:def 3;
    
            hence (
    len M) 
    = ( 
    len A) & ( 
    width M) 
    = ( 
    width A) & ( 
    Indices A) 
    = ( 
    Indices M) by 
    A2,
    A5,
    MATRIX_0: 25;
    
          end;
    
        end;
    
        reconsider M as
    Matrix of K; 
    
        take M;
    
        thus thesis by
    A1,
    A3;
    
      end;
    
      uniqueness
    
      proof
    
        let M1,M2 be
    Matrix of K; 
    
        set n = (
    len A); 
    
        assume that
    
        
    
    A6: ( 
    len M1) 
    = ( 
    len A) & ( 
    width M1) 
    = ( 
    width A) and 
    
        
    
    A7: for i, j st 
    [i, j]
    in ( 
    Indices A) holds (M1 
    * (i,j)) 
    = ( 
    - (A 
    * (i,j))) and 
    
        
    
    A8: ( 
    len M2) 
    = ( 
    len A) & ( 
    width M2) 
    = ( 
    width A) and 
    
        
    
    A9: for i, j st 
    [i, j]
    in ( 
    Indices A) holds (M2 
    * (i,j)) 
    = ( 
    - (A 
    * (i,j))); 
    
        reconsider M2 as
    Matrix of n, ( 
    width A), K by 
    A8,
    MATRIX_0: 51;
    
        reconsider M1 as
    Matrix of n, ( 
    width A), K by 
    A6,
    MATRIX_0: 51;
    
        reconsider A1 = A as
    Matrix of n, ( 
    width A), K by 
    MATRIX_0: 51;
    
        
    
        
    
    A10: ( 
    Indices A1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width A)):] by 
    MATRIX_0: 25;
    
        
    
        
    
    A11: ( 
    Indices M1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width M1)):] & ( 
    Indices M2) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width M2)):] by 
    MATRIX_0: 25;
    
        
    
    A12: 
    
        now
    
          per cases ;
    
            case
    
            
    
    A13: n 
    >  
    0 ; 
    
            then (
    Indices M1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width A)):] by 
    MATRIX_0: 23;
    
            hence (
    Indices A) 
    = ( 
    Indices M1) & ( 
    Indices M1) 
    = ( 
    Indices M2) by 
    A10,
    A13,
    MATRIX_0: 23;
    
          end;
    
            case
    
            
    
    A14: n 
    =  
    0 ; 
    
            then (
    len M1) 
    =  
    0 by 
    MATRIX_0:def 2;
    
            then
    
            
    
    A15: ( 
    width M1) 
    =  
    0 by 
    MATRIX_0:def 3;
    
            (
    len M2) 
    =  
    0 by 
    A14,
    MATRIX_0:def 2;
    
            hence (
    Indices A) 
    = ( 
    Indices M1) & ( 
    Indices M1) 
    = ( 
    Indices M2) by 
    A10,
    A11,
    A14,
    A15,
    MATRIX_0:def 3;
    
          end;
    
        end;
    
        now
    
          let i, j;
    
          assume
    
          
    
    A16: 
    [i, j]
    in ( 
    Indices A); 
    
          then (M1
    * (i,j)) 
    = ( 
    - (A 
    * (i,j))) by 
    A7;
    
          hence (M1
    * (i,j)) 
    = (M2 
    * (i,j)) by 
    A9,
    A16;
    
        end;
    
        hence thesis by
    A12,
    MATRIX_0: 27;
    
      end;
    
    end
    
    definition
    
      let K be
    Ring;
    
      let A,B be
    Matrix of K; 
    
      :: 
    
    MATRIX_3:def3
    
      func A
    
    + B -> 
    Matrix of K means 
    
      :
    
    Def3: ( 
    len it ) 
    = ( 
    len A) & ( 
    width it ) 
    = ( 
    width A) & for i, j holds 
    [i, j]
    in ( 
    Indices A) implies (it 
    * (i,j)) 
    = ((A 
    * (i,j)) 
    + (B 
    * (i,j))); 
    
      existence
    
      proof
    
        set n = (
    len A); 
    
        reconsider A1 = A as
    Matrix of ( 
    len A), ( 
    width A), K by 
    MATRIX_0: 51;
    
        deffunc
    
    F(
    Nat, 
    Nat) = ((A
    * ($1,$2)) 
    + (B 
    * ($1,$2))); 
    
        consider M be
    Matrix of ( 
    len A), ( 
    width A), K such that 
    
        
    
    A1: for i, j st 
    [i, j]
    in ( 
    Indices M) holds (M 
    * (i,j)) 
    =  
    F(i,j) from
    MATRIX_0:sch 1;
    
        
    
        
    
    A2: ( 
    Indices A1) 
    =  
    [:(
    Seg ( 
    len A)), ( 
    Seg ( 
    width A)):] by 
    MATRIX_0: 25;
    
        
    
    A3: 
    
        now
    
          per cases ;
    
            case n
    >  
    0 ; 
    
            hence (
    len M) 
    = ( 
    len A) & ( 
    width M) 
    = ( 
    width A) & ( 
    Indices A) 
    = ( 
    Indices M) by 
    A2,
    MATRIX_0: 23;
    
          end;
    
            case
    
            
    
    A4: n 
    =  
    0 ; 
    
            then (
    len M) 
    =  
    0 by 
    MATRIX_0:def 2;
    
            then
    
            
    
    A5: ( 
    width M) 
    =  
    0 by 
    MATRIX_0:def 3;
    
            (
    width A) 
    =  
    0 by 
    A4,
    MATRIX_0:def 3;
    
            hence (
    len M) 
    = ( 
    len A) & ( 
    width M) 
    = ( 
    width A) & ( 
    Indices A) 
    = ( 
    Indices M) by 
    A2,
    A5,
    MATRIX_0: 25;
    
          end;
    
        end;
    
        reconsider M as
    Matrix of K; 
    
        take M;
    
        thus thesis by
    A1,
    A3;
    
      end;
    
      uniqueness
    
      proof
    
        set n = (
    len A); 
    
        let M1,M2 be
    Matrix of K; 
    
        assume that
    
        
    
    A6: ( 
    len M1) 
    = ( 
    len A) & ( 
    width M1) 
    = ( 
    width A) and 
    
        
    
    A7: for i, j st 
    [i, j]
    in ( 
    Indices A) holds (M1 
    * (i,j)) 
    = ((A 
    * (i,j)) 
    + (B 
    * (i,j))) and 
    
        
    
    A8: ( 
    len M2) 
    = ( 
    len A) & ( 
    width M2) 
    = ( 
    width A) and 
    
        
    
    A9: for i, j st 
    [i, j]
    in ( 
    Indices A) holds (M2 
    * (i,j)) 
    = ((A 
    * (i,j)) 
    + (B 
    * (i,j))); 
    
        reconsider M2 as
    Matrix of n, ( 
    width A), K by 
    A8,
    MATRIX_0: 51;
    
        reconsider M1 as
    Matrix of n, ( 
    width A), K by 
    A6,
    MATRIX_0: 51;
    
        reconsider A1 = A as
    Matrix of n, ( 
    width A), K by 
    MATRIX_0: 51;
    
        
    
        
    
    A10: ( 
    Indices A1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width A)):] by 
    MATRIX_0: 25;
    
        
    
        
    
    A11: ( 
    Indices M1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width M1)):] & ( 
    Indices M2) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width M2)):] by 
    MATRIX_0: 25;
    
        
    
    A12: 
    
        now
    
          per cases ;
    
            case
    
            
    
    A13: n 
    >  
    0 ; 
    
            then (
    Indices M1) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width A)):] by 
    MATRIX_0: 23;
    
            hence (
    Indices A) 
    = ( 
    Indices M1) & ( 
    Indices M1) 
    = ( 
    Indices M2) by 
    A10,
    A13,
    MATRIX_0: 23;
    
          end;
    
            case
    
            
    
    A14: n 
    =  
    0 ; 
    
            then (
    len M1) 
    =  
    0 by 
    MATRIX_0:def 2;
    
            then
    
            
    
    A15: ( 
    width M1) 
    =  
    0 by 
    MATRIX_0:def 3;
    
            (
    len M2) 
    =  
    0 by 
    A14,
    MATRIX_0:def 2;
    
            hence (
    Indices A) 
    = ( 
    Indices M1) & ( 
    Indices M1) 
    = ( 
    Indices M2) by 
    A10,
    A11,
    A14,
    A15,
    MATRIX_0:def 3;
    
          end;
    
        end;
    
        now
    
          let i, j;
    
          assume
    
          
    
    A16: 
    [i, j]
    in ( 
    Indices A); 
    
          then (M1
    * (i,j)) 
    = ((A 
    * (i,j)) 
    + (B 
    * (i,j))) by 
    A7;
    
          hence (M1
    * (i,j)) 
    = (M2 
    * (i,j)) by 
    A9,
    A16;
    
        end;
    
        hence thesis by
    A12,
    MATRIX_0: 27;
    
      end;
    
    end
    
    theorem :: 
    
    MATRIX_3:1
    
    
    
    
    
    Th1: for i, j st 
    [i, j]
    in ( 
    Indices ( 
    0. (K,n,m))) holds (( 
    0. (K,n,m)) 
    * (i,j)) 
    = ( 
    0. K) 
    
    proof
    
      let i, j;
    
      assume
    
      
    
    A1: 
    [i, j]
    in ( 
    Indices ( 
    0. (K,n,m))); 
    
      
    
      
    
    A2: ( 
    Indices ( 
    0. (K,n,m))) 
    =  
    [:(
    Seg n), ( 
    Seg ( 
    width ( 
    0. (K,n,m)))):] by 
    MATRIX_0: 25;
    
      per cases ;
    
        suppose
    
        
    
    A3: n 
    >  
    0 ; 
    
        reconsider m1 = m as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
        
    
        
    
    A4: 
    [i, j]
    in  
    [:(
    Seg n), ( 
    Seg m):] by 
    A1,
    A3,
    MATRIX_0: 23;
    
        then j
    in ( 
    Seg m) by 
    ZFMISC_1: 87;
    
        then
    
        
    
    A5: ((m1 
    |-> ( 
    0. K)) 
    . j) 
    = ( 
    0. K) by 
    FUNCOP_1: 7;
    
        i
    in ( 
    Seg n) by 
    A4,
    ZFMISC_1: 87;
    
        then ((
    0. (K,n,m)) 
    . i) 
    = (m 
    |-> ( 
    0. K)) by 
    FUNCOP_1: 7;
    
        hence thesis by
    A1,
    A5,
    MATRIX_0:def 5;
    
      end;
    
        suppose n
    =  
    0 ; 
    
        then (
    Seg n) 
    =  
    {} ; 
    
        hence thesis by
    A1,
    A2,
    ZFMISC_1: 90;
    
      end;
    
    end;
    
    theorem :: 
    
    MATRIX_3:2
    
    for A,B be
    Matrix of K st ( 
    len A) 
    = ( 
    len B) & ( 
    width A) 
    = ( 
    width B) holds (A 
    + B) 
    = (B 
    + A) 
    
    proof
    
      let A,B be
    Matrix of K; 
    
      assume that
    
      
    
    A1: ( 
    len A) 
    = ( 
    len B) and 
    
      
    
    A2: ( 
    width A) 
    = ( 
    width B); 
    
      
    
      
    
    A3: ( 
    width A) 
    = ( 
    width (A 
    + B)) by 
    Def3;
    
      then
    
      
    
    A4: ( 
    width (A 
    + B)) 
    = ( 
    width (B 
    + A)) by 
    A2,
    Def3;
    
      
    
      
    
    A5: ( 
    len A) 
    = ( 
    len (A 
    + B)) by 
    Def3;
    
      then (
    dom A) 
    = ( 
    dom (A 
    + B)) by 
    FINSEQ_3: 29;
    
      then
    
      
    
    A6: ( 
    Indices A) 
    = ( 
    Indices (A 
    + B)) by 
    A3;
    
      (
    dom A) 
    = ( 
    dom B) by 
    A1,
    FINSEQ_3: 29;
    
      then
    
      
    
    A7: ( 
    Indices B) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):] by 
    A2;
    
      
    
    A8: 
    
      now
    
        let i, j;
    
        assume
    
        
    
    A9: 
    [i, j]
    in ( 
    Indices (A 
    + B)); 
    
        
    
        hence ((A
    + B) 
    * (i,j)) 
    = ((B 
    * (i,j)) 
    + (A 
    * (i,j))) by 
    A6,
    Def3
    
        .= ((B
    + A) 
    * (i,j)) by 
    A7,
    A6,
    A9,
    Def3;
    
      end;
    
      (
    len (A 
    + B)) 
    = ( 
    len (B 
    + A)) by 
    A1,
    A5,
    Def3;
    
      hence thesis by
    A4,
    A8,
    MATRIX_0: 21;
    
    end;
    
    theorem :: 
    
    MATRIX_3:3
    
    for A,B,C be
    Matrix of K st ( 
    len A) 
    = ( 
    len B) & ( 
    width A) 
    = ( 
    width B) holds ((A 
    + B) 
    + C) 
    = (A 
    + (B 
    + C)) 
    
    proof
    
      let A,B,C be
    Matrix of K; 
    
      assume that
    
      
    
    A1: ( 
    len A) 
    = ( 
    len B) and 
    
      
    
    A2: ( 
    width A) 
    = ( 
    width B); 
    
      (
    dom A) 
    = ( 
    dom B) by 
    A1,
    FINSEQ_3: 29;
    
      then
    
      
    
    A3: ( 
    Indices B) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):] by 
    A2;
    
      
    
      
    
    A4: ( 
    Indices A) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):]; 
    
      
    
      
    
    A5: ( 
    width ((A 
    + B) 
    + C)) 
    = ( 
    width (A 
    + B)) by 
    Def3;
    
      
    
      
    
    A6: ( 
    width (A 
    + B)) 
    = ( 
    width A) by 
    Def3;
    
      
    
      
    
    A7: ( 
    len (A 
    + (B 
    + C))) 
    = ( 
    len A) & ( 
    width (A 
    + (B 
    + C))) 
    = ( 
    width A) by 
    Def3;
    
      
    
      
    
    A8: ( 
    len (A 
    + B)) 
    = ( 
    len A) by 
    Def3;
    
      
    
      
    
    A9: ( 
    len ((A 
    + B) 
    + C)) 
    = ( 
    len (A 
    + B)) by 
    Def3;
    
      then (
    dom A) 
    = ( 
    dom ((A 
    + B) 
    + C)) by 
    A8,
    FINSEQ_3: 29;
    
      then
    
      
    
    A10: ( 
    Indices ((A 
    + B) 
    + C)) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):] by 
    A6,
    A5;
    
      (
    dom A) 
    = ( 
    dom (A 
    + B)) by 
    A8,
    FINSEQ_3: 29;
    
      then
    
      
    
    A11: ( 
    Indices (A 
    + B)) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):] by 
    A6;
    
      now
    
        let i, j;
    
        assume
    
        
    
    A12: 
    [i, j]
    in ( 
    Indices ((A 
    + B) 
    + C)); 
    
        
    
        hence (((A
    + B) 
    + C) 
    * (i,j)) 
    = (((A 
    + B) 
    * (i,j)) 
    + (C 
    * (i,j))) by 
    A11,
    A10,
    Def3
    
        .= (((A
    * (i,j)) 
    + (B 
    * (i,j))) 
    + (C 
    * (i,j))) by 
    A4,
    A10,
    A12,
    Def3
    
        .= ((A
    * (i,j)) 
    + ((B 
    * (i,j)) 
    + (C 
    * (i,j)))) by 
    RLVECT_1:def 3
    
        .= ((A
    * (i,j)) 
    + ((B 
    + C) 
    * (i,j))) by 
    A3,
    A10,
    A12,
    Def3
    
        .= ((A
    + (B 
    + C)) 
    * (i,j)) by 
    A4,
    A10,
    A12,
    Def3;
    
      end;
    
      hence thesis by
    A8,
    A6,
    A9,
    A5,
    A7,
    MATRIX_0: 21;
    
    end;
    
    theorem :: 
    
    MATRIX_3:4
    
    for A be
    Matrix of n, m, K holds (A 
    + ( 
    0. (K,n,m))) 
    = A 
    
    proof
    
      let A be
    Matrix of n, m, K; 
    
      per cases ;
    
        suppose
    
        
    
    A1: n 
    >  
    0 ; 
    
        
    
        
    
    A2: ( 
    width A) 
    = ( 
    width (A 
    + ( 
    0. (K,n,m)))) by 
    Def3;
    
        
    
        
    
    A3: ( 
    Indices A) 
    =  
    [:(
    Seg n), ( 
    Seg m):] by 
    A1,
    MATRIX_0: 23;
    
        
    
        
    
    A4: ( 
    len A) 
    = ( 
    len (A 
    + ( 
    0. (K,n,m)))) by 
    Def3;
    
        then (
    dom A) 
    = ( 
    dom (A 
    + ( 
    0. (K,n,m)))) by 
    FINSEQ_3: 29;
    
        then
    
        
    
    A5: ( 
    Indices A) 
    = ( 
    Indices (A 
    + ( 
    0. (K,n,m)))) by 
    A2;
    
        
    
        
    
    A6: ( 
    Indices ( 
    0. (K,n,m))) 
    =  
    [:(
    Seg n), ( 
    Seg m):] by 
    A1,
    MATRIX_0: 23;
    
        now
    
          let i, j;
    
          assume
    
          
    
    A7: 
    [i, j]
    in ( 
    Indices (A 
    + ( 
    0. (K,n,m)))); 
    
          
    
          hence ((A
    + ( 
    0. (K,n,m))) 
    * (i,j)) 
    = ((A 
    * (i,j)) 
    + (( 
    0. (K,n,m)) 
    * (i,j))) by 
    A5,
    Def3
    
          .= ((A
    * (i,j)) 
    + ( 
    0. K)) by 
    A3,
    A6,
    A5,
    A7,
    Th1
    
          .= (A
    * (i,j)) by 
    RLVECT_1: 4;
    
        end;
    
        hence thesis by
    A4,
    A2,
    MATRIX_0: 21;
    
      end;
    
        suppose
    
        
    
    A8: n 
    =  
    0 ; 
    
        
    
        
    
    A9: ( 
    width A) 
    = ( 
    width (A 
    + ( 
    0. (K,n,m)))) by 
    Def3;
    
        
    
        
    
    A10: ( 
    len A) 
    = ( 
    len (A 
    + ( 
    0. (K,n,m)))) by 
    Def3;
    
        then (
    dom A) 
    = ( 
    dom (A 
    + ( 
    0. (K,n,m)))) by 
    FINSEQ_3: 29;
    
        then (
    Indices A) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):] & ( 
    Indices (A 
    + ( 
    0. (K,n,m)))) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width A)):] by 
    A9;
    
        then for i, j st
    [i, j]
    in ( 
    Indices (A 
    + ( 
    0. (K,n,m)))) holds ((A 
    + ( 
    0. (K,n,m))) 
    * (i,j)) 
    = (A 
    * (i,j)) by 
    A8,
    MATRIX_0: 22;
    
        hence thesis by
    A10,
    A9,
    MATRIX_0: 21;
    
      end;
    
    end;
    
    theorem :: 
    
    MATRIX_3:5
    
    for A be
    Matrix of n, m, K holds (A 
    + ( 
    - A)) 
    = ( 
    0. (K,n,m)) 
    
    proof
    
      let A be
    Matrix of n, m, K; 
    
      
    
      
    
    A1: ( 
    width ( 
    - A)) 
    = ( 
    width A) by 
    Def2;
    
      
    
      
    
    A2: ( 
    len (A 
    + ( 
    - A))) 
    = ( 
    len A) by 
    Def3;
    
      
    
      
    
    A3: ( 
    width (A 
    + ( 
    - A))) 
    = ( 
    width A) by 
    Def3;
    
      
    
      
    
    A4: ( 
    len ( 
    - A)) 
    = ( 
    len A) by 
    Def2;
    
      
    
    A5: 
    
      now
    
        per cases ;
    
          case
    
          
    
    A6: n 
    >  
    0 ; 
    
          then (
    len (A 
    + ( 
    - A))) 
    = n & ( 
    width (A 
    + ( 
    - A))) 
    = m by 
    A2,
    A3,
    MATRIX_0: 23;
    
          hence (
    len ( 
    0. (K,n,m))) 
    = ( 
    len (A 
    + ( 
    - A))) & ( 
    width ( 
    0. (K,n,m))) 
    = ( 
    width (A 
    + ( 
    - A))) by 
    A6,
    MATRIX_0: 23;
    
          (
    dom A) 
    = ( 
    dom ( 
    - A)) & ( 
    dom A) 
    = ( 
    dom (A 
    + ( 
    - A))) by 
    A4,
    A2,
    FINSEQ_3: 29;
    
          hence (
    Indices A) 
    = ( 
    Indices ( 
    - A)) & ( 
    Indices A) 
    = ( 
    Indices (A 
    + ( 
    - A))) by 
    A1,
    A3;
    
        end;
    
          case
    
          
    
    A7: n 
    =  
    0 ; 
    
          then
    
          
    
    A8: ( 
    width A) 
    =  
    0 by 
    MATRIX_0: 22;
    
          then
    
          
    
    A9: ( 
    Seg ( 
    width ( 
    - A))) 
    = ( 
    Seg  
    0 ) by 
    A1;
    
          
    
          
    
    A10: ( 
    len A) 
    =  
    0 by 
    A7,
    MATRIX_0: 22;
    
          then
    
          
    
    A11: ( 
    dom ( 
    - A)) 
    = ( 
    Seg  
    0 ) by 
    A4,
    FINSEQ_1:def 3;
    
          
    
          
    
    A12: ( 
    Indices ( 
    - A)) 
    =  
    [:(
    dom ( 
    - A)), ( 
    Seg ( 
    width ( 
    - A))):] 
    
          .=
    [:(
    Seg  
    0 ), ( 
    Seg ( 
    width ( 
    - A))):] by 
    A11
    
          .=
    [:(
    Seg  
    0 ), ( 
    Seg  
    0 ) qua 
    set:] by
    A9;
    
          (
    dom (A 
    + ( 
    - A))) 
    = ( 
    Seg  
    0 ) by 
    A2,
    A10,
    FINSEQ_1:def 3;
    
          then
    
          
    
    A13: ( 
    Indices (A 
    + ( 
    - A))) 
    =  
    [:(
    Seg  
    0 ), ( 
    Seg  
    0 ) qua 
    set:] by
    A3,
    A8;
    
          (
    len ( 
    0. (K,n,m))) 
    =  
    0 & ( 
    width ( 
    0. (K,n,m))) 
    =  
    0 by 
    A7,
    MATRIX_0: 22;
    
          hence (
    len ( 
    0. (K,n,m))) 
    = ( 
    len (A 
    + ( 
    - A))) & ( 
    width ( 
    0. (K,n,m))) 
    = ( 
    width (A 
    + ( 
    - A))) by 
    A10,
    A8,
    Def3;
    
          (
    Indices A) 
    =  
    {} by 
    A7,
    MATRIX_0: 22;
    
          hence (
    Indices A) 
    = ( 
    Indices ( 
    - A)) & ( 
    Indices A) 
    = ( 
    Indices (A 
    + ( 
    - A))) by 
    A12,
    A13,
    ZFMISC_1: 90;
    
        end;
    
      end;
    
      
    
      
    
    A14: ( 
    Indices A) 
    = ( 
    Indices ( 
    0. (K,n,m))) by 
    MATRIX_0: 26;
    
      now
    
        let i, j;
    
        assume
    
        
    
    A15: 
    [i, j]
    in ( 
    Indices A); 
    
        
    
        hence ((A
    + ( 
    - A)) 
    * (i,j)) 
    = ((A 
    * (i,j)) 
    + (( 
    - A) 
    * (i,j))) by 
    Def3
    
        .= ((A
    * (i,j)) 
    + ( 
    - (A 
    * (i,j)))) by 
    A15,
    Def2
    
        .= (
    0. K) by 
    RLVECT_1: 5
    
        .= ((
    0. (K,n,m)) 
    * (i,j)) by 
    A14,
    A15,
    Th1;
    
      end;
    
      hence thesis by
    A5,
    MATRIX_0: 21;
    
    end;
    
    definition
    
      let K be
    Ring;
    
      let A,B be
    Matrix of K; 
    
      assume
    
      
    
    A1: ( 
    width A) 
    = ( 
    len B); 
    
      :: 
    
    MATRIX_3:def4
    
      func A
    
    * B -> 
    Matrix of K means 
    
      :
    
    Def4: ( 
    len it ) 
    = ( 
    len A) & ( 
    width it ) 
    = ( 
    width B) & for i, j st 
    [i, j]
    in ( 
    Indices it ) holds (it 
    * (i,j)) 
    = (( 
    Line (A,i)) 
    "*" ( 
    Col (B,j))); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Nat, 
    Nat) = ((
    Line (A,$1)) 
    "*" ( 
    Col (B,$2))); 
    
        consider M be
    Matrix of ( 
    len A), ( 
    width B), K such that 
    
        
    
    A2: for i, j st 
    [i, j]
    in ( 
    Indices M) holds (M 
    * (i,j)) 
    =  
    F(i,j) from
    MATRIX_0:sch 1;
    
        take M;
    
        now
    
          per cases ;
    
            case (
    len A) 
    >  
    0 ; 
    
            hence (
    len M) 
    = ( 
    len A) & ( 
    width M) 
    = ( 
    width B) by 
    MATRIX_0: 23;
    
          end;
    
            case
    
            
    
    A3: ( 
    len A) 
    =  
    0 ; 
    
            then (
    len B) 
    =  
    0 by 
    A1,
    MATRIX_0:def 3;
    
            then
    
            
    
    A4: ( 
    width B) 
    =  
    0 by 
    MATRIX_0:def 3;
    
            (
    len M) 
    =  
    0 by 
    A3,
    MATRIX_0: 25;
    
            hence (
    len M) 
    = ( 
    len A) & ( 
    width M) 
    = ( 
    width B) by 
    A3,
    A4,
    MATRIX_0:def 3;
    
          end;
    
        end;
    
        hence thesis by
    A2;
    
      end;
    
      uniqueness
    
      proof
    
        let M1,M2 be
    Matrix of K; 
    
        assume that
    
        
    
    A5: ( 
    len M1) 
    = ( 
    len A) and 
    
        
    
    A6: ( 
    width M1) 
    = ( 
    width B) and 
    
        
    
    A7: for i, j st 
    [i, j]
    in ( 
    Indices M1) holds (M1 
    * (i,j)) 
    = (( 
    Line (A,i)) 
    "*" ( 
    Col (B,j))) and 
    
        
    
    A8: ( 
    len M2) 
    = ( 
    len A) and 
    
        
    
    A9: ( 
    width M2) 
    = ( 
    width B) and 
    
        
    
    A10: for i, j st 
    [i, j]
    in ( 
    Indices M2) holds (M2 
    * (i,j)) 
    = (( 
    Line (A,i)) 
    "*" ( 
    Col (B,j))); 
    
        (
    dom M2) 
    = ( 
    dom M1) by 
    A5,
    A8,
    FINSEQ_3: 29;
    
        then
    
        
    
    A11: ( 
    Indices M1) 
    =  
    [:(
    dom M1), ( 
    Seg ( 
    width M1)):] & ( 
    Indices M2) 
    =  
    [:(
    dom M1), ( 
    Seg ( 
    width M1)):] by 
    A6,
    A9;
    
        now
    
          let i, j;
    
          assume
    
          
    
    A12: 
    [i, j]
    in ( 
    Indices M1); 
    
          then (M1
    * (i,j)) 
    = (( 
    Line (A,i)) 
    "*" ( 
    Col (B,j))) by 
    A7;
    
          hence (M1
    * (i,j)) 
    = (M2 
    * (i,j)) by 
    A10,
    A11,
    A12;
    
        end;
    
        hence thesis by
    A5,
    A6,
    A8,
    A9,
    MATRIX_0: 21;
    
      end;
    
    end
    
    definition
    
      let n, k, m;
    
      let K be
    Ring;
    
      let A be
    Matrix of n, k, K; 
    
      let B be
    Matrix of ( 
    width A), m, K; 
    
      :: original:
    *
    
      redefine
    
      func A
    
    * B -> 
    Matrix of ( 
    len A), ( 
    width B), K ; 
    
      coherence
    
      proof
    
        (
    width A) 
    = ( 
    len B) by 
    MATRIX_0: 25;
    
        then (
    len (A 
    * B)) 
    = ( 
    len A) & ( 
    width (A 
    * B)) 
    = ( 
    width B) by 
    Def4;
    
        hence thesis by
    MATRIX_0: 51;
    
      end;
    
    end
    
    definition
    
      let K be
    Ring;
    
      let M be
    Matrix of K; 
    
      let a be
    Element of K; 
    
      :: 
    
    MATRIX_3:def5
    
      func a
    
    * M -> 
    Matrix of K means ( 
    len it ) 
    = ( 
    len M) & ( 
    width it ) 
    = ( 
    width M) & for i, j st 
    [i, j]
    in ( 
    Indices M) holds (it 
    * (i,j)) 
    = (a 
    * (M 
    * (i,j))); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Nat, 
    Nat) = (a
    * (M 
    * ($1,$2))); 
    
        consider N be
    Matrix of ( 
    len M), ( 
    width M), K such that 
    
        
    
    A1: for i, j st 
    [i, j]
    in ( 
    Indices N) holds (N 
    * (i,j)) 
    =  
    F(i,j) from
    MATRIX_0:sch 1;
    
        take N;
    
        
    
        
    
    A2: ( 
    len N) 
    = ( 
    len M) by 
    MATRIX_0:def 2;
    
        
    
    A3: 
    
        now
    
          per cases ;
    
            case
    
            
    
    A4: ( 
    len M) 
    =  
    0 ; 
    
            then (
    width N) 
    =  
    0 by 
    A2,
    MATRIX_0:def 3;
    
            hence (
    width N) 
    = ( 
    width M) by 
    A4,
    MATRIX_0:def 3;
    
          end;
    
            case (
    len M) 
    >  
    0 ; 
    
            hence (
    width N) 
    = ( 
    width M) by 
    MATRIX_0: 23;
    
          end;
    
        end;
    
        (
    dom M) 
    = ( 
    dom N) by 
    A2,
    FINSEQ_3: 29;
    
        then (
    Indices N) 
    =  
    [:(
    dom M), ( 
    Seg ( 
    width M)):] by 
    A3;
    
        hence thesis by
    A1,
    A3,
    MATRIX_0:def 2;
    
      end;
    
      uniqueness
    
      proof
    
        let A,B be
    Matrix of K; 
    
        assume that
    
        
    
    A5: ( 
    len A) 
    = ( 
    len M) and 
    
        
    
    A6: ( 
    width A) 
    = ( 
    width M) and 
    
        
    
    A7: for i, j st 
    [i, j]
    in ( 
    Indices M) holds (A 
    * (i,j)) 
    = (a 
    * (M 
    * (i,j))) and 
    
        
    
    A8: ( 
    len B) 
    = ( 
    len M) & ( 
    width B) 
    = ( 
    width M) and 
    
        
    
    A9: for i, j st 
    [i, j]
    in ( 
    Indices M) holds (B 
    * (i,j)) 
    = (a 
    * (M 
    * (i,j))); 
    
        now
    
          let i, j;
    
          (
    dom A) 
    = ( 
    dom M) by 
    A5,
    FINSEQ_3: 29;
    
          then
    
          
    
    A10: ( 
    Indices A) 
    =  
    [:(
    dom M), ( 
    Seg ( 
    width M)):] by 
    A6;
    
          assume
    
          
    
    A11: 
    [i, j]
    in ( 
    Indices A); 
    
          
    
          hence (A
    * (i,j)) 
    = (a 
    * (M 
    * (i,j))) by 
    A7,
    A10
    
          .= (B
    * (i,j)) by 
    A9,
    A11,
    A10;
    
        end;
    
        hence thesis by
    A5,
    A6,
    A8,
    MATRIX_0: 21;
    
      end;
    
    end
    
    definition
    
      let K be
    Ring;
    
      let M be
    Matrix of K; 
    
      let a be
    Element of K; 
    
      :: 
    
    MATRIX_3:def6
    
      func M
    
    * a -> 
    Matrix of K equals (a 
    * M); 
    
      coherence ;
    
    end
    
    theorem :: 
    
    MATRIX_3:6
    
    for p,q be
    FinSequence of K st ( 
    len p) 
    = ( 
    len q) holds ( 
    len ( 
    mlt (p,q))) 
    = ( 
    len p) & ( 
    len ( 
    mlt (p,q))) 
    = ( 
    len q) 
    
    proof
    
      let p,q be
    FinSequence of K; 
    
      reconsider r = (
    mlt (p,q)) as 
    FinSequence of K; 
    
      
    
      
    
    A1: r 
    = (the 
    multF of K 
    .: (p,q)) by 
    FVSUM_1:def 7;
    
      assume (
    len p) 
    = ( 
    len q); 
    
      hence thesis by
    A1,
    FINSEQ_2: 72;
    
    end;
    
    theorem :: 
    
    MATRIX_3:7
    
    for i, l st
    [i, l]
    in ( 
    Indices ( 
    1. (K,n))) & l 
    = i holds (( 
    Line (( 
    1. (K,n)),i)) 
    . l) 
    = ( 
    1. K) 
    
    proof
    
      let i, l;
    
      assume that
    
      
    
    A1: 
    [i, l]
    in ( 
    Indices ( 
    1. (K,n))) and 
    
      
    
    A2: l 
    = i; 
    
      l
    in ( 
    Seg ( 
    width ( 
    1. (K,n)))) by 
    A1,
    ZFMISC_1: 87;
    
      
    
      hence ((
    Line (( 
    1. (K,n)),i)) 
    . l) 
    = (( 
    1. (K,n)) 
    * (i,l)) by 
    MATRIX_0:def 7
    
      .= (
    1. K) by 
    A1,
    A2,
    MATRIX_1:def 3;
    
    end;
    
    theorem :: 
    
    MATRIX_3:8
    
    for i, l st
    [i, l]
    in ( 
    Indices ( 
    1. (K,n))) & l 
    <> i holds (( 
    Line (( 
    1. (K,n)),i)) 
    . l) 
    = ( 
    0. K) 
    
    proof
    
      let i, l;
    
      assume that
    
      
    
    A1: 
    [i, l]
    in ( 
    Indices ( 
    1. (K,n))) and 
    
      
    
    A2: l 
    <> i; 
    
      l
    in ( 
    Seg ( 
    width ( 
    1. (K,n)))) by 
    A1,
    ZFMISC_1: 87;
    
      
    
      hence ((
    Line (( 
    1. (K,n)),i)) 
    . l) 
    = (( 
    1. (K,n)) 
    * (i,l)) by 
    MATRIX_0:def 7
    
      .= (
    0. K) by 
    A1,
    A2,
    MATRIX_1:def 3;
    
    end;
    
    theorem :: 
    
    MATRIX_3:9
    
    for l, j st
    [l, j]
    in ( 
    Indices ( 
    1. (K,n))) & l 
    = j holds (( 
    Col (( 
    1. (K,n)),j)) 
    . l) 
    = ( 
    1. K) 
    
    proof
    
      let l, j;
    
      assume that
    
      
    
    A1: 
    [l, j]
    in ( 
    Indices ( 
    1. (K,n))) and 
    
      
    
    A2: l 
    = j; 
    
      l
    in ( 
    dom ( 
    1. (K,n))) by 
    A1,
    ZFMISC_1: 87;
    
      
    
      hence ((
    Col (( 
    1. (K,n)),j)) 
    . l) 
    = (( 
    1. (K,n)) 
    * (l,j)) by 
    MATRIX_0:def 8
    
      .= (
    1. K) by 
    A1,
    A2,
    MATRIX_1:def 3;
    
    end;
    
    theorem :: 
    
    MATRIX_3:10
    
    for l, j st
    [l, j]
    in ( 
    Indices ( 
    1. (K,n))) & l 
    <> j holds (( 
    Col (( 
    1. (K,n)),j)) 
    . l) 
    = ( 
    0. K) 
    
    proof
    
      let l, j;
    
      assume that
    
      
    
    A1: 
    [l, j]
    in ( 
    Indices ( 
    1. (K,n))) and 
    
      
    
    A2: l 
    <> j; 
    
      l
    in ( 
    dom ( 
    1. (K,n))) by 
    A1,
    ZFMISC_1: 87;
    
      
    
      hence ((
    Col (( 
    1. (K,n)),j)) 
    . l) 
    = (( 
    1. (K,n)) 
    * (l,j)) by 
    MATRIX_0:def 8
    
      .= (
    0. K) by 
    A1,
    A2,
    MATRIX_1:def 3;
    
    end;
    
    
    
    
    
    Lm1: for L be 
    add-associative
    right_zeroed
    right_complementable non 
    empty  
    addLoopStr holds for p be 
    FinSequence of L st for i be 
    Element of 
    NAT st i 
    in ( 
    dom p) holds (p 
    . i) 
    = ( 
    0. L) holds ( 
    Sum p) 
    = ( 
    0. L) 
    
    proof
    
      let L be
    add-associative
    right_zeroed
    right_complementable non 
    empty  
    addLoopStr;
    
      let p be
    FinSequence of L; 
    
      assume
    
      
    
    A1: for k be 
    Element of 
    NAT st k 
    in ( 
    dom p) holds (p 
    . k) 
    = ( 
    0. L); 
    
      defpred
    
    P[
    FinSequence of L] means (for k be 
    Element of 
    NAT st k 
    in ( 
    dom $1) holds ($1 
    . k) 
    = ( 
    0. L)) implies ( 
    Sum $1) 
    = ( 
    0. L); 
    
      
    
      
    
    A2: for p be 
    FinSequence of L, x be 
    Element of L st 
    P[p] holds
    P[(p
    ^  
    <*x*>)]
    
      proof
    
        let p be
    FinSequence of L; 
    
        let x be
    Element of L; 
    
        assume
    
        
    
    A3: (for k be 
    Element of 
    NAT st k 
    in ( 
    dom p) holds (p 
    . k) 
    = ( 
    0. L)) implies ( 
    Sum p) 
    = ( 
    0. L); 
    
        
    
        
    
    A4: (( 
    len p) 
    + 1) 
    in ( 
    Seg (( 
    len p) 
    + 1)) by 
    FINSEQ_1: 4;
    
        assume
    
        
    
    A5: for k be 
    Element of 
    NAT st k 
    in ( 
    dom (p 
    ^  
    <*x*>)) holds ((p
    ^  
    <*x*>)
    . k) 
    = ( 
    0. L); 
    
        
    
        
    
    A6: for k be 
    Element of 
    NAT st k 
    in ( 
    dom p) holds (p 
    . k) 
    = ( 
    0. L) 
    
        proof
    
          
    
          
    
    A7: ( 
    dom p) 
    c= ( 
    dom (p 
    ^  
    <*x*>)) by
    FINSEQ_1: 26;
    
          let k be
    Element of 
    NAT such that 
    
          
    
    A8: k 
    in ( 
    dom p); 
    
          
    
          thus (p
    . k) 
    = ((p 
    ^  
    <*x*>)
    . k) by 
    A8,
    FINSEQ_1:def 7
    
          .= (
    0. L) by 
    A5,
    A8,
    A7;
    
        end;
    
        (
    len (p 
    ^  
    <*x*>))
    = (( 
    len p) 
    + ( 
    len  
    <*x*>)) by
    FINSEQ_1: 22
    
        .= ((
    len p) 
    + 1) by 
    FINSEQ_1: 39;
    
        then
    
        
    
    A9: (( 
    len p) 
    + 1) 
    in ( 
    dom (p 
    ^  
    <*x*>)) by
    A4,
    FINSEQ_1:def 3;
    
        
    
        
    
    A10: x 
    = ((p 
    ^  
    <*x*>)
    . (( 
    len p) 
    + 1)) by 
    FINSEQ_1: 42;
    
        
    
        thus (
    Sum (p 
    ^  
    <*x*>))
    = (( 
    Sum p) 
    + ( 
    Sum  
    <*x*>)) by
    RLVECT_1: 41
    
        .= ((
    Sum p) 
    + x) by 
    RLVECT_1: 44
    
        .= ((
    0. L) 
    + ( 
    0. L)) by 
    A3,
    A5,
    A6,
    A9,
    A10
    
        .= (
    0. L) by 
    RLVECT_1:def 4;
    
      end;
    
      
    
      
    
    A11: 
    P[(
    <*> the 
    carrier of L)] by 
    RLVECT_1: 43;
    
      for p be
    FinSequence of L holds 
    P[p] from
    FINSEQ_2:sch 2(
    A11,
    A2);
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    MATRIX_3:11
    
    
    
    
    
    Th11: for n be 
    Element of 
    NAT holds for K be 
    add-associative
    right_zeroed
    right_complementable non 
    empty  
    addLoopStr holds ( 
    Sum (n 
    |-> ( 
    0. K))) 
    = ( 
    0. K) 
    
    proof
    
      let n be
    Element of 
    NAT ; 
    
      let K be
    add-associative
    right_zeroed
    right_complementable non 
    empty  
    addLoopStr;
    
      set p = (n
    |-> ( 
    0. K)); 
    
      for i be
    Element of 
    NAT st i 
    in ( 
    dom p) holds (p 
    . i) 
    = ( 
    0. K) 
    
      proof
    
        let i be
    Element of 
    NAT ; 
    
        assume i
    in ( 
    dom p); 
    
        then i
    in ( 
    Seg n) by 
    FUNCOP_1: 13;
    
        hence thesis by
    FUNCOP_1: 7;
    
      end;
    
      hence thesis by
    Lm1;
    
    end;
    
    theorem :: 
    
    MATRIX_3:12
    
    
    
    
    
    Th12: for K be 
    add-associative
    right_zeroed
    right_complementable non 
    empty  
    addLoopStr holds for p be 
    FinSequence of K holds for i st i 
    in ( 
    dom p) & for k st k 
    in ( 
    dom p) & k 
    <> i holds (p 
    . k) 
    = ( 
    0. K) holds ( 
    Sum p) 
    = (p 
    . i) 
    
    proof
    
      let K be
    add-associative
    right_zeroed
    right_complementable non 
    empty  
    addLoopStr;
    
      let p be
    FinSequence of K; 
    
      let i;
    
      assume that
    
      
    
    A1: i 
    in ( 
    dom p) and 
    
      
    
    A2: for k st k 
    in ( 
    dom p) & k 
    <> i holds (p 
    . k) 
    = ( 
    0. K); 
    
      reconsider a = (p
    . i) as 
    Element of K by 
    A1,
    FINSEQ_2: 11;
    
      reconsider p1 = (p
    | ( 
    Seg i)) as 
    FinSequence of K by 
    FINSEQ_1: 18;
    
      i
    <>  
    0 by 
    A1,
    FINSEQ_3: 25;
    
      then i
    in ( 
    Seg i) by 
    FINSEQ_1: 3;
    
      then i
    in (( 
    dom p) 
    /\ ( 
    Seg i)) by 
    A1,
    XBOOLE_0:def 4;
    
      then
    
      
    
    A3: i 
    in ( 
    dom p1) by 
    RELAT_1: 61;
    
      then p1
    <>  
    {} ; 
    
      then (
    len p1) 
    <>  
    0 ; 
    
      then
    
      consider p3 be
    FinSequence of K, x be 
    Element of K such that 
    
      
    
    A4: p1 
    = (p3 
    ^  
    <*x*>) by
    FINSEQ_2: 19;
    
      p1
    is_a_prefix_of p by 
    TREES_1:def 1;
    
      then
    
      consider p2 be
    FinSequence such that 
    
      
    
    A5: p 
    = (p1 
    ^ p2) by 
    TREES_1: 1;
    
      reconsider p2 as
    FinSequence of K by 
    A5,
    FINSEQ_1: 36;
    
      
    
      
    
    A6: ( 
    dom p2) 
    = ( 
    Seg ( 
    len p2)) by 
    FINSEQ_1:def 3;
    
      
    
      
    
    A7: for k st k 
    in ( 
    Seg ( 
    len p2)) holds (p2 
    . k) 
    = ( 
    0. K) 
    
      proof
    
        let k;
    
        
    
        
    
    A8: i 
    <= ( 
    len p1) & ( 
    len p1) 
    <= (( 
    len p1) 
    + k) by 
    A3,
    FINSEQ_3: 25,
    NAT_1: 12;
    
        assume k
    in ( 
    Seg ( 
    len p2)); 
    
        then
    
        
    
    A9: k 
    in ( 
    dom p2) by 
    FINSEQ_1:def 3;
    
        then
    0  
    <> k by 
    FINSEQ_3: 25;
    
        then
    
        
    
    A10: i 
    <> (( 
    len p1) 
    + k) by 
    A8,
    XCMPLX_1: 3,
    XXREAL_0: 1;
    
        
    
        thus (p2
    . k) 
    = (p 
    . (( 
    len p1) 
    + k)) by 
    A5,
    A9,
    FINSEQ_1:def 7
    
        .= (
    0. K) by 
    A2,
    A5,
    A9,
    A10,
    FINSEQ_1: 28;
    
      end;
    
      
    
    A11: 
    
      now
    
        let j be
    Nat;
    
        assume
    
        
    
    A12: j 
    in ( 
    dom p2); 
    
        
    
        hence (p2
    . j) 
    = ( 
    0. K) by 
    A7,
    A6
    
        .= (((
    len p2) 
    |-> ( 
    0. K)) 
    . j) by 
    A6,
    A12,
    FINSEQ_2: 57;
    
      end;
    
      
    
      
    
    A13: ( 
    dom p3) 
    = ( 
    Seg ( 
    len p3)) by 
    FINSEQ_1:def 3;
    
      i
    <= ( 
    len p) by 
    A1,
    FINSEQ_3: 25;
    
      
    
      then
    
      
    
    A14: i 
    = ( 
    len p1) by 
    FINSEQ_1: 17
    
      .= ((
    len p3) 
    + ( 
    len  
    <*x*>)) by
    A4,
    FINSEQ_1: 22
    
      .= ((
    len p3) 
    + 1) by 
    FINSEQ_1: 39;
    
      
    
      then
    
      
    
    A15: x 
    = (p1 
    . i) by 
    A4,
    FINSEQ_1: 42
    
      .= a by
    A5,
    A3,
    FINSEQ_1:def 7;
    
      
    
      
    
    A16: for k st k 
    in ( 
    Seg ( 
    len p3)) holds (p3 
    . k) 
    = ( 
    0. K) 
    
      proof
    
        let k;
    
        assume
    
        
    
    A17: k 
    in ( 
    Seg ( 
    len p3)); 
    
        then k
    <= ( 
    len p3) by 
    FINSEQ_1: 1;
    
        then
    
        
    
    A18: i 
    <> k by 
    A14,
    NAT_1: 13;
    
        
    
        
    
    A19: k 
    in ( 
    dom p3) by 
    A17,
    FINSEQ_1:def 3;
    
        then
    
        
    
    A20: k 
    in ( 
    dom p1) by 
    A4,
    FINSEQ_2: 15;
    
        
    
        thus (p3
    . k) 
    = (p1 
    . k) by 
    A4,
    A19,
    FINSEQ_1:def 7
    
        .= (p
    . k) by 
    A5,
    A20,
    FINSEQ_1:def 7
    
        .= (
    0. K) by 
    A2,
    A5,
    A18,
    A20,
    FINSEQ_2: 15;
    
      end;
    
      
    
    A21: 
    
      now
    
        let j be
    Nat;
    
        assume
    
        
    
    A22: j 
    in ( 
    dom p3); 
    
        
    
        hence (p3
    . j) 
    = ( 
    0. K) by 
    A16,
    A13
    
        .= (((
    len p3) 
    |-> ( 
    0. K)) 
    . j) by 
    A13,
    A22,
    FINSEQ_2: 57;
    
      end;
    
      (
    len (( 
    len p3) 
    |-> ( 
    0. K))) 
    = ( 
    len p3) by 
    CARD_1:def 7;
    
      then
    
      
    
    A23: p3 
    = (( 
    len p3) 
    |-> ( 
    0. K)) by 
    A21,
    FINSEQ_2: 9;
    
      (
    len (( 
    len p2) 
    |-> ( 
    0. K))) 
    = ( 
    len p2) by 
    CARD_1:def 7;
    
      then p2
    = (( 
    len p2) 
    |-> ( 
    0. K)) by 
    A11,
    FINSEQ_2: 9;
    
      
    
      then (
    Sum p) 
    = (( 
    Sum (p3 
    ^  
    <*x*>))
    + ( 
    Sum (( 
    len p2) 
    |-> ( 
    0. K)))) by 
    A5,
    A4,
    RLVECT_1: 41
    
      .= ((
    Sum (p3 
    ^  
    <*x*>))
    + ( 
    0. K)) by 
    Th11
    
      .= (
    Sum (p3 
    ^  
    <*x*>)) by
    RLVECT_1: 4
    
      .= ((
    Sum (( 
    len p3) 
    |-> ( 
    0. K))) 
    + x) by 
    A23,
    FVSUM_1: 71
    
      .= ((
    0. K) 
    + a) by 
    A15,
    Th11
    
      .= (p
    . i) by 
    RLVECT_1: 4;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:13
    
    
    
    
    
    Th13: for p,q be 
    FinSequence of K holds ( 
    len ( 
    mlt (p,q))) 
    = ( 
    min (( 
    len p),( 
    len q))) 
    
    proof
    
      let p,q be
    FinSequence of K; 
    
      reconsider r = (
    mlt (p,q)) as 
    FinSequence of K; 
    
      r
    = (the 
    multF of K 
    .: (p,q)) by 
    FVSUM_1:def 7;
    
      hence thesis by
    FINSEQ_2: 71;
    
    end;
    
    theorem :: 
    
    MATRIX_3:14
    
    
    
    
    
    Th14: for K be 
    Ring holds for p,q be 
    FinSequence of K holds for i st (p 
    . i) 
    = ( 
    1. K) & for k st k 
    in ( 
    dom p) & k 
    <> i holds (p 
    . k) 
    = ( 
    0. K) holds for j st j 
    in ( 
    dom ( 
    mlt (p,q))) holds (i 
    = j implies (( 
    mlt (p,q)) 
    . j) 
    = (q 
    . i)) & (i 
    <> j implies (( 
    mlt (p,q)) 
    . j) 
    = ( 
    0. K)) 
    
    proof
    
      let K be
    Ring;
    
      let p,q be
    FinSequence of K; 
    
      let i;
    
      assume that
    
      
    
    A1: (p 
    . i) 
    = ( 
    1. K) and 
    
      
    
    A2: for k st k 
    in ( 
    dom p) & k 
    <> i holds (p 
    . k) 
    = ( 
    0. K); 
    
      let j;
    
      assume
    
      
    
    A3: j 
    in ( 
    dom ( 
    mlt (p,q))); 
    
      
    
      
    
    A4: ( 
    dom p) 
    = ( 
    Seg ( 
    len p)) & ( 
    dom q) 
    = ( 
    Seg ( 
    len q)) by 
    FINSEQ_1:def 3;
    
      reconsider j1 = j as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
      (
    dom ( 
    mlt (p,q))) 
    = ( 
    Seg ( 
    len ( 
    mlt (p,q)))) & ( 
    len ( 
    mlt (p,q))) 
    = ( 
    min (( 
    len p),( 
    len q))) by 
    Th13,
    FINSEQ_1:def 3;
    
      then
    
      
    
    A5: j 
    in (( 
    dom p) 
    /\ ( 
    dom q)) by 
    A3,
    A4,
    FINSEQ_2: 2;
    
      then
    
      
    
    A6: j 
    in ( 
    dom q) by 
    XBOOLE_0:def 4;
    
      then
    
      reconsider b = (q
    . j1) as 
    Element of K by 
    FINSEQ_2: 11;
    
      thus i
    = j implies (( 
    mlt (p,q)) 
    . j) 
    = (q 
    . i) 
    
      proof
    
        reconsider b = (q
    . j1) as 
    Element of K by 
    A6,
    FINSEQ_2: 11;
    
        assume
    
        
    
    A7: i 
    = j; 
    
        
    
        hence ((
    mlt (p,q)) 
    . j) 
    = (( 
    1. K) 
    * b) by 
    A1,
    A3,
    FVSUM_1: 60
    
        .= (q
    . i) by 
    A7;
    
      end;
    
      assume
    
      
    
    A8: i 
    <> j; 
    
      j
    in ( 
    dom p) by 
    A5,
    XBOOLE_0:def 4;
    
      then (p
    . j) 
    = ( 
    0. K) by 
    A2,
    A8;
    
      
    
      hence ((
    mlt (p,q)) 
    . j) 
    = (( 
    0. K) 
    * b) by 
    A3,
    FVSUM_1: 60
    
      .= (
    0. K); 
    
    end;
    
    theorem :: 
    
    MATRIX_3:15
    
    
    
    
    
    Th15: for i, j st 
    [i, j]
    in ( 
    Indices ( 
    1. (K,n))) holds (i 
    = j implies (( 
    Line (( 
    1. (K,n)),i)) 
    . j) 
    = ( 
    1. K)) & (i 
    <> j implies (( 
    Line (( 
    1. (K,n)),i)) 
    . j) 
    = ( 
    0. K)) 
    
    proof
    
      let i, j;
    
      set B = (
    1. (K,n)); 
    
      assume
    
      
    
    A1: 
    [i, j]
    in ( 
    Indices ( 
    1. (K,n))); 
    
      then j
    in ( 
    Seg ( 
    width B)) by 
    ZFMISC_1: 87;
    
      then
    
      
    
    A2: (( 
    Line (B,i)) 
    . j) 
    = (B 
    * (i,j)) by 
    MATRIX_0:def 7;
    
      hence i
    = j implies (( 
    Line (( 
    1. (K,n)),i)) 
    . j) 
    = ( 
    1. K) by 
    A1,
    MATRIX_1:def 3;
    
      thus thesis by
    A1,
    A2,
    MATRIX_1:def 3;
    
    end;
    
    theorem :: 
    
    MATRIX_3:16
    
    
    
    
    
    Th16: for i, j st 
    [i, j]
    in ( 
    Indices ( 
    1. (K,n))) holds (i 
    = j implies (( 
    Col (( 
    1. (K,n)),j)) 
    . i) 
    = ( 
    1. K)) & (i 
    <> j implies (( 
    Col (( 
    1. (K,n)),j)) 
    . i) 
    = ( 
    0. K)) 
    
    proof
    
      let i, j;
    
      set B = (
    1. (K,n)); 
    
      assume
    
      
    
    A1: 
    [i, j]
    in ( 
    Indices ( 
    1. (K,n))); 
    
      then i
    in ( 
    dom B) by 
    ZFMISC_1: 87;
    
      then
    
      
    
    A2: (( 
    Col (B,j)) 
    . i) 
    = (B 
    * (i,j)) by 
    MATRIX_0:def 8;
    
      hence i
    = j implies (( 
    Col (( 
    1. (K,n)),j)) 
    . i) 
    = ( 
    1. K) by 
    A1,
    MATRIX_1:def 3;
    
      thus thesis by
    A1,
    A2,
    MATRIX_1:def 3;
    
    end;
    
    theorem :: 
    
    MATRIX_3:17
    
    
    
    
    
    Th17: for K be 
    Ring holds for p,q be 
    FinSequence of K holds for i st i 
    in ( 
    dom p) & i 
    in ( 
    dom q) & (p 
    . i) 
    = ( 
    1. K) & for k st k 
    in ( 
    dom p) & k 
    <> i holds (p 
    . k) 
    = ( 
    0. K) holds ( 
    Sum ( 
    mlt (p,q))) 
    = (q 
    . i) 
    
    proof
    
      let K be
    Ring;
    
      let p,q be
    FinSequence of K; 
    
      let i;
    
      assume that
    
      
    
    A1: i 
    in ( 
    dom p) & i 
    in ( 
    dom q) and 
    
      
    
    A2: (p 
    . i) 
    = ( 
    1. K) & for k st k 
    in ( 
    dom p) & k 
    <> i holds (p 
    . k) 
    = ( 
    0. K); 
    
      reconsider r = (
    mlt (p,q)) as 
    FinSequence of K; 
    
      
    
      
    
    A3: for k st k 
    in ( 
    dom r) & k 
    <> i holds (r 
    . k) 
    = ( 
    0. K) by 
    A2,
    Th14;
    
      
    
      
    
    A4: ( 
    dom p) 
    = ( 
    Seg ( 
    len p)) & ( 
    dom q) 
    = ( 
    Seg ( 
    len q)) by 
    FINSEQ_1:def 3;
    
      (
    dom ( 
    mlt (p,q))) 
    = ( 
    Seg ( 
    len ( 
    mlt (p,q)))) & ( 
    len ( 
    mlt (p,q))) 
    = ( 
    min (( 
    len p),( 
    len q))) by 
    Th13,
    FINSEQ_1:def 3;
    
      then ((
    dom p) 
    /\ ( 
    dom q)) 
    = ( 
    dom ( 
    mlt (p,q))) by 
    A4,
    FINSEQ_2: 2;
    
      then
    
      
    
    A5: i 
    in ( 
    dom r) by 
    A1,
    XBOOLE_0:def 4;
    
      then (r
    . i) 
    = (q 
    . i) by 
    A2,
    Th14;
    
      hence thesis by
    A5,
    A3,
    Th12;
    
    end;
    
    theorem :: 
    
    MATRIX_3:18
    
    for K be
    Ring holds for A be 
    Matrix of n, K holds (( 
    1. (K,n)) 
    * A) 
    = A 
    
    proof
    
      let K be
    Ring;
    
      let A be
    Matrix of n, K; 
    
      set B = (
    1. (K,n)); 
    
      
    
      
    
    A1: ( 
    len B) 
    = n by 
    MATRIX_0: 24;
    
      
    
      
    
    A2: ( 
    len A) 
    = n by 
    MATRIX_0: 24;
    
      
    
      
    
    A3: ( 
    width B) 
    = n by 
    MATRIX_0: 24;
    
      then
    
      
    
    A4: ( 
    len (B 
    * A)) 
    = ( 
    len B) by 
    A2,
    Def4;
    
      
    
    A5: 
    
      now
    
        
    
        
    
    A6: ( 
    dom A) 
    = ( 
    Seg ( 
    len A)) by 
    FINSEQ_1:def 3;
    
        let i, j;
    
        assume
    
        
    
    A7: 
    [i, j]
    in ( 
    Indices (B 
    * A)); 
    
        
    
        
    
    A8: ( 
    dom (B 
    * A)) 
    = ( 
    Seg ( 
    len (B 
    * A))) & ( 
    Indices (B 
    * A)) 
    =  
    [:(
    dom (B 
    * A)), ( 
    Seg ( 
    width (B 
    * A))):] by 
    FINSEQ_1:def 3;
    
        then
    
        
    
    A9: i 
    in ( 
    Seg ( 
    width B)) by 
    A1,
    A3,
    A4,
    A7,
    ZFMISC_1: 87;
    
        then i
    in ( 
    Seg ( 
    len ( 
    Line (B,i)))) by 
    MATRIX_0:def 7;
    
        then
    
        
    
    A10: i 
    in ( 
    dom ( 
    Line (B,i))) by 
    FINSEQ_1:def 3;
    
        
    
        
    
    A11: ( 
    dom B) 
    = ( 
    Seg ( 
    len B)) by 
    FINSEQ_1:def 3;
    
        then
    
        
    
    A12: i 
    in ( 
    dom B) by 
    A4,
    A7,
    A8,
    ZFMISC_1: 87;
    
        then
    [i, i]
    in  
    [:(
    dom B), ( 
    Seg ( 
    width B)):] by 
    A9,
    ZFMISC_1: 87;
    
        then
    [i, i]
    in ( 
    Indices B); 
    
        then
    
        
    
    A13: (( 
    Line (B,i)) 
    . i) 
    = ( 
    1. K) by 
    Th15;
    
        
    
    A14: 
    
        now
    
          let k;
    
          assume that
    
          
    
    A15: k 
    in ( 
    dom ( 
    Line (B,i))) and 
    
          
    
    A16: k 
    <> i; 
    
          k
    in ( 
    Seg ( 
    len ( 
    Line (B,i)))) by 
    A15,
    FINSEQ_1:def 3;
    
          then k
    in ( 
    Seg ( 
    width B)) by 
    MATRIX_0:def 7;
    
          then
    [i, k]
    in  
    [:(
    dom B), ( 
    Seg ( 
    width B)):] by 
    A12,
    ZFMISC_1: 87;
    
          then
    [i, k]
    in ( 
    Indices B); 
    
          hence ((
    Line (B,i)) 
    . k) 
    = ( 
    0. K) by 
    A16,
    Th15;
    
        end;
    
        i
    in ( 
    Seg ( 
    len ( 
    Col (A,j)))) by 
    A3,
    A2,
    A9,
    MATRIX_0:def 8;
    
        then
    
        
    
    A17: i 
    in ( 
    dom ( 
    Col (A,j))) by 
    FINSEQ_1:def 3;
    
        
    
        thus ((B
    * A) 
    * (i,j)) 
    = (( 
    Line (B,i)) 
    "*" ( 
    Col (A,j))) by 
    A3,
    A2,
    A7,
    Def4
    
        .= (
    Sum ( 
    mlt (( 
    Line (B,i)),( 
    Col (A,j))))) by 
    FVSUM_1:def 9
    
        .= ((
    Col (A,j)) 
    . i) by 
    A10,
    A17,
    A14,
    A13,
    Th17
    
        .= (A
    * (i,j)) by 
    A1,
    A2,
    A6,
    A11,
    A12,
    MATRIX_0:def 8;
    
      end;
    
      (
    width (B 
    * A)) 
    = ( 
    width A) by 
    A3,
    A2,
    Def4;
    
      hence thesis by
    A1,
    A2,
    A4,
    A5,
    MATRIX_0: 21;
    
    end;
    
    theorem :: 
    
    MATRIX_3:19
    
    for K be
    commutative  
    Ring holds for A be 
    Matrix of n, K holds (A 
    * ( 
    1. (K,n))) 
    = A 
    
    proof
    
      let K be
    commutative  
    Ring;
    
      let A be
    Matrix of n, K; 
    
      set B = (
    1. (K,n)); 
    
      
    
      
    
    A1: ( 
    width B) 
    = n by 
    MATRIX_0: 24;
    
      
    
      
    
    A2: ( 
    width A) 
    = n by 
    MATRIX_0: 24;
    
      
    
      
    
    A3: ( 
    len B) 
    = n by 
    MATRIX_0: 24;
    
      then
    
      
    
    A4: ( 
    width (A 
    * B)) 
    = ( 
    width B) by 
    A2,
    Def4;
    
      
    
    A5: 
    
      now
    
        let i, j;
    
        assume
    
        
    
    A6: 
    [i, j]
    in ( 
    Indices (A 
    * B)); 
    
        then
    
        
    
    A7: j 
    in ( 
    Seg ( 
    width B)) by 
    A4,
    ZFMISC_1: 87;
    
        then j
    in ( 
    Seg ( 
    len ( 
    Col (B,j)))) by 
    A3,
    A1,
    MATRIX_0:def 8;
    
        then
    
        
    
    A8: j 
    in ( 
    dom ( 
    Col (B,j))) by 
    FINSEQ_1:def 3;
    
        
    
        
    
    A9: j 
    in ( 
    Seg ( 
    width A)) by 
    A1,
    A2,
    A4,
    A6,
    ZFMISC_1: 87;
    
        
    
    A10: 
    
        now
    
          let k;
    
          assume that
    
          
    
    A11: k 
    in ( 
    dom ( 
    Col (B,j))) and 
    
          
    
    A12: k 
    <> j; 
    
          k
    in ( 
    Seg ( 
    len ( 
    Col (B,j)))) by 
    A11,
    FINSEQ_1:def 3;
    
          then k
    in ( 
    Seg ( 
    len B)) by 
    MATRIX_0:def 8;
    
          then k
    in ( 
    dom B) by 
    FINSEQ_1:def 3;
    
          then
    [k, j]
    in  
    [:(
    dom B), ( 
    Seg ( 
    width B)):] by 
    A7,
    ZFMISC_1: 87;
    
          then
    [k, j]
    in ( 
    Indices B); 
    
          hence ((
    Col (B,j)) 
    . k) 
    = ( 
    0. K) by 
    A12,
    Th16;
    
        end;
    
        j
    in ( 
    dom B) by 
    A3,
    A1,
    A7,
    FINSEQ_1:def 3;
    
        then
    [j, j]
    in  
    [:(
    dom B), ( 
    Seg ( 
    width B)):] by 
    A1,
    A2,
    A9,
    ZFMISC_1: 87;
    
        then
    [j, j]
    in ( 
    Indices B); 
    
        then
    
        
    
    A13: (( 
    Col (B,j)) 
    . j) 
    = ( 
    1. K) by 
    Th16;
    
        j
    in ( 
    Seg ( 
    len ( 
    Line (A,i)))) by 
    A1,
    A2,
    A7,
    MATRIX_0:def 7;
    
        then
    
        
    
    A14: j 
    in ( 
    dom ( 
    Line (A,i))) by 
    FINSEQ_1:def 3;
    
        
    
        thus ((A
    * B) 
    * (i,j)) 
    = (( 
    Line (A,i)) 
    "*" ( 
    Col (B,j))) by 
    A3,
    A2,
    A6,
    Def4
    
        .= ((
    Col (B,j)) 
    "*" ( 
    Line (A,i))) by 
    FVSUM_1: 90
    
        .= (
    Sum ( 
    mlt (( 
    Col (B,j)),( 
    Line (A,i))))) by 
    FVSUM_1:def 9
    
        .= ((
    Line (A,i)) 
    . j) by 
    A8,
    A14,
    A10,
    A13,
    Th17
    
        .= (A
    * (i,j)) by 
    A9,
    MATRIX_0:def 7;
    
      end;
    
      (
    len (A 
    * B)) 
    = ( 
    len A) by 
    A3,
    A2,
    Def4;
    
      hence thesis by
    A1,
    A2,
    A4,
    A5,
    MATRIX_0: 21;
    
    end;
    
    theorem :: 
    
    MATRIX_3:20
    
    for K be
    Field holds for a,b be 
    Element of K holds ( 
    <*
    <*a*>*>
    *  
    <*
    <*b*>*>)
    =  
    <*
    <*(a
    * b)*>*> 
    
    proof
    
      let K be
    Field;
    
      let a,b be
    Element of K; 
    
      reconsider A =
    <*
    <*a*>*> as
    Matrix of 1, K; 
    
      reconsider B =
    <*
    <*b*>*> as
    Matrix of 1, K; 
    
      reconsider C = (A
    * B) as 
    Matrix of K; 
    
      
    
      
    
    A1: ( 
    len ( 
    Line (A,1))) 
    = ( 
    width A) by 
    MATRIX_0:def 7
    
      .= 1 by
    MATRIX_0: 24;
    
      
    
      
    
    A2: ( 
    width A) 
    = 1 by 
    MATRIX_0: 24;
    
      then 1
    in ( 
    Seg ( 
    width A)) by 
    FINSEQ_1: 2,
    TARSKI:def 1;
    
      
    
      then ((
    Line (A,1)) 
    . 1) 
    = ( 
    <*
    <*a*>*>
    * (1,1)) by 
    MATRIX_0:def 7
    
      .= a by
    MATRIX_0: 49;
    
      then
    
      
    
    A3: ( 
    Line ( 
    <*
    <*a*>*>,1))
    =  
    <*a*> by
    A1,
    FINSEQ_1: 40;
    
      
    
      
    
    A4: ( 
    len B) 
    = 1 by 
    MATRIX_0: 24;
    
      then 1
    in ( 
    Seg ( 
    len B)) by 
    FINSEQ_1: 2,
    TARSKI:def 1;
    
      then 1
    in ( 
    dom B) by 
    FINSEQ_1:def 3;
    
      
    
      then
    
      
    
    A5: (( 
    Col (B,1)) 
    . 1) 
    = ( 
    <*
    <*b*>*>
    * (1,1)) by 
    MATRIX_0:def 8
    
      .= b by
    MATRIX_0: 49;
    
      (
    len A) 
    = 1 by 
    MATRIX_0: 24;
    
      then
    
      
    
    A6: ( 
    len C) 
    = 1 by 
    A2,
    A4,
    Def4;
    
      (
    width B) 
    = 1 by 
    MATRIX_0: 24;
    
      then
    
      
    
    A7: ( 
    width C) 
    = 1 by 
    A2,
    A4,
    Def4;
    
      then
    
      reconsider C as
    Matrix of 1, K by 
    A6,
    MATRIX_0: 51;
    
      (
    Seg ( 
    len C)) 
    = ( 
    dom C) by 
    FINSEQ_1:def 3;
    
      then
    
      
    
    A8: ( 
    Indices C) 
    =  
    [:(
    Seg 1), ( 
    Seg 1):] by 
    A6,
    A7;
    
      (
    len ( 
    Col (B,1))) 
    = ( 
    len B) by 
    MATRIX_0:def 8
    
      .= 1 by
    MATRIX_0: 24;
    
      then
    
      
    
    A9: ( 
    Col ( 
    <*
    <*b*>*>,1))
    =  
    <*b*> by
    A5,
    FINSEQ_1: 40;
    
      now
    
        let i, j;
    
        assume
    
        
    
    A10: 
    [i, j]
    in ( 
    Indices C); 
    
        then j
    in ( 
    Seg 1) by 
    A8,
    ZFMISC_1: 87;
    
        then
    
        
    
    A11: j 
    = 1 by 
    FINSEQ_1: 2,
    TARSKI:def 1;
    
        i
    in ( 
    Seg 1) by 
    A8,
    A10,
    ZFMISC_1: 87;
    
        then
    
        
    
    A12: i 
    = 1 by 
    FINSEQ_1: 2,
    TARSKI:def 1;
    
        
    
        hence (C
    * (i,j)) 
    = ( 
    <*a*>
    "*"  
    <*b*>) by
    A2,
    A4,
    A3,
    A9,
    A10,
    A11,
    Def4
    
        .= (a
    * b) by 
    FVSUM_1: 88
    
        .= (
    <*
    <*(a
    * b)*>*> 
    * (i,j)) by 
    A12,
    A11,
    MATRIX_0: 49;
    
      end;
    
      hence thesis by
    MATRIX_0: 27;
    
    end;
    
    theorem :: 
    
    MATRIX_3:21
    
    for K be
    Field holds for a1,a2,b1,b2,c1,c2,d1,d2 be 
    Element of K holds (((a1,b1) 
    ][ (c1,d1)) 
    * ((a2,b2) 
    ][ (c2,d2))) 
    = ((((a1 
    * a2) 
    + (b1 
    * c2)),((a1 
    * b2) 
    + (b1 
    * d2))) 
    ][ (((c1 
    * a2) 
    + (d1 
    * c2)),((c1 
    * b2) 
    + (d1 
    * d2)))) 
    
    proof
    
      let K be
    Field;
    
      let a1,a2,b1,b2,c1,c2,d1,d2 be
    Element of K; 
    
      reconsider A = ((a1,b1)
    ][ (c1,d1)) as 
    Matrix of 2, K; 
    
      reconsider B = ((a2,b2)
    ][ (c2,d2)) as 
    Matrix of 2, K; 
    
      reconsider D = ((((a1
    * a2) 
    + (b1 
    * c2)),((a1 
    * b2) 
    + (b1 
    * d2))) 
    ][ (((c1 
    * a2) 
    + (d1 
    * c2)),((c1 
    * b2) 
    + (d1 
    * d2)))) as 
    Matrix of 2, K; 
    
      
    
      
    
    A1: ( 
    width A) 
    = 2 by 
    MATRIX_0: 24;
    
      2
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then
    
      
    
    A2: (( 
    Line (A,2)) 
    . 2) 
    = (A 
    * (2,2)) by 
    A1,
    FINSEQ_1: 2,
    MATRIX_0:def 7
    
      .= d1 by
    MATRIX_0: 50;
    
      
    
      
    
    A3: ( 
    len ( 
    Line (A,2))) 
    = ( 
    width A) by 
    MATRIX_0:def 7
    
      .= 2 by
    MATRIX_0: 24;
    
      1
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then ((
    Line (A,2)) 
    . 1) 
    = (A 
    * (2,1)) by 
    A1,
    FINSEQ_1: 2,
    MATRIX_0:def 7
    
      .= c1 by
    MATRIX_0: 50;
    
      then
    
      
    
    A4: ( 
    Line (A,2)) 
    =  
    <*c1, d1*> by
    A3,
    A2,
    FINSEQ_1: 44;
    
      2
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then
    
      
    
    A5: (( 
    Line (A,1)) 
    . 2) 
    = (A 
    * (1,2)) by 
    A1,
    FINSEQ_1: 2,
    MATRIX_0:def 7
    
      .= b1 by
    MATRIX_0: 50;
    
      
    
      
    
    A6: ( 
    len ( 
    Line (A,1))) 
    = ( 
    width A) by 
    MATRIX_0:def 7
    
      .= 2 by
    MATRIX_0: 24;
    
      1
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then ((
    Line (A,1)) 
    . 1) 
    = (A 
    * (1,1)) by 
    A1,
    FINSEQ_1: 2,
    MATRIX_0:def 7
    
      .= a1 by
    MATRIX_0: 50;
    
      then
    
      
    
    A7: ( 
    Line (A,1)) 
    =  
    <*a1, b1*> by
    A6,
    A5,
    FINSEQ_1: 44;
    
      
    
      
    
    A8: ( 
    len ( 
    Col (B,2))) 
    = ( 
    len B) by 
    MATRIX_0:def 8
    
      .= 2 by
    MATRIX_0: 24;
    
      
    
      
    
    A9: ( 
    len ( 
    Col (B,1))) 
    = ( 
    len B) by 
    MATRIX_0:def 8
    
      .= 2 by
    MATRIX_0: 24;
    
      reconsider C = (A
    * B) as 
    Matrix of K; 
    
      
    
      
    
    A10: ( 
    len B) 
    = 2 by 
    MATRIX_0: 24;
    
      (
    width B) 
    = 2 by 
    MATRIX_0: 24;
    
      then
    
      
    
    A11: ( 
    width C) 
    = 2 by 
    A1,
    A10,
    Def4;
    
      (
    len A) 
    = 2 by 
    MATRIX_0: 24;
    
      then
    
      
    
    A12: ( 
    len C) 
    = 2 by 
    A1,
    A10,
    Def4;
    
      then
    
      reconsider C as
    Matrix of 2, K by 
    A11,
    MATRIX_0: 51;
    
      
    
      
    
    A13: ( 
    Seg ( 
    len B)) 
    = ( 
    dom B) by 
    FINSEQ_1:def 3;
    
      2
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then
    
      
    
    A14: (( 
    Col (B,2)) 
    . 2) 
    = (B 
    * (2,2)) by 
    A10,
    A13,
    FINSEQ_1: 2,
    MATRIX_0:def 8
    
      .= d2 by
    MATRIX_0: 50;
    
      1
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then ((
    Col (B,2)) 
    . 1) 
    = (B 
    * (1,2)) by 
    A10,
    A13,
    FINSEQ_1: 2,
    MATRIX_0:def 8
    
      .= b2 by
    MATRIX_0: 50;
    
      then
    
      
    
    A15: ( 
    Col (B,2)) 
    =  
    <*b2, d2*> by
    A8,
    A14,
    FINSEQ_1: 44;
    
      2
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then
    
      
    
    A16: (( 
    Col (B,1)) 
    . 2) 
    = (B 
    * (2,1)) by 
    A10,
    A13,
    FINSEQ_1: 2,
    MATRIX_0:def 8
    
      .= c2 by
    MATRIX_0: 50;
    
      1
    in  
    {1, 2} by
    TARSKI:def 2;
    
      
    
      then ((
    Col (B,1)) 
    . 1) 
    = (B 
    * (1,1)) by 
    A10,
    A13,
    FINSEQ_1: 2,
    MATRIX_0:def 8
    
      .= a2 by
    MATRIX_0: 50;
    
      then
    
      
    
    A17: ( 
    Col (B,1)) 
    =  
    <*a2, c2*> by
    A9,
    A16,
    FINSEQ_1: 44;
    
      (
    dom C) 
    = ( 
    Seg ( 
    len C)) by 
    FINSEQ_1:def 3;
    
      then
    
      
    
    A18: ( 
    Indices C) 
    =  
    [:(
    Seg 2), ( 
    Seg 2):] by 
    A12,
    A11;
    
      now
    
        let i, j;
    
        assume
    
        
    
    A19: 
    [i, j]
    in ( 
    Indices C); 
    
        then
    
        
    
    A20: i 
    in ( 
    Seg 2) & j 
    in ( 
    Seg 2) by 
    A18,
    ZFMISC_1: 87;
    
        now
    
          per cases by
    A20,
    FINSEQ_1: 2,
    TARSKI:def 2;
    
            case i
    = 1 & j 
    = 1; 
    
            
    
            hence (C
    * (1,1)) 
    = ( 
    <*a1, b1*>
    "*"  
    <*a2, c2*>) by
    A1,
    A10,
    A7,
    A17,
    A19,
    Def4
    
            .= ((a1
    * a2) 
    + (b1 
    * c2)) by 
    FVSUM_1: 89
    
            .= (D
    * (1,1)) by 
    MATRIX_0: 50;
    
          end;
    
            case i
    = 1 & j 
    = 2; 
    
            
    
            hence (C
    * (1,2)) 
    = ( 
    <*a1, b1*>
    "*"  
    <*b2, d2*>) by
    A1,
    A10,
    A7,
    A15,
    A19,
    Def4
    
            .= ((a1
    * b2) 
    + (b1 
    * d2)) by 
    FVSUM_1: 89
    
            .= (D
    * (1,2)) by 
    MATRIX_0: 50;
    
          end;
    
            case i
    = 2 & j 
    = 1; 
    
            
    
            hence (C
    * (2,1)) 
    = ( 
    <*c1, d1*>
    "*"  
    <*a2, c2*>) by
    A1,
    A10,
    A4,
    A17,
    A19,
    Def4
    
            .= ((c1
    * a2) 
    + (d1 
    * c2)) by 
    FVSUM_1: 89
    
            .= (D
    * (2,1)) by 
    MATRIX_0: 50;
    
          end;
    
            case i
    = 2 & j 
    = 2; 
    
            
    
            hence (C
    * (2,2)) 
    = ( 
    <*c1, d1*>
    "*"  
    <*b2, d2*>) by
    A1,
    A10,
    A4,
    A15,
    A19,
    Def4
    
            .= ((c1
    * b2) 
    + (d1 
    * d2)) by 
    FVSUM_1: 89
    
            .= (D
    * (2,2)) by 
    MATRIX_0: 50;
    
          end;
    
        end;
    
        hence (C
    * (i,j)) 
    = (D 
    * (i,j)); 
    
      end;
    
      hence thesis by
    MATRIX_0: 27;
    
    end;
    
    theorem :: 
    
    MATRIX_3:22
    
    for K be
    Field holds for A,B be 
    Matrix of K st ( 
    width A) 
    = ( 
    len B) & ( 
    width B) 
    <>  
    0 holds ((A 
    * B) 
    @ ) 
    = ((B 
    @ ) 
    * (A 
    @ )) 
    
    proof
    
      let K be
    Field;
    
      let A,B be
    Matrix of K; 
    
      assume that
    
      
    
    A1: ( 
    width A) 
    = ( 
    len B) and 
    
      
    
    A2: ( 
    width B) 
    <>  
    0 ; 
    
      
    
      
    
    A3: ( 
    len (B 
    @ )) 
    = ( 
    width B) by 
    MATRIX_0:def 6;
    
      (
    len (A 
    @ )) 
    = ( 
    width A) by 
    MATRIX_0:def 6;
    
      then
    
      
    
    A4: ( 
    width (B 
    @ )) 
    = ( 
    len (A 
    @ )) by 
    A1,
    A2,
    MATRIX_0: 54;
    
      then
    
      
    
    A5: ( 
    width ((B 
    @ ) 
    * (A 
    @ ))) 
    = ( 
    width (A 
    @ )) by 
    Def4;
    
      (
    width (A 
    * B)) 
    >  
    0 by 
    A1,
    A2,
    Def4;
    
      
    
      then
    
      
    
    A6: ( 
    width ((A 
    * B) 
    @ )) 
    = ( 
    len (A 
    * B)) by 
    MATRIX_0: 54
    
      .= (
    len A) by 
    A1,
    Def4;
    
      
    
      
    
    A7: ( 
    width ((B 
    @ ) 
    * (A 
    @ ))) 
    = ( 
    width (A 
    @ )) by 
    A4,
    Def4;
    
      
    
      
    
    A8: ( 
    len ((B 
    @ ) 
    * (A 
    @ ))) 
    = ( 
    len (B 
    @ )) by 
    A4,
    Def4
    
      .= (
    width B) by 
    MATRIX_0:def 6;
    
      
    
      
    
    A9: ( 
    len ((B 
    @ ) 
    * (A 
    @ ))) 
    = ( 
    len (B 
    @ )) by 
    A4,
    Def4;
    
      
    
    A10: 
    
      now
    
        let i, j;
    
        assume
    
        
    
    A11: 
    [i, j]
    in ( 
    Indices ((B 
    @ ) 
    * (A 
    @ ))); 
    
        (
    dom ((B 
    @ ) 
    * (A 
    @ ))) 
    = ( 
    dom (B 
    @ )) by 
    A9,
    FINSEQ_3: 29;
    
        then
    
        
    
    A12: 
    [i, j]
    in  
    [:(
    dom (B 
    @ )), ( 
    Seg ( 
    width (A 
    @ ))):] by 
    A5,
    A11;
    
        per cases ;
    
          suppose (
    width A) 
    =  
    0 ; 
    
          hence (((B
    @ ) 
    * (A 
    @ )) 
    * (i,j)) 
    = (((A 
    * B) 
    @ ) 
    * (i,j)) by 
    A1,
    A2,
    MATRIX_0:def 3;
    
        end;
    
          suppose (
    width A) 
    >  
    0 ; 
    
          then (
    width (A 
    @ )) 
    = ( 
    len A) by 
    MATRIX_0: 54;
    
          then (
    Seg ( 
    width (A 
    @ ))) 
    = ( 
    dom A) by 
    FINSEQ_1:def 3;
    
          then
    
          
    
    A13: j 
    in ( 
    dom A) by 
    A12,
    ZFMISC_1: 87;
    
          then
    
          
    
    A14: ( 
    Col ((A 
    @ ),j)) 
    = ( 
    Line (A,j)) by 
    MATRIX_0: 58;
    
          j
    in ( 
    Seg ( 
    len A)) by 
    A13,
    FINSEQ_1:def 3;
    
          then j
    in ( 
    Seg ( 
    len (A 
    * B))) by 
    A1,
    Def4;
    
          then
    
          
    
    A15: j 
    in ( 
    dom (A 
    * B)) by 
    FINSEQ_1:def 3;
    
          (
    Seg ( 
    width B)) 
    = ( 
    dom (B 
    @ )) by 
    A3,
    FINSEQ_1:def 3;
    
          then
    
          
    
    A16: i 
    in ( 
    Seg ( 
    width B)) by 
    A12,
    ZFMISC_1: 87;
    
          then i
    in ( 
    Seg ( 
    width (A 
    * B))) by 
    A1,
    Def4;
    
          then
    [j, i]
    in  
    [:(
    dom (A 
    * B)), ( 
    Seg ( 
    width (A 
    * B))):] by 
    A15,
    ZFMISC_1: 87;
    
          then
    
          
    
    A17: 
    [j, i]
    in ( 
    Indices (A 
    * B)); 
    
          (
    Line ((B 
    @ ),i)) 
    = ( 
    Col (B,i)) by 
    A16,
    MATRIX_0: 59;
    
          
    
          hence (((B
    @ ) 
    * (A 
    @ )) 
    * (i,j)) 
    = (( 
    Col (B,i)) 
    "*" ( 
    Line (A,j))) by 
    A4,
    A11,
    A14,
    Def4
    
          .= ((
    Line (A,j)) 
    "*" ( 
    Col (B,i))) by 
    FVSUM_1: 90
    
          .= ((A
    * B) 
    * (j,i)) by 
    A1,
    A17,
    Def4
    
          .= (((A
    * B) 
    @ ) 
    * (i,j)) by 
    A17,
    MATRIX_0:def 6;
    
        end;
    
      end;
    
      
    
      
    
    A18: ( 
    width (A 
    @ )) 
    = ( 
    len A) 
    
      proof
    
        per cases ;
    
          suppose (
    width A) 
    =  
    0 ; 
    
          hence thesis by
    A1,
    A2,
    MATRIX_0:def 3;
    
        end;
    
          suppose (
    width A) 
    >  
    0 ; 
    
          hence thesis by
    MATRIX_0: 54;
    
        end;
    
      end;
    
      (
    len ((A 
    * B) 
    @ )) 
    = ( 
    width (A 
    * B)) by 
    MATRIX_0:def 6
    
      .= (
    width B) by 
    A1,
    Def4;
    
      hence thesis by
    A6,
    A8,
    A7,
    A10,
    A18,
    MATRIX_0: 21;
    
    end;
    
    begin
    
    definition
    
      let I,J be non
    empty  
    set;
    
      let X be
    Element of ( 
    Fin I); 
    
      let Y be
    Element of ( 
    Fin J); 
    
      :: original:
    [:
    
      redefine
    
      func
    
    [:X,Y:] ->
    Element of ( 
    Fin  
    [:I, J:]) ;
    
      coherence
    
      proof
    
        X
    c= I & Y 
    c= J by 
    FINSUB_1:def 5;
    
        then
    [:X, Y:]
    c=  
    [:I, J:] by
    ZFMISC_1: 96;
    
        hence thesis by
    FINSUB_1:def 5;
    
      end;
    
    end
    
    definition
    
      let I,J,D be non
    empty  
    set;
    
      let G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      :: original:
    *
    
      redefine
    
      func G
    
    * (f,g) -> 
    Function of 
    [:I, J:], D ;
    
      coherence by
    FINSEQOP: 79;
    
    end
    
    theorem :: 
    
    MATRIX_3:23
    
    
    
    
    
    Th23: for I,J,D be non 
    empty  
    set holds for F,G be 
    BinOp of D holds for f be 
    Function of I, D holds for g be 
    Function of J, D holds for X be 
    Element of ( 
    Fin I) holds for Y be 
    Element of ( 
    Fin J) st F is 
    commutative & F is 
    associative & ( 
    [:Y, X:]
    <>  
    {} or F is 
    having_a_unity) & G is
    commutative holds (F 
    $$ ( 
    [:X, Y:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    [:Y, X:],(G
    * (g,f)))) 
    
    proof
    
      deffunc
    
    F(
    object, 
    object) =
    [$2, $1];
    
      let I,J,D be non
    empty  
    set;
    
      let F,G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      let X be
    Element of ( 
    Fin I), Y be 
    Element of ( 
    Fin J); 
    
      assume
    
      
    
    A1: F is 
    commutative & F is 
    associative & ( 
    [:Y, X:]
    <>  
    {} or F is 
    having_a_unity);
    
      consider h be
    Function such that 
    
      
    
    A2: ( 
    dom h) 
    =  
    [:J, I:] & for x,y be
    object st x 
    in J & y 
    in I holds (h 
    . (x,y)) 
    =  
    F(x,y) from
    FUNCT_3:sch 2;
    
      now
    
        let z1,z2 be
    object;
    
        assume that
    
        
    
    A3: z1 
    in ( 
    dom h) and 
    
        
    
    A4: z2 
    in ( 
    dom h) and 
    
        
    
    A5: (h 
    . z1) 
    = (h 
    . z2); 
    
        consider x2,y2 be
    object such that 
    
        
    
    A6: z2 
    =  
    [x2, y2] by
    A2,
    A4,
    RELAT_1:def 1;
    
        x2
    in J & y2 
    in I by 
    A2,
    A4,
    A6,
    ZFMISC_1: 87;
    
        then
    
        
    
    A7: (h 
    . (x2,y2)) 
    =  
    [y2, x2] by
    A2;
    
        consider x1,y1 be
    object such that 
    
        
    
    A8: z1 
    =  
    [x1, y1] by
    A2,
    A3,
    RELAT_1:def 1;
    
        x1
    in J & y1 
    in I by 
    A2,
    A3,
    A8,
    ZFMISC_1: 87;
    
        then
    
        
    
    A9: (h 
    . (x1,y1)) 
    =  
    [y1, x1] by
    A2;
    
        then y1
    = y2 by 
    A5,
    A8,
    A6,
    A7,
    XTUPLE_0: 1;
    
        hence z1
    = z2 by 
    A5,
    A8,
    A6,
    A9,
    A7,
    XTUPLE_0: 1;
    
      end;
    
      then
    
      
    
    A10: h is 
    one-to-one by 
    FUNCT_1:def 4;
    
      
    
      
    
    A11: for x st x 
    in  
    [:J, I:] holds (h
    . x) 
    in  
    [:I, J:]
    
      proof
    
        let x;
    
        assume
    
        
    
    A12: x 
    in  
    [:J, I:];
    
        then
    
        consider y,z be
    object such that 
    
        
    
    A13: x 
    =  
    [y, z] by
    RELAT_1:def 1;
    
        
    
        
    
    A14: y 
    in J & z 
    in I by 
    A12,
    A13,
    ZFMISC_1: 87;
    
        then (h
    . (y,z)) 
    =  
    [z, y] by
    A2;
    
        hence thesis by
    A13,
    A14,
    ZFMISC_1: 87;
    
      end;
    
      assume
    
      
    
    A15: G is 
    commutative;
    
      
    
      
    
    A16: (G 
    * (g,f)) 
    = ((G 
    * (f,g)) 
    * h) 
    
      proof
    
        reconsider G as
    Function of 
    [:D, D:], D;
    
        
    
        
    
    A17: ( 
    dom (G 
    * (g,f))) 
    =  
    [:J, I:] by
    FUNCT_2:def 1;
    
        
    
        
    
    A18: ( 
    dom (G 
    * (f,g))) 
    =  
    [:I, J:] by
    FUNCT_2:def 1;
    
        
    
        
    
    A19: for x be 
    object holds x 
    in ( 
    dom (G 
    * (g,f))) iff x 
    in ( 
    dom h) & (h 
    . x) 
    in ( 
    dom (G 
    * (f,g))) 
    
        proof
    
          let x be
    object;
    
          thus x
    in ( 
    dom (G 
    * (g,f))) implies x 
    in ( 
    dom h) & (h 
    . x) 
    in ( 
    dom (G 
    * (f,g))) 
    
          proof
    
            assume
    
            
    
    A20: x 
    in ( 
    dom (G 
    * (g,f))); 
    
            then
    
            consider y,z be
    object such that 
    
            
    
    A21: x 
    =  
    [y, z] by
    RELAT_1:def 1;
    
            
    
            
    
    A22: y 
    in J & z 
    in I by 
    A17,
    A20,
    A21,
    ZFMISC_1: 87;
    
            then (h
    . (y,z)) 
    =  
    [z, y] by
    A2;
    
            hence thesis by
    A2,
    A18,
    A21,
    A22,
    ZFMISC_1: 87;
    
          end;
    
          assume that
    
          
    
    A23: x 
    in ( 
    dom h) and (h 
    . x) 
    in ( 
    dom (G 
    * (f,g))); 
    
          thus thesis by
    A2,
    A23,
    FUNCT_2:def 1;
    
        end;
    
        for x be
    object st x 
    in ( 
    dom (G 
    * (g,f))) holds ((G 
    * (g,f)) 
    . x) 
    = ((G 
    * (f,g)) 
    . (h 
    . x)) 
    
        proof
    
          let x be
    object;
    
          assume
    
          
    
    A24: x 
    in ( 
    dom (G 
    * (g,f))); 
    
          then
    
          consider y,z be
    object such that 
    
          
    
    A25: x 
    =  
    [y, z] by
    RELAT_1:def 1;
    
          reconsider z as
    Element of I by 
    A17,
    A24,
    A25,
    ZFMISC_1: 87;
    
          reconsider y as
    Element of J by 
    A17,
    A24,
    A25,
    ZFMISC_1: 87;
    
          
    
          
    
    A26: 
    [z, y]
    in ( 
    dom (G 
    * (f,g))) by 
    A18,
    ZFMISC_1: 87;
    
          
    
          
    
    A27: 
    [y, z]
    in ( 
    dom (G 
    * (g,f))) by 
    A17,
    ZFMISC_1: 87;
    
          
    
          thus ((G
    * (f,g)) 
    . (h 
    . x)) 
    = ((G 
    * (f,g)) 
    . (h 
    . (y,z))) by 
    A25
    
          .= ((G
    * (f,g)) 
    . (z,y)) by 
    A2
    
          .= (G
    . ((f 
    . z),(g 
    . y))) by 
    A26,
    FINSEQOP: 77
    
          .= (G
    . ((g 
    . y),(f 
    . z))) by 
    A15
    
          .= ((G
    * (g,f)) 
    . (y,z)) by 
    A27,
    FINSEQOP: 77
    
          .= ((G
    * (g,f)) 
    . x) by 
    A25;
    
        end;
    
        hence thesis by
    A19,
    FUNCT_1: 10;
    
      end;
    
      
    
      
    
    A28: X 
    c= I & Y 
    c= J by 
    FINSUB_1:def 5;
    
      for y be
    object holds y 
    in  
    [:X, Y:] iff y
    in (h 
    .:  
    [:Y, X:])
    
      proof
    
        let y be
    object;
    
        thus y
    in  
    [:X, Y:] implies y
    in (h 
    .:  
    [:Y, X:])
    
        proof
    
          assume
    
          
    
    A29: y 
    in  
    [:X, Y:];
    
          then
    
          consider y1,x1 be
    object such that 
    
          
    
    A30: y 
    =  
    [y1, x1] by
    RELAT_1:def 1;
    
          
    
          
    
    A31: y1 
    in X & x1 
    in Y by 
    A29,
    A30,
    ZFMISC_1: 87;
    
          then
    
          
    
    A32: 
    [x1, y1]
    in  
    [:Y, X:] &
    [x1, y1]
    in ( 
    dom h) by 
    A28,
    A2,
    ZFMISC_1: 87;
    
          (h
    . (x1,y1)) 
    = y by 
    A28,
    A2,
    A30,
    A31;
    
          hence thesis by
    A32,
    FUNCT_1:def 6;
    
        end;
    
        assume y
    in (h 
    .:  
    [:Y, X:]);
    
        then
    
        consider x be
    object such that x 
    in ( 
    dom h) and 
    
        
    
    A33: x 
    in  
    [:Y, X:] and
    
        
    
    A34: y 
    = (h 
    . x) by 
    FUNCT_1:def 6;
    
        consider x1,y1 be
    object such that 
    
        
    
    A35: x 
    =  
    [x1, y1] by
    A33,
    RELAT_1:def 1;
    
        
    
        
    
    A36: x1 
    in Y & y1 
    in X by 
    A33,
    A35,
    ZFMISC_1: 87;
    
        y
    = (h 
    . (x1,y1)) by 
    A34,
    A35;
    
        then y
    =  
    [y1, x1] by
    A28,
    A2,
    A36;
    
        hence thesis by
    A36,
    ZFMISC_1: 87;
    
      end;
    
      then
    
      
    
    A37: (h 
    .:  
    [:Y, X:])
    =  
    [:X, Y:] by
    TARSKI: 2;
    
      reconsider h as
    Function of 
    [:J, I:],
    [:I, J:] by
    A2,
    A11,
    FUNCT_2: 3;
    
      (F
    $$ ( 
    [:X, Y:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    [:Y, X:],((G
    * (f,g)) 
    * h))) by 
    A1,
    A10,
    A37,
    SETWOP_2: 6
    
      .= (F
    $$ ( 
    [:Y, X:],(G
    * (g,f)))) by 
    A16;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:24
    
    
    
    
    
    Th24: for I,J be non 
    empty  
    set holds for F,G be 
    BinOp of D holds for f be 
    Function of I, D holds for g be 
    Function of J, D st F is 
    commutative & F is 
    associative holds for x be 
    Element of I holds for y be 
    Element of J holds (F 
    $$ ( 
    [:
    {.x.},
    {.y.}:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ ( 
    {.y.},g))))))
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F,G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      assume
    
      
    
    A1: F is 
    commutative & F is 
    associative;
    
      reconsider G as
    Function of 
    [:D, D:], D;
    
      
    
      
    
    A2: ( 
    dom (G 
    * (f,g))) 
    =  
    [:I, J:] by
    FUNCT_2:def 1;
    
      now
    
        let x be
    Element of I; 
    
        let y be
    Element of J; 
    
        
    
        
    
    A3: 
    [x, y]
    in  
    [:I, J:] by
    ZFMISC_1: 87;
    
        reconsider z = (g
    . y) as 
    Element of D; 
    
        reconsider u =
    [x, y] as
    Element of 
    [:I, J:] by
    ZFMISC_1: 87;
    
        
    
        
    
    A4: ( 
    dom  
    <:f, ((
    dom f) 
    --> z):>) 
    = (( 
    dom f) 
    /\ ( 
    dom (( 
    dom f) 
    --> z))) by 
    FUNCT_3:def 7
    
        .= ((
    dom f) 
    /\ ( 
    dom f)) by 
    FUNCOP_1: 13
    
        .= (
    dom f); 
    
        (
    rng f) 
    c= D & ( 
    rng (( 
    dom f) 
    --> z)) 
    c= D by 
    RELAT_1:def 19;
    
        then
    
        
    
    A5: 
    [:(
    rng f), ( 
    rng (( 
    dom f) 
    --> z)):] 
    c=  
    [:D, D:] by
    ZFMISC_1: 96;
    
        (
    dom f) 
    = I by 
    FUNCT_2:def 1;
    
        then
    
        
    
    A6: x 
    in ( 
    dom  
    <:f, ((
    dom f) 
    --> z):>) by 
    A4;
    
        (
    dom G) 
    =  
    [:D, D:] & (
    rng  
    <:f, ((
    dom f) 
    --> z):>) 
    c=  
    [:(
    rng f), ( 
    rng (( 
    dom f) 
    --> z)):] by 
    FUNCT_2:def 1,
    FUNCT_3: 51;
    
        then x
    in ( 
    dom (G 
    *  
    <:f, ((
    dom f) 
    --> z):>)) by 
    A6,
    A5,
    RELAT_1: 27,
    XBOOLE_1: 1;
    
        then
    
        
    
    A7: x 
    in ( 
    dom (G 
    [:] (f,z))) by 
    FUNCOP_1:def 4;
    
        
    
        
    
    A8: (F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ ( 
    {.y.},g))))))
    = ((G 
    [:] (f,(F 
    $$ ( 
    {.y.},g))))
    . x) by 
    A1,
    SETWISEO: 17
    
        .= ((G
    [:] (f,(g 
    . y))) 
    . x) by 
    A1,
    SETWISEO: 17
    
        .= (G
    . ((f 
    . x),(g 
    . y))) by 
    A7,
    FUNCOP_1: 27;
    
        (F
    $$ ( 
    [:
    {.x.},
    {.y.}:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.u.},(G
    * (f,g)))) by 
    ZFMISC_1: 29
    
        .= ((G
    * (f,g)) 
    . (x,y)) by 
    A1,
    SETWISEO: 17
    
        .= (G
    . ((f 
    . x),(g 
    . y))) by 
    A2,
    A3,
    FINSEQOP: 77;
    
        hence (F
    $$ ( 
    [:
    {.x.},
    {.y.}:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ ( 
    {.y.},g)))))) by
    A8;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:25
    
    
    
    
    
    Th25: for I,J be non 
    empty  
    set holds for F,G be 
    BinOp of D holds for f be 
    Function of I, D holds for g be 
    Function of J, D holds for X be 
    Element of ( 
    Fin I) holds for Y be 
    Element of ( 
    Fin J) st F is 
    commutative & F is 
    associative & F is 
    having_a_unity & F is 
    having_an_inverseOp & G 
    is_distributive_wrt F holds for x be 
    Element of I holds (F 
    $$ ( 
    [:
    {.x.}, Y:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ (Y,g)))))) 
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F,G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      let X be
    Element of ( 
    Fin I); 
    
      let Y be
    Element of ( 
    Fin J); 
    
      assume that
    
      
    
    A1: F is 
    commutative and 
    
      
    
    A2: F is 
    associative and 
    
      
    
    A3: F is 
    having_a_unity and 
    
      
    
    A4: F is 
    having_an_inverseOp and 
    
      
    
    A5: G 
    is_distributive_wrt F; 
    
      now
    
        let x be
    Element of I; 
    
        defpred
    
    P[
    Element of ( 
    Fin J)] means (F 
    $$ ( 
    [:
    {.x.}, $1:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ ($1,g)))))); 
    
        
    
        
    
    A6: 
    P[(
    {}. J)] 
    
        proof
    
          set z = (
    the_unity_wrt F); 
    
          reconsider T = (
    {}.  
    [:I, J:]) as
    Element of ( 
    Fin  
    [:I, J:]);
    
          
    
          
    
    A7: T 
    =  
    [:
    {x}, (
    {}. J):] by 
    ZFMISC_1: 90;
    
          
    
          
    
    A8: ( 
    dom  
    <:f, ((
    dom f) 
    --> z):>) 
    = (( 
    dom f) 
    /\ ( 
    dom (( 
    dom f) 
    --> z))) by 
    FUNCT_3:def 7
    
          .= ((
    dom f) 
    /\ ( 
    dom f)) by 
    FUNCOP_1: 13
    
          .= (
    dom f); 
    
          (
    rng f) 
    c= D & ( 
    rng (( 
    dom f) 
    --> z)) 
    c= D by 
    RELAT_1:def 19;
    
          then
    
          
    
    A9: 
    [:(
    rng f), ( 
    rng (( 
    dom f) 
    --> z)):] 
    c=  
    [:D, D:] by
    ZFMISC_1: 96;
    
          (
    dom f) 
    = I by 
    FUNCT_2:def 1;
    
          then
    
          
    
    A10: x 
    in ( 
    dom  
    <:f, ((
    dom f) 
    --> z):>) by 
    A8;
    
          (
    dom G) 
    =  
    [:D, D:] & (
    rng  
    <:f, ((
    dom f) 
    --> z):>) 
    c=  
    [:(
    rng f), ( 
    rng (( 
    dom f) 
    --> z)):] by 
    FUNCT_2:def 1,
    FUNCT_3: 51;
    
          then x
    in ( 
    dom (G 
    *  
    <:f, ((
    dom f) 
    --> z):>)) by 
    A10,
    A9,
    RELAT_1: 27,
    XBOOLE_1: 1;
    
          then
    
          
    
    A11: x 
    in ( 
    dom (G 
    [:] (f,z))) by 
    FUNCOP_1:def 4;
    
          (F
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ (( 
    {}. J),g)))))) 
    = (F 
    $$ ( 
    {.x.},(G
    [:] (f,( 
    the_unity_wrt F))))) by 
    A1,
    A2,
    A3,
    SETWISEO: 31
    
          .= ((G
    [:] (f,( 
    the_unity_wrt F))) 
    . x) by 
    A1,
    A2,
    SETWISEO: 17
    
          .= (G
    . ((f 
    . x),( 
    the_unity_wrt F))) by 
    A11,
    FUNCOP_1: 27
    
          .= (
    the_unity_wrt F) by 
    A2,
    A3,
    A4,
    A5,
    FINSEQOP: 66;
    
          hence thesis by
    A1,
    A2,
    A3,
    A7,
    SETWISEO: 31;
    
        end;
    
        
    
        
    
    A12: for Y1 be 
    Element of ( 
    Fin J), y be 
    Element of J st 
    P[Y1] holds
    P[(Y1
    \/  
    {.y.})]
    
        proof
    
          let Y1 be
    Element of ( 
    Fin J), y be 
    Element of J; 
    
          assume
    
          
    
    A13: (F 
    $$ ( 
    [:
    {.x.}, Y1:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ (Y1,g)))))); 
    
          reconsider s =
    {.y.} as
    Element of ( 
    Fin J); 
    
          per cases ;
    
            suppose y
    in Y1; 
    
            then (Y1
    \/  
    {y})
    = Y1 by 
    ZFMISC_1: 40;
    
            hence thesis by
    A13;
    
          end;
    
            suppose not y
    in Y1; 
    
            then
    
            
    
    A14: Y1 
    misses  
    {y} by
    ZFMISC_1: 50;
    
            then
    
            
    
    A15: 
    [:
    {x}, Y1:]
    misses  
    [:
    {x}, s:] by
    ZFMISC_1: 104;
    
            
    
            thus (F
    $$ ( 
    [:
    {.x.}, (Y1
    \/  
    {.y.}):],(G
    * (f,g)))) 
    = (F 
    $$ (( 
    [:
    {.x.}, Y1:]
    \/  
    [:
    {.x.}, s:]),(G
    * (f,g)))) by 
    ZFMISC_1: 97
    
            .= (F
    . ((F 
    $$ ( 
    [:
    {.x.}, Y1:],(G
    * (f,g)))),(F 
    $$ ( 
    [:
    {.x.}, s:],(G
    * (f,g)))))) by 
    A1,
    A2,
    A3,
    A15,
    SETWOP_2: 4
    
            .= (F
    . ((F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ (Y1,g)))))),(F 
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ (s,g)))))))) by 
    A1,
    A2,
    A13,
    Th24
    
            .= (F
    $$ ( 
    {.x.},(F
    .: ((G 
    [:] (f,(F 
    $$ (Y1,g)))),(G 
    [:] (f,(F 
    $$ (s,g)))))))) by 
    A1,
    A2,
    A3,
    SETWOP_2: 10
    
            .= (F
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    . ((F 
    $$ (Y1,g)),(F 
    $$ (s,g)))))))) by 
    A5,
    FINSEQOP: 36
    
            .= (F
    $$ ( 
    {.x.},(G
    [:] (f,(F 
    $$ ((Y1 
    \/  
    {.y.}),g)))))) by
    A1,
    A2,
    A3,
    A14,
    SETWOP_2: 4;
    
          end;
    
        end;
    
        thus for Y be
    Element of ( 
    Fin J) holds 
    P[Y] from
    SETWISEO:sch 4(
    A6,
    A12);
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:26
    
    
    
    
    
    Th26: for I,J be non 
    empty  
    set holds for F,G be 
    BinOp of D holds for f be 
    Function of I, D holds for g be 
    Function of J, D holds for X be 
    Element of ( 
    Fin I) holds for Y be 
    Element of ( 
    Fin J) st F is 
    having_a_unity & F is 
    commutative & F is 
    associative & F is 
    having_an_inverseOp & G 
    is_distributive_wrt F holds (F 
    $$ ( 
    [:X, Y:],(G
    * (f,g)))) 
    = (F 
    $$ (X,(G 
    [:] (f,(F 
    $$ (Y,g)))))) 
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F,G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      let X be
    Element of ( 
    Fin I); 
    
      let Y be
    Element of ( 
    Fin J); 
    
      assume that
    
      
    
    A1: F is 
    having_a_unity & F is 
    commutative & F is 
    associative and 
    
      
    
    A2: F is 
    having_an_inverseOp & G 
    is_distributive_wrt F; 
    
      defpred
    
    P[
    Element of ( 
    Fin I)] means (F 
    $$ ( 
    [:$1, Y:],(G
    * (f,g)))) 
    = (F 
    $$ ($1,(G 
    [:] (f,(F 
    $$ (Y,g)))))); 
    
      
    
      
    
    A3: for X1 be 
    Element of ( 
    Fin I), x be 
    Element of I st 
    P[X1] holds
    P[(X1
    \/  
    {.x.})]
    
      proof
    
        let X1 be
    Element of ( 
    Fin I), x be 
    Element of I; 
    
        reconsider s =
    {.x.} as
    Element of ( 
    Fin I); 
    
        assume
    
        
    
    A4: (F 
    $$ ( 
    [:X1, Y:],(G
    * (f,g)))) 
    = (F 
    $$ (X1,(G 
    [:] (f,(F 
    $$ (Y,g)))))); 
    
        now
    
          per cases ;
    
            case x
    in X1; 
    
            then (X1
    \/  
    {x})
    = X1 by 
    ZFMISC_1: 40;
    
            hence thesis by
    A4;
    
          end;
    
            case not x
    in X1; 
    
            then
    
            
    
    A5: X1 
    misses  
    {x} by
    ZFMISC_1: 50;
    
            then
    
            
    
    A6: 
    [:X1, Y:]
    misses  
    [:s, Y:] by
    ZFMISC_1: 104;
    
            
    
            thus (F
    $$ ( 
    [:(X1
    \/  
    {.x.}), Y:],(G
    * (f,g)))) 
    = (F 
    $$ (( 
    [:X1, Y:]
    \/  
    [:s, Y:]),(G
    * (f,g)))) by 
    ZFMISC_1: 97
    
            .= (F
    . ((F 
    $$ ( 
    [:X1, Y:],(G
    * (f,g)))),(F 
    $$ ( 
    [:s, Y:],(G
    * (f,g)))))) by 
    A1,
    A6,
    SETWOP_2: 4
    
            .= (F
    . ((F 
    $$ (X1,(G 
    [:] (f,(F 
    $$ (Y,g)))))),(F 
    $$ (s,(G 
    [:] (f,(F 
    $$ (Y,g)))))))) by 
    A1,
    A2,
    A4,
    Th25
    
            .= (F
    $$ ((X1 
    \/  
    {.x.}),(G
    [:] (f,(F 
    $$ (Y,g)))))) by 
    A1,
    A5,
    SETWOP_2: 4;
    
          end;
    
        end;
    
        hence thesis;
    
      end;
    
      
    
      
    
    A7: 
    P[(
    {}. I)] 
    
      proof
    
        reconsider T = (
    {}.  
    [:I, J:]) as
    Element of ( 
    Fin  
    [:I, J:]);
    
        T
    =  
    [:(
    {}. I), Y:] by 
    ZFMISC_1: 90;
    
        then (F
    $$ ( 
    [:(
    {}. I), Y:],(G 
    * (f,g)))) 
    = ( 
    the_unity_wrt F) by 
    A1,
    SETWISEO: 31;
    
        hence thesis by
    A1,
    SETWISEO: 31;
    
      end;
    
      for X1 be
    Element of ( 
    Fin I) holds 
    P[X1] from
    SETWISEO:sch 4(
    A7,
    A3);
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:27
    
    for I,J be non
    empty  
    set holds for F,G be 
    BinOp of D holds for f be 
    Function of I, D holds for g be 
    Function of J, D st F is 
    commutative
    associative & G is 
    commutative holds for x be 
    Element of I holds for y be 
    Element of J holds (F 
    $$ ( 
    [:
    {.x.},
    {.y.}:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    {.y.},(G
    [;] ((F 
    $$ ( 
    {.x.},f)),g))))
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F,G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      assume that
    
      
    
    A1: F is 
    commutative
    associative and 
    
      
    
    A2: G is 
    commutative;
    
      now
    
        let x be
    Element of I; 
    
        let y be
    Element of J; 
    
        
    
        thus (F
    $$ ( 
    [:
    {.x.},
    {.y.}:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    [:
    {.y.},
    {.x.}:],(G
    * (g,f)))) by 
    A1,
    A2,
    Th23
    
        .= (F
    $$ ( 
    {.y.},(G
    [:] (g,(F 
    $$ ( 
    {.x.},f)))))) by
    A1,
    Th24
    
        .= (F
    $$ ( 
    {.y.},(G
    [;] ((F 
    $$ ( 
    {.x.},f)),g)))) by
    A2,
    FUNCOP_1: 64;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:28
    
    for I,J be non
    empty  
    set holds for F,G be 
    BinOp of D holds for f be 
    Function of I, D holds for g be 
    Function of J, D holds for X be 
    Element of ( 
    Fin I) holds for Y be 
    Element of ( 
    Fin J) st F is 
    having_a_unity & F is 
    commutative
    associative & F is 
    having_an_inverseOp & G 
    is_distributive_wrt F & G is 
    commutative holds (F 
    $$ ( 
    [:X, Y:],(G
    * (f,g)))) 
    = (F 
    $$ (Y,(G 
    [;] ((F 
    $$ (X,f)),g)))) 
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F,G be
    BinOp of D; 
    
      let f be
    Function of I, D; 
    
      let g be
    Function of J, D; 
    
      let X be
    Element of ( 
    Fin I); 
    
      let Y be
    Element of ( 
    Fin J); 
    
      assume that
    
      
    
    A1: F is 
    having_a_unity & F is 
    commutative & F is 
    associative and 
    
      
    
    A2: F is 
    having_an_inverseOp & G 
    is_distributive_wrt F and 
    
      
    
    A3: G is 
    commutative;
    
      
    
      thus (F
    $$ ( 
    [:X, Y:],(G
    * (f,g)))) 
    = (F 
    $$ ( 
    [:Y, X:],(G
    * (g,f)))) by 
    A1,
    A3,
    Th23
    
      .= (F
    $$ (Y,(G 
    [:] (g,(F 
    $$ (X,f)))))) by 
    A1,
    A2,
    Th26
    
      .= (F
    $$ (Y,(G 
    [;] ((F 
    $$ (X,f)),g)))) by 
    A3,
    FUNCOP_1: 64;
    
    end;
    
    theorem :: 
    
    MATRIX_3:29
    
    
    
    
    
    Th29: for I,J be non 
    empty  
    set holds for F be 
    BinOp of D holds for f be 
    Function of 
    [:I, J:], D holds for g be
    Function of I, D holds for Y be 
    Element of ( 
    Fin J) st F is 
    having_a_unity
    commutative
    associative holds for x be 
    Element of I holds (for i be 
    Element of I holds (g 
    . i) 
    = (F 
    $$ (Y,(( 
    curry f) 
    . i)))) implies (F 
    $$ ( 
    [:
    {.x.}, Y:],f))
    = (F 
    $$ ( 
    {.x.},g))
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F be
    BinOp of D; 
    
      let f be
    Function of 
    [:I, J:], D;
    
      let g be
    Function of I, D; 
    
      let Y be
    Element of ( 
    Fin J); 
    
      assume that
    
      
    
    A1: F is 
    having_a_unity and 
    
      
    
    A2: F is 
    commutative & F is 
    associative;
    
      now
    
        let x be
    Element of I; 
    
        assume
    
        
    
    A3: for i be 
    Element of I holds (g 
    . i) 
    = (F 
    $$ (Y,(( 
    curry f) 
    . i))); 
    
        deffunc
    
    F(
    object) =
    [x, $1];
    
        consider h be
    Function such that 
    
        
    
    A4: ( 
    dom h) 
    = J & for y be 
    object st y 
    in J holds (h 
    . y) 
    =  
    F(y) from
    FUNCT_1:sch 3;
    
        
    
        
    
    A5: ( 
    dom (( 
    curry f) 
    . x)) 
    = J & ( 
    dom (f 
    * h)) 
    = J & ( 
    rng h) 
    c=  
    [:I, J:]
    
        proof
    
          
    
          
    
    A6: ( 
    dom f) 
    =  
    [:I, J:] by
    FUNCT_2:def 1;
    
          then ex g be
    Function st g 
    = (( 
    curry f) 
    . x) & ( 
    dom g) 
    = J & ( 
    rng g) 
    c= ( 
    rng f) & for y st y 
    in J holds (g 
    . y) 
    = (f 
    . (x,y)) by 
    FUNCT_5: 29;
    
          hence (
    dom (( 
    curry f) 
    . x)) 
    = J; 
    
          now
    
            let y be
    object;
    
            assume y
    in ( 
    rng h); 
    
            then
    
            consider z be
    object such that 
    
            
    
    A7: z 
    in ( 
    dom h) and 
    
            
    
    A8: y 
    = (h 
    . z) by 
    FUNCT_1:def 3;
    
            y
    =  
    [x, z] by
    A4,
    A7,
    A8;
    
            hence y
    in ( 
    dom f) by 
    A4,
    A6,
    A7,
    ZFMISC_1: 87;
    
          end;
    
          then (
    rng h) 
    c= ( 
    dom f) by 
    TARSKI:def 3;
    
          hence thesis by
    A4,
    FUNCT_2:def 1,
    RELAT_1: 27;
    
        end;
    
        
    
        
    
    A9: for y be 
    object st y 
    in J holds ((( 
    curry f) 
    . x) 
    . y) 
    = ((f 
    * h) 
    . y) 
    
        proof
    
          let y be
    object;
    
          (
    dom f) 
    =  
    [:I, J:] by
    FUNCT_2:def 1;
    
          then
    
          
    
    A10: ex g be 
    Function st g 
    = (( 
    curry f) 
    . x) & ( 
    dom g) 
    = J & ( 
    rng g) 
    c= ( 
    rng f) & for y st y 
    in J holds (g 
    . y) 
    = (f 
    . (x,y)) by 
    FUNCT_5: 29;
    
          assume
    
          
    
    A11: y 
    in J; 
    
          
    
          hence ((f
    * h) 
    . y) 
    = (f 
    . (h 
    . y)) by 
    A5,
    FUNCT_1: 12
    
          .= (f
    . (x,y)) by 
    A4,
    A11
    
          .= (((
    curry f) 
    . x) 
    . y) by 
    A11,
    A10;
    
        end;
    
        for y be
    object holds y 
    in  
    [:
    {x}, Y:] iff y
    in (h 
    .: Y) 
    
        proof
    
          let y be
    object;
    
          thus y
    in  
    [:
    {x}, Y:] implies y
    in (h 
    .: Y) 
    
          proof
    
            assume
    
            
    
    A12: y 
    in  
    [:
    {x}, Y:];
    
            then
    
            consider y1,x1 be
    object such that 
    
            
    
    A13: y 
    =  
    [y1, x1] by
    RELAT_1:def 1;
    
            
    
            
    
    A14: y1 
    in  
    {x} by
    A12,
    A13,
    ZFMISC_1: 87;
    
            
    
            
    
    A15: Y 
    c= J & x1 
    in Y by 
    A12,
    A13,
    FINSUB_1:def 5,
    ZFMISC_1: 87;
    
            
    
            then (h
    . x1) 
    =  
    [x, x1] by
    A4
    
            .= y by
    A13,
    A14,
    TARSKI:def 1;
    
            hence thesis by
    A4,
    A15,
    FUNCT_1:def 6;
    
          end;
    
          assume y
    in (h 
    .: Y); 
    
          then
    
          consider z be
    object such that 
    
          
    
    A16: z 
    in ( 
    dom h) and 
    
          
    
    A17: z 
    in Y and 
    
          
    
    A18: y 
    = (h 
    . z) by 
    FUNCT_1:def 6;
    
          y
    =  
    [x, z] by
    A4,
    A16,
    A18;
    
          hence thesis by
    A17,
    ZFMISC_1: 105;
    
        end;
    
        then
    
        
    
    A19: (h 
    .: Y) 
    =  
    [:
    {x}, Y:] by
    TARSKI: 2;
    
        now
    
          let x1,x2 be
    object;
    
          assume that
    
          
    
    A20: x1 
    in ( 
    dom h) and 
    
          
    
    A21: x2 
    in ( 
    dom h) and 
    
          
    
    A22: (h 
    . x1) 
    = (h 
    . x2); 
    
          
    [x, x1]
    = (h 
    . x2) by 
    A4,
    A20,
    A22
    
          .=
    [x, x2] by
    A4,
    A21;
    
          hence x1
    = x2 by 
    XTUPLE_0: 1;
    
        end;
    
        then
    
        
    
    A23: h is 
    one-to-one by 
    FUNCT_1:def 4;
    
        reconsider h as
    Function of J, 
    [:I, J:] by
    A4,
    A5,
    FUNCT_2: 2;
    
        
    
        thus (F
    $$ ( 
    [:
    {.x.}, Y:],f))
    = (F 
    $$ (Y,(f 
    * h))) by 
    A1,
    A2,
    A23,
    A19,
    SETWOP_2: 6
    
        .= (F
    $$ (Y,(( 
    curry f) 
    . x))) by 
    A5,
    A9,
    FUNCT_1: 2
    
        .= (g
    . x) by 
    A3
    
        .= (F
    $$ ( 
    {.x.},g)) by
    A2,
    SETWISEO: 17;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:30
    
    
    
    
    
    Th30: for I,J be non 
    empty  
    set holds for F be 
    BinOp of D holds for f be 
    Function of 
    [:I, J:], D holds for g be
    Function of I, D holds for X be 
    Element of ( 
    Fin I) holds for Y be 
    Element of ( 
    Fin J) st (for i be 
    Element of I holds (g 
    . i) 
    = (F 
    $$ (Y,(( 
    curry f) 
    . i)))) & F is 
    having_a_unity & F is 
    commutative & F is 
    associative holds (F 
    $$ ( 
    [:X, Y:],f))
    = (F 
    $$ (X,g)) 
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F be
    BinOp of D; 
    
      let f be
    Function of 
    [:I, J:], D;
    
      let g be
    Function of I, D; 
    
      let X be
    Element of ( 
    Fin I); 
    
      let Y be
    Element of ( 
    Fin J); 
    
      assume that
    
      
    
    A1: for i be 
    Element of I holds (g 
    . i) 
    = (F 
    $$ (Y,(( 
    curry f) 
    . i))) and 
    
      
    
    A2: F is 
    having_a_unity & F is 
    commutative & F is 
    associative;
    
      defpred
    
    P[
    Element of ( 
    Fin I)] means (F 
    $$ ( 
    [:$1, Y:],f))
    = (F 
    $$ ($1,g)); 
    
      
    
      
    
    A3: for X1 be 
    Element of ( 
    Fin I), x be 
    Element of I holds 
    P[X1] implies
    P[(X1
    \/  
    {.x.})]
    
      proof
    
        let X1 be
    Element of ( 
    Fin I), x be 
    Element of I; 
    
        assume
    
        
    
    A4: (F 
    $$ ( 
    [:X1, Y:],f))
    = (F 
    $$ (X1,g)); 
    
        reconsider s =
    {.x.} as
    Element of ( 
    Fin I); 
    
        per cases ;
    
          suppose x
    in X1; 
    
          then (X1
    \/  
    {x})
    = X1 by 
    ZFMISC_1: 40;
    
          hence thesis by
    A4;
    
        end;
    
          suppose not x
    in X1; 
    
          then
    
          
    
    A5: X1 
    misses  
    {x} by
    ZFMISC_1: 50;
    
          then
    
          
    
    A6: 
    [:X1, Y:]
    misses  
    [:s, Y:] by
    ZFMISC_1: 104;
    
          
    
          thus (F
    $$ ( 
    [:(X1
    \/  
    {.x.}), Y:],f))
    = (F 
    $$ (( 
    [:X1, Y:]
    \/  
    [:s, Y:]),f)) by
    ZFMISC_1: 97
    
          .= (F
    . ((F 
    $$ ( 
    [:X1, Y:],f)),(F
    $$ ( 
    [:s, Y:],f)))) by
    A2,
    A6,
    SETWOP_2: 4
    
          .= (F
    . ((F 
    $$ (X1,g)),(F 
    $$ (s,g)))) by 
    A1,
    A2,
    A4,
    Th29
    
          .= (F
    $$ ((X1 
    \/  
    {.x.}),g)) by
    A2,
    A5,
    SETWOP_2: 4;
    
        end;
    
      end;
    
      
    
      
    
    A7: 
    P[(
    {}. I)] 
    
      proof
    
        reconsider T = (
    {}.  
    [:I, J:]) as
    Element of ( 
    Fin  
    [:I, J:]);
    
        T
    =  
    [:(
    {}. I), Y:] by 
    ZFMISC_1: 90;
    
        then (F
    $$ ( 
    [:(
    {}. I), Y:],f)) 
    = ( 
    the_unity_wrt F) by 
    A2,
    SETWISEO: 31;
    
        hence thesis by
    A2,
    SETWISEO: 31;
    
      end;
    
      for X1 be
    Element of ( 
    Fin I) holds 
    P[X1] from
    SETWISEO:sch 4(
    A7,
    A3);
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:31
    
    
    
    
    
    Th31: for I,J be non 
    empty  
    set holds for F be 
    BinOp of D holds for f be 
    Function of 
    [:I, J:], D holds for g be
    Function of J, D holds for X be 
    Element of ( 
    Fin I) st F is 
    having_a_unity & F is 
    commutative & F is 
    associative holds for y be 
    Element of J holds (for j be 
    Element of J holds (g 
    . j) 
    = (F 
    $$ (X,(( 
    curry' f) 
    . j)))) implies (F 
    $$ ( 
    [:X,
    {.y.}:],f))
    = (F 
    $$ ( 
    {.y.},g))
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F be
    BinOp of D; 
    
      let f be
    Function of 
    [:I, J:], D;
    
      let g be
    Function of J, D; 
    
      let X be
    Element of ( 
    Fin I); 
    
      assume that
    
      
    
    A1: F is 
    having_a_unity and 
    
      
    
    A2: F is 
    commutative & F is 
    associative;
    
      now
    
        let y be
    Element of J; 
    
        assume
    
        
    
    A3: for j be 
    Element of J holds (g 
    . j) 
    = (F 
    $$ (X,(( 
    curry' f) 
    . j))); 
    
        deffunc
    
    F(
    object) =
    [$1, y];
    
        consider h be
    Function such that 
    
        
    
    A4: ( 
    dom h) 
    = I & for x be 
    object st x 
    in I holds (h 
    . x) 
    =  
    F(x) from
    FUNCT_1:sch 3;
    
        
    
        
    
    A5: ( 
    dom (( 
    curry' f) 
    . y)) 
    = I & ( 
    dom (f 
    * h)) 
    = I & ( 
    rng h) 
    c=  
    [:I, J:]
    
        proof
    
          
    
          
    
    A6: ( 
    dom f) 
    =  
    [:I, J:] by
    FUNCT_2:def 1;
    
          then ex g be
    Function st g 
    = (( 
    curry' f) 
    . y) & ( 
    dom g) 
    = I & ( 
    rng g) 
    c= ( 
    rng f) & for x st x 
    in I holds (g 
    . x) 
    = (f 
    . (x,y)) by 
    FUNCT_5: 32;
    
          hence (
    dom (( 
    curry' f) 
    . y)) 
    = I; 
    
          now
    
            let x be
    object;
    
            assume x
    in ( 
    rng h); 
    
            then
    
            consider z be
    object such that 
    
            
    
    A7: z 
    in ( 
    dom h) and 
    
            
    
    A8: x 
    = (h 
    . z) by 
    FUNCT_1:def 3;
    
            x
    =  
    [z, y] by
    A4,
    A7,
    A8;
    
            hence x
    in ( 
    dom f) by 
    A4,
    A6,
    A7,
    ZFMISC_1: 87;
    
          end;
    
          then (
    rng h) 
    c= ( 
    dom f) by 
    TARSKI:def 3;
    
          hence thesis by
    A4,
    FUNCT_2:def 1,
    RELAT_1: 27;
    
        end;
    
        
    
        
    
    A9: for x be 
    object st x 
    in I holds ((( 
    curry' f) 
    . y) 
    . x) 
    = ((f 
    * h) 
    . x) 
    
        proof
    
          let x be
    object;
    
          (
    dom f) 
    =  
    [:I, J:] by
    FUNCT_2:def 1;
    
          then
    
          
    
    A10: ex g be 
    Function st g 
    = (( 
    curry' f) 
    . y) & ( 
    dom g) 
    = I & ( 
    rng g) 
    c= ( 
    rng f) & for x st x 
    in I holds (g 
    . x) 
    = (f 
    . (x,y)) by 
    FUNCT_5: 32;
    
          assume
    
          
    
    A11: x 
    in I; 
    
          
    
          hence ((f
    * h) 
    . x) 
    = (f 
    . (h 
    . x)) by 
    A5,
    FUNCT_1: 12
    
          .= (f
    . (x,y)) by 
    A4,
    A11
    
          .= (((
    curry' f) 
    . y) 
    . x) by 
    A11,
    A10;
    
        end;
    
        for x be
    object holds x 
    in  
    [:X,
    {y}:] iff x
    in (h 
    .: X) 
    
        proof
    
          let x be
    object;
    
          thus x
    in  
    [:X,
    {y}:] implies x
    in (h 
    .: X) 
    
          proof
    
            assume
    
            
    
    A12: x 
    in  
    [:X,
    {y}:];
    
            then
    
            consider x1,y1 be
    object such that 
    
            
    
    A13: x 
    =  
    [x1, y1] by
    RELAT_1:def 1;
    
            
    
            
    
    A14: y1 
    in  
    {y} by
    A12,
    A13,
    ZFMISC_1: 87;
    
            
    
            
    
    A15: X 
    c= I & x1 
    in X by 
    A12,
    A13,
    FINSUB_1:def 5,
    ZFMISC_1: 87;
    
            
    
            then (h
    . x1) 
    =  
    [x1, y] by
    A4
    
            .= x by
    A13,
    A14,
    TARSKI:def 1;
    
            hence thesis by
    A4,
    A15,
    FUNCT_1:def 6;
    
          end;
    
          assume x
    in (h 
    .: X); 
    
          then
    
          consider z be
    object such that 
    
          
    
    A16: z 
    in ( 
    dom h) and 
    
          
    
    A17: z 
    in X and 
    
          
    
    A18: x 
    = (h 
    . z) by 
    FUNCT_1:def 6;
    
          x
    =  
    [z, y] by
    A4,
    A16,
    A18;
    
          hence thesis by
    A17,
    ZFMISC_1: 106;
    
        end;
    
        then
    
        
    
    A19: (h 
    .: X) 
    =  
    [:X,
    {y}:] by
    TARSKI: 2;
    
        now
    
          let x1,x2 be
    object;
    
          assume that
    
          
    
    A20: x1 
    in ( 
    dom h) and 
    
          
    
    A21: x2 
    in ( 
    dom h) and 
    
          
    
    A22: (h 
    . x1) 
    = (h 
    . x2); 
    
          
    [x1, y]
    = (h 
    . x2) by 
    A4,
    A20,
    A22
    
          .=
    [x2, y] by
    A4,
    A21;
    
          hence x1
    = x2 by 
    XTUPLE_0: 1;
    
        end;
    
        then
    
        
    
    A23: h is 
    one-to-one by 
    FUNCT_1:def 4;
    
        reconsider h as
    Function of I, 
    [:I, J:] by
    A4,
    A5,
    FUNCT_2: 2;
    
        
    
        thus (F
    $$ ( 
    [:X,
    {.y.}:],f))
    = (F 
    $$ (X,(f 
    * h))) by 
    A1,
    A2,
    A23,
    A19,
    SETWOP_2: 6
    
        .= (F
    $$ (X,(( 
    curry' f) 
    . y))) by 
    A5,
    A9,
    FUNCT_1: 2
    
        .= (g
    . y) by 
    A3
    
        .= (F
    $$ ( 
    {.y.},g)) by
    A2,
    SETWISEO: 17;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:32
    
    
    
    
    
    Th32: for I,J be non 
    empty  
    set holds for F be 
    BinOp of D holds for f be 
    Function of 
    [:I, J:], D holds for g be
    Function of J, D holds for X be 
    Element of ( 
    Fin I) holds for Y be 
    Element of ( 
    Fin J) st (for j be 
    Element of J holds (g 
    . j) 
    = (F 
    $$ (X,(( 
    curry' f) 
    . j)))) & F is 
    having_a_unity & F is 
    commutative & F is 
    associative holds (F 
    $$ ( 
    [:X, Y:],f))
    = (F 
    $$ (Y,g)) 
    
    proof
    
      let I,J be non
    empty  
    set;
    
      let F be
    BinOp of D; 
    
      let f be
    Function of 
    [:I, J:], D;
    
      let g be
    Function of J, D; 
    
      let X be
    Element of ( 
    Fin I); 
    
      let Y be
    Element of ( 
    Fin J); 
    
      assume that
    
      
    
    A1: for j be 
    Element of J holds (g 
    . j) 
    = (F 
    $$ (X,(( 
    curry' f) 
    . j))) and 
    
      
    
    A2: F is 
    having_a_unity & F is 
    commutative & F is 
    associative;
    
      defpred
    
    P[
    Element of ( 
    Fin J)] means (F 
    $$ ( 
    [:X, $1:],f))
    = (F 
    $$ ($1,g)); 
    
      
    
      
    
    A3: for Y1 be 
    Element of ( 
    Fin J), y be 
    Element of J holds 
    P[Y1] implies
    P[(Y1
    \/  
    {.y.})]
    
      proof
    
        let Y1 be
    Element of ( 
    Fin J), y be 
    Element of J; 
    
        assume
    
        
    
    A4: (F 
    $$ ( 
    [:X, Y1:],f))
    = (F 
    $$ (Y1,g)); 
    
        reconsider s =
    {.y.} as
    Element of ( 
    Fin J); 
    
        per cases ;
    
          suppose y
    in Y1; 
    
          then (Y1
    \/  
    {y})
    = Y1 by 
    ZFMISC_1: 40;
    
          hence thesis by
    A4;
    
        end;
    
          suppose not y
    in Y1; 
    
          then
    
          
    
    A5: Y1 
    misses  
    {y} by
    ZFMISC_1: 50;
    
          then
    
          
    
    A6: 
    [:X, Y1:]
    misses  
    [:X, s:] by
    ZFMISC_1: 104;
    
          
    
          thus (F
    $$ ( 
    [:X, (Y1
    \/  
    {.y.}):],f))
    = (F 
    $$ (( 
    [:X, Y1:]
    \/  
    [:X, s:]),f)) by
    ZFMISC_1: 97
    
          .= (F
    . ((F 
    $$ ( 
    [:X, Y1:],f)),(F
    $$ ( 
    [:X, s:],f)))) by
    A2,
    A6,
    SETWOP_2: 4
    
          .= (F
    . ((F 
    $$ (Y1,g)),(F 
    $$ (s,g)))) by 
    A1,
    A2,
    A4,
    Th31
    
          .= (F
    $$ ((Y1 
    \/  
    {.y.}),g)) by
    A2,
    A5,
    SETWOP_2: 4;
    
        end;
    
      end;
    
      
    
      
    
    A7: 
    P[(
    {}. J)] 
    
      proof
    
        reconsider T = (
    {}.  
    [:I, J:]) as
    Element of ( 
    Fin  
    [:I, J:]);
    
        T
    =  
    [:X, (
    {}. J):] by 
    ZFMISC_1: 90;
    
        then (F
    $$ ( 
    [:X, (
    {}. J):],f)) 
    = ( 
    the_unity_wrt F) by 
    A2,
    SETWISEO: 31;
    
        hence thesis by
    A2,
    SETWISEO: 31;
    
      end;
    
      for Y1 be
    Element of ( 
    Fin J) holds 
    P[Y1] from
    SETWISEO:sch 4(
    A7,
    A3);
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MATRIX_3:33
    
    for K be
    commutative  
    Ring holds for A,B,C be 
    Matrix of K st ( 
    width A) 
    = ( 
    len B) & ( 
    width B) 
    = ( 
    len C) holds ((A 
    * B) 
    * C) 
    = (A 
    * (B 
    * C)) 
    
    proof
    
      let K be
    commutative  
    Ring;
    
      let A,B,C be
    Matrix of K; 
    
      assume that
    
      
    
    A1: ( 
    width A) 
    = ( 
    len B) and 
    
      
    
    A2: ( 
    width B) 
    = ( 
    len C); 
    
      
    
      
    
    A3: ( 
    len (B 
    * C)) 
    = ( 
    width A) by 
    A1,
    A2,
    Def4;
    
      
    
      
    
    A4: ( 
    width (B 
    * C)) 
    = ( 
    width C) by 
    A2,
    Def4;
    
      then
    
      
    
    A5: ( 
    width (A 
    * (B 
    * C))) 
    = ( 
    width C) by 
    A3,
    Def4;
    
      (
    dom (B 
    * C)) 
    = ( 
    dom B) by 
    A1,
    A3,
    FINSEQ_3: 29;
    
      then
    
      
    
    A6: ( 
    Indices (B 
    * C)) 
    =  
    [:(
    dom B), ( 
    Seg ( 
    width C)):] by 
    A4;
    
      
    
      
    
    A7: ( 
    Seg ( 
    len B)) 
    = ( 
    dom B) by 
    FINSEQ_1:def 3;
    
      
    
      
    
    A8: ( 
    len (A 
    * (B 
    * C))) 
    = ( 
    len A) by 
    A3,
    Def4;
    
      then (
    dom (A 
    * (B 
    * C))) 
    = ( 
    dom A) by 
    FINSEQ_3: 29;
    
      then
    
      
    
    A9: ( 
    Indices (A 
    * (B 
    * C))) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width C)):] by 
    A5;
    
      (
    0. K) 
    is_a_unity_wrt the 
    addF of K by 
    FVSUM_1: 6;
    
      then
    
      
    
    A10: the 
    addF of K is 
    having_a_unity by 
    SETWISEO:def 2;
    
      
    
      
    
    A11: ( 
    width (A 
    * B)) 
    = ( 
    len C) by 
    A1,
    A2,
    Def4;
    
      then
    
      
    
    A12: ( 
    width ((A 
    * B) 
    * C)) 
    = ( 
    width C) by 
    Def4;
    
      
    
      
    
    A13: ( 
    len (A 
    * B)) 
    = ( 
    len A) by 
    A1,
    Def4;
    
      then (
    dom (A 
    * B)) 
    = ( 
    dom A) by 
    FINSEQ_3: 29;
    
      then
    
      
    
    A14: ( 
    Indices (A 
    * B)) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width B)):] by 
    A2,
    A11;
    
      
    
      
    
    A15: ( 
    len ((A 
    * B) 
    * C)) 
    = ( 
    len A) by 
    A13,
    A11,
    Def4;
    
      then
    
      
    
    A16: ( 
    dom ((A 
    * B) 
    * C)) 
    = ( 
    dom A) by 
    FINSEQ_3: 29;
    
      then
    
      
    
    A17: ( 
    Indices ((A 
    * B) 
    * C)) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width C)):] by 
    A12;
    
      
    
      
    
    A18: ( 
    Indices ((A 
    * B) 
    * C)) 
    =  
    [:(
    dom A), ( 
    Seg ( 
    width C)):] by 
    A12,
    A16;
    
      now
    
        reconsider Y = (
    findom B) as 
    Element of ( 
    Fin  
    NAT ); 
    
        reconsider X = (
    findom C) as 
    Element of ( 
    Fin  
    NAT ); 
    
        let i, j;
    
        deffunc
    
    F(
    Element of 
    NAT , 
    Element of 
    NAT ) = (((A 
    * (i,$2)) 
    * (B 
    * ($2,$1))) 
    * (C 
    * ($1,j))); 
    
        consider f be
    Function of 
    [:
    NAT , 
    NAT :], the 
    carrier of K such that 
    
        
    
    A19: for k1 be 
    Element of 
    NAT holds for k2 be 
    Element of 
    NAT holds (f 
    . (k1,k2)) 
    =  
    F(k1,k2) from
    BINOP_1:sch 4;
    
        
    
        
    
    A20: for k be 
    Element of 
    NAT st k 
    in  
    NAT holds ((( 
    curry f) 
    . k) 
    | ( 
    dom B)) 
    = ((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))) 
    
        proof
    
          let k be
    Element of 
    NAT ; 
    
          assume k
    in  
    NAT ; 
    
          
    
          
    
    A21: 
    {k}
    c=  
    NAT by 
    ZFMISC_1: 31;
    
          reconsider a = (C
    * (k,j)) as 
    Element of K; 
    
          
    
          
    
    A22: ( 
    dom ( 
    curry f)) 
    =  
    NAT by 
    FUNCT_2:def 1;
    
          (
    dom f) 
    =  
    [:
    NAT , 
    NAT :] by 
    FUNCT_2:def 1;
    
          
    
          then
    
          
    
    A23: ( 
    dom (( 
    curry f) 
    . k)) 
    = ( 
    proj2 ( 
    [:
    NAT , 
    NAT :] 
    /\  
    [:
    {k}, (
    proj2  
    [:
    NAT , 
    NAT :]):])) by 
    A22,
    FUNCT_5: 31
    
          .= (
    proj2 ( 
    [:
    {k},
    NAT :] 
    /\  
    [:
    NAT , 
    NAT :])) by 
    FUNCT_5: 9
    
          .= (
    proj2  
    [:
    {k},
    NAT :]) by 
    A21,
    ZFMISC_1: 101
    
          .=
    NAT by 
    FUNCT_5: 9;
    
          
    
          then
    
          
    
    A24: ( 
    dom ((( 
    curry f) 
    . k) 
    | ( 
    dom B))) 
    = ( 
    NAT  
    /\ ( 
    dom B)) by 
    RELAT_1: 61
    
          .= (
    dom B) by 
    XBOOLE_1: 28;
    
          reconsider p = (
    mlt (( 
    Line (A,i)),( 
    Col (B,k)))) as 
    FinSequence of K; 
    
          
    
          
    
    A25: ( 
    len ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))) 
    = ( 
    len (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k))))) by 
    FVSUM_1:def 7;
    
          (
    len ( 
    Line (A,i))) 
    = ( 
    len B) by 
    A1,
    MATRIX_0:def 7
    
          .= (
    len ( 
    Col (B,k))) by 
    MATRIX_0:def 8;
    
          
    
          then
    
          
    
    A26: ( 
    len (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k))))) 
    = ( 
    len ( 
    Line (A,i))) by 
    FINSEQ_2: 72
    
          .= (
    len B) by 
    A1,
    MATRIX_0:def 7;
    
          (
    dom (a 
    multfield )) 
    = the 
    carrier of K by 
    FUNCT_2:def 1;
    
          then (a
    * p) 
    = ((a 
    multfield ) 
    * p) & ( 
    rng p) 
    c= ( 
    dom (a 
    multfield )) by 
    FINSEQ_1:def 4,
    FVSUM_1:def 6;
    
          then
    
          
    
    A27: ( 
    dom (a 
    * p)) 
    = ( 
    dom p) by 
    RELAT_1: 27;
    
          
    
          
    
    A28: ( 
    dom (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k))))) 
    = ( 
    Seg ( 
    len (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k)))))) by 
    FINSEQ_1:def 3;
    
          
    
    A29: 
    
          now
    
            let l be
    object;
    
            assume
    
            
    
    A30: l 
    in ( 
    dom B); 
    
            then
    
            reconsider l9 = l as
    Element of 
    NAT ; 
    
            
    
            
    
    A31: l 
    in ( 
    dom (a 
    * p)) by 
    A25,
    A26,
    A27,
    A30,
    FINSEQ_3: 29;
    
            l9
    in ( 
    dom p) by 
    A25,
    A26,
    A30,
    FINSEQ_3: 29;
    
            then
    
            reconsider b = (p
    . l9) as 
    Element of K by 
    FINSEQ_2: 11;
    
            
    
            
    
    A32: l9 
    in ( 
    dom (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k))))) by 
    A26,
    A28,
    A30,
    FINSEQ_1:def 3;
    
            
    
            thus ((((
    curry f) 
    . k) 
    | ( 
    dom B)) 
    . l) 
    = ((( 
    curry f) 
    . k) 
    . l9) by 
    A30,
    FUNCT_1: 49
    
            .= (f
    . (k,l9)) by 
    A22,
    A23,
    FUNCT_5: 31
    
            .= (((A
    * (i,l9)) 
    * (B 
    * (l9,k))) 
    * (C 
    * (k,j))) by 
    A19
    
            .= (the
    multF of K 
    . ((the 
    multF of K 
    . ((( 
    Line (A,i)) 
    . l9),(B 
    * (l9,k)))),(C 
    * (k,j)))) by 
    A1,
    A7,
    A30,
    MATRIX_0:def 7
    
            .= (the
    multF of K 
    . ((the 
    multF of K 
    . ((( 
    Line (A,i)) 
    . l9),(( 
    Col (B,k)) 
    . l9))),(C 
    * (k,j)))) by 
    A30,
    MATRIX_0:def 8
    
            .= (the
    multF of K 
    . (((the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k)))) 
    . l9),(C 
    * (k,j)))) by 
    A32,
    FUNCOP_1: 22
    
            .= (b
    * a) by 
    FVSUM_1:def 7
    
            .= (((C
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))) 
    . l) by 
    A31,
    FVSUM_1: 50;
    
          end;
    
          (
    dom ((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k)))))) 
    = ( 
    dom B) by 
    A25,
    A26,
    A27,
    FINSEQ_3: 29;
    
          hence thesis by
    A24,
    A29,
    FUNCT_1: 2;
    
        end;
    
        
    
        
    
    A33: ( 
    0. K) 
    = ( 
    the_unity_wrt the 
    addF of K) by 
    FVSUM_1: 7;
    
        deffunc
    
    F9(
    Element of 
    NAT ) = (the 
    addF of K 
    $$ (X,(( 
    curry' f) 
    . $1))); 
    
        deffunc
    
    F(
    Element of 
    NAT ) = (the 
    addF of K 
    $$ (Y,(( 
    curry f) 
    . $1))); 
    
        consider g be
    sequence of the 
    carrier of K such that 
    
        
    
    A34: for k be 
    Element of 
    NAT holds (g 
    . k) 
    =  
    F(k) from
    FUNCT_2:sch 4;
    
        
    
        
    
    A35: ( 
    dom (g 
    | ( 
    dom C))) 
    = (( 
    dom g) 
    /\ ( 
    dom C)) by 
    RELAT_1: 61
    
        .= (
    NAT  
    /\ ( 
    dom C)) by 
    FUNCT_2:def 1
    
        .= (
    dom C) by 
    XBOOLE_1: 28;
    
        (
    len ( 
    Line ((A 
    * B),i))) 
    = ( 
    width (A 
    * B)) by 
    MATRIX_0:def 7
    
        .= (
    len C) by 
    A1,
    A2,
    Def4
    
        .= (
    len ( 
    Col (C,j))) by 
    MATRIX_0:def 8;
    
        
    
        then
    
        
    
    A36: ( 
    len (the 
    multF of K 
    .: (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) 
    = ( 
    len ( 
    Col (C,j))) by 
    FINSEQ_2: 72
    
        .= (
    len C) by 
    MATRIX_0:def 8;
    
        assume
    
        
    
    A37: 
    [i, j]
    in ( 
    Indices ((A 
    * B) 
    * C)); 
    
        then
    
        
    
    A38: i 
    in ( 
    dom A) by 
    A17,
    ZFMISC_1: 87;
    
        
    
    A39: 
    
        now
    
          let k9 be
    object;
    
          assume
    
          
    
    A40: k9 
    in ( 
    dom C); 
    
          then
    
          reconsider k = k9 as
    Element of 
    NAT ; 
    
          
    
          
    
    A41: k 
    in ( 
    dom (the 
    multF of K 
    .: (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) by 
    A36,
    A40,
    FINSEQ_3: 29;
    
          reconsider p = (
    mlt (( 
    Line (A,i)),( 
    Col (B,k)))) as 
    FinSequence of K; 
    
          reconsider a = (C
    * (k,j)) as 
    Element of K; 
    
          (
    dom (a 
    multfield )) 
    = the 
    carrier of K by 
    FUNCT_2:def 1;
    
          then (a
    * p) 
    = ((a 
    multfield ) 
    * p) & ( 
    rng p) 
    c= ( 
    dom (a 
    multfield )) by 
    FINSEQ_1:def 4,
    FVSUM_1:def 6;
    
          then
    
          
    
    A42: ( 
    dom (a 
    * p)) 
    = ( 
    dom p) by 
    RELAT_1: 27;
    
          (
    len ( 
    Line (A,i))) 
    = ( 
    len B) by 
    A1,
    MATRIX_0:def 7
    
          .= (
    len ( 
    Col (B,k))) by 
    MATRIX_0:def 8;
    
          
    
          then (
    len (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col (B,k))))) 
    = ( 
    len ( 
    Line (A,i))) by 
    FINSEQ_2: 72
    
          .= (
    len B) by 
    A1,
    MATRIX_0:def 7;
    
          then (
    len B) 
    = ( 
    len p) by 
    FVSUM_1:def 7;
    
          then
    
          
    
    A43: ( 
    dom ((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k)))))) 
    = ( 
    dom B) by 
    A42,
    FINSEQ_3: 29;
    
          then ((
    [#] (((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))),( 
    0. K))) 
    | ( 
    dom B)) 
    = ((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))) by 
    SETWOP_2: 21;
    
          then
    
          
    
    A44: (( 
    [#] (((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))),( 
    0. K))) 
    | ( 
    dom B)) 
    = ((( 
    curry f) 
    . k) 
    | ( 
    dom B)) by 
    A20;
    
          k
    in ( 
    Seg ( 
    width B)) by 
    A2,
    A40,
    FINSEQ_1:def 3;
    
          then
    
          
    
    A45: 
    [i, k]
    in ( 
    Indices (A 
    * B)) by 
    A14,
    A38,
    ZFMISC_1: 87;
    
          
    
          
    
    A46: k 
    in ( 
    Seg ( 
    width (A 
    * B))) by 
    A11,
    A40,
    FINSEQ_1:def 3;
    
          
    
          thus ((g
    | ( 
    dom C)) 
    . k9) 
    = (g 
    . k) by 
    A35,
    A40,
    FUNCT_1: 47
    
          .= (the
    addF of K 
    $$ (Y,(( 
    curry f) 
    . k))) by 
    A34
    
          .= (the
    addF of K 
    $$ (Y,( 
    [#] (((C 
    * (k,j)) 
    * ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k))))),( 
    0. K))))) by 
    A44,
    FVSUM_1: 8,
    SETWOP_2: 7
    
          .= (the
    addF of K 
    $$ (a 
    * p)) by 
    A10,
    A33,
    A43,
    SETWOP_2:def 2
    
          .= (
    Sum (a 
    * p)) by 
    FVSUM_1:def 8
    
          .= ((C
    * (k,j)) 
    * ( 
    Sum ( 
    mlt (( 
    Line (A,i)),( 
    Col (B,k)))))) by 
    FVSUM_1: 73
    
          .= ((C
    * (k,j)) 
    * (( 
    Line (A,i)) 
    "*" ( 
    Col (B,k)))) by 
    FVSUM_1:def 9
    
          .= (((A
    * B) 
    * (i,k)) 
    * (C 
    * (k,j))) by 
    A1,
    A45,
    Def4
    
          .= (the
    multF of K 
    . ((( 
    Line ((A 
    * B),i)) 
    . k),(C 
    * (k,j)))) by 
    A46,
    MATRIX_0:def 7
    
          .= (the
    multF of K 
    . ((( 
    Line ((A 
    * B),i)) 
    . k),(( 
    Col (C,j)) 
    . k))) by 
    A40,
    MATRIX_0:def 8
    
          .= ((the
    multF of K 
    .: (( 
    Line ((A 
    * B),i)),( 
    Col (C,j)))) 
    . k) by 
    A41,
    FUNCOP_1: 22
    
          .= ((
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j)))) 
    . k9) by 
    FVSUM_1:def 7;
    
        end;
    
        
    
        
    
    A47: ( 
    len (the 
    multF of K 
    .: (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) 
    = ( 
    len ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) by 
    FVSUM_1:def 7;
    
        then
    
        
    
    A48: ( 
    dom C) 
    = ( 
    dom ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) by 
    A36,
    FINSEQ_3: 29;
    
        (
    dom ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) 
    = ( 
    dom C) by 
    A36,
    A47,
    FINSEQ_3: 29;
    
        then
    
        
    
    A49: (( 
    [#] (( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j)))),( 
    0. K))) 
    | ( 
    dom C)) 
    = ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j)))) by 
    SETWOP_2: 21;
    
        (
    len ( 
    Col ((B 
    * C),j))) 
    = ( 
    len (B 
    * C)) by 
    MATRIX_0:def 8
    
        .= (
    width A) by 
    A1,
    A2,
    Def4
    
        .= (
    len ( 
    Line (A,i))) by 
    MATRIX_0:def 7;
    
        
    
        then
    
        
    
    A50: ( 
    len (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) 
    = ( 
    len ( 
    Line (A,i))) by 
    FINSEQ_2: 72
    
        .= (
    width A) by 
    MATRIX_0:def 7;
    
        
    
        
    
    A51: ( 
    len (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) 
    = ( 
    len ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) by 
    FVSUM_1:def 7;
    
        then
    
        
    
    A52: ( 
    dom ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) 
    = Y by 
    A1,
    A50,
    FINSEQ_3: 29;
    
        (
    dom ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) 
    = ( 
    dom B) by 
    A1,
    A50,
    A51,
    FINSEQ_3: 29;
    
        then
    
        
    
    A53: (( 
    [#] (( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j)))),( 
    0. K))) 
    | ( 
    dom B)) 
    = ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j)))) by 
    SETWOP_2: 21;
    
        consider h be
    sequence of the 
    carrier of K such that 
    
        
    
    A54: for k be 
    Element of 
    NAT holds (h 
    . k) 
    =  
    F9(k) from
    FUNCT_2:sch 4;
    
        
    
        
    
    A55: ( 
    dom (h 
    | ( 
    dom B))) 
    = (( 
    dom h) 
    /\ ( 
    dom B)) by 
    RELAT_1: 61
    
        .= (
    NAT  
    /\ ( 
    dom B)) by 
    FUNCT_2:def 1
    
        .= (
    dom B) by 
    XBOOLE_1: 28;
    
        
    
        
    
    A56: j 
    in ( 
    Seg ( 
    width C)) by 
    A17,
    A37,
    ZFMISC_1: 87;
    
        
    
    A57: 
    
        now
    
          let k9 be
    object;
    
          assume
    
          
    
    A58: k9 
    in ( 
    dom B); 
    
          then
    
          reconsider k = k9 as
    Element of 
    NAT ; 
    
          
    
          
    
    A59: k 
    in ( 
    Seg ( 
    width A)) by 
    A1,
    A58,
    FINSEQ_1:def 3;
    
          
    
          
    
    A60: k 
    in ( 
    dom (B 
    * C)) by 
    A1,
    A3,
    A58,
    FINSEQ_3: 29;
    
          
    
          
    
    A61: 
    [k, j]
    in ( 
    Indices (B 
    * C)) by 
    A6,
    A56,
    A58,
    ZFMISC_1: 87;
    
          reconsider p = (
    mlt (( 
    Line (B,k)),( 
    Col (C,j)))) as 
    FinSequence of K; 
    
          reconsider a = (A
    * (i,k)) as 
    Element of K; 
    
          
    
          
    
    A62: ( 
    len ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j))))) 
    = ( 
    len (the 
    multF of K 
    .: (( 
    Line (B,k)),( 
    Col (C,j))))) by 
    FVSUM_1:def 7;
    
          (
    dom f) 
    =  
    [:
    NAT , 
    NAT :] by 
    FUNCT_2:def 1;
    
          then
    
          
    
    A63: ex G be 
    Function st G 
    = (( 
    curry' f) 
    . k) & ( 
    dom G) 
    =  
    NAT & ( 
    rng G) 
    c= ( 
    rng f) & for x st x 
    in  
    NAT holds (G 
    . x) 
    = (f 
    . (x,k)) by 
    FUNCT_5: 32;
    
          
    
          then
    
          
    
    A64: ( 
    dom ((( 
    curry' f) 
    . k) 
    | ( 
    dom C))) 
    = ( 
    NAT  
    /\ ( 
    dom C)) by 
    RELAT_1: 61
    
          .= (
    dom C) by 
    XBOOLE_1: 28;
    
          
    
          
    
    A65: k 
    in ( 
    dom (the 
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) by 
    A1,
    A50,
    A58,
    FINSEQ_3: 29;
    
          (
    len ( 
    Line (B,k))) 
    = ( 
    len C) by 
    A2,
    MATRIX_0:def 7
    
          .= (
    len ( 
    Col (C,j))) by 
    MATRIX_0:def 8;
    
          
    
          then
    
          
    
    A66: ( 
    len (the 
    multF of K 
    .: (( 
    Line (B,k)),( 
    Col (C,j))))) 
    = ( 
    len ( 
    Line (B,k))) by 
    FINSEQ_2: 72
    
          .= (
    len C) by 
    A2,
    MATRIX_0:def 7;
    
          (
    dom (a 
    multfield )) 
    = the 
    carrier of K by 
    FUNCT_2:def 1;
    
          then (a
    * p) 
    = ((a 
    multfield ) 
    * p) & ( 
    rng p) 
    c= ( 
    dom (a 
    multfield )) by 
    FINSEQ_1:def 4,
    FVSUM_1:def 6;
    
          then
    
          
    
    A67: ( 
    dom (a 
    * p)) 
    = ( 
    dom p) by 
    RELAT_1: 27;
    
          then
    
          
    
    A68: ( 
    dom ((A 
    * (i,k)) 
    * ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j)))))) 
    = ( 
    dom C) by 
    A62,
    A66,
    FINSEQ_3: 29;
    
          
    
    A69: 
    
          now
    
            let l be
    object;
    
            assume
    
            
    
    A70: l 
    in ( 
    dom C); 
    
            then
    
            reconsider l9 = l as
    Element of 
    NAT ; 
    
            
    
            
    
    A71: l9 
    in ( 
    dom (the 
    multF of K 
    .: (( 
    Line (B,k)),( 
    Col (C,j))))) by 
    A66,
    A70,
    FINSEQ_3: 29;
    
            l9
    in ( 
    dom p) by 
    A62,
    A66,
    A70,
    FINSEQ_3: 29;
    
            then
    
            reconsider b = (p
    . l9) as 
    Element of K by 
    FINSEQ_2: 11;
    
            
    
            
    
    A72: l9 
    in ( 
    Seg ( 
    width B)) by 
    A2,
    A70,
    FINSEQ_1:def 3;
    
            
    
            
    
    A73: l 
    in ( 
    dom (a 
    * p)) by 
    A62,
    A66,
    A67,
    A70,
    FINSEQ_3: 29;
    
            
    
            thus ((((
    curry' f) 
    . k) 
    | ( 
    dom C)) 
    . l) 
    = ((( 
    curry' f) 
    . k) 
    . l9) by 
    A70,
    FUNCT_1: 49
    
            .= (f
    . (l9,k)) by 
    A63
    
            .= (((A
    * (i,k)) 
    * (B 
    * (k,l9))) 
    * (C 
    * (l9,j))) by 
    A19
    
            .= ((A
    * (i,k)) 
    * ((B 
    * (k,l9)) 
    * (C 
    * (l9,j)))) by 
    GROUP_1:def 3
    
            .= (the
    multF of K 
    . ((A 
    * (i,k)),(the 
    multF of K 
    . ((( 
    Line (B,k)) 
    . l9),(C 
    * (l9,j)))))) by 
    A72,
    MATRIX_0:def 7
    
            .= (the
    multF of K 
    . ((A 
    * (i,k)),(the 
    multF of K 
    . ((( 
    Line (B,k)) 
    . l9),(( 
    Col (C,j)) 
    . l9))))) by 
    A70,
    MATRIX_0:def 8
    
            .= (the
    multF of K 
    . ((A 
    * (i,k)),((the 
    multF of K 
    .: (( 
    Line (B,k)),( 
    Col (C,j)))) 
    . l9))) by 
    A71,
    FUNCOP_1: 22
    
            .= (a
    * b) by 
    FVSUM_1:def 7
    
            .= (((A
    * (i,k)) 
    * ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j))))) 
    . l) by 
    A73,
    FVSUM_1: 50;
    
          end;
    
          ((
    [#] (((A 
    * (i,k)) 
    * ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j))))),( 
    0. K))) 
    | ( 
    dom C)) 
    = ((A 
    * (i,k)) 
    * ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j))))) by 
    A68,
    SETWOP_2: 21;
    
          then
    
          
    
    A74: (( 
    [#] (((A 
    * (i,k)) 
    * ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j))))),( 
    0. K))) 
    | ( 
    dom C)) 
    = ((( 
    curry' f) 
    . k) 
    | ( 
    dom C)) by 
    A64,
    A68,
    A69,
    FUNCT_1: 2;
    
          
    
          thus ((h
    | ( 
    dom B)) 
    . k9) 
    = (h 
    . k) by 
    A55,
    A58,
    FUNCT_1: 47
    
          .= (the
    addF of K 
    $$ (X,(( 
    curry' f) 
    . k))) by 
    A54
    
          .= (the
    addF of K 
    $$ (X,( 
    [#] (((A 
    * (i,k)) 
    * ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j))))),( 
    0. K))))) by 
    A74,
    FVSUM_1: 8,
    SETWOP_2: 7
    
          .= (the
    addF of K 
    $$ (a 
    * p)) by 
    A10,
    A33,
    A68,
    SETWOP_2:def 2
    
          .= (
    Sum (a 
    * p)) by 
    FVSUM_1:def 8
    
          .= ((A
    * (i,k)) 
    * ( 
    Sum ( 
    mlt (( 
    Line (B,k)),( 
    Col (C,j)))))) by 
    FVSUM_1: 73
    
          .= ((A
    * (i,k)) 
    * (( 
    Line (B,k)) 
    "*" ( 
    Col (C,j)))) by 
    FVSUM_1:def 9
    
          .= ((A
    * (i,k)) 
    * ((B 
    * C) 
    * (k,j))) by 
    A2,
    A61,
    Def4
    
          .= (the
    multF of K 
    . ((( 
    Line (A,i)) 
    . k),((B 
    * C) 
    * (k,j)))) by 
    A59,
    MATRIX_0:def 7
    
          .= (the
    multF of K 
    . ((( 
    Line (A,i)) 
    . k),(( 
    Col ((B 
    * C),j)) 
    . k))) by 
    A60,
    MATRIX_0:def 8
    
          .= ((the
    multF of K 
    .: (( 
    Line (A,i)),( 
    Col ((B 
    * C),j)))) 
    . k) by 
    A65,
    FUNCOP_1: 22
    
          .= ((
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j)))) 
    . k9) by 
    FVSUM_1:def 7;
    
        end;
    
        (
    dom ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) 
    = ( 
    dom B) by 
    A1,
    A50,
    A51,
    FINSEQ_3: 29;
    
        then
    
        
    
    A75: (h 
    | ( 
    dom B)) 
    = ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j)))) by 
    A55,
    A57,
    FUNCT_1: 2;
    
        (
    dom ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) 
    = ( 
    dom C) by 
    A36,
    A47,
    FINSEQ_3: 29;
    
        then
    
        
    
    A76: (g 
    | ( 
    dom C)) 
    = ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j)))) by 
    A35,
    A39,
    FUNCT_1: 2;
    
        
    
        thus (((A
    * B) 
    * C) 
    * (i,j)) 
    = (( 
    Line ((A 
    * B),i)) 
    "*" ( 
    Col (C,j))) by 
    A11,
    A37,
    Def4
    
        .= (
    Sum ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) by 
    FVSUM_1:def 9
    
        .= (the
    addF of K 
    $$ ( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j))))) by 
    FVSUM_1:def 8
    
        .= (the
    addF of K 
    $$ (( 
    findom C),( 
    [#] (( 
    mlt (( 
    Line ((A 
    * B),i)),( 
    Col (C,j)))),( 
    0. K))))) by 
    A10,
    A33,
    A48,
    SETWOP_2:def 2
    
        .= (the
    addF of K 
    $$ (X,g)) by 
    A10,
    A49,
    A76,
    SETWOP_2: 7
    
        .= (the
    addF of K 
    $$ ( 
    [:X, Y:],f)) by
    A10,
    A34,
    Th30
    
        .= (the
    addF of K 
    $$ (Y,h)) by 
    A10,
    A54,
    Th32
    
        .= (the
    addF of K 
    $$ (( 
    findom ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))),( 
    [#] (( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j)))),( 
    the_unity_wrt the 
    addF of K))))) by 
    A10,
    A33,
    A53,
    A75,
    A52,
    SETWOP_2: 7
    
        .= (the
    addF of K 
    $$ ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) by 
    A10,
    SETWOP_2:def 2
    
        .= (
    Sum ( 
    mlt (( 
    Line (A,i)),( 
    Col ((B 
    * C),j))))) by 
    FVSUM_1:def 8
    
        .= ((
    Line (A,i)) 
    "*" ( 
    Col ((B 
    * C),j))) by 
    FVSUM_1:def 9
    
        .= ((A
    * (B 
    * C)) 
    * (i,j)) by 
    A3,
    A9,
    A18,
    A37,
    Def4;
    
      end;
    
      hence thesis by
    A8,
    A5,
    A15,
    A12,
    MATRIX_0: 21;
    
    end;
    
    begin
    
    definition
    
      let n, K;
    
      let M be
    Matrix of n, K; 
    
      let p be
    Element of ( 
    Permutations n); 
    
      :: 
    
    MATRIX_3:def7
    
      func
    
    Path_matrix (p,M) -> 
    FinSequence of K means 
    
      :
    
    Def7: ( 
    len it ) 
    = n & for i, j st i 
    in ( 
    dom it ) & j 
    = (p 
    . i) holds (it 
    . i) 
    = (M 
    * (i,j)); 
    
      existence
    
      proof
    
        defpred
    
    P[
    Nat, 
    set] means for j st j
    = (p 
    . $1) holds $2 
    = (M 
    * ($1,j)); 
    
        reconsider n1 = n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
        
    
        
    
    A1: for k be 
    Nat st k 
    in ( 
    Seg n1) holds ex x be 
    Element of K st 
    P[k, x]
    
        proof
    
          reconsider p as
    Function of ( 
    Seg n), ( 
    Seg n) by 
    MATRIX_1:def 12;
    
          let k be
    Nat;
    
          assume k
    in ( 
    Seg n1); 
    
          then (p
    . k) 
    in ( 
    Seg n) by 
    FUNCT_2: 5;
    
          then
    
          reconsider j = (p
    . k) as 
    Element of 
    NAT ; 
    
          reconsider x = (M
    * (k,j)) as 
    Element of K; 
    
          take x;
    
          thus thesis;
    
        end;
    
        consider t be
    FinSequence of K such that 
    
        
    
    A2: ( 
    dom t) 
    = ( 
    Seg n1) and 
    
        
    
    A3: for k be 
    Nat st k 
    in ( 
    Seg n1) holds 
    P[k, (t
    . k)] from 
    FINSEQ_1:sch 5(
    A1);
    
        take t;
    
        thus (
    len t) 
    = n by 
    A2,
    FINSEQ_1:def 3;
    
        let i, j;
    
        assume i
    in ( 
    dom t) & j 
    = (p 
    . i); 
    
        hence thesis by
    A2,
    A3;
    
      end;
    
      uniqueness
    
      proof
    
        for p1,p2 be
    FinSequence of K st (( 
    len p1) 
    = n & for i, j st i 
    in ( 
    dom p1) & j 
    = (p 
    . i) holds (p1 
    . i) 
    = (M 
    * (i,j))) & (( 
    len p2) 
    = n & for i, j st i 
    in ( 
    dom p2) & j 
    = (p 
    . i) holds (p2 
    . i) 
    = (M 
    * (i,j))) holds p1 
    = p2 
    
        proof
    
          let p1,p2 be
    FinSequence of K; 
    
          assume that
    
          
    
    A4: ( 
    len p1) 
    = n and 
    
          
    
    A5: for i, j st i 
    in ( 
    dom p1) & j 
    = (p 
    . i) holds (p1 
    . i) 
    = (M 
    * (i,j)) and 
    
          
    
    A6: ( 
    len p2) 
    = n and 
    
          
    
    A7: for i, j st i 
    in ( 
    dom p2) & j 
    = (p 
    . i) holds (p2 
    . i) 
    = (M 
    * (i,j)); 
    
          
    
          
    
    A8: ( 
    dom p2) 
    = ( 
    Seg n) by 
    A6,
    FINSEQ_1:def 3;
    
          
    
          
    
    A9: ( 
    dom p1) 
    = ( 
    Seg n) by 
    A4,
    FINSEQ_1:def 3;
    
          for i be
    Nat st i 
    in ( 
    Seg n) holds (p1 
    . i) 
    = (p2 
    . i) 
    
          proof
    
            reconsider p as
    Function of ( 
    Seg n), ( 
    Seg n) by 
    MATRIX_1:def 12;
    
            let i be
    Nat;
    
            assume
    
            
    
    A10: i 
    in ( 
    Seg n); 
    
            then (p
    . i) 
    in ( 
    Seg n) by 
    FUNCT_2: 5;
    
            then
    
            reconsider j = (p
    . i) as 
    Element of 
    NAT ; 
    
            (p1
    . i) 
    = (M 
    * (i,j)) by 
    A5,
    A9,
    A10;
    
            hence thesis by
    A7,
    A8,
    A10;
    
          end;
    
          hence thesis by
    A9,
    A8,
    FINSEQ_1: 13;
    
        end;
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      let n;
    
      let K be
    Ring;
    
      let M be
    Matrix of n, K; 
    
      :: 
    
    MATRIX_3:def8
    
      func
    
    Path_product (M) -> 
    Function of ( 
    Permutations n), the 
    carrier of K means 
    
      :
    
    Def8: for p be 
    Element of ( 
    Permutations n) holds (it 
    . p) 
    = ( 
    - ((the 
    multF of K 
    $$ ( 
    Path_matrix (p,M))),p)); 
    
      existence
    
      proof
    
        deffunc
    
    V(
    Element of ( 
    Permutations n)) = ( 
    - ((the 
    multF of K 
    $$ ( 
    Path_matrix ($1,M))),$1)); 
    
        consider f be
    Function of ( 
    Permutations n), the 
    carrier of K such that 
    
        
    
    A1: for p be 
    Element of ( 
    Permutations n) holds (f 
    . p) 
    =  
    V(p) from
    FUNCT_2:sch 4;
    
        take f;
    
        thus thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        let f1,f2 be
    Function of ( 
    Permutations n), the 
    carrier of K; 
    
        assume that
    
        
    
    A2: for p be 
    Element of ( 
    Permutations n) holds (f1 
    . p) 
    = ( 
    - ((the 
    multF of K 
    $$ ( 
    Path_matrix (p,M))),p)) and 
    
        
    
    A3: for p be 
    Element of ( 
    Permutations n) holds (f2 
    . p) 
    = ( 
    - ((the 
    multF of K 
    $$ ( 
    Path_matrix (p,M))),p)); 
    
        now
    
          let p be
    Element of ( 
    Permutations n); 
    
          (f1
    . p) 
    = ( 
    - ((the 
    multF of K 
    $$ ( 
    Path_matrix (p,M))),p)) by 
    A2;
    
          hence (f1
    . p) 
    = (f2 
    . p) by 
    A3;
    
        end;
    
        hence thesis by
    FUNCT_2: 63;
    
      end;
    
    end
    
    definition
    
      let n;
    
      let K be
    Ring;
    
      let M be
    Matrix of n, K; 
    
      :: 
    
    MATRIX_3:def9
    
      func
    
    Det M -> 
    Element of K equals (the 
    addF of K 
    $$ (( 
    In (( 
    Permutations n),( 
    Fin ( 
    Permutations n)))),( 
    Path_product M))); 
    
      coherence ;
    
    end
    
    reserve a for
    Element of K; 
    
    theorem :: 
    
    MATRIX_3:34
    
    for K be
    Ring, a be 
    Element of K holds ( 
    Det  
    <*
    <*a*>*>)
    = a 
    
    proof
    
      let K be
    Ring, a be 
    Element of K; 
    
      set M =
    <*
    <*a*>*>;
    
      
    
      
    
    A1: (( 
    Path_product M) 
    . ( 
    idseq 1)) 
    = a 
    
      proof
    
        reconsider p = (
    idseq 1) as 
    Element of ( 
    Permutations 1) by 
    MATRIX_1:def 12;
    
        
    
        
    
    A2: ( 
    - (a,p)) 
    = a 
    
        proof
    
          reconsider q = (
    id ( 
    Seg 1)) as 
    Element of ( 
    Permutations 1) by 
    MATRIX_1:def 12;
    
          (
    len ( 
    Permutations 1)) 
    = 1 by 
    MATRIX_1: 9;
    
          then q is
    even by 
    MATRIX_1: 16;
    
          hence thesis by
    MATRIX_1:def 16;
    
        end;
    
        
    
        
    
    A3: ( 
    len ( 
    Path_matrix (p,M))) 
    = 1 by 
    Def7;
    
        then
    
        
    
    A4: ( 
    dom ( 
    Path_matrix (p,M))) 
    = ( 
    Seg 1) by 
    FINSEQ_1:def 3;
    
        then
    
        
    
    A5: 1 
    in ( 
    dom ( 
    Path_matrix (p,M))) by 
    FINSEQ_1: 2,
    TARSKI:def 1;
    
        then 1
    = (p 
    . 1) by 
    A4,
    FUNCT_1: 18;
    
        then ((
    Path_matrix (p,M)) 
    . 1) 
    = (M 
    * (1,1)) by 
    A5,
    Def7;
    
        then ((
    Path_matrix (p,M)) 
    . 1) 
    = a by 
    MATRIX_0: 49;
    
        then
    
        
    
    A6: ( 
    Path_matrix (p,M)) 
    =  
    <*a*> by
    A3,
    FINSEQ_1: 40;
    
        ((
    Path_product M) 
    . p) 
    = ( 
    - ((the 
    multF of K 
    $$ ( 
    Path_matrix (p,M))),p)) & 
    <*a*>
    = (1 
    |-> a) by 
    Def8,
    FINSEQ_2: 59;
    
        hence thesis by
    A6,
    A2,
    FINSOP_1: 16;
    
      end;
    
      (
    Permutations 1) 
    in ( 
    Fin ( 
    Permutations 1)) by 
    FINSUB_1:def 5;
    
      then (
    In (( 
    Permutations 1),( 
    Fin ( 
    Permutations 1)))) 
    = ( 
    Permutations 1) by 
    SUBSET_1:def 8;
    
      then (
    In (( 
    Permutations 1),( 
    Fin ( 
    Permutations 1)))) 
    =  
    {(
    idseq 1)} & ( 
    idseq 1) 
    in ( 
    Permutations 1) by 
    MATRIX_1: 10,
    TARSKI:def 1;
    
      hence thesis by
    A1,
    SETWISEO: 17;
    
    end;
    
    definition
    
      let n;
    
      let K;
    
      let M be
    Matrix of n, K; 
    
      :: 
    
    MATRIX_3:def10
    
      func
    
    diagonal_of_Matrix M -> 
    FinSequence of K means ( 
    len it ) 
    = n & for i st i 
    in ( 
    Seg n) holds (it 
    . i) 
    = (M 
    * (i,i)); 
    
      existence
    
      proof
    
        reconsider n1 = n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
        deffunc
    
    V(
    Nat) = (M
    * ($1,$1)); 
    
        consider z be
    FinSequence of K such that 
    
        
    
    A1: ( 
    len z) 
    = n1 & for i be 
    Nat st i 
    in ( 
    dom z) holds (z 
    . i) 
    =  
    V(i) from
    FINSEQ_2:sch 1;
    
        take z;
    
        (
    dom z) 
    = ( 
    Seg n1) by 
    A1,
    FINSEQ_1:def 3;
    
        hence thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        let p1,p2 be
    FinSequence of K; 
    
        assume that
    
        
    
    A2: ( 
    len p1) 
    = n and 
    
        
    
    A3: for i st i 
    in ( 
    Seg n) holds (p1 
    . i) 
    = (M 
    * (i,i)) and 
    
        
    
    A4: ( 
    len p2) 
    = n and 
    
        
    
    A5: for i st i 
    in ( 
    Seg n) holds (p2 
    . i) 
    = (M 
    * (i,i)); 
    
        
    
    A6: 
    
        now
    
          let i be
    Nat;
    
          assume
    
          
    
    A7: i 
    in ( 
    Seg n); 
    
          then (p1
    . i) 
    = (M 
    * (i,i)) by 
    A3;
    
          hence (p1
    . i) 
    = (p2 
    . i) by 
    A5,
    A7;
    
        end;
    
        (
    dom p1) 
    = ( 
    Seg n) & ( 
    dom p2) 
    = ( 
    Seg n) by 
    A2,
    A4,
    FINSEQ_1:def 3;
    
        hence thesis by
    A6,
    FINSEQ_1: 13;
    
      end;
    
    end