normform.miz
    
    begin
    
    reserve A,B for non
    empty
    preBoolean  
    set, 
    
x,y for
    Element of 
    [:A, B:];
    
    definition
    
      let A, B, x, y;
    
      :: 
    
    NORMFORM:def1
    
      pred x
    
    c= y means (x 
    `1 ) 
    c= (y 
    `1 ) & (x 
    `2 ) 
    c= (y 
    `2 ); 
    
      reflexivity ;
    
      :: 
    
    NORMFORM:def2
    
      func x
    
    \/ y -> 
    Element of 
    [:A, B:] equals
    [((x
    `1 ) 
    \/ (y 
    `1 )), ((x 
    `2 ) 
    \/ (y 
    `2 ))]; 
    
      correctness ;
    
      commutativity ;
    
      idempotence by
    MCART_1: 21;
    
      :: 
    
    NORMFORM:def3
    
      func x
    
    /\ y -> 
    Element of 
    [:A, B:] equals
    [((x
    `1 ) 
    /\ (y 
    `1 )), ((x 
    `2 ) 
    /\ (y 
    `2 ))]; 
    
      correctness ;
    
      commutativity ;
    
      idempotence by
    MCART_1: 21;
    
      :: 
    
    NORMFORM:def4
    
      func x
    
    \ y -> 
    Element of 
    [:A, B:] equals
    [((x
    `1 ) 
    \ (y 
    `1 )), ((x 
    `2 ) 
    \ (y 
    `2 ))]; 
    
      correctness ;
    
      :: 
    
    NORMFORM:def5
    
      func x
    
    \+\ y -> 
    Element of 
    [:A, B:] equals
    [((x
    `1 ) 
    \+\ (y 
    `1 )), ((x 
    `2 ) 
    \+\ (y 
    `2 ))]; 
    
      correctness ;
    
      commutativity ;
    
    end
    
    reserve X for
    set, 
    
a,b,c for
    Element of 
    [:A, B:];
    
    theorem :: 
    
    NORMFORM:1
    
    
    
    
    
    Th1: a 
    c= b & b 
    c= a implies a 
    = b 
    
    proof
    
      assume (a
    `1 ) 
    c= (b 
    `1 ) & (a 
    `2 ) 
    c= (b 
    `2 ) & (b 
    `1 ) 
    c= (a 
    `1 ) & (b 
    `2 ) 
    c= (a 
    `2 ); 
    
      then (a
    `1 ) 
    = (b 
    `1 ) & (a 
    `2 ) 
    = (b 
    `2 ); 
    
      hence thesis by
    DOMAIN_1: 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:2
    
    
    
    
    
    Th2: a 
    c= b & b 
    c= c implies a 
    c= c 
    
    proof
    
      assume (a
    `1 ) 
    c= (b 
    `1 ) & (a 
    `2 ) 
    c= (b 
    `2 ) & (b 
    `1 ) 
    c= (c 
    `1 ) & (b 
    `2 ) 
    c= (c 
    `2 ); 
    
      hence (a
    `1 ) 
    c= (c 
    `1 ) & (a 
    `2 ) 
    c= (c 
    `2 ); 
    
    end;
    
    theorem :: 
    
    NORMFORM:3
    
    
    
    
    
    Th3: ((a 
    \/ b) 
    \/ c) 
    = (a 
    \/ (b 
    \/ c)) 
    
    proof
    
      
    
      
    
    A1: (((a 
    \/ b) 
    \/ c) 
    `2 ) 
    = (((a 
    \/ b) 
    `2 ) 
    \/ (c 
    `2 )) 
    
      .= (((a
    `2 ) 
    \/ (b 
    `2 )) 
    \/ (c 
    `2 )) 
    
      .= ((a
    `2 ) 
    \/ ((b 
    `2 ) 
    \/ (c 
    `2 ))) by 
    XBOOLE_1: 4
    
      .= ((a
    `2 ) 
    \/ ((b 
    \/ c) 
    `2 )) 
    
      .= ((a
    \/ (b 
    \/ c)) 
    `2 ); 
    
      (((a
    \/ b) 
    \/ c) 
    `1 ) 
    = (((a 
    \/ b) 
    `1 ) 
    \/ (c 
    `1 )) 
    
      .= (((a
    `1 ) 
    \/ (b 
    `1 )) 
    \/ (c 
    `1 )) 
    
      .= ((a
    `1 ) 
    \/ ((b 
    `1 ) 
    \/ (c 
    `1 ))) by 
    XBOOLE_1: 4
    
      .= ((a
    `1 ) 
    \/ ((b 
    \/ c) 
    `1 )) 
    
      .= ((a
    \/ (b 
    \/ c)) 
    `1 ); 
    
      hence thesis by
    A1,
    DOMAIN_1: 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:4
    
    ((a
    /\ b) 
    /\ c) 
    = (a 
    /\ (b 
    /\ c)) 
    
    proof
    
      
    
      
    
    A1: (((a 
    /\ b) 
    /\ c) 
    `2 ) 
    = (((a 
    /\ b) 
    `2 ) 
    /\ (c 
    `2 )) 
    
      .= (((a
    `2 ) 
    /\ (b 
    `2 )) 
    /\ (c 
    `2 )) 
    
      .= ((a
    `2 ) 
    /\ ((b 
    `2 ) 
    /\ (c 
    `2 ))) by 
    XBOOLE_1: 16
    
      .= ((a
    `2 ) 
    /\ ((b 
    /\ c) 
    `2 )) 
    
      .= ((a
    /\ (b 
    /\ c)) 
    `2 ); 
    
      (((a
    /\ b) 
    /\ c) 
    `1 ) 
    = (((a 
    /\ b) 
    `1 ) 
    /\ (c 
    `1 )) 
    
      .= (((a
    `1 ) 
    /\ (b 
    `1 )) 
    /\ (c 
    `1 )) 
    
      .= ((a
    `1 ) 
    /\ ((b 
    `1 ) 
    /\ (c 
    `1 ))) by 
    XBOOLE_1: 16
    
      .= ((a
    `1 ) 
    /\ ((b 
    /\ c) 
    `1 )) 
    
      .= ((a
    /\ (b 
    /\ c)) 
    `1 ); 
    
      hence thesis by
    A1,
    DOMAIN_1: 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:5
    
    
    
    
    
    Th5: (a 
    /\ (b 
    \/ c)) 
    = ((a 
    /\ b) 
    \/ (a 
    /\ c)) 
    
    proof
    
      
    
      
    
    A1: ((a 
    /\ (b 
    \/ c)) 
    `2 ) 
    = ((a 
    `2 ) 
    /\ ((b 
    \/ c) 
    `2 )) 
    
      .= ((a
    `2 ) 
    /\ ((b 
    `2 ) 
    \/ (c 
    `2 ))) 
    
      .= (((a
    `2 ) 
    /\ (b 
    `2 )) 
    \/ ((a 
    `2 ) 
    /\ (c 
    `2 ))) by 
    XBOOLE_1: 23
    
      .= (((a
    `2 ) 
    /\ (b 
    `2 )) 
    \/ ((a 
    /\ c) 
    `2 )) 
    
      .= (((a
    /\ b) 
    `2 ) 
    \/ ((a 
    /\ c) 
    `2 )) 
    
      .= (((a
    /\ b) 
    \/ (a 
    /\ c)) 
    `2 ); 
    
      ((a
    /\ (b 
    \/ c)) 
    `1 ) 
    = ((a 
    `1 ) 
    /\ ((b 
    \/ c) 
    `1 )) 
    
      .= ((a
    `1 ) 
    /\ ((b 
    `1 ) 
    \/ (c 
    `1 ))) 
    
      .= (((a
    `1 ) 
    /\ (b 
    `1 )) 
    \/ ((a 
    `1 ) 
    /\ (c 
    `1 ))) by 
    XBOOLE_1: 23
    
      .= (((a
    `1 ) 
    /\ (b 
    `1 )) 
    \/ ((a 
    /\ c) 
    `1 )) 
    
      .= (((a
    /\ b) 
    `1 ) 
    \/ ((a 
    /\ c) 
    `1 )) 
    
      .= (((a
    /\ b) 
    \/ (a 
    /\ c)) 
    `1 ); 
    
      hence thesis by
    A1,
    DOMAIN_1: 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:6
    
    
    
    
    
    Th6: (a 
    \/ (b 
    /\ a)) 
    = a 
    
    proof
    
      
    
      
    
    A1: ((a 
    \/ (b 
    /\ a)) 
    `2 ) 
    = ((a 
    `2 ) 
    \/ ((b 
    /\ a) 
    `2 )) 
    
      .= ((a
    `2 ) 
    \/ ((b 
    `2 ) 
    /\ (a 
    `2 ))) 
    
      .= (a
    `2 ) by 
    XBOOLE_1: 22;
    
      ((a
    \/ (b 
    /\ a)) 
    `1 ) 
    = ((a 
    `1 ) 
    \/ ((b 
    /\ a) 
    `1 )) 
    
      .= ((a
    `1 ) 
    \/ ((b 
    `1 ) 
    /\ (a 
    `1 ))) 
    
      .= (a
    `1 ) by 
    XBOOLE_1: 22;
    
      hence thesis by
    A1,
    DOMAIN_1: 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:7
    
    
    
    
    
    Th7: (a 
    /\ (b 
    \/ a)) 
    = a 
    
    proof
    
      
    
      thus (a
    /\ (b 
    \/ a)) 
    = ((a 
    /\ b) 
    \/ (a 
    /\ a)) by 
    Th5
    
      .= a by
    Th6;
    
    end;
    
    theorem :: 
    
    NORMFORM:8
    
    (a
    \/ (b 
    /\ c)) 
    = ((a 
    \/ b) 
    /\ (a 
    \/ c)) 
    
    proof
    
      
    
      thus (a
    \/ (b 
    /\ c)) 
    = ((a 
    \/ (c 
    /\ a)) 
    \/ (c 
    /\ b)) by 
    Th6
    
      .= (a
    \/ ((c 
    /\ a) 
    \/ (c 
    /\ b))) by 
    Th3
    
      .= (a
    \/ (c 
    /\ (a 
    \/ b))) by 
    Th5
    
      .= (((a
    \/ b) 
    /\ a) 
    \/ ((a 
    \/ b) 
    /\ c)) by 
    Th7
    
      .= ((a
    \/ b) 
    /\ (a 
    \/ c)) by 
    Th5;
    
    end;
    
    theorem :: 
    
    NORMFORM:9
    
    
    
    
    
    Th9: a 
    c= c & b 
    c= c implies (a 
    \/ b) 
    c= c by 
    XBOOLE_1: 8;
    
    theorem :: 
    
    NORMFORM:10
    
    
    
    
    
    Th10: a 
    c= (a 
    \/ b) & b 
    c= (a 
    \/ b) by 
    XBOOLE_1: 7;
    
    theorem :: 
    
    NORMFORM:11
    
    a
    = (a 
    \/ b) implies b 
    c= a by 
    Th10;
    
    theorem :: 
    
    NORMFORM:12
    
    
    
    
    
    Th12: a 
    c= b implies (c 
    \/ a) 
    c= (c 
    \/ b) & (a 
    \/ c) 
    c= (b 
    \/ c) by 
    XBOOLE_1: 9;
    
    theorem :: 
    
    NORMFORM:13
    
    ((a
    \ b) 
    \/ b) 
    = (a 
    \/ b) 
    
    proof
    
      (((a
    `1 ) 
    \ (b 
    `1 )) 
    \/ (b 
    `1 )) 
    = ((a 
    `1 ) 
    \/ (b 
    `1 )) & (((a 
    `2 ) 
    \ (b 
    `2 )) 
    \/ (b 
    `2 )) 
    = ((a 
    `2 ) 
    \/ (b 
    `2 )) by 
    XBOOLE_1: 39;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    NORMFORM:14
    
    (a
    \ b) 
    c= c implies a 
    c= (b 
    \/ c) by 
    XBOOLE_1: 44;
    
    theorem :: 
    
    NORMFORM:15
    
    a
    c= (b 
    \/ c) implies (a 
    \ c) 
    c= b by 
    XBOOLE_1: 43;
    
    reserve a for
    Element of 
    [:(
    Fin X), ( 
    Fin X):]; 
    
    definition
    
      let A be
    set;
    
      :: 
    
    NORMFORM:def6
    
      func
    
    FinPairUnion A -> 
    BinOp of 
    [:(
    Fin A), ( 
    Fin A):] means 
    
      :
    
    Def6: for x,y be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] holds (it 
    . (x,y)) 
    = (x 
    \/ y); 
    
      existence
    
      proof
    
        deffunc
    
    O(
    Element of 
    [:(
    Fin A), ( 
    Fin A):], 
    Element of 
    [:(
    Fin A), ( 
    Fin A):]) = ($1 
    \/ $2); 
    
        ex IT be
    BinOp of 
    [:(
    Fin A), ( 
    Fin A):] st for x,y be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] holds (IT 
    . (x,y)) 
    =  
    O(x,y) from
    BINOP_1:sch 4;
    
        hence thesis;
    
      end;
    
      uniqueness
    
      proof
    
        let IT,IT9 be
    BinOp of 
    [:(
    Fin A), ( 
    Fin A):] such that 
    
        
    
    A1: for x,y be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] holds (IT 
    . (x,y)) 
    = (x 
    \/ y) and 
    
        
    
    A2: for x,y be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] holds (IT9 
    . (x,y)) 
    = (x 
    \/ y); 
    
        now
    
          let x,y be
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
          
    
          thus (IT
    . (x,y)) 
    = (x 
    \/ y) by 
    A1
    
          .= (IT9
    . (x,y)) by 
    A2;
    
        end;
    
        hence IT
    = IT9; 
    
      end;
    
    end
    
    reserve A for
    set;
    
    definition
    
      let X be non
    empty  
    set, A be 
    set;
    
      let B be
    Element of ( 
    Fin X); 
    
      let f be
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      :: 
    
    NORMFORM:def7
    
      func
    
    FinPairUnion (B,f) -> 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] equals (( 
    FinPairUnion A) 
    $$ (B,f)); 
    
      correctness ;
    
    end
    
    
    
    
    
    Lm1: ( 
    FinPairUnion A) is 
    idempotent
    
    proof
    
      let a be
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      
    
      thus ((
    FinPairUnion A) 
    . (a,a)) 
    = (a 
    \/ a) by 
    Def6
    
      .= a;
    
    end;
    
    
    
    
    
    Lm2: ( 
    FinPairUnion A) is 
    commutative
    
    proof
    
      let a,b be
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      
    
      thus ((
    FinPairUnion A) 
    . (a,b)) 
    = (b 
    \/ a) by 
    Def6
    
      .= ((
    FinPairUnion A) 
    . (b,a)) by 
    Def6;
    
    end;
    
    
    
    
    
    Lm3: ( 
    FinPairUnion A) is 
    associative
    
    proof
    
      let a,b,c be
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      
    
      thus ((
    FinPairUnion A) 
    . (a,(( 
    FinPairUnion A) 
    . (b,c)))) 
    = (a 
    \/ (( 
    FinPairUnion A) 
    . (b,c))) by 
    Def6
    
      .= (a
    \/ (b 
    \/ c)) by 
    Def6
    
      .= ((a
    \/ b) 
    \/ c) by 
    Th3
    
      .= (((
    FinPairUnion A) 
    . (a,b)) 
    \/ c) by 
    Def6
    
      .= ((
    FinPairUnion A) 
    . ((( 
    FinPairUnion A) 
    . (a,b)),c)) by 
    Def6;
    
    end;
    
    registration
    
      let A be
    set;
    
      cluster ( 
    FinPairUnion A) -> 
    commutative
    idempotent
    associative;
    
      coherence by
    Lm1,
    Lm2,
    Lm3;
    
    end
    
    theorem :: 
    
    NORMFORM:16
    
    for X be non
    empty  
    set holds for f be 
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):] holds for B be 
    Element of ( 
    Fin X) holds for x be 
    Element of X st x 
    in B holds (f 
    . x) 
    c= ( 
    FinPairUnion (B,f)) 
    
    proof
    
      let X be non
    empty  
    set, f be 
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      let B be
    Element of ( 
    Fin X), x be 
    Element of X; 
    
      assume
    
      
    
    A1: x 
    in B; 
    
      
    
      then ((
    FinPairUnion A) 
    $$ (B,f)) 
    = (( 
    FinPairUnion A) 
    $$ ((B 
    \/  
    {.x.}),f)) by
    ZFMISC_1: 40
    
      .= ((
    FinPairUnion A) 
    . ((( 
    FinPairUnion A) 
    $$ (B,f)),(f 
    . x))) by 
    A1,
    SETWISEO: 20
    
      .= (((
    FinPairUnion A) 
    $$ (B,f)) 
    \/ (f 
    . x)) by 
    Def6;
    
      hence thesis by
    Th10;
    
    end;
    
    theorem :: 
    
    NORMFORM:17
    
    
    
    
    
    Th17: 
    [(
    {}. A), ( 
    {}. A)] 
    is_a_unity_wrt ( 
    FinPairUnion A) 
    
    proof
    
      now
    
        let x be
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
        
    
        thus ((
    FinPairUnion A) 
    . ( 
    [(
    {}. A), ( 
    {}. A)],x)) 
    = ( 
    [(
    {}. A), ( 
    {}. A)] 
    \/ x) by 
    Def6
    
        .= x by
    MCART_1: 21;
    
      end;
    
      hence thesis by
    BINOP_1: 4;
    
    end;
    
    theorem :: 
    
    NORMFORM:18
    
    
    
    
    
    Th18: ( 
    FinPairUnion A) is 
    having_a_unity
    
    proof
    
      
    [(
    {}. A), ( 
    {}. A)] 
    is_a_unity_wrt ( 
    FinPairUnion A) by 
    Th17;
    
      hence thesis by
    SETWISEO:def 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:19
    
    
    
    
    
    Th19: ( 
    the_unity_wrt ( 
    FinPairUnion A)) 
    =  
    [(
    {}. A), ( 
    {}. A)] 
    
    proof
    
      
    [(
    {}. A), ( 
    {}. A)] 
    is_a_unity_wrt ( 
    FinPairUnion A) by 
    Th17;
    
      hence thesis by
    BINOP_1:def 8;
    
    end;
    
    theorem :: 
    
    NORMFORM:20
    
    
    
    
    
    Th20: for x be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] holds ( 
    the_unity_wrt ( 
    FinPairUnion A)) 
    c= x 
    
    proof
    
      let x be
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      
    [(
    {}. A), ( 
    {}. A)] 
    is_a_unity_wrt ( 
    FinPairUnion A) by 
    Th17;
    
      then (
    the_unity_wrt ( 
    FinPairUnion A)) 
    =  
    [
    {} , 
    {} ] by 
    BINOP_1:def 8;
    
      then ((
    the_unity_wrt ( 
    FinPairUnion A)) 
    `1 ) 
    =  
    {} & (( 
    the_unity_wrt ( 
    FinPairUnion A)) 
    `2 ) 
    =  
    {} ; 
    
      hence ((
    the_unity_wrt ( 
    FinPairUnion A)) 
    `1 ) 
    c= (x 
    `1 ) & (( 
    the_unity_wrt ( 
    FinPairUnion A)) 
    `2 ) 
    c= (x 
    `2 ); 
    
    end;
    
    theorem :: 
    
    NORMFORM:21
    
    for X be non
    empty  
    set holds for f be 
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):], B be 
    Element of ( 
    Fin X) holds for c be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):] st for x be 
    Element of X st x 
    in B holds (f 
    . x) 
    c= c holds ( 
    FinPairUnion (B,f)) 
    c= c 
    
    proof
    
      let X be non
    empty  
    set, f be 
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      let B be
    Element of ( 
    Fin X), c be 
    Element of 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      defpred
    
    P[
    Element of ( 
    Fin X)] means $1 
    c= B implies (( 
    FinPairUnion A) 
    $$ ($1,f)) 
    c= c; 
    
      assume
    
      
    
    A1: for x be 
    Element of X st x 
    in B holds (f 
    . x) 
    c= c; 
    
      
    
    A2: 
    
      now
    
        let C be
    Element of ( 
    Fin X), b be 
    Element of X; 
    
        assume
    
        
    
    A3: 
    P[C];
    
        now
    
          assume
    
          
    
    A4: (C 
    \/  
    {b})
    c= B; 
    
          then
    {b}
    c= B by 
    XBOOLE_1: 11;
    
          then b
    in B by 
    ZFMISC_1: 31;
    
          then
    
          
    
    A5: (f 
    . b) 
    c= c by 
    A1;
    
          ((
    FinPairUnion A) 
    $$ ((C 
    \/  
    {.b.}),f))
    = (( 
    FinPairUnion A) 
    . ((( 
    FinPairUnion A) 
    $$ (C,f)),(f 
    . b))) by 
    Th18,
    SETWISEO: 32
    
          .= (((
    FinPairUnion A) 
    $$ (C,f)) 
    \/ (f 
    . b)) by 
    Def6;
    
          hence ((
    FinPairUnion A) 
    $$ ((C 
    \/  
    {.b.}),f))
    c= c by 
    A3,
    A4,
    A5,
    Th9,
    XBOOLE_1: 11;
    
        end;
    
        hence
    P[(C
    \/  
    {.b.})];
    
      end;
    
      
    
      
    
    A6: 
    P[(
    {}. X)] 
    
      proof
    
        assume (
    {}. X) 
    c= B; 
    
        ((
    FinPairUnion A) 
    $$ (( 
    {}. X),f)) 
    = ( 
    the_unity_wrt ( 
    FinPairUnion A)) by 
    Th18,
    SETWISEO: 31;
    
        hence thesis by
    Th20;
    
      end;
    
      for C be
    Element of ( 
    Fin X) holds 
    P[C] from
    SETWISEO:sch 4(
    A6,
    A2);
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    NORMFORM:22
    
    for X be non
    empty  
    set, B be 
    Element of ( 
    Fin X) holds for f,g be 
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):] st (f 
    | B) 
    = (g 
    | B) holds ( 
    FinPairUnion (B,f)) 
    = ( 
    FinPairUnion (B,g)) 
    
    proof
    
      let X be non
    empty  
    set, B be 
    Element of ( 
    Fin X); 
    
      let f,g be
    Function of X, 
    [:(
    Fin A), ( 
    Fin A):]; 
    
      set J = (
    FinPairUnion A); 
    
      
    
      
    
    A1: 
    [(
    {}. A), ( 
    {}. A)] 
    = ( 
    the_unity_wrt J) by 
    Th19;
    
      assume
    
      
    
    A2: (f 
    | B) 
    = (g 
    | B); 
    
      now
    
        per cases ;
    
          suppose
    
          
    
    A3: B 
    =  
    {} ; 
    
          
    
          hence (
    FinPairUnion (B,f)) 
    = (J 
    $$ (( 
    {}. X),f)) 
    
          .=
    [(
    {}. A), ( 
    {}. A)] by 
    A1,
    Th18,
    SETWISEO: 31
    
          .= (J
    $$ (( 
    {}. X),g)) by 
    A1,
    Th18,
    SETWISEO: 31
    
          .= (
    FinPairUnion (B,g)) by 
    A3;
    
        end;
    
          suppose
    
          
    
    A4: B 
    <>  
    {} ; 
    
          (f
    .: B) 
    = (g 
    .: B) by 
    A2,
    RELAT_1: 166;
    
          hence thesis by
    A4,
    SETWISEO: 26;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    definition
    
      let X;
    
      :: 
    
    NORMFORM:def8
    
      func
    
    DISJOINT_PAIRS (X) -> 
    Subset of 
    [:(
    Fin X), ( 
    Fin X):] equals { a : (a 
    `1 ) 
    misses (a 
    `2 ) }; 
    
      coherence
    
      proof
    
        set D = { a : (a
    `1 ) 
    misses (a 
    `2 ) }; 
    
        D
    c=  
    [:(
    Fin X), ( 
    Fin X):] 
    
        proof
    
          let x be
    object;
    
          assume x
    in D; 
    
          then ex a st x
    = a & (a 
    `1 ) 
    misses (a 
    `2 ); 
    
          hence thesis;
    
        end;
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let X;
    
      cluster ( 
    DISJOINT_PAIRS X) -> non 
    empty;
    
      coherence
    
      proof
    
        
    {} is 
    Element of ( 
    Fin X) by 
    FINSUB_1: 7;
    
        then
    
        reconsider b =
    [
    {} , 
    {} ] as 
    Element of 
    [:(
    Fin X), ( 
    Fin X):] by 
    ZFMISC_1:def 2;
    
        (b
    `1 ) 
    misses (b 
    `2 ); 
    
        then b
    in { a : (a 
    `1 ) 
    misses (a 
    `2 ) }; 
    
        hence thesis;
    
      end;
    
    end
    
    theorem :: 
    
    NORMFORM:23
    
    
    
    
    
    Th23: for y be 
    Element of 
    [:(
    Fin X), ( 
    Fin X):] holds y 
    in ( 
    DISJOINT_PAIRS X) iff (y 
    `1 ) 
    misses (y 
    `2 ) 
    
    proof
    
      let y be
    Element of 
    [:(
    Fin X), ( 
    Fin X):]; 
    
      y
    in ( 
    DISJOINT_PAIRS X) iff ex a st y 
    = a & (a 
    `1 ) 
    misses (a 
    `2 ); 
    
      hence thesis;
    
    end;
    
    reserve x,y for
    Element of 
    [:(
    Fin X), ( 
    Fin X):], 
    
a,b for
    Element of ( 
    DISJOINT_PAIRS X); 
    
    theorem :: 
    
    NORMFORM:24
    
    y
    in ( 
    DISJOINT_PAIRS X) & x 
    in ( 
    DISJOINT_PAIRS X) implies ((y 
    \/ x) 
    in ( 
    DISJOINT_PAIRS X) iff (((y 
    `1 ) 
    /\ (x 
    `2 )) 
    \/ ((x 
    `1 ) 
    /\ (y 
    `2 ))) 
    =  
    {} ) 
    
    proof
    
      assume that
    
      
    
    A1: y 
    in ( 
    DISJOINT_PAIRS X) and 
    
      
    
    A2: x 
    in ( 
    DISJOINT_PAIRS X); 
    
      
    
      
    
    A3: (((y 
    `1 ) 
    \/ (x 
    `1 )) 
    /\ ((y 
    `2 ) 
    \/ (x 
    `2 ))) 
    = ((((y 
    `1 ) 
    \/ (x 
    `1 )) 
    /\ (y 
    `2 )) 
    \/ (((y 
    `1 ) 
    \/ (x 
    `1 )) 
    /\ (x 
    `2 ))) & (((y 
    `1 ) 
    \/ (x 
    `1 )) 
    /\ (y 
    `2 )) 
    = (((y 
    `1 ) 
    /\ (y 
    `2 )) 
    \/ ((x 
    `1 ) 
    /\ (y 
    `2 ))) by 
    XBOOLE_1: 23;
    
      (x
    `1 ) 
    misses (x 
    `2 ) by 
    A2,
    Th23;
    
      then
    
      
    
    A4: ((x 
    `1 ) 
    /\ (x 
    `2 )) 
    =  
    {} ; 
    
      (y
    `1 ) 
    misses (y 
    `2 ) by 
    A1,
    Th23;
    
      then
    
      
    
    A5: ((y 
    `1 ) 
    /\ (y 
    `2 )) 
    =  
    {} ; 
    
      
    
      
    
    A6: (((y 
    `1 ) 
    \/ (x 
    `1 )) 
    /\ (x 
    `2 )) 
    = (((y 
    `1 ) 
    /\ (x 
    `2 )) 
    \/ ((x 
    `1 ) 
    /\ (x 
    `2 ))) by 
    XBOOLE_1: 23;
    
      
    
      
    
    A7: ((y 
    \/ x) 
    `1 ) 
    = ((y 
    `1 ) 
    \/ (x 
    `1 )) & ((y 
    \/ x) 
    `2 ) 
    = ((y 
    `2 ) 
    \/ (x 
    `2 )); 
    
      thus (y
    \/ x) 
    in ( 
    DISJOINT_PAIRS X) implies (((y 
    `1 ) 
    /\ (x 
    `2 )) 
    \/ ((x 
    `1 ) 
    /\ (y 
    `2 ))) 
    =  
    {} by 
    A5,
    A4,
    A7,
    A3,
    A6,
    XBOOLE_0:def 7,
    Th23;
    
      assume (((y
    `1 ) 
    /\ (x 
    `2 )) 
    \/ ((x 
    `1 ) 
    /\ (y 
    `2 ))) 
    =  
    {} ; 
    
      then ((y
    \/ x) 
    `1 ) 
    misses ((y 
    \/ x) 
    `2 ) by 
    A5,
    A4,
    A3,
    A6;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    NORMFORM:25
    
    (a
    `1 ) 
    misses (a 
    `2 ) by 
    Th23;
    
    theorem :: 
    
    NORMFORM:26
    
    
    
    
    
    Th26: x 
    c= b implies x is 
    Element of ( 
    DISJOINT_PAIRS X) 
    
    proof
    
      assume
    
      
    
    A1: (x 
    `1 ) 
    c= (b 
    `1 ) & (x 
    `2 ) 
    c= (b 
    `2 ); 
    
      (b
    `1 ) 
    misses (b 
    `2 ) by 
    Th23;
    
      then (x
    `1 ) 
    misses (x 
    `2 ) by 
    A1,
    XBOOLE_1: 64;
    
      hence thesis by
    Th23;
    
    end;
    
    theorem :: 
    
    NORMFORM:27
    
    
    
    
    
    Th27: not (ex x be 
    set st x 
    in (a 
    `1 ) & x 
    in (a 
    `2 )) by 
    Th23,
    XBOOLE_0: 3;
    
    theorem :: 
    
    NORMFORM:28
    
     not (a
    \/ b) 
    in ( 
    DISJOINT_PAIRS X) implies ex p be 
    Element of X st p 
    in (a 
    `1 ) & p 
    in (b 
    `2 ) or p 
    in (b 
    `1 ) & p 
    in (a 
    `2 ) 
    
    proof
    
      set p = the
    Element of (((a 
    \/ b) 
    `1 ) 
    /\ ((a 
    \/ b) 
    `2 )); 
    
      assume not (a
    \/ b) 
    in ( 
    DISJOINT_PAIRS X); 
    
      then ((a
    \/ b) 
    `1 ) 
    meets ((a 
    \/ b) 
    `2 ); 
    
      then
    
      
    
    A1: (((a 
    \/ b) 
    `1 ) 
    /\ ((a 
    \/ b) 
    `2 )) 
    <>  
    {} ; 
    
      (((a
    \/ b) 
    `1 ) 
    /\ ((a 
    \/ b) 
    `2 )) is 
    Subset of X by 
    FINSUB_1: 16;
    
      then
    
      reconsider p as
    Element of X by 
    A1,
    TARSKI:def 3;
    
      p
    in ((a 
    \/ b) 
    `2 ) by 
    A1,
    XBOOLE_0:def 4;
    
      then p
    in ((a 
    `2 ) 
    \/ (b 
    `2 )); 
    
      then
    
      
    
    A2: p 
    in (b 
    `2 ) or p 
    in (a 
    `2 ) by 
    XBOOLE_0:def 3;
    
      take p;
    
      p
    in ((a 
    \/ b) 
    `1 ) by 
    A1,
    XBOOLE_0:def 4;
    
      then p
    in ((a 
    `1 ) 
    \/ (b 
    `1 )); 
    
      then p
    in (a 
    `1 ) or p 
    in (b 
    `1 ) by 
    XBOOLE_0:def 3;
    
      hence thesis by
    A2,
    Th27;
    
    end;
    
    theorem :: 
    
    NORMFORM:29
    
    (x
    `1 ) 
    misses (x 
    `2 ) implies x is 
    Element of ( 
    DISJOINT_PAIRS X) by 
    Th23;
    
    theorem :: 
    
    NORMFORM:30
    
    for V,W be
    set st V 
    c= (a 
    `1 ) & W 
    c= (a 
    `2 ) holds 
    [V, W] is
    Element of ( 
    DISJOINT_PAIRS X) 
    
    proof
    
      let V,W be
    set;
    
      assume
    
      
    
    A1: V 
    c= (a 
    `1 ) & W 
    c= (a 
    `2 ); 
    
      then V is
    Element of ( 
    Fin X) & W is 
    Element of ( 
    Fin X) by 
    SETWISEO: 11;
    
      then
    
      reconsider x =
    [V, W] as
    Element of 
    [:(
    Fin X), ( 
    Fin X):] by 
    ZFMISC_1:def 2;
    
      (a
    `1 ) 
    misses (a 
    `2 ) & ( 
    [V, W]
    `1 ) 
    = V by 
    Th23;
    
      then (x
    `1 ) 
    misses (x 
    `2 ) by 
    A1,
    XBOOLE_1: 64;
    
      hence thesis by
    Th23;
    
    end;
    
    reserve A for
    set, 
    
x for
    Element of 
    [:(
    Fin A), ( 
    Fin A):], 
    
a,b,c,d,s,t for
    Element of ( 
    DISJOINT_PAIRS A), 
    
B,C,D for
    Element of ( 
    Fin ( 
    DISJOINT_PAIRS A)); 
    
    
    
    
    
    Lm4: for A holds 
    {}  
    in { B : a 
    in B & b 
    in B & a 
    c= b implies a 
    = b } 
    
    proof
    
      let A;
    
      
    {} is 
    Element of ( 
    Fin ( 
    DISJOINT_PAIRS A)) & for a, b holds a 
    in  
    {} & b 
    in  
    {} & a 
    c= b implies a 
    = b by 
    FINSUB_1: 7;
    
      hence thesis;
    
    end;
    
    definition
    
      let A;
    
      :: 
    
    NORMFORM:def9
    
      func
    
    Normal_forms_on A -> 
    Subset of ( 
    Fin ( 
    DISJOINT_PAIRS A)) equals { B : a 
    in B & b 
    in B & a 
    c= b implies a 
    = b }; 
    
      coherence
    
      proof
    
        set IT = { B : a
    in B & b 
    in B & a 
    c= b implies a 
    = b }; 
    
        IT
    c= ( 
    Fin ( 
    DISJOINT_PAIRS A)) 
    
        proof
    
          let x be
    object;
    
          assume x
    in IT; 
    
          then ex B st x
    = B & for a, b holds a 
    in B & b 
    in B & a 
    c= b implies a 
    = b; 
    
          hence thesis;
    
        end;
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let A;
    
      cluster ( 
    Normal_forms_on A) -> non 
    empty;
    
      coherence by
    Lm4;
    
    end
    
    reserve K,L,M for
    Element of ( 
    Normal_forms_on A); 
    
    theorem :: 
    
    NORMFORM:31
    
    
    {}  
    in ( 
    Normal_forms_on A) by 
    Lm4;
    
    theorem :: 
    
    NORMFORM:32
    
    
    
    
    
    Th32: B 
    in ( 
    Normal_forms_on A) & a 
    in B & b 
    in B & a 
    c= b implies a 
    = b 
    
    proof
    
      assume B
    in ( 
    Normal_forms_on A); 
    
      then ex C st B
    = C & for a, b holds a 
    in C & b 
    in C & a 
    c= b implies a 
    = b; 
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    NORMFORM:33
    
    
    
    
    
    Th33: (for a, b st a 
    in B & b 
    in B & a 
    c= b holds a 
    = b) implies B 
    in ( 
    Normal_forms_on A); 
    
    definition
    
      let A, B;
    
      :: 
    
    NORMFORM:def10
    
      func
    
    mi B -> 
    Element of ( 
    Normal_forms_on A) equals { t : s 
    in B & s 
    c= t iff s 
    = t }; 
    
      coherence
    
      proof
    
        set M = { t : s
    in B & s 
    c= t iff s 
    = t }; 
    
        now
    
          let x be
    object;
    
          assume x
    in M; 
    
          then ex t st x
    = t & for s holds s 
    in B & s 
    c= t iff s 
    = t; 
    
          hence x
    in B; 
    
        end;
    
        then
    
        
    
    A1: M 
    c= B; 
    
        then
    
        
    
    A2: M is 
    finite by 
    FINSET_1: 1;
    
        B
    c= ( 
    DISJOINT_PAIRS A) by 
    FINSUB_1:def 5;
    
        then M
    c= ( 
    DISJOINT_PAIRS A) by 
    A1;
    
        then
    
        reconsider M9 = M as
    Element of ( 
    Fin ( 
    DISJOINT_PAIRS A)) by 
    A2,
    FINSUB_1:def 5;
    
        now
    
          let c,d be
    Element of ( 
    DISJOINT_PAIRS A); 
    
          assume c
    in M; 
    
          then ex t st c
    = t & for s holds s 
    in B & s 
    c= t iff s 
    = t; 
    
          then
    
          
    
    A3: c 
    in B; 
    
          assume d
    in M; 
    
          then ex t st d
    = t & for s holds s 
    in B & s 
    c= t iff s 
    = t; 
    
          hence c
    c= d implies c 
    = d by 
    A3;
    
        end;
    
        then M9 is
    Element of ( 
    Normal_forms_on A) by 
    Th33;
    
        hence thesis;
    
      end;
    
      correctness ;
    
      let C;
    
      :: 
    
    NORMFORM:def11
    
      func B
    
    ^ C -> 
    Element of ( 
    Fin ( 
    DISJOINT_PAIRS A)) equals (( 
    DISJOINT_PAIRS A) 
    /\ { (s 
    \/ t) : s 
    in B & t 
    in C }); 
    
      coherence
    
      proof
    
        deffunc
    
    F(
    Element of ( 
    DISJOINT_PAIRS A), 
    Element of ( 
    DISJOINT_PAIRS A)) = ($1 
    \/ $2); 
    
        set M = ((
    DISJOINT_PAIRS A) 
    /\ { 
    F(s,t) : s
    in B & t 
    in C }); 
    
        
    
        
    
    A4: C is 
    finite;
    
        
    
        
    
    A5: B is 
    finite;
    
        {
    F(s,t) : s
    in B & t 
    in C } is 
    finite from 
    FRAENKEL:sch 22(
    A5,
    A4);
    
        then M
    c= ( 
    DISJOINT_PAIRS A) & M is 
    finite by 
    FINSET_1: 1,
    XBOOLE_1: 17;
    
        hence thesis by
    FINSUB_1:def 5;
    
      end;
    
      correctness ;
    
    end
    
    theorem :: 
    
    NORMFORM:34
    
    
    
    
    
    Th34: x 
    in (B 
    ^ C) implies ex b, c st b 
    in B & c 
    in C & x 
    = (b 
    \/ c) 
    
    proof
    
      assume x
    in (B 
    ^ C); 
    
      then x
    in { (s 
    \/ t) : s 
    in B & t 
    in C } by 
    XBOOLE_0:def 4;
    
      then ex s, t st x
    = (s 
    \/ t) & s 
    in B & t 
    in C; 
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    NORMFORM:35
    
    
    
    
    
    Th35: b 
    in B & c 
    in C & (b 
    \/ c) 
    in ( 
    DISJOINT_PAIRS A) implies (b 
    \/ c) 
    in (B 
    ^ C) 
    
    proof
    
      assume b
    in B & c 
    in C; 
    
      then
    
      
    
    A1: (b 
    \/ c) 
    in { (s 
    \/ t) : s 
    in B & t 
    in C }; 
    
      assume (b
    \/ c) 
    in ( 
    DISJOINT_PAIRS A); 
    
      hence thesis by
    A1,
    XBOOLE_0:def 4;
    
    end;
    
    theorem :: 
    
    NORMFORM:36
    
    
    
    
    
    Th36: a 
    in ( 
    mi B) implies a 
    in B & (b 
    in B & b 
    c= a implies b 
    = a) 
    
    proof
    
      assume a
    in ( 
    mi B); 
    
      then ex t st a
    = t & for s holds s 
    in B & s 
    c= t iff s 
    = t; 
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    NORMFORM:37
    
    a
    in ( 
    mi B) implies a 
    in B by 
    Th36;
    
    theorem :: 
    
    NORMFORM:38
    
    a
    in ( 
    mi B) & b 
    in B & b 
    c= a implies b 
    = a by 
    Th36;
    
    theorem :: 
    
    NORMFORM:39
    
    
    
    
    
    Th39: a 
    in B & (for b st b 
    in B & b 
    c= a holds b 
    = a) implies a 
    in ( 
    mi B) 
    
    proof
    
      assume a
    in B & for s st s 
    in B & s 
    c= a holds s 
    = a; 
    
      then s
    in B & s 
    c= a iff s 
    = a; 
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm5: (for a holds a 
    in B implies a 
    in C) implies B 
    c= C 
    
    proof
    
      assume
    
      
    
    A1: for a holds a 
    in B implies a 
    in C; 
    
      let x be
    object;
    
      assume
    
      
    
    A2: x 
    in B; 
    
      then x is
    Element of ( 
    DISJOINT_PAIRS A) by 
    SETWISEO: 9;
    
      hence thesis by
    A1,
    A2;
    
    end;
    
    theorem :: 
    
    NORMFORM:40
    
    
    
    
    
    Th40: ( 
    mi B) 
    c= B 
    
    proof
    
      for a holds a
    in ( 
    mi B) implies a 
    in B by 
    Th36;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:41
    
    
    
    
    
    Th41: b 
    in B implies ex c st c 
    c= b & c 
    in ( 
    mi B) 
    
    proof
    
      assume
    
      
    
    A1: b 
    in B; 
    
      defpred
    
    P[
    Element of ( 
    DISJOINT_PAIRS A), 
    Element of ( 
    DISJOINT_PAIRS A)] means $1 
    c= $2; 
    
      
    
      
    
    A2: for a holds 
    P[a, a];
    
      
    
      
    
    A3: for a, b, c st 
    P[a, b] &
    P[b, c] holds
    P[a, c] by
    Th2;
    
      for a st a
    in B holds ex b st b 
    in B & 
    P[b, a] & for c st c
    in B & 
    P[c, b] holds
    P[b, c] from
    FRAENKEL:sch 23(
    A2,
    A3);
    
      then
    
      consider c such that
    
      
    
    A4: c 
    in B and 
    
      
    
    A5: c 
    c= b and 
    
      
    
    A6: for a st a 
    in B & a 
    c= c holds c 
    c= a by 
    A1;
    
      take c;
    
      thus c
    c= b by 
    A5;
    
      now
    
        let b;
    
        assume that
    
        
    
    A7: b 
    in B and 
    
        
    
    A8: b 
    c= c; 
    
        c
    c= b by 
    A6,
    A7,
    A8;
    
        hence b
    = c by 
    A8,
    Th1;
    
      end;
    
      hence thesis by
    A4,
    Th39;
    
    end;
    
    theorem :: 
    
    NORMFORM:42
    
    
    
    
    
    Th42: ( 
    mi K) 
    = K 
    
    proof
    
      thus (
    mi K) 
    c= K by 
    Th40;
    
      now
    
        let a;
    
        assume
    
        
    
    A1: a 
    in K; 
    
        then for b st b
    in K & b 
    c= a holds b 
    = a by 
    Th32;
    
        hence a
    in ( 
    mi K) by 
    A1,
    Th39;
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:43
    
    
    
    
    
    Th43: ( 
    mi (B 
    \/ C)) 
    c= (( 
    mi B) 
    \/ C) 
    
    proof
    
      now
    
        let a;
    
        assume
    
        
    
    A1: a 
    in ( 
    mi (B 
    \/ C)); 
    
        then
    
        
    
    A2: a 
    in (B 
    \/ C) by 
    Th36;
    
        now
    
          per cases by
    A2,
    XBOOLE_0:def 3;
    
            suppose
    
            
    
    A3: a 
    in B; 
    
            now
    
              let b;
    
              assume b
    in B; 
    
              then b
    in (B 
    \/ C) by 
    XBOOLE_0:def 3;
    
              hence b
    c= a implies b 
    = a by 
    A1,
    Th36;
    
            end;
    
            then a
    in ( 
    mi B) by 
    A3,
    Th39;
    
            hence a
    in (( 
    mi B) 
    \/ C) by 
    XBOOLE_0:def 3;
    
          end;
    
            suppose a
    in C; 
    
            hence a
    in (( 
    mi B) 
    \/ C) by 
    XBOOLE_0:def 3;
    
          end;
    
        end;
    
        hence a
    in (( 
    mi B) 
    \/ C); 
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:44
    
    
    
    
    
    Th44: ( 
    mi (( 
    mi B) 
    \/ C)) 
    = ( 
    mi (B 
    \/ C)) 
    
    proof
    
      
    
      
    
    A1: (( 
    mi B) 
    \/ C) 
    c= (B 
    \/ C) by 
    Th40,
    XBOOLE_1: 9;
    
      now
    
        let a;
    
        assume
    
        
    
    A2: a 
    in ( 
    mi (( 
    mi B) 
    \/ C)); 
    
        
    
    A3: 
    
        now
    
          let b;
    
          assume that
    
          
    
    A4: b 
    in (B 
    \/ C) and 
    
          
    
    A5: b 
    c= a; 
    
          now
    
            per cases by
    A4,
    XBOOLE_0:def 3;
    
              suppose b
    in B; 
    
              then
    
              consider c such that
    
              
    
    A6: c 
    c= b and 
    
              
    
    A7: c 
    in ( 
    mi B) by 
    Th41;
    
              c
    in (( 
    mi B) 
    \/ C) & c 
    c= a by 
    A5,
    A6,
    A7,
    Th2,
    XBOOLE_0:def 3;
    
              then c
    = a by 
    A2,
    Th36;
    
              hence b
    = a by 
    A5,
    A6,
    Th1;
    
            end;
    
              suppose b
    in C; 
    
              then b
    in (( 
    mi B) 
    \/ C) by 
    XBOOLE_0:def 3;
    
              hence b
    = a by 
    A2,
    A5,
    Th36;
    
            end;
    
          end;
    
          hence b
    = a; 
    
        end;
    
        a
    in (( 
    mi B) 
    \/ C) by 
    A2,
    Th36;
    
        hence a
    in ( 
    mi (B 
    \/ C)) by 
    A1,
    A3,
    Th39;
    
      end;
    
      hence (
    mi (( 
    mi B) 
    \/ C)) 
    c= ( 
    mi (B 
    \/ C)) by 
    Lm5;
    
      
    
      
    
    A8: ( 
    mi (B 
    \/ C)) 
    c= (( 
    mi B) 
    \/ C) by 
    Th43;
    
      now
    
        let a;
    
        assume
    
        
    
    A9: a 
    in ( 
    mi (B 
    \/ C)); 
    
        then for b st b
    in (( 
    mi B) 
    \/ C) holds b 
    c= a implies b 
    = a by 
    A1,
    Th36;
    
        hence a
    in ( 
    mi (( 
    mi B) 
    \/ C)) by 
    A8,
    A9,
    Th39;
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:45
    
    (
    mi (B 
    \/ ( 
    mi C))) 
    = ( 
    mi (B 
    \/ C)) by 
    Th44;
    
    theorem :: 
    
    NORMFORM:46
    
    
    
    
    
    Th46: B 
    c= C implies (B 
    ^ D) 
    c= (C 
    ^ D) 
    
    proof
    
      deffunc
    
    F(
    Element of ( 
    DISJOINT_PAIRS A), 
    Element of ( 
    DISJOINT_PAIRS A)) = ($1 
    \/ $2); 
    
      defpred
    
    P[
    set, 
    set] means $1
    in B & $2 
    in D; 
    
      defpred
    
    Q[
    set, 
    set] means $1
    in C & $2 
    in D; 
    
      set X1 = {
    F(s,t) :
    P[s, t] };
    
      set X2 = {
    F(s,t) :
    Q[s, t] };
    
      assume B
    c= C; 
    
      then
    
      
    
    A1: 
    P[s, t] implies
    Q[s, t];
    
      X1
    c= X2 from 
    FRAENKEL:sch 2(
    A1);
    
      hence thesis by
    XBOOLE_1: 26;
    
    end;
    
    
    
    
    
    Lm6: a 
    in (B 
    ^ C) implies ex b st b 
    c= a & b 
    in (( 
    mi B) 
    ^ C) 
    
    proof
    
      assume a
    in (B 
    ^ C); 
    
      then
    
      consider b, c such that
    
      
    
    A1: b 
    in B and 
    
      
    
    A2: c 
    in C and 
    
      
    
    A3: a 
    = (b 
    \/ c) by 
    Th34;
    
      consider d such that
    
      
    
    A4: d 
    c= b and 
    
      
    
    A5: d 
    in ( 
    mi B) by 
    A1,
    Th41;
    
      (d
    \/ c) 
    c= a by 
    A3,
    A4,
    Th12;
    
      then
    
      reconsider e = (d
    \/ c) as 
    Element of ( 
    DISJOINT_PAIRS A) by 
    Th26;
    
      take e;
    
      thus e
    c= a by 
    A3,
    A4,
    Th12;
    
      thus thesis by
    A2,
    A5,
    Th35;
    
    end;
    
    theorem :: 
    
    NORMFORM:47
    
    
    
    
    
    Th47: ( 
    mi (B 
    ^ C)) 
    c= (( 
    mi B) 
    ^ C) 
    
    proof
    
      
    
      
    
    A1: (( 
    mi B) 
    ^ C) 
    c= (B 
    ^ C) by 
    Th40,
    Th46;
    
      now
    
        let a;
    
        assume
    
        
    
    A2: a 
    in ( 
    mi (B 
    ^ C)); 
    
        then a
    in (B 
    ^ C) by 
    Th36;
    
        then ex b st b
    c= a & b 
    in (( 
    mi B) 
    ^ C) by 
    Lm6;
    
        hence a
    in (( 
    mi B) 
    ^ C) by 
    A1,
    A2,
    Th36;
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:48
    
    
    
    
    
    Th48: (B 
    ^ C) 
    = (C 
    ^ B) 
    
    proof
    
      deffunc
    
    F(
    Element of ( 
    DISJOINT_PAIRS A), 
    Element of ( 
    DISJOINT_PAIRS A)) = ($1 
    \/ $2); 
    
      defpred
    
    P[
    set, 
    set] means $1
    in B & $2 
    in C; 
    
      defpred
    
    Q[
    set, 
    set] means $2
    in C & $1 
    in B; 
    
      set X1 = {
    F(s,t) where s,t be
    Element of ( 
    DISJOINT_PAIRS A) : 
    P[s, t] };
    
      set X2 = {
    F(t,s) where s,t be
    Element of ( 
    DISJOINT_PAIRS A) : 
    Q[s, t] };
    
      
    
      
    
    A1: 
    F(s,t)
    =  
    F(t,s);
    
      
    
    A2: 
    
      now
    
        let x be
    object;
    
        x
    in X2 iff ex s, t st x 
    = (t 
    \/ s) & t 
    in C & s 
    in B; 
    
        then x
    in X2 iff ex t, s st x 
    = (t 
    \/ s) & t 
    in C & s 
    in B; 
    
        hence x
    in X2 iff x 
    in { (t 
    \/ s) where t, s : t 
    in C & s 
    in B }; 
    
      end;
    
      
    
      
    
    A3: 
    P[s, t] iff
    Q[s, t];
    
      X1
    = X2 from 
    FRAENKEL:sch 8(
    A3,
    A1);
    
      hence thesis by
    A2,
    TARSKI: 2;
    
    end;
    
    theorem :: 
    
    NORMFORM:49
    
    
    
    
    
    Th49: B 
    c= C implies (D 
    ^ B) 
    c= (D 
    ^ C) 
    
    proof
    
      (D
    ^ C) 
    = (C 
    ^ D) & (D 
    ^ B) 
    = (B 
    ^ D) by 
    Th48;
    
      hence thesis by
    Th46;
    
    end;
    
    theorem :: 
    
    NORMFORM:50
    
    
    
    
    
    Th50: ( 
    mi (( 
    mi B) 
    ^ C)) 
    = ( 
    mi (B 
    ^ C)) 
    
    proof
    
      
    
      
    
    A1: (( 
    mi B) 
    ^ C) 
    c= (B 
    ^ C) by 
    Th40,
    Th46;
    
      now
    
        let a;
    
        assume
    
        
    
    A2: a 
    in ( 
    mi (( 
    mi B) 
    ^ C)); 
    
        
    
    A3: 
    
        now
    
          let b;
    
          assume b
    in (B 
    ^ C); 
    
          then
    
          consider c such that
    
          
    
    A4: c 
    c= b and 
    
          
    
    A5: c 
    in (( 
    mi B) 
    ^ C) by 
    Lm6;
    
          assume
    
          
    
    A6: b 
    c= a; 
    
          then c
    c= a by 
    A4,
    Th2;
    
          then c
    = a by 
    A2,
    A5,
    Th36;
    
          hence b
    = a by 
    A4,
    A6,
    Th1;
    
        end;
    
        a
    in (( 
    mi B) 
    ^ C) by 
    A2,
    Th36;
    
        hence a
    in ( 
    mi (B 
    ^ C)) by 
    A1,
    A3,
    Th39;
    
      end;
    
      hence (
    mi (( 
    mi B) 
    ^ C)) 
    c= ( 
    mi (B 
    ^ C)) by 
    Lm5;
    
      
    
      
    
    A7: ( 
    mi (B 
    ^ C)) 
    c= (( 
    mi B) 
    ^ C) by 
    Th47;
    
      now
    
        let a;
    
        assume
    
        
    
    A8: a 
    in ( 
    mi (B 
    ^ C)); 
    
        then for b st b
    in (( 
    mi B) 
    ^ C) holds b 
    c= a implies b 
    = a by 
    A1,
    Th36;
    
        hence a
    in ( 
    mi (( 
    mi B) 
    ^ C)) by 
    A7,
    A8,
    Th39;
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:51
    
    
    
    
    
    Th51: ( 
    mi (B 
    ^ ( 
    mi C))) 
    = ( 
    mi (B 
    ^ C)) 
    
    proof
    
      (B
    ^ ( 
    mi C)) 
    = (( 
    mi C) 
    ^ B) & (B 
    ^ C) 
    = (C 
    ^ B) by 
    Th48;
    
      hence thesis by
    Th50;
    
    end;
    
    theorem :: 
    
    NORMFORM:52
    
    
    
    
    
    Th52: (K 
    ^ (L 
    ^ M)) 
    = ((K 
    ^ L) 
    ^ M) 
    
    proof
    
      
    
      
    
    A1: (L 
    ^ M) 
    = (M 
    ^ L) & (K 
    ^ L) 
    = (L 
    ^ K) by 
    Th48;
    
      
    
    A2: 
    
      now
    
        let K, L, M;
    
        now
    
          let a;
    
          assume a
    in (K 
    ^ (L 
    ^ M)); 
    
          then
    
          consider b, c such that
    
          
    
    A3: b 
    in K and 
    
          
    
    A4: c 
    in (L 
    ^ M) and 
    
          
    
    A5: a 
    = (b 
    \/ c) by 
    Th34;
    
          consider b1,c1 be
    Element of ( 
    DISJOINT_PAIRS A) such that 
    
          
    
    A6: b1 
    in L and 
    
          
    
    A7: c1 
    in M and 
    
          
    
    A8: c 
    = (b1 
    \/ c1) by 
    A4,
    Th34;
    
          reconsider d = (b
    \/ (b1 
    \/ c1)) as 
    Element of ( 
    DISJOINT_PAIRS A) by 
    A5,
    A8;
    
          
    
          
    
    A9: (b 
    \/ (b1 
    \/ c1)) 
    = ((b 
    \/ b1) 
    \/ c1) by 
    Th3;
    
          then (b
    \/ b1) 
    c= d by 
    Th10;
    
          then
    
          reconsider c2 = (b
    \/ b1) as 
    Element of ( 
    DISJOINT_PAIRS A) by 
    Th26;
    
          c2
    in (K 
    ^ L) by 
    A3,
    A6,
    Th35;
    
          hence a
    in ((K 
    ^ L) 
    ^ M) by 
    A5,
    A7,
    A8,
    A9,
    Th35;
    
        end;
    
        hence (K
    ^ (L 
    ^ M)) 
    c= ((K 
    ^ L) 
    ^ M) by 
    Lm5;
    
      end;
    
      then
    
      
    
    A10: (K 
    ^ (L 
    ^ M)) 
    c= ((K 
    ^ L) 
    ^ M); 
    
      ((K
    ^ L) 
    ^ M) 
    = (M 
    ^ (K 
    ^ L)) & (K 
    ^ (L 
    ^ M)) 
    = ((L 
    ^ M) 
    ^ K) by 
    Th48;
    
      then ((K
    ^ L) 
    ^ M) 
    c= (K 
    ^ (L 
    ^ M)) by 
    A1,
    A2;
    
      hence thesis by
    A10;
    
    end;
    
    theorem :: 
    
    NORMFORM:53
    
    
    
    
    
    Th53: (K 
    ^ (L 
    \/ M)) 
    = ((K 
    ^ L) 
    \/ (K 
    ^ M)) 
    
    proof
    
      now
    
        let a;
    
        assume a
    in (K 
    ^ (L 
    \/ M)); 
    
        then
    
        consider b, c such that
    
        
    
    A1: b 
    in K and 
    
        
    
    A2: c 
    in (L 
    \/ M) and 
    
        
    
    A3: a 
    = (b 
    \/ c) by 
    Th34;
    
        c
    in L or c 
    in M by 
    A2,
    XBOOLE_0:def 3;
    
        then a
    in (K 
    ^ L) or a 
    in (K 
    ^ M) by 
    A1,
    A3,
    Th35;
    
        hence a
    in ((K 
    ^ L) 
    \/ (K 
    ^ M)) by 
    XBOOLE_0:def 3;
    
      end;
    
      hence (K
    ^ (L 
    \/ M)) 
    c= ((K 
    ^ L) 
    \/ (K 
    ^ M)) by 
    Lm5;
    
      (K
    ^ L) 
    c= (K 
    ^ (L 
    \/ M)) & (K 
    ^ M) 
    c= (K 
    ^ (L 
    \/ M)) by 
    Th49,
    XBOOLE_1: 7;
    
      hence thesis by
    XBOOLE_1: 8;
    
    end;
    
    
    
    
    
    Lm7: a 
    in (B 
    ^ C) implies ex c st c 
    in C & c 
    c= a 
    
    proof
    
      assume a
    in (B 
    ^ C); 
    
      then
    
      consider b, c such that b
    in B and 
    
      
    
    A1: c 
    in C and 
    
      
    
    A2: a 
    = (b 
    \/ c) by 
    Th34;
    
      take c;
    
      thus c
    in C by 
    A1;
    
      thus thesis by
    A2,
    Th10;
    
    end;
    
    
    
    
    
    Lm8: ( 
    mi ((K 
    ^ L) 
    \/ L)) 
    = ( 
    mi L) 
    
    proof
    
      now
    
        let a;
    
        assume
    
        
    
    A1: a 
    in ( 
    mi ((K 
    ^ L) 
    \/ L)); 
    
        
    
    A2: 
    
        now
    
          let b;
    
          assume b
    in L; 
    
          then b
    in ((K 
    ^ L) 
    \/ L) by 
    XBOOLE_0:def 3;
    
          hence b
    c= a implies b 
    = a by 
    A1,
    Th36;
    
        end;
    
        
    
    A3: 
    
        now
    
          assume a
    in (K 
    ^ L); 
    
          then
    
          consider b such that
    
          
    
    A4: b 
    in L and 
    
          
    
    A5: b 
    c= a by 
    Lm7;
    
          b
    in ((K 
    ^ L) 
    \/ L) by 
    A4,
    XBOOLE_0:def 3;
    
          hence a
    in L by 
    A1,
    A4,
    A5,
    Th36;
    
        end;
    
        a
    in ((K 
    ^ L) 
    \/ L) by 
    A1,
    Th36;
    
        then a
    in (K 
    ^ L) or a 
    in L by 
    XBOOLE_0:def 3;
    
        hence a
    in ( 
    mi L) by 
    A3,
    A2,
    Th39;
    
      end;
    
      hence (
    mi ((K 
    ^ L) 
    \/ L)) 
    c= ( 
    mi L) by 
    Lm5;
    
      now
    
        let a;
    
        assume
    
        
    
    A6: a 
    in ( 
    mi L); 
    
        then
    
        
    
    A7: a 
    in L by 
    Th36;
    
        
    
    A8: 
    
        now
    
          let b;
    
          assume b
    in ((K 
    ^ L) 
    \/ L); 
    
          then
    
          
    
    A9: b 
    in (K 
    ^ L) or b 
    in L by 
    XBOOLE_0:def 3;
    
          assume
    
          
    
    A10: b 
    c= a; 
    
          now
    
            assume b
    in (K 
    ^ L); 
    
            then
    
            consider c such that
    
            
    
    A11: c 
    in L and 
    
            
    
    A12: c 
    c= b by 
    Lm7;
    
            c
    c= a by 
    A10,
    A12,
    Th2;
    
            then c
    = a by 
    A6,
    A11,
    Th36;
    
            hence b
    in L by 
    A7,
    A10,
    A12,
    Th1;
    
          end;
    
          hence b
    = a by 
    A6,
    A9,
    A10,
    Th36;
    
        end;
    
        a
    in ((K 
    ^ L) 
    \/ L) by 
    A7,
    XBOOLE_0:def 3;
    
        hence a
    in ( 
    mi ((K 
    ^ L) 
    \/ L)) by 
    A8,
    Th39;
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:54
    
    
    
    
    
    Th54: B 
    c= (B 
    ^ B) 
    
    proof
    
      now
    
        let a;
    
        a
    = (a 
    \/ a); 
    
        hence a
    in B implies a 
    in (B 
    ^ B) by 
    Th35;
    
      end;
    
      hence thesis by
    Lm5;
    
    end;
    
    theorem :: 
    
    NORMFORM:55
    
    
    
    
    
    Th55: ( 
    mi (K 
    ^ K)) 
    = ( 
    mi K) 
    
    proof
    
      
    
      thus (
    mi (K 
    ^ K)) 
    = ( 
    mi ((K 
    ^ K) 
    \/ K)) by 
    Th54,
    XBOOLE_1: 12
    
      .= (
    mi K) by 
    Lm8;
    
    end;
    
    definition
    
      let A;
    
      :: 
    
    NORMFORM:def12
    
      func
    
    NormForm A -> 
    strict  
    LattStr means 
    
      :
    
    Def12: the 
    carrier of it 
    = ( 
    Normal_forms_on A) & for B,C be 
    Element of ( 
    Normal_forms_on A) holds (the 
    L_join of it 
    . (B,C)) 
    = ( 
    mi (B 
    \/ C)) & (the 
    L_meet of it 
    . (B,C)) 
    = ( 
    mi (B 
    ^ C)); 
    
      existence
    
      proof
    
        set L = (
    Normal_forms_on A); 
    
        deffunc
    
    O(
    Element of L, 
    Element of L) = ( 
    mi ($1 
    \/ $2)); 
    
        consider j be
    BinOp of L such that 
    
        
    
    A1: for x,y be 
    Element of L holds (j 
    . (x,y)) 
    =  
    O(x,y) from
    BINOP_1:sch 4;
    
        deffunc
    
    O1(
    Element of L, 
    Element of L) = ( 
    mi ($1 
    ^ $2)); 
    
        consider m be
    BinOp of L such that 
    
        
    
    A2: for x,y be 
    Element of L holds (m 
    . (x,y)) 
    =  
    O1(x,y) from
    BINOP_1:sch 4;
    
        take
    LattStr (# L, j, m #); 
    
        thus thesis by
    A1,
    A2;
    
      end;
    
      uniqueness
    
      proof
    
        set L = (
    Normal_forms_on A); 
    
        let A1,A2 be
    strict  
    LattStr such that 
    
        
    
    A3: the 
    carrier of A1 
    = L and 
    
        
    
    A4: for A,B be 
    Element of L holds (the 
    L_join of A1 
    . (A,B)) 
    = ( 
    mi (A 
    \/ B)) & (the 
    L_meet of A1 
    . (A,B)) 
    = ( 
    mi (A 
    ^ B)) and 
    
        
    
    A5: the 
    carrier of A2 
    = L and 
    
        
    
    A6: for A,B be 
    Element of L holds (the 
    L_join of A2 
    . (A,B)) 
    = ( 
    mi (A 
    \/ B)) & (the 
    L_meet of A2 
    . (A,B)) 
    = ( 
    mi (A 
    ^ B)); 
    
        reconsider a3 = the
    L_meet of A1, a4 = the 
    L_meet of A2, a1 = the 
    L_join of A1, a2 = the 
    L_join of A2 as 
    BinOp of L by 
    A3,
    A5;
    
        now
    
          let x,y be
    Element of L; 
    
          
    
          thus (a1
    . (x,y)) 
    = ( 
    mi (x 
    \/ y)) by 
    A4
    
          .= (a2
    . (x,y)) by 
    A6;
    
        end;
    
        then
    
        
    
    A7: a1 
    = a2; 
    
        now
    
          let x,y be
    Element of L; 
    
          
    
          thus (a3
    . (x,y)) 
    = ( 
    mi (x 
    ^ y)) by 
    A4
    
          .= (a4
    . (x,y)) by 
    A6;
    
        end;
    
        hence thesis by
    A3,
    A5,
    A7,
    BINOP_1: 2;
    
      end;
    
    end
    
    registration
    
      let A;
    
      cluster ( 
    NormForm A) -> non 
    empty;
    
      coherence
    
      proof
    
        the
    carrier of ( 
    NormForm A) 
    = ( 
    Normal_forms_on A) by 
    Def12;
    
        hence thesis;
    
      end;
    
    end
    
    
    
    
    
    Lm9: for a,b be 
    Element of ( 
    NormForm A) holds (a 
    "\/" b) 
    = (b 
    "\/" a) 
    
    proof
    
      set G = (
    NormForm A); 
    
      let a,b be
    Element of G; 
    
      reconsider a9 = a, b9 = b as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
      (a
    "\/" b) 
    = ( 
    mi (b9 
    \/ a9)) by 
    Def12
    
      .= (b
    "\/" a) by 
    Def12;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm10: for a,b,c be 
    Element of ( 
    NormForm A) holds (a 
    "\/" (b 
    "\/" c)) 
    = ((a 
    "\/" b) 
    "\/" c) 
    
    proof
    
      set G = (
    NormForm A); 
    
      let a,b,c be
    Element of G; 
    
      reconsider a9 = a, b9 = b, c9 = c as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
      (a
    "\/" (b 
    "\/" c)) 
    = (the 
    L_join of G 
    . (a,( 
    mi (b9 
    \/ c9)))) by 
    Def12
    
      .= (
    mi (( 
    mi (b9 
    \/ c9)) 
    \/ a9)) by 
    Def12
    
      .= (
    mi (a9 
    \/ (b9 
    \/ c9))) by 
    Th44
    
      .= (
    mi ((a9 
    \/ b9) 
    \/ c9)) by 
    XBOOLE_1: 4
    
      .= (
    mi (( 
    mi (a9 
    \/ b9)) 
    \/ c9)) by 
    Th44
    
      .= (the
    L_join of G 
    . (( 
    mi (a9 
    \/ b9)),c9)) by 
    Def12
    
      .= ((a
    "\/" b) 
    "\/" c) by 
    Def12;
    
      hence thesis;
    
    end;
    
    reserve K,L,M for
    Element of ( 
    Normal_forms_on A); 
    
    
    
    
    
    Lm11: (the 
    L_join of ( 
    NormForm A) 
    . ((the 
    L_meet of ( 
    NormForm A) 
    . (K,L)),L)) 
    = L 
    
    proof
    
      
    
      thus (the
    L_join of ( 
    NormForm A) 
    . ((the 
    L_meet of ( 
    NormForm A) 
    . (K,L)),L)) 
    = (the 
    L_join of ( 
    NormForm A) 
    . (( 
    mi (K 
    ^ L)),L)) by 
    Def12
    
      .= (
    mi (( 
    mi (K 
    ^ L)) 
    \/ L)) by 
    Def12
    
      .= (
    mi ((K 
    ^ L) 
    \/ L)) by 
    Th44
    
      .= (
    mi L) by 
    Lm8
    
      .= L by
    Th42;
    
    end;
    
    
    
    
    
    Lm12: for a,b be 
    Element of ( 
    NormForm A) holds ((a 
    "/\" b) 
    "\/" b) 
    = b 
    
    proof
    
      let a,b be
    Element of ( 
    NormForm A); 
    
      reconsider a9 = a, b9 = b as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
      set G = (
    NormForm A); 
    
      
    
      thus ((a
    "/\" b) 
    "\/" b) 
    = (the 
    L_join of G 
    . ((the 
    L_meet of G 
    . (a9,b9)),b9)) 
    
      .= b by
    Lm11;
    
    end;
    
    
    
    
    
    Lm13: for a,b be 
    Element of ( 
    NormForm A) holds (a 
    "/\" b) 
    = (b 
    "/\" a) 
    
    proof
    
      set G = (
    NormForm A); 
    
      let a,b be
    Element of G; 
    
      reconsider a9 = a, b9 = b as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
      (a
    "/\" b) 
    = ( 
    mi (a9 
    ^ b9)) by 
    Def12
    
      .= (
    mi (b9 
    ^ a9)) by 
    Th48
    
      .= (b
    "/\" a) by 
    Def12;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm14: for a,b,c be 
    Element of ( 
    NormForm A) holds (a 
    "/\" (b 
    "/\" c)) 
    = ((a 
    "/\" b) 
    "/\" c) 
    
    proof
    
      set G = (
    NormForm A); 
    
      let a,b,c be
    Element of G; 
    
      reconsider a9 = a, b9 = b, c9 = c as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
      (a
    "/\" (b 
    "/\" c)) 
    = (the 
    L_meet of G 
    . (a,( 
    mi (b9 
    ^ c9)))) by 
    Def12
    
      .= (
    mi (a9 
    ^ ( 
    mi (b9 
    ^ c9)))) by 
    Def12
    
      .= (
    mi (a9 
    ^ (b9 
    ^ c9))) by 
    Th51
    
      .= (
    mi ((a9 
    ^ b9) 
    ^ c9)) by 
    Th52
    
      .= (
    mi (( 
    mi (a9 
    ^ b9)) 
    ^ c9)) by 
    Th50
    
      .= (the
    L_meet of G 
    . (( 
    mi (a9 
    ^ b9)),c9)) by 
    Def12
    
      .= ((a
    "/\" b) 
    "/\" c) by 
    Def12;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm15: (the 
    L_meet of ( 
    NormForm A) 
    . (K,(the 
    L_join of ( 
    NormForm A) 
    . (L,M)))) 
    = (the 
    L_join of ( 
    NormForm A) 
    . ((the 
    L_meet of ( 
    NormForm A) 
    . (K,L)),(the 
    L_meet of ( 
    NormForm A) 
    . (K,M)))) 
    
    proof
    
      
    
      
    
    A1: (the 
    L_meet of ( 
    NormForm A) 
    . (K,M)) 
    = ( 
    mi (K 
    ^ M)) by 
    Def12;
    
      (the
    L_join of ( 
    NormForm A) 
    . (L,M)) 
    = ( 
    mi (L 
    \/ M)) & (the 
    L_meet of ( 
    NormForm A) 
    . (K,L)) 
    = ( 
    mi (K 
    ^ L)) by 
    Def12;
    
      then
    
      reconsider La = (the
    L_join of ( 
    NormForm A) 
    . (L,M)), Lb = (the 
    L_meet of ( 
    NormForm A) 
    . (K,L)), Lc = (the 
    L_meet of ( 
    NormForm A) 
    . (K,M)) as 
    Element of ( 
    Normal_forms_on A) by 
    A1;
    
      (the
    L_meet of ( 
    NormForm A) 
    . (K,(the 
    L_join of ( 
    NormForm A) 
    . (L,M)))) 
    = ( 
    mi (K 
    ^ La)) by 
    Def12
    
      .= (
    mi (K 
    ^ ( 
    mi (L 
    \/ M)))) by 
    Def12
    
      .= (
    mi (K 
    ^ (L 
    \/ M))) by 
    Th51
    
      .= (
    mi ((K 
    ^ L) 
    \/ (K 
    ^ M))) by 
    Th53
    
      .= (
    mi (( 
    mi (K 
    ^ L)) 
    \/ (K 
    ^ M))) by 
    Th44
    
      .= (
    mi (( 
    mi (K 
    ^ L)) 
    \/ ( 
    mi (K 
    ^ M)))) by 
    Th44
    
      .= (
    mi (Lb 
    \/ ( 
    mi (K 
    ^ M)))) by 
    Def12
    
      .= (
    mi (Lb 
    \/ Lc)) by 
    Def12;
    
      hence thesis by
    Def12;
    
    end;
    
    
    
    
    
    Lm16: for a,b be 
    Element of ( 
    NormForm A) holds (a 
    "/\" (a 
    "\/" b)) 
    = a 
    
    proof
    
      set G = (
    NormForm A); 
    
      let a,b be
    Element of G; 
    
      reconsider a9 = a, b9 = b as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
      
    
      thus (a
    "/\" (a 
    "\/" b)) 
    = (the 
    L_join of G 
    . ((the 
    L_meet of G 
    . (a9,a9)),(the 
    L_meet of G 
    . (a9,b9)))) by 
    Lm15
    
      .= (the
    L_join of G 
    . (( 
    mi (a9 
    ^ a9)),(the 
    L_meet of G 
    . (a9,b9)))) by 
    Def12
    
      .= (the
    L_join of G 
    . (( 
    mi a9),(the 
    L_meet of G 
    . (a9,b9)))) by 
    Th55
    
      .= (a
    "\/" (a 
    "/\" b)) by 
    Th42
    
      .= ((a
    "/\" b) 
    "\/" a) by 
    Lm9
    
      .= ((b
    "/\" a) 
    "\/" a) by 
    Lm13
    
      .= a by
    Lm12;
    
    end;
    
    registration
    
      let A;
    
      cluster ( 
    NormForm A) -> 
    Lattice-like;
    
      coherence
    
      proof
    
        set G = (
    NormForm A); 
    
        thus for u,v be
    Element of G holds (u 
    "\/" v) 
    = (v 
    "\/" u) by 
    Lm9;
    
        thus for u,v,w be
    Element of G holds (u 
    "\/" (v 
    "\/" w)) 
    = ((u 
    "\/" v) 
    "\/" w) by 
    Lm10;
    
        thus for u,v be
    Element of G holds ((u 
    "/\" v) 
    "\/" v) 
    = v by 
    Lm12;
    
        thus for u,v be
    Element of G holds (u 
    "/\" v) 
    = (v 
    "/\" u) by 
    Lm13;
    
        thus for u,v,w be
    Element of G holds (u 
    "/\" (v 
    "/\" w)) 
    = ((u 
    "/\" v) 
    "/\" w) by 
    Lm14;
    
        let u,v be
    Element of G; 
    
        thus thesis by
    Lm16;
    
      end;
    
    end
    
    registration
    
      let A;
    
      cluster ( 
    NormForm A) -> 
    distributive
    lower-bounded;
    
      coherence
    
      proof
    
        set G = (
    NormForm A); 
    
        thus G is
    distributive
    
        proof
    
          let u,v,w be
    Element of G; 
    
          reconsider K = u, L = v, M = w as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
          
    
          thus (u
    "/\" (v 
    "\/" w)) 
    = (the 
    L_meet of G 
    . (K,(the 
    L_join of G 
    . (L,M)))) 
    
          .= ((u
    "/\" v) 
    "\/" (u 
    "/\" w)) by 
    Lm15;
    
        end;
    
        thus G is
    lower-bounded
    
        proof
    
          reconsider E =
    {} as 
    Element of ( 
    Normal_forms_on A) by 
    Lm4;
    
          reconsider e = E as
    Element of G by 
    Def12;
    
          take e;
    
          let u be
    Element of G; 
    
          reconsider K = u as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
          
    
          
    
    A1: (e 
    "\/" u) 
    = ( 
    mi (E 
    \/ K)) by 
    Def12
    
          .= u by
    Th42;
    
          then (u
    "/\" e) 
    = e by 
    LATTICES:def 9;
    
          hence thesis by
    A1,
    LATTICES:def 9;
    
        end;
    
      end;
    
    end
    
    theorem :: 
    
    NORMFORM:56
    
    
    {} is 
    Element of ( 
    NormForm A) 
    
    proof
    
      the
    carrier of ( 
    NormForm A) 
    = ( 
    Normal_forms_on A) by 
    Def12;
    
      hence thesis by
    Lm4;
    
    end;
    
    theorem :: 
    
    NORMFORM:57
    
    (
    Bottom ( 
    NormForm A)) 
    =  
    {}  
    
    proof
    
      
    {}  
    in ( 
    Normal_forms_on A) by 
    Lm4;
    
      then
    
      reconsider Z =
    {} as 
    Element of ( 
    NormForm A) by 
    Def12;
    
      now
    
        let u be
    Element of ( 
    NormForm A); 
    
        reconsider z = Z, u9 = u as
    Element of ( 
    Normal_forms_on A) by 
    Def12;
    
        
    
        thus (Z
    "\/" u) 
    = ( 
    mi (z 
    \/ u9)) by 
    Def12
    
        .= u by
    Th42;
    
      end;
    
      hence thesis by
    LATTICE2: 14;
    
    end;