osalg_4.miz
    
    begin
    
    registration
    
      let R be non
    empty  
    Poset;
    
      cluster 
    Relation-yielding for 
    OrderSortedSet of R; 
    
      existence
    
      proof
    
        set R1 = the
    Relation;
    
        set I = the
    carrier of R; 
    
        set f = (I
    --> R1); 
    
        reconsider f as
    ManySortedSet of I; 
    
        f is
    order-sorted;
    
        then
    
        reconsider f as
    OrderSortedSet of R; 
    
        take f;
    
        for x be
    set st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Relation by 
    FUNCOP_1: 7;
    
        hence thesis by
    FUNCOP_1:def 11;
    
      end;
    
    end
    
    definition
    
      let R be non
    empty  
    Poset;
    
      let A,B be
    ManySortedSet of the 
    carrier of R; 
    
      let IT be
    ManySortedRelation of A, B; 
    
      :: 
    
    OSALG_4:def1
    
      attr IT is
    
    os-compatible means for s1,s2 be 
    Element of R st s1 
    <= s2 holds for x,y be 
    set st x 
    in (A 
    . s1) & y 
    in (B 
    . s1) holds 
    [x, y]
    in (IT 
    . s1) iff 
    [x, y]
    in (IT 
    . s2); 
    
    end
    
    registration
    
      let R be non
    empty  
    Poset;
    
      let A,B be
    ManySortedSet of the 
    carrier of R; 
    
      cluster 
    os-compatible for 
    ManySortedRelation of A, B; 
    
      existence
    
      proof
    
        set I = the
    carrier of R; 
    
        consider R1 be
    Relation such that 
    
        
    
    A1: R1 
    =  
    {} ; 
    
        set f = (I
    --> R1); 
    
        reconsider f as
    ManySortedSet of R; 
    
        set f1 = f;
    
        for i be
    set st i 
    in I holds (f 
    . i) is 
    Relation of (A 
    . i), (B 
    . i) 
    
        proof
    
          let i be
    set;
    
          assume i
    in I; 
    
          (f
    . i) 
    =  
    {} by 
    A1;
    
          hence thesis by
    RELSET_1: 12;
    
        end;
    
        then
    
        reconsider f2 = f1 as
    ManySortedRelation of A, B by 
    MSUALG_4:def 1;
    
        take f;
    
        f2 is
    os-compatible;
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      let R be non
    empty  
    Poset;
    
      let A,B be
    ManySortedSet of the 
    carrier of R; 
    
      mode
    
    OrderSortedRelation of A,B is 
    os-compatible  
    ManySortedRelation of A, B; 
    
    end
    
    theorem :: 
    
    OSALG_4:1
    
    
    
    
    
    Th1: for R be non 
    empty  
    Poset, A,B be 
    ManySortedSet of the 
    carrier of R, OR be 
    ManySortedRelation of A, B holds OR is 
    os-compatible implies OR is 
    OrderSortedSet of R 
    
    proof
    
      let R be non
    empty  
    Poset, A,B be 
    ManySortedSet of the 
    carrier of R, OR be 
    ManySortedRelation of A, B; 
    
      set OR1 = OR;
    
      assume
    
      
    
    A1: OR is 
    os-compatible;
    
      OR1 is
    order-sorted
    
      proof
    
        let s1,s2 be
    Element of R such that 
    
        
    
    A2: s1 
    <= s2; 
    
        for x,y be
    object holds 
    [x, y]
    in (OR 
    . s1) implies 
    [x, y]
    in (OR 
    . s2) 
    
        proof
    
          let x,y be
    object such that 
    
          
    
    A3: 
    [x, y]
    in (OR 
    . s1); 
    
          x
    in (A 
    . s1) & y 
    in (B 
    . s1) by 
    A3,
    ZFMISC_1: 87;
    
          hence thesis by
    A1,
    A2,
    A3;
    
        end;
    
        hence thesis by
    RELAT_1:def 3;
    
      end;
    
      hence thesis;
    
    end;
    
    registration
    
      let R be non
    empty  
    Poset;
    
      let A,B be
    ManySortedSet of R; 
    
      cluster 
    os-compatible -> 
    order-sorted for 
    ManySortedRelation of A, B; 
    
      coherence by
    Th1;
    
    end
    
    definition
    
      let R be non
    empty  
    Poset;
    
      let A be
    ManySortedSet of the 
    carrier of R; 
    
      mode
    
    OrderSortedRelation of A is 
    OrderSortedRelation of A, A; 
    
    end
    
    definition
    
      let S be
    OrderSortedSign, U1 be 
    OSAlgebra of S; 
    
      :: 
    
    OSALG_4:def2
    
      mode
    
    OrderSortedRelation of U1 -> 
    ManySortedRelation of U1 means 
    
      :
    
    Def2: it is 
    os-compatible;
    
      existence
    
      proof
    
        reconsider Y = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        set X = the
    OrderSortedRelation of Y; 
    
        reconsider X1 = X as
    ManySortedRelation of U1; 
    
        take X1;
    
        thus thesis;
    
      end;
    
    end
    
    registration
    
      let S be
    OrderSortedSign, U1 be 
    OSAlgebra of S; 
    
      cluster 
    MSEquivalence-like for 
    OrderSortedRelation of U1; 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of S) = ( 
    id (the 
    Sorts of U1 
    . $1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = the 
    carrier of S & for d be 
    Element of S holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        reconsider f as
    ManySortedSet of the 
    carrier of S by 
    A1,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for i be
    set st i 
    in the 
    carrier of S holds (f 
    . i) is 
    Relation of (the 
    Sorts of U1 
    . i), (the 
    Sorts of U1 
    . i) 
    
        proof
    
          let i be
    set;
    
          assume i
    in the 
    carrier of S; 
    
          then (f
    . i) 
    = ( 
    id (the 
    Sorts of U1 
    . i)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedRelation of the 
    Sorts of U1, the 
    Sorts of U1 by 
    MSUALG_4:def 1;
    
        reconsider f as
    ManySortedRelation of U1; 
    
        set f1 = f;
    
        
    
        
    
    A2: f1 is 
    os-compatible
    
        proof
    
          reconsider X = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
          let s1,s2 be
    Element of S such that 
    
          
    
    A3: s1 
    <= s2; 
    
          reconsider s3 = s1, s4 = s2 as
    Element of S; 
    
          let x,y be
    set such that 
    
          
    
    A4: x 
    in (the 
    Sorts of U1 
    . s1) and y 
    in (the 
    Sorts of U1 
    . s1); 
    
          
    
          
    
    A5: (f1 
    . s1) 
    = ( 
    id (X 
    . s1)) by 
    A1;
    
          
    
          
    
    A6: (f1 
    . s2) 
    = ( 
    id (X 
    . s2)) by 
    A1;
    
          (X
    . s3) 
    c= (X 
    . s4) by 
    A3,
    OSALG_1:def 16;
    
          then (
    id (X 
    . s1)) 
    c= ( 
    id (X 
    . s2)) by 
    SYSREL: 15;
    
          hence
    [x, y]
    in (f1 
    . s1) implies 
    [x, y]
    in (f1 
    . s2) by 
    A5,
    A6;
    
          assume
    [x, y]
    in (f1 
    . s2); 
    
          then x
    = y by 
    A6,
    RELAT_1:def 10;
    
          hence thesis by
    A5,
    A4,
    RELAT_1:def 10;
    
        end;
    
        take f;
    
        for i be
    set, R be 
    Relation of (the 
    Sorts of U1 
    . i) st i 
    in the 
    carrier of S & (f 
    . i) 
    = R holds R is 
    Equivalence_Relation of (the 
    Sorts of U1 
    . i) 
    
        proof
    
          let i be
    set, R be 
    Relation of (the 
    Sorts of U1 
    . i); 
    
          assume i
    in the 
    carrier of S & (f 
    . i) 
    = R; 
    
          then R
    = ( 
    id (the 
    Sorts of U1 
    . i)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then f is
    MSEquivalence_Relation-like by 
    MSUALG_4:def 2;
    
        hence thesis by
    A2,
    Def2,
    MSUALG_4:def 3;
    
      end;
    
    end
    
    registration
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S; 
    
      cluster 
    MSCongruence-like for 
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of S) = ( 
    id (the 
    Sorts of U1 
    . $1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = the 
    carrier of S & for d be 
    Element of S holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        reconsider f as
    ManySortedSet of the 
    carrier of S by 
    A1,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for i be
    set st i 
    in the 
    carrier of S holds (f 
    . i) is 
    Relation of (the 
    Sorts of U1 
    . i), (the 
    Sorts of U1 
    . i) 
    
        proof
    
          let i be
    set;
    
          assume i
    in the 
    carrier of S; 
    
          then (f
    . i) 
    = ( 
    id (the 
    Sorts of U1 
    . i)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedRelation of the 
    Sorts of U1, the 
    Sorts of U1 by 
    MSUALG_4:def 1;
    
        reconsider f as
    ManySortedRelation of U1; 
    
        for i be
    set, R be 
    Relation of (the 
    Sorts of U1 
    . i) st i 
    in the 
    carrier of S & (f 
    . i) 
    = R holds R is 
    Equivalence_Relation of (the 
    Sorts of U1 
    . i) 
    
        proof
    
          let i be
    set, R be 
    Relation of (the 
    Sorts of U1 
    . i); 
    
          assume i
    in the 
    carrier of S & (f 
    . i) 
    = R; 
    
          then R
    = ( 
    id (the 
    Sorts of U1 
    . i)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then f is
    MSEquivalence_Relation-like by 
    MSUALG_4:def 2;
    
        then
    
        reconsider f as
    MSEquivalence-like  
    ManySortedRelation of U1 by 
    MSUALG_4:def 3;
    
        set f1 = f;
    
        f1 is
    os-compatible
    
        proof
    
          reconsider X = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
          let s1,s2 be
    Element of S such that 
    
          
    
    A2: s1 
    <= s2; 
    
          reconsider s3 = s1, s4 = s2 as
    Element of S; 
    
          let x,y be
    set such that 
    
          
    
    A3: x 
    in (the 
    Sorts of U1 
    . s1) and y 
    in (the 
    Sorts of U1 
    . s1); 
    
          
    
          
    
    A4: (f1 
    . s1) 
    = ( 
    id (X 
    . s1)) by 
    A1;
    
          
    
          
    
    A5: (f1 
    . s2) 
    = ( 
    id (X 
    . s2)) by 
    A1;
    
          (X
    . s3) 
    c= (X 
    . s4) by 
    A2,
    OSALG_1:def 16;
    
          then (
    id (X 
    . s1)) 
    c= ( 
    id (X 
    . s2)) by 
    SYSREL: 15;
    
          hence
    [x, y]
    in (f1 
    . s1) implies 
    [x, y]
    in (f1 
    . s2) by 
    A4,
    A5;
    
          assume
    [x, y]
    in (f1 
    . s2); 
    
          then x
    = y by 
    A5,
    RELAT_1:def 10;
    
          hence
    [x, y]
    in (f1 
    . s1) by 
    A4,
    A3,
    RELAT_1:def 10;
    
        end;
    
        then
    
        reconsider f = f1 as
    MSEquivalence-like  
    OrderSortedRelation of U1 by 
    Def2;
    
        take f;
    
        for o be
    Element of the 
    carrier' of S holds for x,y be 
    Element of ( 
    Args (o,U1)) st (for n be 
    Nat st n 
    in ( 
    dom x) holds 
    [(x
    . n), (y 
    . n)] 
    in (f 
    . (( 
    the_arity_of o) 
    /. n))) holds 
    [((
    Den (o,U1)) 
    . x), (( 
    Den (o,U1)) 
    . y)] 
    in (f 
    . ( 
    the_result_sort_of o)) 
    
        proof
    
          let o be
    Element of the 
    carrier' of S; 
    
          let x,y be
    Element of ( 
    Args (o,U1)); 
    
          
    
          
    
    A6: ( 
    dom x) 
    = ( 
    dom ( 
    the_arity_of o)) by 
    MSUALG_3: 6;
    
          assume
    
          
    
    A7: for n be 
    Nat st n 
    in ( 
    dom x) holds 
    [(x
    . n), (y 
    . n)] 
    in (f 
    . (( 
    the_arity_of o) 
    /. n)); 
    
          
    
          
    
    A8: for a be 
    object st a 
    in ( 
    dom ( 
    the_arity_of o)) holds (x 
    . a) 
    = (y 
    . a) 
    
          proof
    
            set ao = (
    the_arity_of o); 
    
            let a be
    object;
    
            assume
    
            
    
    A9: a 
    in ( 
    dom ( 
    the_arity_of o)); 
    
            then
    
            reconsider n = a as
    Nat;
    
            (ao
    . n) 
    in ( 
    rng ao) by 
    A9,
    FUNCT_1:def 3;
    
            then
    
            
    
    A10: (f 
    . (ao 
    . n)) 
    = ( 
    id (the 
    Sorts of U1 
    . (ao 
    . n))) by 
    A1;
    
            ((
    the_arity_of o) 
    /. n) 
    = (( 
    the_arity_of o) 
    . n) by 
    A9,
    PARTFUN1:def 6;
    
            then
    [(x
    . n), (y 
    . n)] 
    in (f 
    . (ao 
    . n)) by 
    A7,
    A6,
    A9;
    
            hence thesis by
    A10,
    RELAT_1:def 10;
    
          end;
    
          set r = (
    the_result_sort_of o); 
    
          
    
          
    
    A11: (f 
    . r) 
    = ( 
    id (the 
    Sorts of U1 
    . r)) by 
    A1;
    
          
    
          
    
    A12: ( 
    dom the 
    ResultSort of S) 
    = the 
    carrier' of S by 
    FUNCT_2:def 1;
    
          then
    
          
    
    A13: ( 
    dom (the 
    Sorts of U1 
    * the 
    ResultSort of S)) 
    = ( 
    dom the 
    ResultSort of S) by 
    PARTFUN1:def 2;
    
          
    
          
    
    A14: ( 
    Result (o,U1)) 
    = ((the 
    Sorts of U1 
    * the 
    ResultSort of S) 
    . o) by 
    MSUALG_1:def 5
    
          .= (the
    Sorts of U1 
    . (the 
    ResultSort of S 
    . o)) by 
    A12,
    A13,
    FUNCT_1: 12
    
          .= (the
    Sorts of U1 
    . r) by 
    MSUALG_1:def 2;
    
          (
    dom y) 
    = ( 
    dom ( 
    the_arity_of o)) by 
    MSUALG_3: 6;
    
          then ((
    Den (o,U1)) 
    . x) 
    = (( 
    Den (o,U1)) 
    . y) by 
    A6,
    A8,
    FUNCT_1: 2;
    
          hence thesis by
    A11,
    A14,
    RELAT_1:def 10;
    
        end;
    
        hence thesis by
    MSUALG_4:def 4;
    
      end;
    
    end
    
    definition
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S; 
    
      mode
    
    OSCongruence of U1 is 
    MSCongruence-like
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
    end
    
    definition
    
      let R be non
    empty  
    Poset;
    
      :: 
    
    OSALG_4:def3
    
      func
    
    Path_Rel R -> 
    Equivalence_Relation of the 
    carrier of R means 
    
      :
    
    Def3: for x,y be 
    object holds 
    [x, y]
    in it iff x 
    in the 
    carrier of R & y 
    in the 
    carrier of R & ex p be 
    FinSequence of the 
    carrier of R st 1 
    < ( 
    len p) & (p 
    . 1) 
    = x & (p 
    . ( 
    len p)) 
    = y & for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p) holds 
    [(p
    . n), (p 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p
    . (n 
    - 1)), (p 
    . n)] 
    in the 
    InternalRel of R; 
    
      existence
    
      proof
    
        defpred
    
    PC[
    object, 
    object] means ex p be
    FinSequence of the 
    carrier of R st 1 
    < ( 
    len p) & (p 
    . 1) 
    = $1 & (p 
    . ( 
    len p)) 
    = $2 & for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p) holds 
    [(p
    . n), (p 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p
    . (n 
    - 1)), (p 
    . n)] 
    in the 
    InternalRel of R; 
    
        set P = {
    [x, y] where x,y be
    Element of R : x 
    in the 
    carrier of R & y 
    in the 
    carrier of R & 
    PC[x, y] };
    
        P
    c=  
    [:the 
    carrier of R, the 
    carrier of R:] 
    
        proof
    
          let z be
    object;
    
          assume z
    in P; 
    
          then ex x,y be
    Element of R st z 
    =  
    [x, y] & x
    in the 
    carrier of R & y 
    in the 
    carrier of R & 
    PC[x, y];
    
          hence thesis by
    ZFMISC_1: 87;
    
        end;
    
        then
    
        reconsider P1 = P as
    Relation of the 
    carrier of R; 
    
        
    
        
    
    A1: for x,y be 
    object holds 
    [x, y]
    in P iff x 
    in the 
    carrier of R & y 
    in the 
    carrier of R & 
    PC[x, y]
    
        proof
    
          let x,y be
    object;
    
          hereby
    
            assume
    [x, y]
    in P; 
    
            then
    
            consider x1,y1 be
    Element of R such that 
    
            
    
    A2: 
    [x, y]
    =  
    [x1, y1] and x1
    in the 
    carrier of R and y1 
    in the 
    carrier of R and 
    
            
    
    A3: 
    PC[x1, y1];
    
            x
    = x1 & y 
    = y1 by 
    A2,
    XTUPLE_0: 1;
    
            hence x
    in the 
    carrier of R & y 
    in the 
    carrier of R & 
    PC[x, y] by
    A3;
    
          end;
    
          thus thesis;
    
        end;
    
        now
    
          let x,y be
    object;
    
          assume that
    
          
    
    A4: x 
    in the 
    carrier of R & y 
    in the 
    carrier of R and 
    
          
    
    A5: 
    [x, y]
    in P1; 
    
          consider p be
    FinSequence of the 
    carrier of R such that 
    
          
    
    A6: 1 
    < ( 
    len p) and 
    
          
    
    A7: (p 
    . 1) 
    = x & (p 
    . ( 
    len p)) 
    = y and 
    
          
    
    A8: for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p) holds 
    [(p
    . n), (p 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p
    . (n 
    - 1)), (p 
    . n)] 
    in the 
    InternalRel of R by 
    A1,
    A5;
    
          
    PC[y, x]
    
          proof
    
            take F = (
    Rev p); 
    
            thus 1
    < ( 
    len F) by 
    A6,
    FINSEQ_5:def 3;
    
            
    
            
    
    A9: ( 
    len F) 
    = ( 
    len p) by 
    FINSEQ_5:def 3;
    
            hence (F
    . 1) 
    = y & (F 
    . ( 
    len F)) 
    = x by 
    A7,
    FINSEQ_5: 62;
    
            let n1 be
    Nat such that 
    
            
    
    A10: 2 
    <= n1 and 
    
            
    
    A11: n1 
    <= ( 
    len F); 
    
            1
    <= n1 by 
    A10,
    XXREAL_0: 2;
    
            then
    
            
    
    A12: n1 
    in ( 
    dom p) by 
    A9,
    A11,
    FINSEQ_3: 25;
    
            set n2 = (((
    len p) 
    - n1) 
    + 2); 
    
            
    0  
    <= (( 
    len p) 
    - n1) by 
    A9,
    A11,
    XREAL_1: 48;
    
            then
    
            
    
    A13: (2 
    +  
    0 ) 
    <= n2 by 
    XREAL_1: 6;
    
            
    
            
    
    A14: (2 
    - 1) 
    <= (n1 
    - 1) by 
    A10,
    XREAL_1: 9;
    
            then
    
            reconsider n11 = (n1
    - 1) as 
    Element of 
    NAT by 
    INT_1: 3,
    XXREAL_0: 2;
    
            (n1
    - 1) 
    <= (( 
    len F) 
    -  
    0 ) by 
    A11,
    XREAL_1: 13;
    
            then n11
    in ( 
    dom p) by 
    A9,
    A14,
    FINSEQ_3: 25;
    
            
    
            then
    
            
    
    A15: (F 
    . (n1 
    - 1)) 
    = (p 
    . ((( 
    len p) 
    - (n1 
    - 1)) 
    + 1)) by 
    FINSEQ_5: 58
    
            .= (p
    . ((( 
    len p) 
    - n1) 
    + 2)); 
    
            reconsider n2 = (((
    len p) 
    - n1) 
    + 2) as 
    Element of 
    NAT by 
    A13,
    INT_1: 3,
    XXREAL_0: 2;
    
            ((
    len p) 
    - n1) 
    <= (( 
    len p) 
    - 2) by 
    A10,
    XREAL_1: 13;
    
            then
    
            
    
    A16: ((( 
    len p) 
    - n1) 
    + 2) 
    <= ((( 
    len p) 
    - 2) 
    + 2) by 
    XREAL_1: 6;
    
            (p
    . (n2 
    - 1)) 
    = (p 
    . ((( 
    len p) 
    - n1) 
    + (2 
    - 1))) 
    
            .= (F
    . n1) by 
    A12,
    FINSEQ_5: 58;
    
            hence thesis by
    A8,
    A15,
    A13,
    A16;
    
          end;
    
          hence
    [y, x]
    in P1 by 
    A4;
    
        end;
    
        then
    
        
    
    A17: P1 
    is_symmetric_in the 
    carrier of R by 
    RELAT_2:def 3;
    
        
    
        
    
    A18: the 
    InternalRel of R 
    is_reflexive_in the 
    carrier of R by 
    ORDERS_2:def 2;
    
        now
    
          let x be
    object;
    
          assume
    
          
    
    A19: x 
    in the 
    carrier of R; 
    
          
    PC[x, x]
    
          proof
    
            set F =
    <*x, x*>;
    
            (
    rng F) 
    =  
    {x, x} by
    FINSEQ_2: 127
    
            .=
    {x} by
    ENUMSET1: 29;
    
            then (
    rng F) 
    c= the 
    carrier of R by 
    A19,
    ZFMISC_1: 31;
    
            then
    
            reconsider F1 = F as
    FinSequence of the 
    carrier of R by 
    FINSEQ_1:def 4;
    
            take F1;
    
            
    
            
    
    A20: ( 
    len F) 
    = 2 by 
    FINSEQ_1: 44;
    
            hence 1
    < ( 
    len F1); 
    
            thus (F1
    . 1) 
    = x & (F1 
    . ( 
    len F1)) 
    = x by 
    A20,
    FINSEQ_1: 44;
    
            let n1 be
    Nat;
    
            assume 2
    <= n1 & n1 
    <= ( 
    len F1); 
    
            then
    
            
    
    A21: n1 
    = 2 by 
    A20,
    XXREAL_0: 1;
    
            (F
    . 1) 
    = x & (F 
    . 2) 
    = x by 
    FINSEQ_1: 44;
    
            hence thesis by
    A18,
    A19,
    A21,
    RELAT_2:def 1;
    
          end;
    
          hence
    [x, x]
    in P1 by 
    A19;
    
        end;
    
        then P1
    is_reflexive_in the 
    carrier of R by 
    RELAT_2:def 1;
    
        then
    
        
    
    A22: ( 
    dom P1) 
    = the 
    carrier of R & ( 
    field P1) 
    = the 
    carrier of R by 
    ORDERS_1: 13;
    
        now
    
          let x,y,z be
    object;
    
          assume that
    
          
    
    A23: x 
    in the 
    carrier of R and 
    
          
    
    A24: y 
    in the 
    carrier of R and 
    
          
    
    A25: z 
    in the 
    carrier of R and 
    
          
    
    A26: 
    [x, y]
    in P1 & 
    [y, z]
    in P1; 
    
          
    PC[x, y] &
    PC[y, z] by
    A1,
    A26;
    
          then
    
          consider p1,p2 be
    FinSequence of the 
    carrier of R such that 
    
          
    
    A27: 1 
    < ( 
    len p1) and 
    
          
    
    A28: (p1 
    . 1) 
    = x and 
    
          
    
    A29: (p1 
    . ( 
    len p1)) 
    = y and 
    
          
    
    A30: for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p1) holds 
    [(p1
    . n), (p1 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p1
    . (n 
    - 1)), (p1 
    . n)] 
    in the 
    InternalRel of R and 
    
          
    
    A31: 1 
    < ( 
    len p2) and 
    
          
    
    A32: (p2 
    . 1) 
    = y and 
    
          
    
    A33: (p2 
    . ( 
    len p2)) 
    = z and 
    
          
    
    A34: for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p2) holds 
    [(p2
    . n), (p2 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p2
    . (n 
    - 1)), (p2 
    . n)] 
    in the 
    InternalRel of R; 
    
          
    PC[x, z]
    
          proof
    
            take F = (p1
    ^ p2); 
    
            
    
            
    
    A35: ( 
    len F) 
    = (( 
    len p1) 
    + ( 
    len p2)) by 
    FINSEQ_1: 22;
    
            (1
    + 1) 
    < (( 
    len p1) 
    + ( 
    len p2)) by 
    A27,
    A31,
    XREAL_1: 8;
    
            hence 1
    < ( 
    len F) by 
    A35,
    XXREAL_0: 2;
    
            1
    in ( 
    dom p1) by 
    A27,
    FINSEQ_3: 25;
    
            hence (F
    . 1) 
    = x by 
    A28,
    FINSEQ_1:def 7;
    
            (
    len p2) 
    in ( 
    dom p2) by 
    A31,
    FINSEQ_3: 25;
    
            hence (F
    . ( 
    len F)) 
    = z by 
    A33,
    A35,
    FINSEQ_1:def 7;
    
            let n1 be
    Nat such that 
    
            
    
    A36: 2 
    <= n1 and 
    
            
    
    A37: n1 
    <= ( 
    len F); 
    
            
    
            
    
    A38: 1 
    <= n1 by 
    A36,
    XXREAL_0: 2;
    
            
    
            
    
    A39: (2 
    - 1) 
    <= (n1 
    - 1) by 
    A36,
    XREAL_1: 9;
    
            then
    
            reconsider n11 = (n1
    - 1) as 
    Element of 
    NAT by 
    INT_1: 3,
    XXREAL_0: 2;
    
            
    
            
    
    A40: (( 
    len p1) 
    + 1) 
    <= n1 implies (( 
    len p1) 
    + 1) 
    = n1 or (( 
    len p1) 
    + 1) 
    < n1 by 
    XXREAL_0: 1;
    
            
    
            
    
    A41: (n1 
    - 1) 
    <= (( 
    len F) 
    -  
    0 ) by 
    A37,
    XREAL_1: 13;
    
            per cases by
    A40,
    INT_1: 7;
    
              suppose
    
              
    
    A42: n1 
    <= ( 
    len p1); 
    
              then (n1
    - 1) 
    <= (( 
    len p1) 
    -  
    0 ) by 
    XREAL_1: 13;
    
              then n11
    in ( 
    dom p1) by 
    A39,
    FINSEQ_3: 25;
    
              then
    
              
    
    A43: (F 
    . (n1 
    - 1)) 
    = (p1 
    . (n1 
    - 1)) by 
    FINSEQ_1:def 7;
    
              n1
    in ( 
    dom p1) by 
    A38,
    A42,
    FINSEQ_3: 25;
    
              then (F
    . n1) 
    = (p1 
    . n1) by 
    FINSEQ_1:def 7;
    
              hence thesis by
    A30,
    A36,
    A42,
    A43;
    
            end;
    
              suppose
    
              
    
    A44: (( 
    len p1) 
    + 1) 
    < n1; 
    
              (
    len p1) 
    < (( 
    len p1) 
    + 1) by 
    XREAL_1: 29;
    
              then
    
              
    
    A45: ( 
    len p1) 
    < n1 by 
    A44,
    XXREAL_0: 2;
    
              then
    
              reconsider k = (n1
    - ( 
    len p1)) as 
    Element of 
    NAT by 
    INT_1: 3,
    XREAL_1: 48;
    
              (((
    len p1) 
    + 1) 
    - 1) 
    < (n1 
    - 1) by 
    A44,
    XREAL_1: 9;
    
              then (F
    . n11) 
    = (p2 
    . (n11 
    - ( 
    len p1))) by 
    A41,
    FINSEQ_1: 24;
    
              then
    
              
    
    A46: (F 
    . (n1 
    - 1)) 
    = (p2 
    . (k 
    - 1)); 
    
              1
    < (n1 
    - ( 
    len p1)) by 
    A44,
    XREAL_1: 20;
    
              then
    
              
    
    A47: (1 
    + 1) 
    <= (n1 
    - ( 
    len p1)) by 
    INT_1: 7;
    
              n1
    <= (( 
    len p1) 
    + ( 
    len p2)) by 
    A37,
    FINSEQ_1: 22;
    
              then
    
              
    
    A48: k 
    <= ( 
    len p2) by 
    XREAL_1: 20;
    
              (F
    . n1) 
    = (p2 
    . k) by 
    A37,
    A45,
    FINSEQ_1: 24;
    
              hence thesis by
    A34,
    A46,
    A47,
    A48;
    
            end;
    
              suppose
    
              
    
    A49: (( 
    len p1) 
    + 1) 
    = n1; 
    
              ((
    len p1) 
    + 1) 
    <= (( 
    len p1) 
    + ( 
    len p2)) & ((( 
    len p1) 
    + 1) 
    - ( 
    len p1)) 
    = 1 by 
    A31,
    XREAL_1: 8;
    
              then
    
              
    
    A50: (F 
    . n1) 
    = y by 
    A32,
    A49,
    FINSEQ_1: 23;
    
              (
    len p1) 
    in ( 
    dom p1) by 
    A27,
    FINSEQ_3: 25;
    
              then (F
    . (n1 
    - 1)) 
    = y by 
    A29,
    A49,
    FINSEQ_1:def 7;
    
              hence thesis by
    A18,
    A24,
    A50,
    RELAT_2:def 1;
    
            end;
    
          end;
    
          hence
    [x, z]
    in P1 by 
    A23,
    A25;
    
        end;
    
        then P1
    is_transitive_in the 
    carrier of R by 
    RELAT_2:def 8;
    
        then
    
        reconsider P1 = P as
    Equivalence_Relation of the 
    carrier of R by 
    A22,
    A17,
    PARTFUN1:def 2,
    RELAT_2:def 11,
    RELAT_2:def 16;
    
        take P1;
    
        thus thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        let X,Y be
    Equivalence_Relation of the 
    carrier of R; 
    
        defpred
    
    PC1[
    object, 
    object] means $1
    in the 
    carrier of R & $2 
    in the 
    carrier of R & ex p be 
    FinSequence of the 
    carrier of R st 1 
    < ( 
    len p) & (p 
    . 1) 
    = $1 & (p 
    . ( 
    len p)) 
    = $2 & for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p) holds 
    [(p
    . n), (p 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p
    . (n 
    - 1)), (p 
    . n)] 
    in the 
    InternalRel of R; 
    
        assume
    
        
    
    A51: for x,y be 
    object holds 
    [x, y]
    in X iff 
    PC1[x, y];
    
        assume
    
        
    
    A52: for x,y be 
    object holds 
    [x, y]
    in Y iff 
    PC1[x, y];
    
        for x,y be
    object holds 
    [x, y]
    in X iff 
    [x, y]
    in Y 
    
        proof
    
          let x,y be
    object;
    
          hereby
    
            assume
    [x, y]
    in X; 
    
            then
    PC1[x, y] by
    A51;
    
            hence
    [x, y]
    in Y by 
    A52;
    
          end;
    
          assume
    [x, y]
    in Y; 
    
          then
    PC1[x, y] by
    A52;
    
          hence thesis by
    A51;
    
        end;
    
        hence thesis by
    RELAT_1:def 2;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:2
    
    
    
    
    
    Th2: for R be non 
    empty  
    Poset, s1,s2 be 
    Element of R st s1 
    <= s2 holds 
    [s1, s2]
    in ( 
    Path_Rel R) 
    
    proof
    
      let R be non
    empty  
    Poset, s1,s2 be 
    Element of R such that 
    
      
    
    A1: s1 
    <= s2; 
    
      set p =
    <*s1, s2*>;
    
      
    
      
    
    A2: ( 
    len p) 
    = 2 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A3: (p 
    . 1) 
    = s1 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A4: for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p) holds 
    [(p
    . n), (p 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p
    . (n 
    - 1)), (p 
    . n)] 
    in the 
    InternalRel of R 
    
      proof
    
        let n1 be
    Nat;
    
        assume 2
    <= n1 & n1 
    <= ( 
    len p); 
    
        then
    
        
    
    A5: n1 
    = 2 by 
    A2,
    XXREAL_0: 1;
    
        
    [s1, s2]
    in the 
    InternalRel of R by 
    A1,
    ORDERS_2:def 5;
    
        hence thesis by
    A3,
    A5,
    FINSEQ_1: 44;
    
      end;
    
      (p
    . ( 
    len p)) 
    = s2 by 
    A2,
    FINSEQ_1: 44;
    
      hence thesis by
    A2,
    A3,
    A4,
    Def3;
    
    end;
    
    definition
    
      let R be non
    empty  
    Poset;
    
      let s1,s2 be
    Element of R; 
    
      :: 
    
    OSALG_4:def4
    
      pred s1
    
    ~= s2 means 
    [s1, s2]
    in ( 
    Path_Rel R); 
    
      reflexivity
    
      proof
    
        set PR = (
    Path_Rel R); 
    
        (
    field PR) 
    = the 
    carrier of R by 
    ORDERS_1: 12;
    
        then PR
    is_reflexive_in the 
    carrier of R by 
    RELAT_2:def 9;
    
        hence thesis by
    RELAT_2:def 1;
    
      end;
    
      symmetry
    
      proof
    
        set PR = (
    Path_Rel R); 
    
        (
    field PR) 
    = the 
    carrier of R by 
    ORDERS_1: 12;
    
        then PR
    is_symmetric_in the 
    carrier of R by 
    RELAT_2:def 11;
    
        hence thesis by
    RELAT_2:def 3;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:3
    
    for R be non
    empty  
    Poset, s1,s2,s3 be 
    Element of R holds s1 
    ~= s2 & s2 
    ~= s3 implies s1 
    ~= s3 
    
    proof
    
      let R be non
    empty  
    Poset;
    
      let s1,s2,s3 be
    Element of R; 
    
      set PR = (
    Path_Rel R); 
    
      (
    field PR) 
    = the 
    carrier of R by 
    ORDERS_1: 12;
    
      then
    
      
    
    A1: PR 
    is_transitive_in the 
    carrier of R by 
    RELAT_2:def 16;
    
      assume s1
    ~= s2 & s2 
    ~= s3; 
    
      then
    [s1, s2]
    in PR & 
    [s2, s3]
    in PR; 
    
      then
    [s1, s3]
    in PR by 
    A1,
    RELAT_2:def 8;
    
      hence thesis;
    
    end;
    
    definition
    
      let R be non
    empty  
    Poset;
    
      :: 
    
    OSALG_4:def5
    
      func
    
    Components R -> non 
    empty  
    Subset-Family of R equals ( 
    Class ( 
    Path_Rel R)); 
    
      coherence ;
    
    end
    
    registration
    
      let R be non
    empty  
    Poset;
    
      cluster -> non 
    empty for 
    Element of ( 
    Components R); 
    
      coherence
    
      proof
    
        let X be
    Element of ( 
    Components R); 
    
        ex x be
    object st x 
    in the 
    carrier of R & X 
    = ( 
    Class (( 
    Path_Rel R),x)) by 
    EQREL_1:def 3;
    
        hence thesis by
    EQREL_1: 20;
    
      end;
    
    end
    
    definition
    
      let R be non
    empty  
    Poset;
    
      mode
    
    Component of R is 
    Element of ( 
    Components R); 
    
    end
    
    definition
    
      let R be non
    empty  
    Poset;
    
      let s1 be
    Element of R; 
    
      :: 
    
    OSALG_4:def6
    
      func
    
    CComp s1 -> 
    Component of R equals ( 
    Class (( 
    Path_Rel R),s1)); 
    
      correctness by
    EQREL_1:def 3;
    
    end
    
    theorem :: 
    
    OSALG_4:4
    
    
    
    
    
    Th4: for R be non 
    empty  
    Poset, s1,s2 be 
    Element of R st s1 
    <= s2 holds ( 
    CComp s1) 
    = ( 
    CComp s2) 
    
    proof
    
      let R be non
    empty  
    Poset, s1,s2 be 
    Element of R; 
    
      assume s1
    <= s2; 
    
      then
    [s1, s2]
    in ( 
    Path_Rel R) by 
    Th2;
    
      hence thesis by
    EQREL_1: 35;
    
    end;
    
    definition
    
      let R be non
    empty  
    Poset;
    
      let A be
    ManySortedSet of the 
    carrier of R; 
    
      let C be
    Component of R; 
    
      :: 
    
    OSALG_4:def7
    
      func A
    
    -carrier_of C -> 
    set equals ( 
    union { (A 
    . s) where s be 
    Element of R : s 
    in C }); 
    
      correctness ;
    
    end
    
    theorem :: 
    
    OSALG_4:5
    
    
    
    
    
    Th5: for R be non 
    empty  
    Poset, A be 
    ManySortedSet of the 
    carrier of R, s be 
    Element of R, x be 
    set st x 
    in (A 
    . s) holds x 
    in (A 
    -carrier_of ( 
    CComp s)) 
    
    proof
    
      let R be non
    empty  
    Poset;
    
      let A be
    ManySortedSet of the 
    carrier of R, s be 
    Element of R, x be 
    set such that 
    
      
    
    A1: x 
    in (A 
    . s); 
    
      s
    in ( 
    CComp s) by 
    EQREL_1: 20;
    
      then (A
    . s) 
    in { (A 
    . s1) where s1 be 
    Element of R : s1 
    in ( 
    CComp s) }; 
    
      hence thesis by
    A1,
    TARSKI:def 4;
    
    end;
    
    definition
    
      let R be non
    empty  
    Poset;
    
      :: 
    
    OSALG_4:def8
    
      attr R is
    
    locally_directed means 
    
      :
    
    Def8: for C be 
    Component of R holds C is 
    directed;
    
    end
    
    theorem :: 
    
    OSALG_4:6
    
    
    
    
    
    Th6: for R be 
    discrete non 
    empty  
    Poset holds for x,y be 
    Element of R st 
    [x, y]
    in ( 
    Path_Rel R) holds x 
    = y 
    
    proof
    
      let R be
    discrete non 
    empty  
    Poset;
    
      let x,y be
    Element of R; 
    
      assume
    [x, y]
    in ( 
    Path_Rel R); 
    
      then
    
      consider p be
    FinSequence of the 
    carrier of R such that 
    
      
    
    A1: 1 
    < ( 
    len p) and 
    
      
    
    A2: (p 
    . 1) 
    = x and 
    
      
    
    A3: (p 
    . ( 
    len p)) 
    = y and 
    
      
    
    A4: for n be 
    Nat st 2 
    <= n & n 
    <= ( 
    len p) holds 
    [(p
    . n), (p 
    . (n 
    - 1))] 
    in the 
    InternalRel of R or 
    [(p
    . (n 
    - 1)), (p 
    . n)] 
    in the 
    InternalRel of R by 
    Def3;
    
      for n1 be
    Nat st 1 
    <= n1 & n1 
    <= ( 
    len p) holds (p 
    . n1) 
    = x 
    
      proof
    
        defpred
    
    P[
    Nat] means (p
    . $1) 
    <> x & 1 
    <= $1; 
    
        let n1 be
    Nat such that 
    
        
    
    A5: 1 
    <= n1 and 
    
        
    
    A6: n1 
    <= ( 
    len p); 
    
        assume
    
        
    
    A7: (p 
    . n1) 
    <> x; 
    
        then
    
        
    
    A8: ex k be 
    Nat st 
    P[k] by
    A5;
    
        consider k be
    Nat such that 
    
        
    
    A9: 
    P[k] & for n be
    Nat st 
    P[n] holds k
    <= n from 
    NAT_1:sch 5(
    A8);
    
        1
    < k by 
    A2,
    A9,
    XXREAL_0: 1;
    
        then
    
        
    
    A10: (1 
    + 1) 
    <= k by 
    INT_1: 7;
    
        then
    
        
    
    A11: ((1 
    + 1) 
    - 1) 
    <= (k 
    - 1) by 
    XREAL_1: 9;
    
        then
    
        reconsider k1 = (k
    - 1) as 
    Element of 
    NAT by 
    INT_1: 3,
    XXREAL_0: 2;
    
        
    
        
    
    A12: (p 
    . k1) 
    = x by 
    A9,
    A11,
    XREAL_1: 146;
    
        k
    <= n1 by 
    A5,
    A7,
    A9;
    
        then
    
        
    
    A13: k 
    <= ( 
    len p) by 
    A6,
    XXREAL_0: 2;
    
        then k
    in ( 
    dom p) by 
    A9,
    FINSEQ_3: 25;
    
        then
    
        reconsider pk = (p
    . k) as 
    Element of R by 
    PARTFUN1: 4;
    
        per cases by
    A4,
    A10,
    A13,
    A12;
    
          suppose
    [pk, x]
    in the 
    InternalRel of R; 
    
          then pk
    <= x by 
    ORDERS_2:def 5;
    
          hence contradiction by
    A9,
    ORDERS_3: 1;
    
        end;
    
          suppose
    [x, pk]
    in the 
    InternalRel of R; 
    
          then x
    <= pk by 
    ORDERS_2:def 5;
    
          hence contradiction by
    A9,
    ORDERS_3: 1;
    
        end;
    
      end;
    
      hence thesis by
    A1,
    A3;
    
    end;
    
    theorem :: 
    
    OSALG_4:7
    
    
    
    
    
    Th7: for R be 
    discrete non 
    empty  
    Poset, C be 
    Component of R holds ex x be 
    Element of R st C 
    =  
    {x}
    
    proof
    
      let R be
    discrete non 
    empty  
    Poset, C be 
    Component of R; 
    
      consider x be
    object such that 
    
      
    
    A1: x 
    in the 
    carrier of R and 
    
      
    
    A2: C 
    = ( 
    Class (( 
    Path_Rel R),x)) by 
    EQREL_1:def 3;
    
      reconsider x1 = x as
    Element of R by 
    A1;
    
      take x1;
    
      for y be
    object holds y 
    in C iff y 
    = x1 
    
      proof
    
        let y be
    object;
    
        hereby
    
          assume
    
          
    
    A3: y 
    in C; 
    
          then
    
          reconsider y1 = y as
    Element of R; 
    
          
    [y, x]
    in ( 
    Path_Rel R) by 
    A2,
    A3,
    EQREL_1: 19;
    
          then y1
    = x1 by 
    Th6;
    
          hence y
    = x1; 
    
        end;
    
        assume y
    = x1; 
    
        hence thesis by
    A2,
    EQREL_1: 20;
    
      end;
    
      hence thesis by
    TARSKI:def 1;
    
    end;
    
    theorem :: 
    
    OSALG_4:8
    
    
    
    
    
    Th8: for R be 
    discrete non 
    empty  
    Poset holds R is 
    locally_directed
    
    proof
    
      let R be
    discrete non 
    empty  
    Poset;
    
      let C be
    Component of R; 
    
      consider x be
    Element of R such that 
    
      
    
    A1: C 
    =  
    {x} by
    Th7;
    
      for x,y be
    Element of R st x 
    in C & y 
    in C holds ex z be 
    Element of R st z 
    in C & x 
    <= z & y 
    <= z 
    
      proof
    
        let x1,y1 be
    Element of R such that 
    
        
    
    A2: x1 
    in C and 
    
        
    
    A3: y1 
    in C; 
    
        take x1;
    
        x1
    = x by 
    A1,
    A2,
    TARSKI:def 1;
    
        hence thesis by
    A1,
    A3,
    TARSKI:def 1;
    
      end;
    
      hence thesis by
    WAYBEL_0:def 1;
    
    end;
    
    registration
    
      cluster 
    locally_directed for non 
    empty  
    Poset;
    
      existence
    
      proof
    
        set R = the
    discrete non 
    empty  
    Poset;
    
        take R;
    
        thus thesis by
    Th8;
    
      end;
    
    end
    
    registration
    
      cluster 
    locally_directed for 
    OrderSortedSign;
    
      existence
    
      proof
    
        set R = the
    discrete  
    OrderSortedSign;
    
        take R;
    
        thus thesis by
    Th8;
    
      end;
    
    end
    
    registration
    
      cluster 
    discrete -> 
    locally_directed for non 
    empty  
    Poset;
    
      coherence by
    Th8;
    
    end
    
    registration
    
      let S be
    locally_directed non 
    empty  
    Poset;
    
      cluster -> 
    directed for 
    Component of S; 
    
      coherence by
    Def8;
    
    end
    
    theorem :: 
    
    OSALG_4:9
    
    
    
    
    
    Th9: 
    {} is 
    Equivalence_Relation of 
    {} by 
    RELSET_1: 12;
    
    definition
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let A be
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of A; 
    
      let C be
    Component of S; 
    
      :: 
    
    OSALG_4:def9
    
      func
    
    CompClass (E,C) -> 
    Equivalence_Relation of (the 
    Sorts of A 
    -carrier_of C) means 
    
      :
    
    Def9: for x,y be 
    object holds 
    [x, y]
    in it iff ex s1 be 
    Element of S st s1 
    in C & 
    [x, y]
    in (E 
    . s1); 
    
      existence
    
      proof
    
        defpred
    
    CC1[
    object, 
    object] means ex s1 be
    Element of S st s1 
    in C & 
    [$1, $2]
    in (E 
    . s1); 
    
        
    
        
    
    A1: E is 
    os-compatible by 
    Def2;
    
        per cases ;
    
          suppose
    
          
    
    A2: (the 
    Sorts of A 
    -carrier_of C) is 
    empty;
    
          for x,y be
    object holds 
    [x, y]
    in  
    {} iff ex s1 be 
    Element of S st s1 
    in C & 
    [x, y]
    in (E 
    . s1) 
    
          proof
    
            let x,y be
    object;
    
            thus
    [x, y]
    in  
    {} implies ex s1 be 
    Element of S st s1 
    in C & 
    [x, y]
    in (E 
    . s1); 
    
            assume ex s1 be
    Element of S st s1 
    in C & 
    [x, y]
    in (E 
    . s1); 
    
            then
    
            consider s1 be
    Element of S such that 
    
            
    
    A3: s1 
    in C & 
    [x, y]
    in (E 
    . s1); 
    
            x
    in (the 
    Sorts of A 
    . s1) & (the 
    Sorts of A 
    . s1) 
    in { (the 
    Sorts of A 
    . s) where s be 
    Element of S : s 
    in C } by 
    A3,
    ZFMISC_1: 87;
    
            hence thesis by
    A2,
    TARSKI:def 4;
    
          end;
    
          hence thesis by
    A2,
    Th9;
    
        end;
    
          suppose (the
    Sorts of A 
    -carrier_of C) is non 
    empty;
    
          then
    
          reconsider SAC = (the
    Sorts of A 
    -carrier_of C) as non 
    empty  
    set;
    
          set CC = {
    [x, y] where x,y be
    Element of SAC : 
    CC1[x, y] };
    
          CC
    c=  
    [:SAC, SAC:]
    
          proof
    
            let z be
    object;
    
            assume z
    in CC; 
    
            then ex x,y be
    Element of SAC st z 
    =  
    [x, y] &
    CC1[x, y];
    
            hence thesis by
    ZFMISC_1: 87;
    
          end;
    
          then
    
          reconsider P1 = CC as
    Relation of SAC; 
    
          now
    
            let x,y be
    object such that 
    
            
    
    A4: x 
    in SAC & y 
    in SAC and 
    
            
    
    A5: 
    [x, y]
    in P1; 
    
            reconsider x1 = x, y1 = y as
    Element of SAC by 
    A4;
    
            consider x2,y2 be
    Element of SAC such that 
    
            
    
    A6: 
    [x, y]
    =  
    [x2, y2] and
    
            
    
    A7: 
    CC1[x2, y2] by
    A5;
    
            
    
            
    
    A8: x 
    = x2 & y 
    = y2 by 
    A6,
    XTUPLE_0: 1;
    
            consider s5 be
    Element of S such that 
    
            
    
    A9: s5 
    in C and 
    
            
    
    A10: 
    [x2, y2]
    in (E 
    . s5) by 
    A7;
    
            (
    field (E 
    . s5)) 
    = (the 
    Sorts of A 
    . s5) by 
    ORDERS_1: 12;
    
            then
    
            
    
    A11: (E 
    . s5) 
    is_symmetric_in (the 
    Sorts of A 
    . s5) by 
    RELAT_2:def 11;
    
            x2
    in (the 
    Sorts of A 
    . s5) & y2 
    in (the 
    Sorts of A 
    . s5) by 
    A10,
    ZFMISC_1: 87;
    
            then
    [y, x]
    in (E 
    . s5) by 
    A8,
    A10,
    A11,
    RELAT_2:def 3;
    
            then
    [y1, x1]
    in CC by 
    A9;
    
            hence
    [y, x]
    in P1; 
    
          end;
    
          then
    
          
    
    A12: P1 
    is_symmetric_in SAC by 
    RELAT_2:def 3;
    
          now
    
            let x be
    object such that 
    
            
    
    A13: x 
    in SAC; 
    
            reconsider x1 = x as
    Element of SAC by 
    A13;
    
            consider X be
    set such that 
    
            
    
    A14: x 
    in X and 
    
            
    
    A15: X 
    in { (the 
    Sorts of A 
    . s) where s be 
    Element of S : s 
    in C } by 
    A13,
    TARSKI:def 4;
    
            consider s be
    Element of S such that 
    
            
    
    A16: X 
    = (the 
    Sorts of A 
    . s) and 
    
            
    
    A17: s 
    in C by 
    A15;
    
            (
    field (E 
    . s)) 
    = (the 
    Sorts of A 
    . s) by 
    ORDERS_1: 12;
    
            then (E
    . s) 
    is_reflexive_in (the 
    Sorts of A 
    . s) by 
    RELAT_2:def 9;
    
            then
    [x, x]
    in (E 
    . s) by 
    A14,
    A16,
    RELAT_2:def 1;
    
            then
    [x1, x1]
    in CC by 
    A17;
    
            hence
    [x, x]
    in P1; 
    
          end;
    
          then P1
    is_reflexive_in SAC by 
    RELAT_2:def 1;
    
          then
    
          
    
    A18: ( 
    dom P1) 
    = SAC & ( 
    field P1) 
    = SAC by 
    ORDERS_1: 13;
    
          now
    
            let x,y,z be
    object such that x 
    in SAC and y 
    in SAC and z 
    in SAC and 
    
            
    
    A19: 
    [x, y]
    in P1 and 
    
            
    
    A20: 
    [y, z]
    in P1; 
    
            consider x2,y2 be
    Element of SAC such that 
    
            
    
    A21: 
    [x, y]
    =  
    [x2, y2] and
    
            
    
    A22: 
    CC1[x2, y2] by
    A19;
    
            
    
            
    
    A23: x 
    = x2 by 
    A21,
    XTUPLE_0: 1;
    
            consider y3,z3 be
    Element of SAC such that 
    
            
    
    A24: 
    [y, z]
    =  
    [y3, z3] and
    
            
    
    A25: 
    CC1[y3, z3] by
    A20;
    
            
    
            
    
    A26: y 
    = y3 by 
    A24,
    XTUPLE_0: 1;
    
            consider s5 be
    Element of S such that 
    
            
    
    A27: s5 
    in C and 
    
            
    
    A28: 
    [x2, y2]
    in (E 
    . s5) by 
    A22;
    
            consider s6 be
    Element of S such that 
    
            
    
    A29: s6 
    in C and 
    
            
    
    A30: 
    [y3, z3]
    in (E 
    . s6) by 
    A25;
    
            reconsider s51 = s5, s61 = s6 as
    Element of S; 
    
            consider su be
    Element of S such that 
    
            
    
    A31: su 
    in C and 
    
            
    
    A32: s51 
    <= su and 
    
            
    
    A33: s61 
    <= su by 
    A27,
    A29,
    WAYBEL_0:def 1;
    
            y3
    in (the 
    Sorts of A 
    . s6) & z3 
    in (the 
    Sorts of A 
    . s6) by 
    A30,
    ZFMISC_1: 87;
    
            then
    
            
    
    A34: 
    [y3, z3]
    in (E 
    . su) by 
    A1,
    A30,
    A33;
    
            then
    
            
    
    A35: z3 
    in (the 
    Sorts of A 
    . su) by 
    ZFMISC_1: 87;
    
            
    
            
    
    A36: z 
    = z3 by 
    A24,
    XTUPLE_0: 1;
    
            
    
            
    
    A37: y 
    = y2 by 
    A21,
    XTUPLE_0: 1;
    
            (
    field (E 
    . su)) 
    = (the 
    Sorts of A 
    . su) by 
    ORDERS_1: 12;
    
            then
    
            
    
    A38: (E 
    . su) 
    is_transitive_in (the 
    Sorts of A 
    . su) by 
    RELAT_2:def 16;
    
            x2
    in (the 
    Sorts of A 
    . s5) & y2 
    in (the 
    Sorts of A 
    . s5) by 
    A28,
    ZFMISC_1: 87;
    
            then
    
            
    
    A39: 
    [x2, y2]
    in (E 
    . su) by 
    A1,
    A28,
    A32;
    
            then x2
    in (the 
    Sorts of A 
    . su) & y2 
    in (the 
    Sorts of A 
    . su) by 
    ZFMISC_1: 87;
    
            then
    [x2, z3]
    in (E 
    . su) by 
    A37,
    A26,
    A39,
    A34,
    A35,
    A38,
    RELAT_2:def 8;
    
            hence
    [x, z]
    in P1 by 
    A23,
    A36,
    A31;
    
          end;
    
          then P1
    is_transitive_in SAC by 
    RELAT_2:def 8;
    
          then
    
          reconsider P1 as
    Equivalence_Relation of (the 
    Sorts of A 
    -carrier_of C) by 
    A18,
    A12,
    PARTFUN1:def 2,
    RELAT_2:def 11,
    RELAT_2:def 16;
    
          take P1;
    
          for x,y be
    object holds 
    [x, y]
    in CC iff 
    CC1[x, y]
    
          proof
    
            let x,y be
    object;
    
            hereby
    
              assume
    [x, y]
    in CC; 
    
              then ex x1,y1 be
    Element of SAC st 
    [x, y]
    =  
    [x1, y1] &
    CC1[x1, y1];
    
              hence
    CC1[x, y];
    
            end;
    
            assume
    
            
    
    A40: 
    CC1[x, y];
    
            then
    
            consider s1 be
    Element of S such that 
    
            
    
    A41: s1 
    in C and 
    
            
    
    A42: 
    [x, y]
    in (E 
    . s1); 
    
            
    
            
    
    A43: y 
    in (the 
    Sorts of A 
    . s1) by 
    A42,
    ZFMISC_1: 87;
    
            (the
    Sorts of A 
    . s1) 
    in { (the 
    Sorts of A 
    . s) where s be 
    Element of S : s 
    in C } & x 
    in (the 
    Sorts of A 
    . s1) by 
    A41,
    A42,
    ZFMISC_1: 87;
    
            then
    
            reconsider x1 = x, y1 = y as
    Element of SAC by 
    A43,
    TARSKI:def 4;
    
            
    [x1, y1]
    in CC by 
    A40;
    
            hence thesis;
    
          end;
    
          hence thesis;
    
        end;
    
      end;
    
      uniqueness
    
      proof
    
        let X,Y be
    Equivalence_Relation of (the 
    Sorts of A 
    -carrier_of C); 
    
        defpred
    
    CC1[
    object, 
    object] means ex s1 be
    Element of S st s1 
    in C & 
    [$1, $2]
    in (E 
    . s1); 
    
        assume
    
        
    
    A44: for x,y be 
    object holds 
    [x, y]
    in X iff 
    CC1[x, y];
    
        assume
    
        
    
    A45: for x,y be 
    object holds 
    [x, y]
    in Y iff 
    CC1[x, y];
    
        for x,y be
    object holds 
    [x, y]
    in X iff 
    [x, y]
    in Y 
    
        proof
    
          let x,y be
    object;
    
          hereby
    
            assume
    [x, y]
    in X; 
    
            then
    CC1[x, y] by
    A44;
    
            hence
    [x, y]
    in Y by 
    A45;
    
          end;
    
          assume
    [x, y]
    in Y; 
    
          then
    CC1[x, y] by
    A45;
    
          hence thesis by
    A44;
    
        end;
    
        hence thesis by
    RELAT_1:def 2;
    
      end;
    
    end
    
    definition
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let A be
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of A; 
    
      let s1 be
    Element of S; 
    
      :: 
    
    OSALG_4:def10
    
      func
    
    OSClass (E,s1) -> 
    Subset of ( 
    Class ( 
    CompClass (E,( 
    CComp s1)))) means 
    
      :
    
    Def10: for z be 
    set holds z 
    in it iff ex x be 
    set st x 
    in (the 
    Sorts of A 
    . s1) & z 
    = ( 
    Class (( 
    CompClass (E,( 
    CComp s1))),x)); 
    
      existence
    
      proof
    
        set SAC = (the
    Sorts of A 
    -carrier_of ( 
    CComp s1)); 
    
        set CS = (
    Class ( 
    CompClass (E,( 
    CComp s1)))); 
    
        defpred
    
    CC1[
    set] means ex x be
    set st x 
    in (the 
    Sorts of A 
    . s1) & $1 
    = ( 
    Class (( 
    CompClass (E,( 
    CComp s1))),x)); 
    
        per cases ;
    
          suppose
    
          
    
    A1: CS is 
    empty;
    
          reconsider CS1 =
    {} as 
    Subset of CS by 
    XBOOLE_1: 2;
    
          take CS1;
    
          let z be
    set;
    
          thus z
    in CS1 implies 
    CC1[z];
    
          assume
    CC1[z];
    
          then
    
          consider x be
    set such that 
    
          
    
    A2: x 
    in (the 
    Sorts of A 
    . s1) and z 
    = ( 
    Class (( 
    CompClass (E,( 
    CComp s1))),x)); 
    
          x
    in SAC by 
    A2,
    Th5;
    
          hence thesis by
    A1;
    
        end;
    
          suppose CS is non
    empty;
    
          then
    
          reconsider CS1 = CS as non
    empty  
    Subset-Family of SAC; 
    
          set CC = { x where x be
    Element of CS1 : 
    CC1[x] };
    
          now
    
            let x be
    object;
    
            assume x
    in CC; 
    
            then ex y be
    Element of CS1 st x 
    = y & 
    CC1[y];
    
            hence x
    in CS1; 
    
          end;
    
          then
    
          reconsider CC2 = CC as
    Subset of CS by 
    TARSKI:def 3;
    
          take CC2;
    
          for x be
    set holds x 
    in CC iff 
    CC1[x]
    
          proof
    
            let x be
    set;
    
            hereby
    
              assume x
    in CC; 
    
              then ex x1 be
    Element of CS1 st x 
    = x1 & 
    CC1[x1];
    
              hence
    CC1[x];
    
            end;
    
            assume
    
            
    
    A3: 
    CC1[x];
    
            then
    
            consider y be
    set such that 
    
            
    
    A4: y 
    in (the 
    Sorts of A 
    . s1) and 
    
            
    
    A5: x 
    = ( 
    Class (( 
    CompClass (E,( 
    CComp s1))),y)); 
    
            s1
    in ( 
    CComp s1) by 
    EQREL_1: 20;
    
            then (the
    Sorts of A 
    . s1) 
    in { (the 
    Sorts of A 
    . s) where s be 
    Element of S : s 
    in ( 
    CComp s1) }; 
    
            then y
    in ( 
    union { (the 
    Sorts of A 
    . s) where s be 
    Element of S : s 
    in ( 
    CComp s1) }) by 
    A4,
    TARSKI:def 4;
    
            then x
    in ( 
    Class ( 
    CompClass (E,( 
    CComp s1)))) by 
    A5,
    EQREL_1:def 3;
    
            hence thesis by
    A3;
    
          end;
    
          hence thesis;
    
        end;
    
      end;
    
      uniqueness
    
      proof
    
        let X,Y be
    Subset of ( 
    Class ( 
    CompClass (E,( 
    CComp s1)))); 
    
        defpred
    
    CC1[
    object] means ex x be
    set st x 
    in (the 
    Sorts of A 
    . s1) & $1 
    = ( 
    Class (( 
    CompClass (E,( 
    CComp s1))),x)); 
    
        assume
    
        
    
    A6: for x be 
    set holds x 
    in X iff 
    CC1[x];
    
        assume
    
        
    
    A7: for x be 
    set holds x 
    in Y iff 
    CC1[x];
    
        for x be
    object holds x 
    in X iff x 
    in Y 
    
        proof
    
          let x be
    object;
    
          hereby
    
            assume x
    in X; 
    
            then
    CC1[x] by
    A6;
    
            hence x
    in Y by 
    A7;
    
          end;
    
          assume x
    in Y; 
    
          then
    CC1[x] by
    A7;
    
          hence thesis by
    A6;
    
        end;
    
        hence thesis by
    TARSKI: 2;
    
      end;
    
    end
    
    registration
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of A; 
    
      let s1 be
    Element of S; 
    
      cluster ( 
    OSClass (E,s1)) -> non 
    empty;
    
      coherence
    
      proof
    
        consider x be
    object such that 
    
        
    
    A1: x 
    in (the 
    Sorts of A 
    . s1) by 
    XBOOLE_0:def 1;
    
        (
    Class (( 
    CompClass (E,( 
    CComp s1))),x)) 
    in ( 
    OSClass (E,s1)) by 
    A1,
    Def10;
    
        hence thesis;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:10
    
    
    
    
    
    Th10: for S be 
    locally_directed  
    OrderSortedSign, A be 
    OSAlgebra of S, E be 
    MSEquivalence-like  
    OrderSortedRelation of A, s1,s2 be 
    Element of S st s1 
    <= s2 holds ( 
    OSClass (E,s1)) 
    c= ( 
    OSClass (E,s2)) 
    
    proof
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let A be
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of A; 
    
      let s1,s2 be
    Element of S; 
    
      reconsider s3 = s1, s4 = s2 as
    Element of S; 
    
      assume
    
      
    
    A1: s1 
    <= s2; 
    
      then
    
      
    
    A2: ( 
    CComp s1) 
    = ( 
    CComp s2) by 
    Th4;
    
      thus (
    OSClass (E,s1)) 
    c= ( 
    OSClass (E,s2)) 
    
      proof
    
        reconsider SO = the
    Sorts of A as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        let z be
    object;
    
        assume z
    in ( 
    OSClass (E,s1)); 
    
        then
    
        
    
    A3: ex x be 
    set st x 
    in (the 
    Sorts of A 
    . s1) & z 
    = ( 
    Class (( 
    CompClass (E,( 
    CComp s1))),x)) by 
    Def10;
    
        (SO
    . s3) 
    c= (SO 
    . s4) by 
    A1,
    OSALG_1:def 16;
    
        hence thesis by
    A2,
    A3,
    Def10;
    
      end;
    
    end;
    
    definition
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let A be
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of A; 
    
      :: 
    
    OSALG_4:def11
    
      func
    
    OSClass E -> 
    OrderSortedSet of S means 
    
      :
    
    Def11: for s1 be 
    Element of S holds (it 
    . s1) 
    = ( 
    OSClass (E,s1)); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of S) = ( 
    OSClass (E,$1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = the 
    carrier of S and 
    
        
    
    A2: for i be 
    Element of S holds (f 
    . i) 
    =  
    F(i) from
    FUNCT_1:sch 4;
    
        reconsider f1 = f as
    ManySortedSet of the 
    carrier of S by 
    A1,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        set f2 = f1;
    
        f2 is
    order-sorted
    
        proof
    
          let s1,s2 be
    Element of S such that 
    
          
    
    A3: s1 
    <= s2; 
    
          (f2
    . s1) 
    = ( 
    OSClass (E,s1)) & (f2 
    . s2) 
    = ( 
    OSClass (E,s2)) by 
    A2;
    
          hence thesis by
    A3,
    Th10;
    
        end;
    
        hence thesis by
    A2;
    
      end;
    
      uniqueness
    
      proof
    
        let X,Y be
    OrderSortedSet of S; 
    
        assume
    
        
    
    A4: for s1 be 
    Element of S holds (X 
    . s1) 
    = ( 
    OSClass (E,s1)); 
    
        assume
    
        
    
    A5: for s1 be 
    Element of S holds (Y 
    . s1) 
    = ( 
    OSClass (E,s1)); 
    
        now
    
          let s1 be
    object;
    
          assume s1
    in the 
    carrier of S; 
    
          then
    
          reconsider s2 = s1 as
    Element of S; 
    
          
    
          thus (X
    . s1) 
    = ( 
    OSClass (E,s2)) by 
    A4
    
          .= (Y
    . s1) by 
    A5;
    
        end;
    
        hence X
    = Y by 
    PBOOLE: 3;
    
      end;
    
    end
    
    registration
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of A; 
    
      cluster ( 
    OSClass E) -> 
    non-empty;
    
      coherence
    
      proof
    
        for i be
    object st i 
    in the 
    carrier of S holds (( 
    OSClass E) 
    . i) is non 
    empty
    
        proof
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    Element of S; 
    
          ((
    OSClass E) 
    . s) 
    = ( 
    OSClass (E,s)) by 
    Def11;
    
          hence thesis;
    
        end;
    
        hence thesis by
    PBOOLE:def 13;
    
      end;
    
    end
    
    definition
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      let s be
    Element of S; 
    
      let x be
    Element of (the 
    Sorts of U1 
    . s); 
    
      :: 
    
    OSALG_4:def12
    
      func
    
    OSClass (E,x) -> 
    Element of ( 
    OSClass (E,s)) equals ( 
    Class (( 
    CompClass (E,( 
    CComp s))),x)); 
    
      correctness by
    Def10;
    
    end
    
    theorem :: 
    
    OSALG_4:11
    
    for R be
    locally_directed non 
    empty  
    Poset, x,y be 
    Element of R st (ex z be 
    Element of R st z 
    <= x & z 
    <= y) holds ex u be 
    Element of R st x 
    <= u & y 
    <= u 
    
    proof
    
      let R be
    locally_directed non 
    empty  
    Poset, x,y be 
    Element of R; 
    
      assume ex z be
    Element of R st z 
    <= x & z 
    <= y; 
    
      then
    
      consider z be
    Element of R such that 
    
      
    
    A1: z 
    <= x and 
    
      
    
    A2: z 
    <= y; 
    
      reconsider x1 = x, y1 = y as
    Element of R; 
    
      (
    CComp z) 
    = ( 
    CComp y) by 
    A2,
    Th4;
    
      then
    
      
    
    A3: y 
    in ( 
    CComp z) by 
    EQREL_1: 20;
    
      (
    CComp z) 
    = ( 
    CComp x) by 
    A1,
    Th4;
    
      then x
    in ( 
    CComp z) by 
    EQREL_1: 20;
    
      then ex u be
    Element of R st u 
    in ( 
    CComp z) & x1 
    <= u & y1 
    <= u by 
    A3,
    WAYBEL_0:def 1;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    OSALG_4:12
    
    
    
    
    
    Th12: for S be 
    locally_directed  
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, E be 
    MSEquivalence-like  
    OrderSortedRelation of U1, s be 
    Element of S, x,y be 
    Element of (the 
    Sorts of U1 
    . s) holds ( 
    OSClass (E,x)) 
    = ( 
    OSClass (E,y)) iff 
    [x, y]
    in (E 
    . s) 
    
    proof
    
      let S be
    locally_directed  
    OrderSortedSign;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let E be
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      let s be
    Element of S; 
    
      let x,y be
    Element of (the 
    Sorts of U1 
    . s); 
    
      reconsider SU = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
      
    
      
    
    A1: s 
    in ( 
    CComp s) by 
    EQREL_1: 20;
    
      
    
      
    
    A2: E is 
    os-compatible by 
    Def2;
    
      
    
      
    
    A3: x 
    in (the 
    Sorts of U1 
    -carrier_of ( 
    CComp s)) by 
    Th5;
    
      hereby
    
        assume (
    OSClass (E,x)) 
    = ( 
    OSClass (E,y)); 
    
        then
    [x, y]
    in ( 
    CompClass (E,( 
    CComp s))) by 
    A3,
    EQREL_1: 35;
    
        then
    
        consider s1 be
    Element of S such that 
    
        
    
    A4: s1 
    in ( 
    CComp s) and 
    
        
    
    A5: 
    [x, y]
    in (E 
    . s1) by 
    Def9;
    
        reconsider sn1 = s, s11 = s1 as
    Element of S; 
    
        consider s2 be
    Element of S such that s2 
    in ( 
    CComp s) and 
    
        
    
    A6: s11 
    <= s2 and 
    
        
    
    A7: sn1 
    <= s2 by 
    A1,
    A4,
    WAYBEL_0:def 1;
    
        x
    in (SU 
    . s11) & y 
    in (SU 
    . s11) by 
    A5,
    ZFMISC_1: 87;
    
        then
    [x, y]
    in (E 
    . s2) by 
    A2,
    A5,
    A6;
    
        hence
    [x, y]
    in (E 
    . s) by 
    A2,
    A7;
    
      end;
    
      
    
      
    
    A8: s 
    in ( 
    CComp s) by 
    EQREL_1: 20;
    
      
    
      
    
    A9: x 
    in (the 
    Sorts of U1 
    -carrier_of ( 
    CComp s)) by 
    Th5;
    
      assume
    [x, y]
    in (E 
    . s); 
    
      then
    [x, y]
    in ( 
    CompClass (E,( 
    CComp s))) by 
    A8,
    Def9;
    
      hence thesis by
    A9,
    EQREL_1: 35;
    
    end;
    
    theorem :: 
    
    OSALG_4:13
    
    for S be
    locally_directed  
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, E be 
    MSEquivalence-like  
    OrderSortedRelation of U1, s1,s2 be 
    Element of S, x be 
    Element of (the 
    Sorts of U1 
    . s1) st s1 
    <= s2 holds for y be 
    Element of (the 
    Sorts of U1 
    . s2) st y 
    = x holds ( 
    OSClass (E,x)) 
    = ( 
    OSClass (E,y)) by 
    Th4;
    
    begin
    
    reserve S for
    locally_directed  
    OrderSortedSign;
    
    reserve o for
    Element of the 
    carrier' of S; 
    
    definition
    
      let S, o;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of A; 
    
      let x be
    Element of ( 
    Args (o,A)); 
    
      :: 
    
    OSALG_4:def13
    
      func R
    
    #_os x -> 
    Element of ( 
    product (( 
    OSClass R) 
    * ( 
    the_arity_of o))) means 
    
      :
    
    Def13: for n be 
    Nat st n 
    in ( 
    dom ( 
    the_arity_of o)) holds ex y be 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st y 
    = (x 
    . n) & (it 
    . n) 
    = ( 
    OSClass (R,y)); 
    
      existence
    
      proof
    
        defpred
    
    P[
    object, 
    object] means for n be
    Nat st n 
    = $1 holds ex y be 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st y 
    = (x 
    . n) & $2 
    = ( 
    OSClass (R,y)); 
    
        set ar = (
    the_arity_of o), da = ( 
    dom ar); 
    
        
    
        
    
    A1: for k be 
    object st k 
    in da holds ex u be 
    object st 
    P[k, u]
    
        proof
    
          let k be
    object;
    
          assume
    
          
    
    A2: k 
    in da; 
    
          then
    
          reconsider n = k as
    Nat;
    
          reconsider y = (x
    . n) as 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) by 
    A2,
    MSUALG_6: 2;
    
          take (
    OSClass (R,y)); 
    
          thus thesis;
    
        end;
    
        consider f be
    Function such that 
    
        
    
    A3: ( 
    dom f) 
    = da & for x be 
    object st x 
    in da holds 
    P[x, (f
    . x)] from 
    CLASSES1:sch 1(
    A1);
    
        
    
        
    
    A4: ( 
    dom (( 
    OSClass R) 
    * ar)) 
    = da by 
    PARTFUN1:def 2;
    
        for y be
    object st y 
    in ( 
    dom (( 
    OSClass R) 
    * ar)) holds (f 
    . y) 
    in ((( 
    OSClass R) 
    * ar) 
    . y) 
    
        proof
    
          let y be
    object;
    
          assume
    
          
    
    A5: y 
    in ( 
    dom (( 
    OSClass R) 
    * ar)); 
    
          then
    
          reconsider n = y as
    Nat;
    
          (ar
    . y) 
    in ( 
    rng ar) by 
    A4,
    A5,
    FUNCT_1:def 3;
    
          then
    
          reconsider s = (ar
    . y) as 
    Element of S; 
    
          (ex z be
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st z 
    = (x 
    . n) & (f 
    . n) 
    = ( 
    OSClass (R,z))) & (ar 
    /. n) 
    = (ar 
    . n) by 
    A3,
    A4,
    A5,
    PARTFUN1:def 6;
    
          then
    
          
    
    A6: (f 
    . y) 
    in ( 
    OSClass (R,s)); 
    
          (((
    OSClass R) 
    * ar) 
    . y) 
    = (( 
    OSClass R) 
    . (ar 
    . y)) by 
    A5,
    FUNCT_1: 12;
    
          hence thesis by
    A6,
    Def11;
    
        end;
    
        then
    
        reconsider f as
    Element of ( 
    product (( 
    OSClass R) 
    * ar)) by 
    A3,
    A4,
    CARD_3: 9;
    
        take f;
    
        let n be
    Nat;
    
        assume n
    in da; 
    
        hence thesis by
    A3;
    
      end;
    
      uniqueness
    
      proof
    
        let F,G be
    Element of ( 
    product (( 
    OSClass R) 
    * ( 
    the_arity_of o))); 
    
        assume
    
        
    
    A7: (for n be 
    Nat st n 
    in ( 
    dom ( 
    the_arity_of o)) holds ex y be 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st y 
    = (x 
    . n) & (F 
    . n) 
    = ( 
    OSClass (R,y))) & for n be 
    Nat st n 
    in ( 
    dom ( 
    the_arity_of o)) holds ex y be 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st y 
    = (x 
    . n) & (G 
    . n) 
    = ( 
    OSClass (R,y)); 
    
        
    
        
    
    A8: for y be 
    object st y 
    in ( 
    dom ( 
    the_arity_of o)) holds (F 
    . y) 
    = (G 
    . y) 
    
        proof
    
          let y be
    object;
    
          assume
    
          
    
    A9: y 
    in ( 
    dom ( 
    the_arity_of o)); 
    
          then
    
          reconsider n = y as
    Nat;
    
          (ex z be
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st z 
    = (x 
    . n) & (F 
    . n) 
    = ( 
    OSClass (R,z))) & ex z1 be 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st z1 
    = (x 
    . n) & (G 
    . n) 
    = ( 
    OSClass (R,z1)) by 
    A7,
    A9;
    
          hence thesis;
    
        end;
    
        
    
        
    
    A10: ( 
    dom G) 
    = ( 
    dom ( 
    the_arity_of o)) by 
    PARTFUN1:def 2;
    
        (
    dom F) 
    = ( 
    dom ( 
    the_arity_of o)) by 
    PARTFUN1:def 2;
    
        hence thesis by
    A10,
    A8,
    FUNCT_1: 2;
    
      end;
    
    end
    
    definition
    
      let S, o;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of A; 
    
      :: 
    
    OSALG_4:def14
    
      func
    
    OSQuotRes (R,o) -> 
    Function of ((the 
    Sorts of A 
    * the 
    ResultSort of S) 
    . o), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o) means 
    
      :
    
    Def14: for x be 
    Element of (the 
    Sorts of A 
    . ( 
    the_result_sort_of o)) holds (it 
    . x) 
    = ( 
    OSClass (R,x)); 
    
      existence
    
      proof
    
        set rs = (
    the_result_sort_of o), D = (the 
    Sorts of A 
    . rs); 
    
        deffunc
    
    F(
    Element of D) = ( 
    OSClass (R,$1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = D & for d be 
    Element of D holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        
    
        
    
    A2: for x be 
    object st x 
    in D holds (f 
    . x) 
    in (( 
    OSClass R) 
    . rs) 
    
        proof
    
          let x be
    object;
    
          assume x
    in D; 
    
          then
    
          reconsider x1 = x as
    Element of D; 
    
          (f
    . x1) 
    = ( 
    OSClass (R,x1)) by 
    A1;
    
          then (f
    . x1) 
    in ( 
    OSClass (R,rs)); 
    
          hence thesis by
    Def11;
    
        end;
    
        o
    in the 
    carrier' of S; 
    
        then o
    in ( 
    dom (the 
    Sorts of A 
    * the 
    ResultSort of S)) by 
    PARTFUN1:def 2;
    
        
    
        then
    
        
    
    A3: ((the 
    Sorts of A 
    * the 
    ResultSort of S) 
    . o) 
    = (the 
    Sorts of A 
    . (the 
    ResultSort of S 
    . o)) by 
    FUNCT_1: 12
    
        .= D by
    MSUALG_1:def 2;
    
        
    
        
    
    A4: ( 
    dom the 
    ResultSort of S) 
    = the 
    carrier' of S by 
    FUNCT_2:def 1;
    
        then (
    dom (( 
    OSClass R) 
    * the 
    ResultSort of S)) 
    = ( 
    dom the 
    ResultSort of S) by 
    PARTFUN1:def 2;
    
        
    
        then (((
    OSClass R) 
    * the 
    ResultSort of S) 
    . o) 
    = (( 
    OSClass R) 
    . (the 
    ResultSort of S 
    . o)) by 
    A4,
    FUNCT_1: 12
    
        .= ((
    OSClass R) 
    . rs) by 
    MSUALG_1:def 2;
    
        then
    
        reconsider f as
    Function of ((the 
    Sorts of A 
    * the 
    ResultSort of S) 
    . o), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o) by 
    A1,
    A3,
    A2,
    FUNCT_2: 3;
    
        take f;
    
        thus thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        set SA = the
    Sorts of A, RS = the 
    ResultSort of S, rs = ( 
    the_result_sort_of o); 
    
        let f,g be
    Function of ((the 
    Sorts of A 
    * the 
    ResultSort of S) 
    . o), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o); 
    
        assume that
    
        
    
    A5: for x be 
    Element of (SA 
    . rs) holds (f 
    . x) 
    = ( 
    OSClass (R,x)) and 
    
        
    
    A6: for x be 
    Element of (SA 
    . rs) holds (g 
    . x) 
    = ( 
    OSClass (R,x)); 
    
        
    
    A7: 
    
        now
    
          let x be
    object;
    
          assume x
    in (SA 
    . rs); 
    
          then
    
          reconsider x1 = x as
    Element of (SA 
    . rs); 
    
          (f
    . x1) 
    = ( 
    OSClass (R,x1)) by 
    A5;
    
          hence (f
    . x) 
    = (g 
    . x) by 
    A6;
    
        end;
    
        o
    in the 
    carrier' of S; 
    
        then o
    in ( 
    dom (SA 
    * RS)) by 
    PARTFUN1:def 2;
    
        
    
        then ((SA
    * RS) 
    . o) 
    = (SA 
    . (RS 
    . o)) by 
    FUNCT_1: 12
    
        .= (SA
    . rs) by 
    MSUALG_1:def 2;
    
        then (
    dom f) 
    = (SA 
    . rs) & ( 
    dom g) 
    = (SA 
    . rs) by 
    FUNCT_2:def 1;
    
        hence thesis by
    A7,
    FUNCT_1: 2;
    
      end;
    
      :: 
    
    OSALG_4:def15
    
      func
    
    OSQuotArgs (R,o) -> 
    Function of (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . o), (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) means for x be 
    Element of ( 
    Args (o,A)) holds (it 
    . x) 
    = (R 
    #_os x); 
    
      existence
    
      proof
    
        set ao = (
    the_arity_of o); 
    
        set D = (
    Args (o,A)); 
    
        deffunc
    
    F(
    Element of D) = (R 
    #_os $1); 
    
        consider f be
    Function such that 
    
        
    
    A8: ( 
    dom f) 
    = D & for d be 
    Element of D holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        
    
        
    
    A9: o 
    in the 
    carrier' of S; 
    
        then o
    in ( 
    dom ((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S)) by 
    PARTFUN1:def 2;
    
        
    
        then
    
        
    
    A10: (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . o) 
    = ((the 
    Sorts of A 
    # ) 
    . (the 
    Arity of S 
    . o)) by 
    FUNCT_1: 12
    
        .= ((the
    Sorts of A 
    # ) 
    . ( 
    the_arity_of o)) by 
    MSUALG_1:def 1;
    
        
    
        
    
    A11: for x be 
    object st x 
    in ((the 
    Sorts of A 
    # ) 
    . ao) holds (f 
    . x) 
    in ((( 
    OSClass R) 
    # ) 
    . ao) 
    
        proof
    
          let x be
    object;
    
          assume x
    in ((the 
    Sorts of A 
    # ) 
    . ao); 
    
          then
    
          reconsider x1 = x as
    Element of D by 
    A10,
    MSUALG_1:def 4;
    
          (f
    . x1) 
    = (R 
    #_os x1) & ((( 
    OSClass R) 
    # ) 
    . ao) 
    = ( 
    product (( 
    OSClass R) 
    * ao)) by 
    A8,
    FINSEQ_2:def 5;
    
          hence thesis;
    
        end;
    
        o
    in ( 
    dom ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S)) by 
    A9,
    PARTFUN1:def 2;
    
        
    
        then ((((
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) 
    = ((( 
    OSClass R) 
    # ) 
    . (the 
    Arity of S 
    . o)) by 
    FUNCT_1: 12
    
        .= (((
    OSClass R) 
    # ) 
    . ao) by 
    MSUALG_1:def 1;
    
        then
    
        reconsider f as
    Function of (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . o), (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) by 
    A8,
    A10,
    A11,
    FUNCT_2: 3,
    MSUALG_1:def 4;
    
        take f;
    
        thus thesis by
    A8;
    
      end;
    
      uniqueness
    
      proof
    
        set ao = (
    the_arity_of o); 
    
        let f,g be
    Function of (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . o), (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o); 
    
        assume that
    
        
    
    A12: for x be 
    Element of ( 
    Args (o,A)) holds (f 
    . x) 
    = (R 
    #_os x) and 
    
        
    
    A13: for x be 
    Element of ( 
    Args (o,A)) holds (g 
    . x) 
    = (R 
    #_os x); 
    
        o
    in the 
    carrier' of S; 
    
        then o
    in ( 
    dom ((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S)) by 
    PARTFUN1:def 2;
    
        
    
        then
    
        
    
    A14: (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . o) 
    = ((the 
    Sorts of A 
    # ) 
    . (the 
    Arity of S 
    . o)) by 
    FUNCT_1: 12
    
        .= ((the
    Sorts of A 
    # ) 
    . ( 
    the_arity_of o)) by 
    MSUALG_1:def 1;
    
        
    
    A15: 
    
        now
    
          let x be
    object;
    
          assume x
    in ((the 
    Sorts of A 
    # ) 
    . ao); 
    
          then
    
          reconsider x1 = x as
    Element of ( 
    Args (o,A)) by 
    A14,
    MSUALG_1:def 4;
    
          (f
    . x1) 
    = (R 
    #_os x1) by 
    A12;
    
          hence (f
    . x) 
    = (g 
    . x) by 
    A13;
    
        end;
    
        (
    dom f) 
    = ((the 
    Sorts of A 
    # ) 
    . ao) & ( 
    dom g) 
    = ((the 
    Sorts of A 
    # ) 
    . ao) by 
    A14,
    FUNCT_2:def 1;
    
        hence thesis by
    A15,
    FUNCT_1: 2;
    
      end;
    
    end
    
    definition
    
      let S;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of A; 
    
      :: 
    
    OSALG_4:def16
    
      func
    
    OSQuotRes R -> 
    ManySortedFunction of (the 
    Sorts of A 
    * the 
    ResultSort of S), (( 
    OSClass R) 
    * the 
    ResultSort of S) means for o be 
    OperSymbol of S holds (it 
    . o) 
    = ( 
    OSQuotRes (R,o)); 
    
      existence
    
      proof
    
        defpred
    
    P[
    object, 
    object] means for o be
    OperSymbol of S st o 
    = $1 holds $2 
    = ( 
    OSQuotRes (R,o)); 
    
        set O = the
    carrier' of S; 
    
        
    
        
    
    A1: for x be 
    object st x 
    in O holds ex y be 
    object st 
    P[x, y]
    
        proof
    
          let x be
    object;
    
          assume x
    in O; 
    
          then
    
          reconsider x1 = x as
    OperSymbol of S; 
    
          take (
    OSQuotRes (R,x1)); 
    
          thus thesis;
    
        end;
    
        consider f be
    Function such that 
    
        
    
    A2: ( 
    dom f) 
    = O & for x be 
    object st x 
    in O holds 
    P[x, (f
    . x)] from 
    CLASSES1:sch 1(
    A1);
    
        reconsider f as
    ManySortedSet of O by 
    A2,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for x be
    object st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Function
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom f); 
    
          then
    
          reconsider x1 = x as
    OperSymbol of S; 
    
          (f
    . x1) 
    = ( 
    OSQuotRes (R,x1)) by 
    A2;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of O by 
    FUNCOP_1:def 6;
    
        for i be
    object st i 
    in O holds (f 
    . i) is 
    Function of ((the 
    Sorts of A 
    * the 
    ResultSort of S) 
    . i), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . i) 
    
        proof
    
          let i be
    object;
    
          assume i
    in O; 
    
          then
    
          reconsider i1 = i as
    OperSymbol of S; 
    
          (f
    . i1) 
    = ( 
    OSQuotRes (R,i1)) by 
    A2;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of (the 
    Sorts of A 
    * the 
    ResultSort of S), (( 
    OSClass R) 
    * the 
    ResultSort of S) by 
    PBOOLE:def 15;
    
        take f;
    
        thus thesis by
    A2;
    
      end;
    
      uniqueness
    
      proof
    
        let f,g be
    ManySortedFunction of (the 
    Sorts of A 
    * the 
    ResultSort of S), (( 
    OSClass R) 
    * the 
    ResultSort of S); 
    
        assume that
    
        
    
    A3: for o be 
    OperSymbol of S holds (f 
    . o) 
    = ( 
    OSQuotRes (R,o)) and 
    
        
    
    A4: for o be 
    OperSymbol of S holds (g 
    . o) 
    = ( 
    OSQuotRes (R,o)); 
    
        now
    
          let i be
    object;
    
          assume i
    in the 
    carrier' of S; 
    
          then
    
          reconsider i1 = i as
    OperSymbol of S; 
    
          (f
    . i1) 
    = ( 
    OSQuotRes (R,i1)) by 
    A3;
    
          hence (f
    . i) 
    = (g 
    . i) by 
    A4;
    
        end;
    
        hence thesis by
    PBOOLE: 3;
    
      end;
    
      :: 
    
    OSALG_4:def17
    
      func
    
    OSQuotArgs R -> 
    ManySortedFunction of ((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S), ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) means for o be 
    OperSymbol of S holds (it 
    . o) 
    = ( 
    OSQuotArgs (R,o)); 
    
      existence
    
      proof
    
        defpred
    
    P[
    object, 
    object] means for o be
    OperSymbol of S st o 
    = $1 holds $2 
    = ( 
    OSQuotArgs (R,o)); 
    
        set O = the
    carrier' of S; 
    
        
    
        
    
    A5: for x be 
    object st x 
    in O holds ex y be 
    object st 
    P[x, y]
    
        proof
    
          let x be
    object;
    
          assume x
    in O; 
    
          then
    
          reconsider x1 = x as
    OperSymbol of S; 
    
          take (
    OSQuotArgs (R,x1)); 
    
          thus thesis;
    
        end;
    
        consider f be
    Function such that 
    
        
    
    A6: ( 
    dom f) 
    = O & for x be 
    object st x 
    in O holds 
    P[x, (f
    . x)] from 
    CLASSES1:sch 1(
    A5);
    
        reconsider f as
    ManySortedSet of O by 
    A6,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for x be
    object st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Function
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom f); 
    
          then
    
          reconsider x1 = x as
    OperSymbol of S; 
    
          (f
    . x1) 
    = ( 
    OSQuotArgs (R,x1)) by 
    A6;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of O by 
    FUNCOP_1:def 6;
    
        for i be
    object st i 
    in O holds (f 
    . i) is 
    Function of (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . i), (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . i) 
    
        proof
    
          let i be
    object;
    
          assume i
    in O; 
    
          then
    
          reconsider i1 = i as
    OperSymbol of S; 
    
          (f
    . i1) 
    = ( 
    OSQuotArgs (R,i1)) by 
    A6;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of ((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S), ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) by 
    PBOOLE:def 15;
    
        take f;
    
        thus thesis by
    A6;
    
      end;
    
      uniqueness
    
      proof
    
        let f,g be
    ManySortedFunction of ((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S), ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S); 
    
        assume that
    
        
    
    A7: for o be 
    OperSymbol of S holds (f 
    . o) 
    = ( 
    OSQuotArgs (R,o)) and 
    
        
    
    A8: for o be 
    OperSymbol of S holds (g 
    . o) 
    = ( 
    OSQuotArgs (R,o)); 
    
        now
    
          let i be
    object;
    
          assume i
    in the 
    carrier' of S; 
    
          then
    
          reconsider i1 = i as
    OperSymbol of S; 
    
          (f
    . i1) 
    = ( 
    OSQuotArgs (R,i1)) by 
    A7;
    
          hence (f
    . i) 
    = (g 
    . i) by 
    A8;
    
        end;
    
        hence thesis by
    PBOOLE: 3;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:14
    
    
    
    
    
    Th14: for A be 
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of A, x be 
    set st x 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) holds ex a be 
    Element of ( 
    Args (o,A)) st x 
    = (R 
    #_os a) 
    
    proof
    
      let A be
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of A, x be 
    set;
    
      assume
    
      
    
    A1: x 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o); 
    
      set ar = (
    the_arity_of o); 
    
      
    
      
    
    A2: ar 
    = (the 
    Arity of S 
    . o) by 
    MSUALG_1:def 1;
    
      then ((((
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) 
    = ( 
    product (( 
    OSClass R) 
    * ar)) by 
    MSAFREE: 1;
    
      then
    
      consider f be
    Function such that 
    
      
    
    A3: f 
    = x and 
    
      
    
    A4: ( 
    dom f) 
    = ( 
    dom (( 
    OSClass R) 
    * ar)) and 
    
      
    
    A5: for y be 
    object st y 
    in ( 
    dom (( 
    OSClass R) 
    * ar)) holds (f 
    . y) 
    in ((( 
    OSClass R) 
    * ar) 
    . y) by 
    A1,
    CARD_3:def 5;
    
      defpred
    
    P[
    object, 
    object] means $2
    in (the 
    Sorts of A 
    . (ar 
    /. $1)) & $2 
    in (f 
    . $1); 
    
      
    
      
    
    A6: ( 
    dom (( 
    OSClass R) 
    * ar)) 
    = ( 
    dom ar) by 
    PARTFUN1:def 2;
    
      
    
      
    
    A7: for n be 
    Nat st n 
    in ( 
    dom f) holds (f 
    . n) 
    in ( 
    OSClass (R,(ar 
    /. n))) 
    
      proof
    
        let n be
    Nat;
    
        reconsider s = (ar
    /. n) as 
    Element of S; 
    
        assume
    
        
    
    A8: n 
    in ( 
    dom f); 
    
        then (ar
    . n) 
    = (ar 
    /. n) by 
    A4,
    A6,
    PARTFUN1:def 6;
    
        
    
        then (((
    OSClass R) 
    * ar) 
    . n) 
    = (( 
    OSClass R) 
    . s) by 
    A4,
    A8,
    FUNCT_1: 12
    
        .= (
    OSClass (R,s)) by 
    Def11;
    
        hence thesis by
    A4,
    A5,
    A8;
    
      end;
    
      
    
      
    
    A9: for a be 
    object st a 
    in ( 
    dom f) holds ex b be 
    object st 
    P[a, b]
    
      proof
    
        let a be
    object;
    
        reconsider s = (ar
    /. a) as 
    Element of S; 
    
        assume
    
        
    
    A10: a 
    in ( 
    dom f); 
    
        then
    
        reconsider n = a as
    Nat by 
    A4;
    
        (f
    . n) 
    in ( 
    OSClass (R,s)) by 
    A7,
    A10;
    
        then
    
        consider x be
    set such that 
    
        
    
    A11: x 
    in (the 
    Sorts of A 
    . s) & (f 
    . n) 
    = ( 
    Class (( 
    CompClass (R,( 
    CComp s))),x)) by 
    Def10;
    
        take x;
    
        thus thesis by
    A11,
    Th5,
    EQREL_1: 20;
    
      end;
    
      consider g be
    Function such that 
    
      
    
    A12: ( 
    dom g) 
    = ( 
    dom f) & for a be 
    object st a 
    in ( 
    dom f) holds 
    P[a, (g
    . a)] from 
    CLASSES1:sch 1(
    A9);
    
      (
    dom the 
    Sorts of A) 
    = the 
    carrier of S by 
    PARTFUN1:def 2;
    
      then (
    rng ar) 
    c= ( 
    dom the 
    Sorts of A); 
    
      then
    
      
    
    A13: ( 
    dom g) 
    = ( 
    dom (the 
    Sorts of A 
    * ar)) by 
    A4,
    A6,
    A12,
    RELAT_1: 27;
    
      
    
      
    
    A14: for y be 
    object st y 
    in ( 
    dom (the 
    Sorts of A 
    * ar)) holds (g 
    . y) 
    in ((the 
    Sorts of A 
    * ar) 
    . y) 
    
      proof
    
        let y be
    object;
    
        assume
    
        
    
    A15: y 
    in ( 
    dom (the 
    Sorts of A 
    * ar)); 
    
        then
    
        reconsider n = y as
    Nat;
    
        reconsider s = (ar
    /. n) as 
    Element of S; 
    
        (ar
    . n) 
    = (ar 
    /. n) & (g 
    . n) 
    in (the 
    Sorts of A 
    . s) by 
    A4,
    A6,
    A12,
    A13,
    A15,
    PARTFUN1:def 6;
    
        hence thesis by
    A15,
    FUNCT_1: 12;
    
      end;
    
      (
    Args (o,A)) 
    = (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of S) 
    . o) by 
    MSUALG_1:def 4
    
      .= (
    product (the 
    Sorts of A 
    * ar)) by 
    A2,
    MSAFREE: 1;
    
      then
    
      reconsider g as
    Element of ( 
    Args (o,A)) by 
    A13,
    A14,
    CARD_3: 9;
    
      
    
      
    
    A16: for x be 
    object st x 
    in ( 
    dom ar) holds (f 
    . x) 
    = ((R 
    #_os g) 
    . x) 
    
      proof
    
        let x be
    object;
    
        assume
    
        
    
    A17: x 
    in ( 
    dom ar); 
    
        then
    
        reconsider n = x as
    Nat;
    
        
    
        
    
    A18: (ex z be 
    Element of (the 
    Sorts of A 
    . (( 
    the_arity_of o) 
    /. n)) st z 
    = (g 
    . n) & ((R 
    #_os g) 
    . n) 
    = ( 
    OSClass (R,z))) & (g 
    . n) 
    in (f 
    . n) by 
    A4,
    A6,
    A12,
    A17,
    Def13;
    
        reconsider s = (ar
    /. n) as 
    Element of S; 
    
        (f
    . n) 
    in ( 
    OSClass (R,s)) by 
    A4,
    A6,
    A7,
    A17;
    
        then
    
        consider u be
    set such that 
    
        
    
    A19: u 
    in (the 
    Sorts of A 
    . s) and 
    
        
    
    A20: (f 
    . n) 
    = ( 
    Class (( 
    CompClass (R,( 
    CComp s))),u)) by 
    Def10;
    
        u
    in (the 
    Sorts of A 
    -carrier_of ( 
    CComp s)) by 
    A19,
    Th5;
    
        hence thesis by
    A18,
    A20,
    EQREL_1: 23;
    
      end;
    
      take g;
    
      (
    dom (R 
    #_os g)) 
    = ( 
    dom (( 
    OSClass R) 
    * ar)) by 
    CARD_3: 9;
    
      hence thesis by
    A3,
    A4,
    A6,
    A16,
    FUNCT_1: 2;
    
    end;
    
    definition
    
      let S, o;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of A; 
    
      :: 
    
    OSALG_4:def18
    
      func
    
    OSQuotCharact (R,o) -> 
    Function of (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o) means 
    
      :
    
    Def18: for a be 
    Element of ( 
    Args (o,A)) st (R 
    #_os a) 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) holds (it 
    . (R 
    #_os a)) 
    = ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . a); 
    
      existence
    
      proof
    
        defpred
    
    P[
    object, 
    object] means for a be
    Element of ( 
    Args (o,A)) st $1 
    = (R 
    #_os a) holds $2 
    = ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . a); 
    
        set Ca = ((((
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o), Cr = ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o); 
    
        
    
        
    
    A1: for x be 
    object st x 
    in Ca holds ex y be 
    object st y 
    in Cr & 
    P[x, y]
    
        proof
    
          set ro = (
    the_result_sort_of o), ar = ( 
    the_arity_of o); 
    
          let x be
    object;
    
          assume x
    in Ca; 
    
          then
    
          consider a be
    Element of ( 
    Args (o,A)) such that 
    
          
    
    A2: x 
    = (R 
    #_os a) by 
    Th14;
    
          take y = (((
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . a); 
    
          
    
          
    
    A3: o 
    in the 
    carrier' of S; 
    
          then o
    in ( 
    dom (( 
    OSClass R) 
    * the 
    ResultSort of S)) by 
    PARTFUN1:def 2;
    
          
    
          then
    
          
    
    A4: ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o) 
    = (( 
    OSClass R) 
    . (the 
    ResultSort of S 
    . o)) by 
    FUNCT_1: 12
    
          .= ((
    OSClass R) 
    . ro) by 
    MSUALG_1:def 2;
    
          o
    in ( 
    dom (the 
    Sorts of A 
    * the 
    ResultSort of S)) by 
    A3,
    PARTFUN1:def 2;
    
          
    
          then
    
          
    
    A5: ((the 
    Sorts of A 
    * the 
    ResultSort of S) 
    . o) 
    = (the 
    Sorts of A 
    . (the 
    ResultSort of S 
    . o)) by 
    FUNCT_1: 12
    
          .= (the
    Sorts of A 
    . ro) by 
    MSUALG_1:def 2;
    
          then
    
          
    
    A6: ( 
    dom ( 
    OSQuotRes (R,o))) 
    = (the 
    Sorts of A 
    . ro) & ( 
    Result (o,A)) 
    = (the 
    Sorts of A 
    . ro) by 
    FUNCT_2:def 1,
    MSUALG_1:def 5;
    
          (
    rng ( 
    Den (o,A))) 
    c= ( 
    Result (o,A)); 
    
          then
    
          
    
    A7: ( 
    dom ( 
    Den (o,A))) 
    = ( 
    Args (o,A)) & ( 
    dom (( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A)))) 
    = ( 
    dom ( 
    Den (o,A))) by 
    A6,
    FUNCT_2:def 1,
    RELAT_1: 27;
    
          ((
    OSQuotRes (R,o)) 
    . (( 
    Den (o,A)) 
    . a)) 
    in ( 
    rng ( 
    OSQuotRes (R,o))) by 
    A6,
    FUNCT_1:def 3;
    
          then ((
    OSQuotRes (R,o)) 
    . (( 
    Den (o,A)) 
    . a)) 
    in (( 
    OSClass R) 
    . ro) by 
    A4;
    
          hence y
    in Cr by 
    A4,
    A7,
    FUNCT_1: 12;
    
          let b be
    Element of ( 
    Args (o,A)); 
    
          reconsider da = ((
    Den (o,A)) 
    . a), db = (( 
    Den (o,A)) 
    . b) as 
    Element of (the 
    Sorts of A 
    . ro) by 
    A5,
    MSUALG_1:def 5;
    
          
    
          
    
    A8: ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . b) 
    = (( 
    OSQuotRes (R,o)) 
    . db) by 
    A7,
    FUNCT_1: 12
    
          .= (
    OSClass (R,db)) by 
    Def14
    
          .= (
    Class (( 
    CompClass (R,( 
    CComp ro))),db)); 
    
          assume
    
          
    
    A9: x 
    = (R 
    #_os b); 
    
          for n be
    Nat st n 
    in ( 
    dom a) holds 
    [(a
    . n), (b 
    . n)] 
    in (R 
    . (ar 
    /. n)) 
    
          proof
    
            let n be
    Nat;
    
            
    
            
    
    A10: ( 
    dom a) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
            assume n
    in ( 
    dom a); 
    
            then (ex ya be
    Element of (the 
    Sorts of A 
    . (ar 
    /. n)) st ya 
    = (a 
    . n) & ((R 
    #_os a) 
    . n) 
    = ( 
    OSClass (R,ya))) & ex yb be 
    Element of (the 
    Sorts of A 
    . (ar 
    /. n)) st yb 
    = (b 
    . n) & ((R 
    #_os b) 
    . n) 
    = ( 
    OSClass (R,yb)) by 
    A10,
    Def13;
    
            hence thesis by
    A2,
    A9,
    Th12;
    
          end;
    
          then ro
    in ( 
    CComp ro) & 
    [da, db]
    in (R 
    . ro) by 
    EQREL_1: 20,
    MSUALG_4:def 4;
    
          then
    
          
    
    A11: 
    [da, db]
    in ( 
    CompClass (R,( 
    CComp ro))) by 
    Def9;
    
          
    
          
    
    A12: da 
    in (the 
    Sorts of A 
    -carrier_of ( 
    CComp ro)) by 
    Th5;
    
          y
    = (( 
    OSQuotRes (R,o)) 
    . (( 
    Den (o,A)) 
    . a)) by 
    A7,
    FUNCT_1: 12
    
          .= (
    OSClass (R,da)) by 
    Def14
    
          .= (
    Class (( 
    CompClass (R,( 
    CComp ro))),da)); 
    
          hence thesis by
    A12,
    A8,
    A11,
    EQREL_1: 35;
    
        end;
    
        consider f be
    Function such that 
    
        
    
    A13: ( 
    dom f) 
    = Ca & ( 
    rng f) 
    c= Cr & for x be 
    object st x 
    in Ca holds 
    P[x, (f
    . x)] from 
    FUNCT_1:sch 6(
    A1);
    
        reconsider f as
    Function of (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o) by 
    A13,
    FUNCT_2: 2;
    
        take f;
    
        thus thesis by
    A13;
    
      end;
    
      uniqueness
    
      proof
    
        set ao = (
    the_arity_of o); 
    
        let F,G be
    Function of (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . o); 
    
        assume that
    
        
    
    A14: for a be 
    Element of ( 
    Args (o,A)) st (R 
    #_os a) 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) holds (F 
    . (R 
    #_os a)) 
    = ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . a) and 
    
        
    
    A15: for a be 
    Element of ( 
    Args (o,A)) st (R 
    #_os a) 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) holds (G 
    . (R 
    #_os a)) 
    = ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . a); 
    
        
    
        
    
    A16: ( 
    dom the 
    Arity of S) 
    = the 
    carrier' of S by 
    FUNCT_2:def 1;
    
        then (
    dom ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S)) 
    = ( 
    dom the 
    Arity of S) by 
    PARTFUN1:def 2;
    
        
    
        then
    
        
    
    A17: (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) 
    = ((( 
    OSClass R) 
    # ) 
    . (the 
    Arity of S 
    . o)) by 
    A16,
    FUNCT_1: 12
    
        .= (((
    OSClass R) 
    # ) 
    . ao) by 
    MSUALG_1:def 1;
    
        
    
    A18: 
    
        now
    
          let x be
    object;
    
          assume
    
          
    
    A19: x 
    in ((( 
    OSClass R) 
    # ) 
    . ao); 
    
          then
    
          consider a be
    Element of ( 
    Args (o,A)) such that 
    
          
    
    A20: x 
    = (R 
    #_os a) by 
    A17,
    Th14;
    
          (F
    . x) 
    = ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,A))) 
    . a) by 
    A14,
    A17,
    A19,
    A20;
    
          hence (F
    . x) 
    = (G 
    . x) by 
    A15,
    A17,
    A19,
    A20;
    
        end;
    
        (
    dom F) 
    = ((( 
    OSClass R) 
    # ) 
    . ao) & ( 
    dom G) 
    = ((( 
    OSClass R) 
    # ) 
    . ao) by 
    A17,
    FUNCT_2:def 1;
    
        hence thesis by
    A18,
    FUNCT_1: 2;
    
      end;
    
    end
    
    definition
    
      let S;
    
      let A be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of A; 
    
      :: 
    
    OSALG_4:def19
    
      func
    
    OSQuotCharact R -> 
    ManySortedFunction of ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S), (( 
    OSClass R) 
    * the 
    ResultSort of S) means 
    
      :
    
    Def19: for o be 
    OperSymbol of S holds (it 
    . o) 
    = ( 
    OSQuotCharact (R,o)); 
    
      existence
    
      proof
    
        defpred
    
    P[
    object, 
    object] means for o be
    OperSymbol of S st o 
    = $1 holds $2 
    = ( 
    OSQuotCharact (R,o)); 
    
        set O = the
    carrier' of S; 
    
        
    
        
    
    A1: for x be 
    object st x 
    in O holds ex y be 
    object st 
    P[x, y]
    
        proof
    
          let x be
    object;
    
          assume x
    in O; 
    
          then
    
          reconsider x1 = x as
    OperSymbol of S; 
    
          take (
    OSQuotCharact (R,x1)); 
    
          thus thesis;
    
        end;
    
        consider f be
    Function such that 
    
        
    
    A2: ( 
    dom f) 
    = O & for x be 
    object st x 
    in O holds 
    P[x, (f
    . x)] from 
    CLASSES1:sch 1(
    A1);
    
        reconsider f as
    ManySortedSet of O by 
    A2,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for x be
    object st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Function
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom f); 
    
          then
    
          reconsider x1 = x as
    OperSymbol of S; 
    
          (f
    . x1) 
    = ( 
    OSQuotCharact (R,x1)) by 
    A2;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of O by 
    FUNCOP_1:def 6;
    
        for i be
    object st i 
    in O holds (f 
    . i) is 
    Function of (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . i), ((( 
    OSClass R) 
    * the 
    ResultSort of S) 
    . i) 
    
        proof
    
          let i be
    object;
    
          assume i
    in O; 
    
          then
    
          reconsider i1 = i as
    OperSymbol of S; 
    
          (f
    . i1) 
    = ( 
    OSQuotCharact (R,i1)) by 
    A2;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S), (( 
    OSClass R) 
    * the 
    ResultSort of S) by 
    PBOOLE:def 15;
    
        take f;
    
        thus thesis by
    A2;
    
      end;
    
      uniqueness
    
      proof
    
        let f,g be
    ManySortedFunction of ((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S), (( 
    OSClass R) 
    * the 
    ResultSort of S); 
    
        assume that
    
        
    
    A3: for o be 
    OperSymbol of S holds (f 
    . o) 
    = ( 
    OSQuotCharact (R,o)) and 
    
        
    
    A4: for o be 
    OperSymbol of S holds (g 
    . o) 
    = ( 
    OSQuotCharact (R,o)); 
    
        now
    
          let i be
    object;
    
          assume i
    in the 
    carrier' of S; 
    
          then
    
          reconsider i1 = i as
    OperSymbol of S; 
    
          (f
    . i1) 
    = ( 
    OSQuotCharact (R,i1)) by 
    A3;
    
          hence (f
    . i) 
    = (g 
    . i) by 
    A4;
    
        end;
    
        hence thesis by
    PBOOLE: 3;
    
      end;
    
    end
    
    definition
    
      let S;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of U1; 
    
      :: 
    
    OSALG_4:def20
    
      func
    
    QuotOSAlg (U1,R) -> 
    OSAlgebra of S equals 
    MSAlgebra (# ( 
    OSClass R), ( 
    OSQuotCharact R) #); 
    
      coherence by
    OSALG_1: 17;
    
    end
    
    registration
    
      let S;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of U1; 
    
      cluster ( 
    QuotOSAlg (U1,R)) -> 
    strict
    non-empty;
    
      coherence by
    MSUALG_1:def 3;
    
    end
    
    definition
    
      let S;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of U1; 
    
      let s be
    Element of S; 
    
      :: 
    
    OSALG_4:def21
    
      func
    
    OSNat_Hom (U1,R,s) -> 
    Function of (the 
    Sorts of U1 
    . s), ( 
    OSClass (R,s)) means 
    
      :
    
    Def21: for x be 
    Element of (the 
    Sorts of U1 
    . s) holds (it 
    . x) 
    = ( 
    OSClass (R,x)); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of (the 
    Sorts of U1 
    . s)) = ( 
    OSClass (R,$1)); 
    
        thus ex F be
    Function of (the 
    Sorts of U1 
    . s), ( 
    OSClass (R,s)) st for x be 
    Element of (the 
    Sorts of U1 
    . s) holds (F 
    . x) 
    =  
    F(x) from
    FUNCT_2:sch 4;
    
      end;
    
      uniqueness
    
      proof
    
        let f,g be
    Function of (the 
    Sorts of U1 
    . s), ( 
    OSClass (R,s)); 
    
        assume that
    
        
    
    A1: for x be 
    Element of (the 
    Sorts of U1 
    . s) holds (f 
    . x) 
    = ( 
    OSClass (R,x)) and 
    
        
    
    A2: for x be 
    Element of (the 
    Sorts of U1 
    . s) holds (g 
    . x) 
    = ( 
    OSClass (R,x)); 
    
        
    
    A3: 
    
        now
    
          let x be
    object;
    
          assume x
    in (the 
    Sorts of U1 
    . s); 
    
          then
    
          reconsider x1 = x as
    Element of (the 
    Sorts of U1 
    . s); 
    
          (f
    . x) 
    = ( 
    OSClass (R,x1)) by 
    A1;
    
          hence (f
    . x) 
    = (g 
    . x) by 
    A2;
    
        end;
    
        (
    dom f) 
    = (the 
    Sorts of U1 
    . s) & ( 
    dom g) 
    = (the 
    Sorts of U1 
    . s) by 
    FUNCT_2:def 1;
    
        hence thesis by
    A3,
    FUNCT_1: 2;
    
      end;
    
    end
    
    definition
    
      let S;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    OSCongruence of U1; 
    
      :: 
    
    OSALG_4:def22
    
      func
    
    OSNat_Hom (U1,R) -> 
    ManySortedFunction of U1, ( 
    QuotOSAlg (U1,R)) means 
    
      :
    
    Def22: for s be 
    Element of S holds (it 
    . s) 
    = ( 
    OSNat_Hom (U1,R,s)); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of S) = ( 
    OSNat_Hom (U1,R,$1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = the 
    carrier of S & for d be 
    Element of S holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        reconsider f as
    ManySortedSet of the 
    carrier of S by 
    A1,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for x be
    object st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Function
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom f); 
    
          then
    
          reconsider y = x as
    Element of S; 
    
          (f
    . y) 
    = ( 
    OSNat_Hom (U1,R,y)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of the 
    carrier of S by 
    FUNCOP_1:def 6;
    
        for i be
    object st i 
    in the 
    carrier of S holds (f 
    . i) is 
    Function of (the 
    Sorts of U1 
    . i), (( 
    OSClass R) 
    . i) 
    
        proof
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    Element of S; 
    
          (
    OSClass (R,s)) 
    = (( 
    OSClass R) 
    . i) & (f 
    . s) 
    = ( 
    OSNat_Hom (U1,R,s)) by 
    A1,
    Def11;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of the 
    Sorts of U1, ( 
    OSClass R) by 
    PBOOLE:def 15;
    
        reconsider f as
    ManySortedFunction of U1, ( 
    QuotOSAlg (U1,R)); 
    
        take f;
    
        thus thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        let F,G be
    ManySortedFunction of U1, ( 
    QuotOSAlg (U1,R)); 
    
        assume that
    
        
    
    A2: for s be 
    Element of S holds (F 
    . s) 
    = ( 
    OSNat_Hom (U1,R,s)) and 
    
        
    
    A3: for s be 
    Element of S holds (G 
    . s) 
    = ( 
    OSNat_Hom (U1,R,s)); 
    
        now
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    SortSymbol of S; 
    
          (F
    . s) 
    = ( 
    OSNat_Hom (U1,R,s)) by 
    A2;
    
          hence (F
    . i) 
    = (G 
    . i) by 
    A3;
    
        end;
    
        hence thesis by
    PBOOLE: 3;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:15
    
    for U1 be
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of U1 holds ( 
    OSNat_Hom (U1,R)) 
    is_epimorphism (U1,( 
    QuotOSAlg (U1,R))) & ( 
    OSNat_Hom (U1,R)) is 
    order-sorted
    
    proof
    
      let U1 be
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of U1; 
    
      set F = (
    OSNat_Hom (U1,R)), QA = ( 
    QuotOSAlg (U1,R)), S1 = the 
    Sorts of U1; 
    
      for o be
    Element of the 
    carrier' of S st ( 
    Args (o,U1)) 
    <>  
    {} holds for x be 
    Element of ( 
    Args (o,U1)) holds ((F 
    . ( 
    the_result_sort_of o)) 
    . (( 
    Den (o,U1)) 
    . x)) 
    = (( 
    Den (o,QA)) 
    . (F 
    # x)) 
    
      proof
    
        let o be
    Element of the 
    carrier' of S such that ( 
    Args (o,U1)) 
    <>  
    {} ; 
    
        let x be
    Element of ( 
    Args (o,U1)); 
    
        set ro = (
    the_result_sort_of o), ar = ( 
    the_arity_of o); 
    
        (the
    Arity of S 
    . o) 
    = ar by 
    MSUALG_1:def 1;
    
        then
    
        
    
    A1: (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o) 
    = ( 
    product (( 
    OSClass R) 
    * ar)) by 
    MSAFREE: 1;
    
        
    
        
    
    A2: ( 
    dom x) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        
    
        
    
    A3: for a be 
    object st a 
    in ( 
    dom ar) holds ((F 
    # x) 
    . a) 
    = ((R 
    #_os x) 
    . a) 
    
        proof
    
          let a be
    object;
    
          assume
    
          
    
    A4: a 
    in ( 
    dom ar); 
    
          then
    
          reconsider n = a as
    Nat;
    
          set Fo = (
    OSNat_Hom (U1,R,(ar 
    /. n))), s = (ar 
    /. n); 
    
          
    
          
    
    A5: ex z be 
    Element of (S1 
    . s) st z 
    = (x 
    . n) & ((R 
    #_os x) 
    . n) 
    = ( 
    OSClass (R,z)) by 
    A4,
    Def13;
    
          
    
          
    
    A6: n 
    in ( 
    dom (the 
    Sorts of U1 
    * ar)) by 
    A4,
    PARTFUN1:def 2;
    
          
    
          then ((the
    Sorts of U1 
    * ar) 
    . n) 
    = (the 
    Sorts of U1 
    . (ar 
    . n)) by 
    FUNCT_1: 12
    
          .= (S1
    . s) by 
    A4,
    PARTFUN1:def 6;
    
          then
    
          reconsider xn = (x
    . n) as 
    Element of (S1 
    . s) by 
    A6,
    MSUALG_3: 6;
    
          
    
          thus ((F
    # x) 
    . a) 
    = ((F 
    . (ar 
    /. n)) 
    . (x 
    . n)) by 
    A2,
    A4,
    MSUALG_3:def 6
    
          .= (Fo
    . xn) by 
    Def22
    
          .= ((R
    #_os x) 
    . a) by 
    A5,
    Def21;
    
        end;
    
        (
    dom the 
    Sorts of U1) 
    = the 
    carrier of S by 
    PARTFUN1:def 2;
    
        then (
    rng the 
    ResultSort of S) 
    c= ( 
    dom the 
    Sorts of U1); 
    
        then (
    dom the 
    ResultSort of S) 
    = the 
    carrier' of S & ( 
    dom (the 
    Sorts of U1 
    * the 
    ResultSort of S)) 
    = ( 
    dom the 
    ResultSort of S) by 
    FUNCT_2:def 1,
    RELAT_1: 27;
    
        
    
        then
    
        
    
    A7: ((the 
    Sorts of U1 
    * the 
    ResultSort of S) 
    . o) 
    = (the 
    Sorts of U1 
    . (the 
    ResultSort of S 
    . o)) by 
    FUNCT_1: 12
    
        .= (the
    Sorts of U1 
    . ro) by 
    MSUALG_1:def 2;
    
        then
    
        reconsider dx = ((
    Den (o,U1)) 
    . x) as 
    Element of (S1 
    . ro) by 
    MSUALG_1:def 5;
    
        (
    rng ( 
    Den (o,U1))) 
    c= ( 
    Result (o,U1)) & ( 
    Result (o,U1)) 
    = (S1 
    . ro) by 
    A7,
    MSUALG_1:def 5;
    
        then (
    rng ( 
    Den (o,U1))) 
    c= ( 
    dom ( 
    OSQuotRes (R,o))) by 
    A7,
    FUNCT_2:def 1;
    
        then
    
        
    
    A8: ( 
    dom ( 
    Den (o,U1))) 
    = ( 
    Args (o,U1)) & ( 
    dom (( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,U1)))) 
    = ( 
    dom ( 
    Den (o,U1))) by 
    FUNCT_2:def 1,
    RELAT_1: 27;
    
        (
    dom ( 
    OSClass R)) 
    = the 
    carrier of S by 
    PARTFUN1:def 2;
    
        then (
    dom (R 
    #_os x)) 
    = ( 
    dom (( 
    OSClass R) 
    * ( 
    the_arity_of o))) & ( 
    rng ar) 
    c= ( 
    dom ( 
    OSClass R)) by 
    CARD_3: 9;
    
        then (
    dom (F 
    # x)) 
    = ( 
    dom ar) & ( 
    dom (R 
    #_os x)) 
    = ( 
    dom ar) by 
    MSUALG_3: 6,
    RELAT_1: 27;
    
        then
    
        
    
    A9: (F 
    # x) 
    = (R 
    #_os x) by 
    A3,
    FUNCT_1: 2;
    
        (
    Den (o,QA)) 
    = (( 
    OSQuotCharact R) 
    . o) by 
    MSUALG_1:def 6
    
        .= (
    OSQuotCharact (R,o)) by 
    Def19;
    
        
    
        then ((
    Den (o,QA)) 
    . (F 
    # x)) 
    = ((( 
    OSQuotRes (R,o)) 
    * ( 
    Den (o,U1))) 
    . x) by 
    A1,
    A9,
    Def18
    
        .= ((
    OSQuotRes (R,o)) 
    . dx) by 
    A8,
    FUNCT_1: 12
    
        .= (
    OSClass (R,dx)) by 
    Def14
    
        .= ((
    OSNat_Hom (U1,R,ro)) 
    . dx) by 
    Def21
    
        .= ((F
    . ro) 
    . (( 
    Den (o,U1)) 
    . x)) by 
    Def22;
    
        hence thesis;
    
      end;
    
      hence F
    is_homomorphism (U1,QA); 
    
      for i be
    set st i 
    in the 
    carrier of S holds ( 
    rng (F 
    . i)) 
    = (the 
    Sorts of QA 
    . i) 
    
      proof
    
        let i be
    set;
    
        assume i
    in the 
    carrier of S; 
    
        then
    
        reconsider s = i as
    Element of S; 
    
        reconsider f = (F
    . i) as 
    Function of (S1 
    . s), (the 
    Sorts of QA 
    . s) by 
    PBOOLE:def 15;
    
        
    
        
    
    A10: ( 
    dom f) 
    = (S1 
    . s) by 
    FUNCT_2:def 1;
    
        
    
        
    
    A11: (the 
    Sorts of QA 
    . s) 
    = ( 
    OSClass (R,s)) by 
    Def11;
    
        for x be
    object st x 
    in (the 
    Sorts of QA 
    . i) holds x 
    in ( 
    rng f) 
    
        proof
    
          let x be
    object;
    
          
    
          
    
    A12: f 
    = ( 
    OSNat_Hom (U1,R,s)) by 
    Def22;
    
          assume x
    in (the 
    Sorts of QA 
    . i); 
    
          then
    
          consider a1 be
    set such that 
    
          
    
    A13: a1 
    in (S1 
    . s) and 
    
          
    
    A14: x 
    = ( 
    Class (( 
    CompClass (R,( 
    CComp s))),a1)) by 
    A11,
    Def10;
    
          reconsider a2 = a1 as
    Element of (S1 
    . s) by 
    A13;
    
          (
    OSClass (R,a2)) 
    = x & (f 
    . a1) 
    in ( 
    rng f) by 
    A10,
    A13,
    A14,
    FUNCT_1:def 3;
    
          hence thesis by
    A12,
    Def21;
    
        end;
    
        then (the
    Sorts of QA 
    . i) 
    c= ( 
    rng f); 
    
        hence thesis;
    
      end;
    
      hence F is
    "onto";
    
      thus F is
    order-sorted
    
      proof
    
        reconsider S2 = S1 as
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        let s1,s2 be
    Element of S such that 
    
        
    
    A15: s1 
    <= s2; 
    
        
    
        
    
    A16: (S2 
    . s1) 
    c= (S2 
    . s2) by 
    A15,
    OSALG_1:def 16;
    
        let a1 be
    set such that 
    
        
    
    A17: a1 
    in ( 
    dom (F 
    . s1)); 
    
        
    
        
    
    A18: a1 
    in (S1 
    . s1) by 
    A17;
    
        then
    
        reconsider b2 = a1 as
    Element of (S1 
    . s2) by 
    A16;
    
        (
    dom (F 
    . s2)) 
    = (S1 
    . s2) by 
    FUNCT_2:def 1;
    
        hence a1
    in ( 
    dom (F 
    . s2)) by 
    A16,
    A18;
    
        reconsider b1 = a1 as
    Element of (S1 
    . s1) by 
    A17;
    
        
    
        thus ((F
    . s1) 
    . a1) 
    = (( 
    OSNat_Hom (U1,R,s1)) 
    . b1) by 
    Def22
    
        .= (
    OSClass (R,b1)) by 
    Def21
    
        .= (
    OSClass (R,b2)) by 
    A15,
    Th4
    
        .= ((
    OSNat_Hom (U1,R,s2)) 
    . b2) by 
    Def21
    
        .= ((F
    . s2) 
    . a1) by 
    Def22;
    
      end;
    
    end;
    
    theorem :: 
    
    OSALG_4:16
    
    
    
    
    
    Th16: for U1,U2 be 
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 st F 
    is_homomorphism (U1,U2) & F is 
    order-sorted holds ( 
    MSCng F) is 
    OSCongruence of U1 
    
    proof
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 such that 
    
      
    
    A1: F 
    is_homomorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted;
    
      reconsider S1 = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
      (
    MSCng F) is 
    os-compatible
    
      proof
    
        let s1,s2 be
    Element of S such that 
    
        
    
    A3: s1 
    <= s2; 
    
        reconsider s3 = s1, s4 = s2 as
    SortSymbol of S; 
    
        let x,y be
    set such that 
    
        
    
    A4: x 
    in (the 
    Sorts of U1 
    . s1) & y 
    in (the 
    Sorts of U1 
    . s1); 
    
        reconsider x1 = x, y1 = y as
    Element of (the 
    Sorts of U1 
    . s1) by 
    A4;
    
        (S1
    . s3) 
    c= (S1 
    . s4) by 
    A3,
    OSALG_1:def 16;
    
        then
    
        reconsider x2 = x, y2 = y as
    Element of (the 
    Sorts of U1 
    . s2) by 
    A4;
    
        
    
        
    
    A5: 
    [x2, y2]
    in ( 
    MSCng (F,s2)) iff ((F 
    . s2) 
    . x2) 
    = ((F 
    . s2) 
    . y2) by 
    MSUALG_4:def 17;
    
        (
    dom (F 
    . s3)) 
    = (S1 
    . s3) by 
    FUNCT_2:def 1;
    
        then
    
        
    
    A6: ((F 
    . s3) 
    . x1) 
    = ((F 
    . s4) 
    . x1) & ((F 
    . s3) 
    . y1) 
    = ((F 
    . s4) 
    . y1) by 
    A2,
    A3;
    
        ((
    MSCng F) 
    . s1) 
    = ( 
    MSCng (F,s1)) by 
    A1,
    MSUALG_4:def 18;
    
        hence
    [x, y]
    in (( 
    MSCng F) 
    . s1) iff 
    [x, y]
    in (( 
    MSCng F) 
    . s2) by 
    A1,
    A5,
    A6,
    MSUALG_4:def 17,
    MSUALG_4:def 18;
    
      end;
    
      hence thesis by
    Def2;
    
    end;
    
    definition
    
      let S;
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S; 
    
      let F be
    ManySortedFunction of U1, U2; 
    
      assume
    
      
    
    A1: F 
    is_homomorphism (U1,U2) & F is 
    order-sorted;
    
      :: 
    
    OSALG_4:def23
    
      func
    
    OSCng (F) -> 
    OSCongruence of U1 equals 
    
      :
    
    Def23: ( 
    MSCng F); 
    
      correctness by
    A1,
    Th16;
    
    end
    
    definition
    
      let S;
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S; 
    
      let F be
    ManySortedFunction of U1, U2; 
    
      let s be
    Element of S; 
    
      assume that
    
      
    
    A1: F 
    is_homomorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted;
    
      :: 
    
    OSALG_4:def24
    
      func
    
    OSHomQuot (F,s) -> 
    Function of (the 
    Sorts of ( 
    QuotOSAlg (U1,( 
    OSCng F))) 
    . s), (the 
    Sorts of U2 
    . s) means 
    
      :
    
    Def24: for x be 
    Element of (the 
    Sorts of U1 
    . s) holds (it 
    . ( 
    OSClass (( 
    OSCng F),x))) 
    = ((F 
    . s) 
    . x); 
    
      existence
    
      proof
    
        set qa = (
    QuotOSAlg (U1,( 
    OSCng F))), cqa = the 
    Sorts of qa, S1 = the 
    Sorts of U1, S2 = the 
    Sorts of U2; 
    
        defpred
    
    P[
    object, 
    object] means for a be
    Element of (S1 
    . s) st $1 
    = ( 
    OSClass (( 
    OSCng F),a)) holds $2 
    = ((F 
    . s) 
    . a); 
    
        
    
        
    
    A3: (cqa 
    . s) 
    = ( 
    OSClass (( 
    OSCng F),s)) by 
    Def11;
    
        
    
        
    
    A4: for x be 
    object st x 
    in (cqa 
    . s) holds ex y be 
    object st y 
    in (S2 
    . s) & 
    P[x, y]
    
        proof
    
          let x be
    object;
    
          assume x
    in (cqa 
    . s); 
    
          then
    
          consider a be
    set such that 
    
          
    
    A5: a 
    in (the 
    Sorts of U1 
    . s) and 
    
          
    
    A6: x 
    = ( 
    Class (( 
    CompClass (( 
    OSCng F),( 
    CComp s))),a)) by 
    A3,
    Def10;
    
          reconsider a as
    Element of (S1 
    . s) by 
    A5;
    
          take y = ((F
    . s) 
    . a); 
    
          thus y
    in (S2 
    . s); 
    
          let b be
    Element of (S1 
    . s); 
    
          assume
    
          
    
    A7: x 
    = ( 
    OSClass (( 
    OSCng F),b)); 
    
          x
    = ( 
    OSClass (( 
    OSCng F),a)) by 
    A6;
    
          then
    [b, a]
    in (( 
    OSCng F) 
    . s) by 
    A7,
    Th12;
    
          then
    [b, a]
    in (( 
    MSCng F) 
    . s) by 
    A1,
    A2,
    Def23;
    
          then
    [b, a]
    in ( 
    MSCng (F,s)) by 
    A1,
    MSUALG_4:def 18;
    
          hence thesis by
    MSUALG_4:def 17;
    
        end;
    
        consider G be
    Function such that 
    
        
    
    A8: ( 
    dom G) 
    = (cqa 
    . s) & ( 
    rng G) 
    c= (S2 
    . s) & for x be 
    object st x 
    in (cqa 
    . s) holds 
    P[x, (G
    . x)] from 
    FUNCT_1:sch 6(
    A4);
    
        reconsider G as
    Function of (cqa 
    . s), (S2 
    . s) by 
    A8,
    FUNCT_2:def 1,
    RELSET_1: 4;
    
        take G;
    
        let a be
    Element of (S1 
    . s); 
    
        thus thesis by
    A3,
    A8;
    
      end;
    
      uniqueness
    
      proof
    
        set qa = (
    QuotOSAlg (U1,( 
    OSCng F))), cqa = the 
    Sorts of qa, u1 = the 
    Sorts of U1, u2 = the 
    Sorts of U2; 
    
        let H,G be
    Function of (cqa 
    . s), (u2 
    . s); 
    
        assume that
    
        
    
    A9: for a be 
    Element of (u1 
    . s) holds (H 
    . ( 
    OSClass (( 
    OSCng F),a))) 
    = ((F 
    . s) 
    . a) and 
    
        
    
    A10: for a be 
    Element of (u1 
    . s) holds (G 
    . ( 
    OSClass (( 
    OSCng F),a))) 
    = ((F 
    . s) 
    . a); 
    
        
    
        
    
    A11: (cqa 
    . s) 
    = ( 
    OSClass (( 
    OSCng F),s)) by 
    Def11;
    
        for x be
    object st x 
    in (cqa 
    . s) holds (H 
    . x) 
    = (G 
    . x) 
    
        proof
    
          let x be
    object;
    
          assume x
    in (cqa 
    . s); 
    
          then
    
          consider y be
    set such that 
    
          
    
    A12: y 
    in (the 
    Sorts of U1 
    . s) and 
    
          
    
    A13: x 
    = ( 
    Class (( 
    CompClass (( 
    OSCng F),( 
    CComp s))),y)) by 
    A11,
    Def10;
    
          reconsider y1 = y as
    Element of (u1 
    . s) by 
    A12;
    
          
    
          
    
    A14: ( 
    OSClass (( 
    OSCng F),y1)) 
    = x by 
    A13;
    
          
    
          hence (H
    . x) 
    = ((F 
    . s) 
    . y1) by 
    A9
    
          .= (G
    . x) by 
    A10,
    A14;
    
        end;
    
        hence thesis by
    FUNCT_2: 12;
    
      end;
    
    end
    
    definition
    
      let S;
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S; 
    
      let F be
    ManySortedFunction of U1, U2; 
    
      :: 
    
    OSALG_4:def25
    
      func
    
    OSHomQuot (F) -> 
    ManySortedFunction of ( 
    QuotOSAlg (U1,( 
    OSCng F))), U2 means 
    
      :
    
    Def25: for s be 
    Element of S holds (it 
    . s) 
    = ( 
    OSHomQuot (F,s)); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of S) = ( 
    OSHomQuot (F,$1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = the 
    carrier of S & for d be 
    Element of S holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        reconsider f as
    ManySortedSet of the 
    carrier of S by 
    A1,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for x be
    object st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Function
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom f); 
    
          then
    
          reconsider y = x as
    Element of S; 
    
          (f
    . y) 
    = ( 
    OSHomQuot (F,y)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of the 
    carrier of S by 
    FUNCOP_1:def 6;
    
        for i be
    object st i 
    in the 
    carrier of S holds (f 
    . i) is 
    Function of (the 
    Sorts of ( 
    QuotOSAlg (U1,( 
    OSCng F))) 
    . i), (the 
    Sorts of U2 
    . i) 
    
        proof
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    Element of S; 
    
          (f
    . s) 
    = ( 
    OSHomQuot (F,s)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of the 
    Sorts of ( 
    QuotOSAlg (U1,( 
    OSCng F))), the 
    Sorts of U2 by 
    PBOOLE:def 15;
    
        reconsider f as
    ManySortedFunction of ( 
    QuotOSAlg (U1,( 
    OSCng F))), U2; 
    
        take f;
    
        thus thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        let H,G be
    ManySortedFunction of ( 
    QuotOSAlg (U1,( 
    OSCng F))), U2; 
    
        assume that
    
        
    
    A2: for s be 
    Element of S holds (H 
    . s) 
    = ( 
    OSHomQuot (F,s)) and 
    
        
    
    A3: for s be 
    Element of S holds (G 
    . s) 
    = ( 
    OSHomQuot (F,s)); 
    
        now
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    SortSymbol of S; 
    
          (H
    . s) 
    = ( 
    OSHomQuot (F,s)) by 
    A2;
    
          hence (H
    . i) 
    = (G 
    . i) by 
    A3;
    
        end;
    
        hence thesis by
    PBOOLE: 3;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:17
    
    
    
    
    
    Th17: for U1,U2 be 
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 st F 
    is_homomorphism (U1,U2) & F is 
    order-sorted holds ( 
    OSHomQuot F) 
    is_monomorphism (( 
    QuotOSAlg (U1,( 
    OSCng F))),U2) & ( 
    OSHomQuot F) is 
    order-sorted
    
    proof
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2; 
    
      set mc = (
    OSCng F), qa = ( 
    QuotOSAlg (U1,mc)), qh = ( 
    OSHomQuot F), S1 = the 
    Sorts of U1; 
    
      assume that
    
      
    
    A1: F 
    is_homomorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted;
    
      for o be
    Element of the 
    carrier' of S st ( 
    Args (o,qa)) 
    <>  
    {} holds for x be 
    Element of ( 
    Args (o,qa)) holds ((qh 
    . ( 
    the_result_sort_of o)) 
    . (( 
    Den (o,qa)) 
    . x)) 
    = (( 
    Den (o,U2)) 
    . (qh 
    # x)) 
    
      proof
    
        let o be
    Element of the 
    carrier' of S such that ( 
    Args (o,qa)) 
    <>  
    {} ; 
    
        let x be
    Element of ( 
    Args (o,qa)); 
    
        reconsider o1 = o as
    OperSymbol of S; 
    
        set ro = (
    the_result_sort_of o), ar = ( 
    the_arity_of o); 
    
        
    
        
    
    A3: ( 
    dom x) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        (
    Args (o,qa)) 
    = (((( 
    OSClass mc) 
    # ) 
    * the 
    Arity of S) 
    . o) by 
    MSUALG_1:def 4;
    
        then
    
        consider a be
    Element of ( 
    Args (o,U1)) such that 
    
        
    
    A4: x 
    = (mc 
    #_os a) by 
    Th14;
    
        
    
        
    
    A5: ( 
    dom a) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        
    
    A6: 
    
        now
    
          let y be
    object;
    
          assume
    
          
    
    A7: y 
    in ( 
    dom ar); 
    
          then
    
          reconsider n = y as
    Nat;
    
          (ar
    . n) 
    in ( 
    rng ar) by 
    A7,
    FUNCT_1:def 3;
    
          then
    
          reconsider s = (ar
    . n) as 
    SortSymbol of S; 
    
          
    
          
    
    A8: (ar 
    /. n) 
    = (ar 
    . n) by 
    A7,
    PARTFUN1:def 6;
    
          then
    
          consider an be
    Element of (S1 
    . s) such that 
    
          
    
    A9: an 
    = (a 
    . n) and 
    
          
    
    A10: (x 
    . n) 
    = ( 
    OSClass (mc,an)) by 
    A4,
    A7,
    Def13;
    
          ((qh
    # x) 
    . n) 
    = ((qh 
    . s) 
    . (x 
    . n)) by 
    A3,
    A7,
    A8,
    MSUALG_3:def 6
    
          .= ((
    OSHomQuot (F,s)) 
    . ( 
    OSClass (mc,an))) by 
    A10,
    Def25
    
          .= ((F
    . s) 
    . an) by 
    A1,
    A2,
    Def24
    
          .= ((F
    # a) 
    . n) by 
    A5,
    A7,
    A8,
    A9,
    MSUALG_3:def 6;
    
          hence ((qh
    # x) 
    . y) 
    = ((F 
    # a) 
    . y); 
    
        end;
    
        o
    in the 
    carrier' of S; 
    
        then o
    in ( 
    dom (S1 
    * the 
    ResultSort of S)) by 
    PARTFUN1:def 2;
    
        
    
        then
    
        
    
    A11: ((the 
    Sorts of U1 
    * the 
    ResultSort of S) 
    . o) 
    = (the 
    Sorts of U1 
    . (the 
    ResultSort of S 
    . o)) by 
    FUNCT_1: 12
    
        .= (the
    Sorts of U1 
    . ro) by 
    MSUALG_1:def 2;
    
        then (
    rng ( 
    Den (o,U1))) 
    c= ( 
    Result (o,U1)) & ( 
    Result (o,U1)) 
    = (S1 
    . ro) by 
    MSUALG_1:def 5;
    
        then (
    rng ( 
    Den (o,U1))) 
    c= ( 
    dom ( 
    OSQuotRes (mc,o))) by 
    A11,
    FUNCT_2:def 1;
    
        then
    
        
    
    A12: ( 
    dom ( 
    Den (o,U1))) 
    = ( 
    Args (o,U1)) & ( 
    dom (( 
    OSQuotRes (mc,o)) 
    * ( 
    Den (o,U1)))) 
    = ( 
    dom ( 
    Den (o,U1))) by 
    FUNCT_2:def 1,
    RELAT_1: 27;
    
        ar
    = (the 
    Arity of S 
    . o) by 
    MSUALG_1:def 1;
    
        then
    
        
    
    A13: ( 
    product (( 
    OSClass mc) 
    * ar)) 
    = (((( 
    OSClass mc) 
    # ) 
    * the 
    Arity of S) 
    . o) by 
    MSAFREE: 1;
    
        reconsider da = ((
    Den (o,U1)) 
    . a) as 
    Element of (S1 
    . ro) by 
    A11,
    MSUALG_1:def 5;
    
        
    
        
    
    A14: (qh 
    . ro) 
    = ( 
    OSHomQuot (F,ro)) by 
    Def25;
    
        (
    Den (o,qa)) 
    = (( 
    OSQuotCharact mc) 
    . o) by 
    MSUALG_1:def 6
    
        .= (
    OSQuotCharact (mc,o1)) by 
    Def19;
    
        
    
        then ((
    Den (o,qa)) 
    . x) 
    = ((( 
    OSQuotRes (mc,o)) 
    * ( 
    Den (o,U1))) 
    . a) by 
    A4,
    A13,
    Def18
    
        .= ((
    OSQuotRes (mc,o)) 
    . da) by 
    A12,
    FUNCT_1: 12
    
        .= (
    OSClass (( 
    OSCng F),da)) by 
    Def14;
    
        
    
        then
    
        
    
    A15: ((qh 
    . ro) 
    . (( 
    Den (o,qa)) 
    . x)) 
    = ((F 
    . ro) 
    . (( 
    Den (o,U1)) 
    . a)) by 
    A1,
    A2,
    A14,
    Def24
    
        .= ((
    Den (o,U2)) 
    . (F 
    # a)) by 
    A1;
    
        (
    dom (qh 
    # x)) 
    = ( 
    dom ar) & ( 
    dom (F 
    # a)) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        hence thesis by
    A6,
    A15,
    FUNCT_1: 2;
    
      end;
    
      hence qh
    is_homomorphism (qa,U2); 
    
      for i be
    set st i 
    in the 
    carrier of S holds (qh 
    . i) is 
    one-to-one
    
      proof
    
        let i be
    set;
    
        set f = (qh
    . i); 
    
        assume i
    in the 
    carrier of S; 
    
        then
    
        reconsider s = i as
    SortSymbol of S; 
    
        
    
        
    
    A16: f 
    = ( 
    OSHomQuot (F,s)) by 
    Def25;
    
        for x1,x2 be
    object st x1 
    in ( 
    dom f) & x2 
    in ( 
    dom f) & (f 
    . x1) 
    = (f 
    . x2) holds x1 
    = x2 
    
        proof
    
          let x1,x2 be
    object;
    
          assume that
    
          
    
    A17: x1 
    in ( 
    dom f) and 
    
          
    
    A18: x2 
    in ( 
    dom f) and 
    
          
    
    A19: (f 
    . x1) 
    = (f 
    . x2); 
    
          x2
    in (( 
    OSClass mc) 
    . s) by 
    A16,
    A18,
    FUNCT_2:def 1;
    
          then x2
    in ( 
    OSClass (mc,s)) by 
    Def11;
    
          then
    
          consider a2 be
    set such that 
    
          
    
    A20: a2 
    in (S1 
    . s) and 
    
          
    
    A21: x2 
    = ( 
    Class (( 
    CompClass (( 
    OSCng F),( 
    CComp s))),a2)) by 
    Def10;
    
          reconsider a2 as
    Element of (S1 
    . s) by 
    A20;
    
          
    
          
    
    A22: x2 
    = ( 
    OSClass (( 
    OSCng F),a2)) by 
    A21;
    
          x1
    in (( 
    OSClass mc) 
    . s) by 
    A16,
    A17,
    FUNCT_2:def 1;
    
          then x1
    in ( 
    OSClass (mc,s)) by 
    Def11;
    
          then
    
          consider a1 be
    set such that 
    
          
    
    A23: a1 
    in (S1 
    . s) and 
    
          
    
    A24: x1 
    = ( 
    Class (( 
    CompClass (( 
    OSCng F),( 
    CComp s))),a1)) by 
    Def10;
    
          reconsider a1 as
    Element of (S1 
    . s) by 
    A23;
    
          ((F
    . s) 
    . a1) 
    = (f 
    . ( 
    OSClass (( 
    OSCng F),a1))) & ((F 
    . s) 
    . a2) 
    = (f 
    . ( 
    OSClass (( 
    OSCng F),a2))) by 
    A1,
    A2,
    A16,
    Def24;
    
          then
    [a1, a2]
    in ( 
    MSCng (F,s)) by 
    A19,
    A24,
    A21,
    MSUALG_4:def 17;
    
          then
    [a1, a2]
    in (( 
    MSCng F) 
    . s) by 
    A1,
    MSUALG_4:def 18;
    
          then
    
          
    
    A25: 
    [a1, a2]
    in (( 
    OSCng F) 
    . s) by 
    A1,
    A2,
    Def23;
    
          x1
    = ( 
    OSClass (( 
    OSCng F),a1)) by 
    A24;
    
          hence thesis by
    A22,
    A25,
    Th12;
    
        end;
    
        hence thesis by
    FUNCT_1:def 4;
    
      end;
    
      hence qh is
    "1-1" by 
    MSUALG_3: 1;
    
      thus (
    OSHomQuot F) is 
    order-sorted
    
      proof
    
        reconsider S1O = S1 as
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        reconsider sqa = the
    Sorts of qa as 
    OrderSortedSet of S; 
    
        let s1,s2 be
    Element of S such that 
    
        
    
    A26: s1 
    <= s2; 
    
        let a1 be
    set such that 
    
        
    
    A27: a1 
    in ( 
    dom (qh 
    . s1)); 
    
        a1
    in (( 
    OSClass ( 
    OSCng F)) 
    . s1) by 
    A27;
    
        then a1
    in ( 
    OSClass (( 
    OSCng F),s1)) by 
    Def11;
    
        then
    
        consider x be
    set such that 
    
        
    
    A28: x 
    in (S1 
    . s1) and 
    
        
    
    A29: a1 
    = ( 
    Class (( 
    CompClass (( 
    OSCng F),( 
    CComp s1))),x)) by 
    Def10;
    
        (S1O
    . s1) 
    c= (S1O 
    . s2) by 
    A26,
    OSALG_1:def 16;
    
        then
    
        reconsider x2 = x as
    Element of (S1 
    . s2) by 
    A28;
    
        
    
        
    
    A30: a1 
    = ( 
    OSClass (( 
    OSCng F),x2)) by 
    A26,
    A29,
    Th4;
    
        reconsider s3 = s1, s4 = s2 as
    Element of S; 
    
        
    
        
    
    A31: ( 
    dom (qh 
    . s1)) 
    = (the 
    Sorts of qa 
    . s1) & ( 
    dom (qh 
    . s2)) 
    = (the 
    Sorts of qa 
    . s2) by 
    FUNCT_2:def 1;
    
        reconsider x1 = x as
    Element of (S1 
    . s1) by 
    A28;
    
        x1
    in ( 
    dom (F 
    . s3)) by 
    A28,
    FUNCT_2:def 1;
    
        then
    
        
    
    A32: ((F 
    . s3) 
    . x1) 
    = ((F 
    . s4) 
    . x1) by 
    A2,
    A26;
    
        (sqa
    . s1) 
    c= (sqa 
    . s2) by 
    A26,
    OSALG_1:def 16;
    
        hence a1
    in ( 
    dom (qh 
    . s2)) by 
    A27,
    A31;
    
        
    
        thus ((qh
    . s1) 
    . a1) 
    = (( 
    OSHomQuot (F,s1)) 
    . ( 
    OSClass (( 
    OSCng F),x1))) by 
    A29,
    Def25
    
        .= ((F
    . s2) 
    . x1) by 
    A1,
    A2,
    A32,
    Def24
    
        .= ((
    OSHomQuot (F,s2)) 
    . ( 
    OSClass (( 
    OSCng F),x2))) by 
    A1,
    A2,
    Def24
    
        .= ((qh
    . s2) 
    . a1) by 
    A30,
    Def25;
    
      end;
    
    end;
    
    theorem :: 
    
    OSALG_4:18
    
    
    
    
    
    Th18: for U1,U2 be 
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 st F 
    is_epimorphism (U1,U2) & F is 
    order-sorted holds ( 
    OSHomQuot F) 
    is_isomorphism (( 
    QuotOSAlg (U1,( 
    OSCng F))),U2) 
    
    proof
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2; 
    
      set mc = (
    OSCng F), qa = ( 
    QuotOSAlg (U1,mc)), qh = ( 
    OSHomQuot F); 
    
      assume that
    
      
    
    A1: F 
    is_epimorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted;
    
      set Sq = the
    Sorts of qa, S1 = the 
    Sorts of U1, S2 = the 
    Sorts of U2; 
    
      
    
      
    
    A3: F 
    is_homomorphism (U1,U2) by 
    A1;
    
      
    
      
    
    A4: F is 
    "onto" by 
    A1;
    
      for i be
    set st i 
    in the 
    carrier of S holds ( 
    rng (qh 
    . i)) 
    = (S2 
    . i) 
    
      proof
    
        let i be
    set;
    
        set f = (qh
    . i); 
    
        assume i
    in the 
    carrier of S; 
    
        then
    
        reconsider s = i as
    SortSymbol of S; 
    
        
    
        
    
    A5: ( 
    rng (F 
    . s)) 
    = (S2 
    . s) by 
    A4;
    
        
    
        
    
    A6: (qh 
    . i) 
    = ( 
    OSHomQuot (F,s)) by 
    Def25;
    
        then
    
        
    
    A7: ( 
    dom f) 
    = (Sq 
    . s) by 
    FUNCT_2:def 1;
    
        thus (
    rng f) 
    c= (S2 
    . i) by 
    A6,
    RELAT_1:def 19;
    
        let x be
    object;
    
        assume x
    in (S2 
    . i); 
    
        then
    
        consider a be
    object such that 
    
        
    
    A8: a 
    in ( 
    dom (F 
    . s)) and 
    
        
    
    A9: ((F 
    . s) 
    . a) 
    = x by 
    A5,
    FUNCT_1:def 3;
    
        
    
        
    
    A10: (Sq 
    . s) 
    = ( 
    OSClass (( 
    OSCng F),s)) by 
    Def11;
    
        reconsider a as
    Element of (S1 
    . s) by 
    A8;
    
        (f
    . ( 
    OSClass (( 
    OSCng F),a))) 
    = x by 
    A2,
    A3,
    A6,
    A9,
    Def24;
    
        hence thesis by
    A7,
    A10,
    FUNCT_1:def 3;
    
      end;
    
      then
    
      
    
    A11: qh is 
    "onto";
    
      qh
    is_monomorphism (qa,U2) by 
    A2,
    A3,
    Th17;
    
      then qh
    is_homomorphism (qa,U2) & qh is 
    "1-1";
    
      hence thesis by
    A11,
    MSUALG_3: 13;
    
    end;
    
    theorem :: 
    
    OSALG_4:19
    
    for U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 st F 
    is_epimorphism (U1,U2) & F is 
    order-sorted holds (( 
    QuotOSAlg (U1,( 
    OSCng F))),U2) 
    are_isomorphic  
    
    proof
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2; 
    
      assume F
    is_epimorphism (U1,U2) & F is 
    order-sorted;
    
      then (
    OSHomQuot F) 
    is_isomorphism (( 
    QuotOSAlg (U1,( 
    OSCng F))),U2) by 
    Th18;
    
      hence thesis;
    
    end;
    
    definition
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, R be 
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      :: 
    
    OSALG_4:def26
    
      attr R is
    
    monotone means 
    
      :
    
    Def26: for o1,o2 be 
    OperSymbol of S st o1 
    <= o2 holds for x1 be 
    Element of ( 
    Args (o1,U1)) holds for x2 be 
    Element of ( 
    Args (o2,U1)) st (for y be 
    Nat st y 
    in ( 
    dom x1) holds 
    [(x1
    . y), (x2 
    . y)] 
    in (R 
    . (( 
    the_arity_of o2) 
    /. y))) holds 
    [((
    Den (o1,U1)) 
    . x1), (( 
    Den (o2,U1)) 
    . x2)] 
    in (R 
    . ( 
    the_result_sort_of o2)); 
    
    end
    
    theorem :: 
    
    OSALG_4:20
    
    
    
    
    
    Th20: for S be 
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S holds 
    [|the 
    Sorts of U1, the 
    Sorts of U1|] is 
    OSCongruence of U1 
    
    proof
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S; 
    
      reconsider C =
    [|the 
    Sorts of U1, the 
    Sorts of U1|] as 
    MSCongruence of U1 by 
    MSUALG_5: 18;
    
      C is
    os-compatible
    
      proof
    
        reconsider O1 = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        let s1,s2 be
    Element of S such that 
    
        
    
    A1: s1 
    <= s2; 
    
        reconsider s3 = s1, s4 = s2 as
    Element of S; 
    
        
    
        
    
    A2: (O1 
    . s3) 
    c= (O1 
    . s4) by 
    A1,
    OSALG_1:def 16;
    
        
    
        
    
    A3: (C 
    . s1) 
    =  
    [:(the
    Sorts of U1 
    . s1), (the 
    Sorts of U1 
    . s1):] & (C 
    . s2) 
    =  
    [:(the
    Sorts of U1 
    . s2), (the 
    Sorts of U1 
    . s2):] by 
    PBOOLE:def 16;
    
        let x,y be
    set;
    
        assume x
    in (the 
    Sorts of U1 
    . s1) & y 
    in (the 
    Sorts of U1 
    . s1); 
    
        hence
    [x, y]
    in (C 
    . s1) iff 
    [x, y]
    in (C 
    . s2) by 
    A2,
    A3,
    ZFMISC_1: 87;
    
      end;
    
      hence thesis by
    Def2;
    
    end;
    
    theorem :: 
    
    OSALG_4:21
    
    
    
    
    
    Th21: for S be 
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of U1 st R 
    =  
    [|the 
    Sorts of U1, the 
    Sorts of U1|] holds R is 
    monotone
    
    proof
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of U1 such that 
    
      
    
    A1: R 
    =  
    [|the 
    Sorts of U1, the 
    Sorts of U1|]; 
    
      reconsider O1 = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
      let o1,o2 be
    OperSymbol of S such that 
    
      
    
    A2: o1 
    <= o2; 
    
      set s2 = (
    the_result_sort_of o2), s1 = ( 
    the_result_sort_of o1); 
    
      s1
    <= s2 by 
    A2;
    
      then
    
      
    
    A3: (O1 
    . s1) 
    c= (O1 
    . s2) by 
    OSALG_1:def 16;
    
      let x1 be
    Element of ( 
    Args (o1,U1)); 
    
      let x2 be
    Element of ( 
    Args (o2,U1)) such that for y be 
    Nat st y 
    in ( 
    dom x1) holds 
    [(x1
    . y), (x2 
    . y)] 
    in (R 
    . (( 
    the_arity_of o2) 
    /. y)); 
    
      
    
      
    
    A4: (( 
    Den (o1,U1)) 
    . x1) 
    in (the 
    Sorts of U1 
    . s1) & (( 
    Den (o2,U1)) 
    . x2) 
    in (the 
    Sorts of U1 
    . s2) by 
    MSUALG_9: 18;
    
      (R
    . s2) 
    =  
    [:(the
    Sorts of U1 
    . s2), (the 
    Sorts of U1 
    . s2):] by 
    A1,
    PBOOLE:def 16;
    
      hence thesis by
    A3,
    A4,
    ZFMISC_1: 87;
    
    end;
    
    registration
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S; 
    
      cluster 
    monotone for 
    OSCongruence of U1; 
    
      existence
    
      proof
    
        reconsider R =
    [|the 
    Sorts of U1, the 
    Sorts of U1|] as 
    OSCongruence of U1 by 
    Th20;
    
        take R;
    
        thus thesis by
    Th21;
    
      end;
    
    end
    
    registration
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S; 
    
      cluster 
    monotone for 
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      existence
    
      proof
    
        set R = the
    monotone  
    OSCongruence of U1; 
    
        take R;
    
        thus thesis;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:22
    
    
    
    
    
    Th22: for S be 
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, R be 
    monotone
    MSEquivalence-like  
    OrderSortedRelation of U1 holds R is 
    MSCongruence-like
    
    proof
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S, R be 
    monotone
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      for o be
    Element of the 
    carrier' of S, x,y be 
    Element of ( 
    Args (o,U1)) st (for n be 
    Nat st n 
    in ( 
    dom x) holds 
    [(x
    . n), (y 
    . n)] 
    in (R 
    . (( 
    the_arity_of o) 
    /. n))) holds 
    [((
    Den (o,U1)) 
    . x), (( 
    Den (o,U1)) 
    . y)] 
    in (R 
    . ( 
    the_result_sort_of o)) by 
    Def26;
    
      hence thesis by
    MSUALG_4:def 4;
    
    end;
    
    registration
    
      let S be
    OrderSortedSign, U1 be 
    non-empty  
    OSAlgebra of S; 
    
      cluster 
    monotone -> 
    MSCongruence-like for 
    MSEquivalence-like  
    OrderSortedRelation of U1; 
    
      coherence by
    Th22;
    
    end
    
    theorem :: 
    
    OSALG_4:23
    
    
    
    
    
    Th23: for S be 
    OrderSortedSign, U1 be 
    monotone
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of U1 holds R is 
    monotone
    
    proof
    
      let S be
    OrderSortedSign, U1 be 
    monotone
    non-empty  
    OSAlgebra of S, R be 
    OSCongruence of U1; 
    
      let o1,o2 be
    OperSymbol of S such that 
    
      
    
    A1: o1 
    <= o2; 
    
      let x1 be
    Element of ( 
    Args (o1,U1)); 
    
      (
    Args (o1,U1)) 
    c= ( 
    Args (o2,U1)) by 
    A1,
    OSALG_1: 26;
    
      then
    
      reconsider x3 = x1 as
    Element of ( 
    Args (o2,U1)); 
    
      let x2 be
    Element of ( 
    Args (o2,U1)); 
    
      assume for y be
    Nat st y 
    in ( 
    dom x1) holds 
    [(x1
    . y), (x2 
    . y)] 
    in (R 
    . (( 
    the_arity_of o2) 
    /. y)); 
    
      then
    
      
    
    A2: 
    [((
    Den (o2,U1)) 
    . x3), (( 
    Den (o2,U1)) 
    . x2)] 
    in (R 
    . ( 
    the_result_sort_of o2)) by 
    MSUALG_4:def 4;
    
      x1
    in ( 
    Args (o1,U1)); 
    
      then
    
      
    
    A3: x1 
    in ( 
    dom ( 
    Den (o1,U1))) by 
    FUNCT_2:def 1;
    
      (
    Den (o1,U1)) 
    c= ( 
    Den (o2,U1)) by 
    A1,
    OSALG_1: 27;
    
      hence thesis by
    A2,
    A3,
    GRFUNC_1: 2;
    
    end;
    
    registration
    
      let S be
    OrderSortedSign, U1 be 
    monotone
    non-empty  
    OSAlgebra of S; 
    
      cluster -> 
    monotone for 
    OSCongruence of U1; 
    
      coherence by
    Th23;
    
    end
    
    registration
    
      let S;
    
      let U1 be
    non-empty  
    OSAlgebra of S; 
    
      let R be
    monotone  
    OSCongruence of U1; 
    
      cluster ( 
    QuotOSAlg (U1,R)) -> 
    monotone;
    
      coherence
    
      proof
    
        reconsider O1 = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        set A = (
    QuotOSAlg (U1,R)); 
    
        let o1,o2 be
    OperSymbol of S such that 
    
        
    
    A1: o1 
    <= o2; 
    
        
    
        
    
    A2: ( 
    Args (o1,A)) 
    c= ( 
    Args (o2,A)) by 
    A1,
    OSALG_1: 26;
    
        (
    Den (o2,A)) 
    = (( 
    OSQuotCharact R) 
    . o2) by 
    MSUALG_1:def 6;
    
        then
    
        
    
    A3: ( 
    Den (o2,A)) 
    = ( 
    OSQuotCharact (R,o2)) by 
    Def19;
    
        o2
    in the 
    carrier' of S; 
    
        then
    
        
    
    A4: o2 
    in ( 
    dom the 
    ResultSort of S) by 
    FUNCT_2:def 1;
    
        (
    Den (o1,A)) 
    = (( 
    OSQuotCharact R) 
    . o1) by 
    MSUALG_1:def 6;
    
        then
    
        
    
    A5: ( 
    Den (o1,A)) 
    = ( 
    OSQuotCharact (R,o1)) by 
    Def19;
    
        o1
    in the 
    carrier' of S; 
    
        then
    
        
    
    A6: o1 
    in ( 
    dom the 
    ResultSort of S) by 
    FUNCT_2:def 1;
    
        
    
        
    
    A7: ( 
    the_arity_of o1) 
    <= ( 
    the_arity_of o2) by 
    A1;
    
        then (
    len ( 
    the_arity_of o1)) 
    = ( 
    len ( 
    the_arity_of o2)); 
    
        then
    
        
    
    A8: ( 
    dom ( 
    the_arity_of o1)) 
    = ( 
    dom ( 
    the_arity_of o2)) by 
    FINSEQ_3: 29;
    
        
    
        
    
    A9: ( 
    the_result_sort_of o1) 
    <= ( 
    the_result_sort_of o2) by 
    A1;
    
        then
    
        
    
    A10: (O1 
    . ( 
    the_result_sort_of o1)) 
    c= (O1 
    . ( 
    the_result_sort_of o2)) by 
    OSALG_1:def 17;
    
        
    
        
    
    A11: for x be 
    object st x 
    in ( 
    dom ( 
    Den (o1,A))) holds (( 
    Den (o1,A)) 
    . x) 
    = (( 
    Den (o2,A)) 
    . x) 
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom ( 
    Den (o1,A))); 
    
          then
    
          
    
    A12: x 
    in ( 
    Args (o1,A)); 
    
          then
    
          
    
    A13: x 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o1) by 
    MSUALG_1:def 4;
    
          then
    
          consider a1 be
    Element of ( 
    Args (o1,U1)) such that 
    
          
    
    A14: x 
    = (R 
    #_os a1) by 
    Th14;
    
          (
    Result (o1,U1)) 
    = ((the 
    Sorts of U1 
    * the 
    ResultSort of S) 
    . o1) by 
    MSUALG_1:def 5
    
          .= (the
    Sorts of U1 
    . (the 
    ResultSort of S 
    . o1)) by 
    A6,
    FUNCT_1: 13
    
          .= (the
    Sorts of U1 
    . ( 
    the_result_sort_of o1)) by 
    MSUALG_1:def 2;
    
          then
    
          reconsider da1 = ((
    Den (o1,U1)) 
    . a1) as 
    Element of (the 
    Sorts of U1 
    . ( 
    the_result_sort_of o1)); 
    
          reconsider da12 = da1 as
    Element of (the 
    Sorts of U1 
    . ( 
    the_result_sort_of o2)) by 
    A10;
    
          a1
    in ( 
    Args (o1,U1)); 
    
          then a1
    in ( 
    dom ( 
    Den (o1,U1))) by 
    FUNCT_2:def 1;
    
          
    
          then
    
          
    
    A15: ((( 
    OSQuotRes (R,o1)) 
    * ( 
    Den (o1,U1))) 
    . a1) 
    = (( 
    OSQuotRes (R,o1)) 
    . da1) by 
    FUNCT_1: 13
    
          .= (
    OSClass (R,da1)) by 
    Def14;
    
          
    
          
    
    A16: (( 
    OSQuotCharact (R,o1)) 
    . (R 
    #_os a1)) 
    = ((( 
    OSQuotRes (R,o1)) 
    * ( 
    Den (o1,U1))) 
    . a1) by 
    A13,
    A14,
    Def18;
    
          x
    in ( 
    Args (o2,A)) by 
    A2,
    A12;
    
          then
    
          
    
    A17: x 
    in (((( 
    OSClass R) 
    # ) 
    * the 
    Arity of S) 
    . o2) by 
    MSUALG_1:def 4;
    
          then
    
          consider a2 be
    Element of ( 
    Args (o2,U1)) such that 
    
          
    
    A18: x 
    = (R 
    #_os a2) by 
    Th14;
    
          for y be
    Nat st y 
    in ( 
    dom a1) holds 
    [(a1
    . y), (a2 
    . y)] 
    in (R 
    . (( 
    the_arity_of o2) 
    /. y)) 
    
          proof
    
            let y be
    Nat such that 
    
            
    
    A19: y 
    in ( 
    dom a1); 
    
            
    
            
    
    A20: y 
    in ( 
    dom ( 
    the_arity_of o1)) by 
    A19,
    MSUALG_6: 2;
    
            then
    
            consider z1 be
    Element of (the 
    Sorts of U1 
    . (( 
    the_arity_of o1) 
    /. y)) such that 
    
            
    
    A21: z1 
    = (a1 
    . y) and 
    
            
    
    A22: ((R 
    #_os a1) 
    . y) 
    = ( 
    OSClass (R,z1)) by 
    Def13;
    
            reconsider s1 = ((
    the_arity_of o1) 
    . y), s2 = (( 
    the_arity_of o2) 
    . y) as 
    SortSymbol of S by 
    A8,
    A20,
    PARTFUN1: 4;
    
            
    
            
    
    A23: y 
    in ( 
    dom ( 
    the_arity_of o2)) by 
    A8,
    A19,
    MSUALG_6: 2;
    
            then
    
            
    
    A24: (( 
    the_arity_of o2) 
    /. y) 
    = (( 
    the_arity_of o2) 
    . y) by 
    PARTFUN1:def 6;
    
            
    
            
    
    A25: (( 
    the_arity_of o1) 
    /. y) 
    = (( 
    the_arity_of o1) 
    . y) & s1 
    <= s2 by 
    A7,
    A20,
    PARTFUN1:def 6;
    
            then (the
    Sorts of U1 
    . (( 
    the_arity_of o1) 
    /. y)) 
    c= (the 
    Sorts of U1 
    . (( 
    the_arity_of o2) 
    /. y)) by 
    A24,
    OSALG_1:def 17;
    
            then
    
            reconsider z12 = z1 as
    Element of (the 
    Sorts of U1 
    . (( 
    the_arity_of o2) 
    /. y)); 
    
            consider z2 be
    Element of (the 
    Sorts of U1 
    . (( 
    the_arity_of o2) 
    /. y)) such that 
    
            
    
    A26: z2 
    = (a2 
    . y) and 
    
            
    
    A27: ((R 
    #_os a2) 
    . y) 
    = ( 
    OSClass (R,z2)) by 
    A23,
    Def13;
    
            (
    OSClass (R,z2)) 
    = ( 
    OSClass (R,z12)) by 
    A14,
    A18,
    A22,
    A27,
    A24,
    A25,
    Th4;
    
            hence thesis by
    A21,
    A26,
    Th12;
    
          end;
    
          then
    
          
    
    A28: 
    [((
    Den (o1,U1)) 
    . a1), (( 
    Den (o2,U1)) 
    . a2)] 
    in (R 
    . ( 
    the_result_sort_of o2)) by 
    A1,
    Def26;
    
          (
    Result (o2,U1)) 
    = ((the 
    Sorts of U1 
    * the 
    ResultSort of S) 
    . o2) by 
    MSUALG_1:def 5
    
          .= (the
    Sorts of U1 
    . (the 
    ResultSort of S 
    . o2)) by 
    A4,
    FUNCT_1: 13
    
          .= (the
    Sorts of U1 
    . ( 
    the_result_sort_of o2)) by 
    MSUALG_1:def 2;
    
          then
    
          reconsider da2 = ((
    Den (o2,U1)) 
    . a2) as 
    Element of (the 
    Sorts of U1 
    . ( 
    the_result_sort_of o2)); 
    
          a2
    in ( 
    Args (o2,U1)); 
    
          then a2
    in ( 
    dom ( 
    Den (o2,U1))) by 
    FUNCT_2:def 1;
    
          
    
          then
    
          
    
    A29: ((( 
    OSQuotRes (R,o2)) 
    * ( 
    Den (o2,U1))) 
    . a2) 
    = (( 
    OSQuotRes (R,o2)) 
    . da2) by 
    FUNCT_1: 13
    
          .= (
    OSClass (R,da2)) by 
    Def14;
    
          (
    OSClass (R,da1)) 
    = ( 
    OSClass (R,da12)) by 
    A9,
    Th4
    
          .= (
    OSClass (R,da2)) by 
    A28,
    Th12;
    
          hence thesis by
    A5,
    A3,
    A17,
    A14,
    A18,
    A16,
    A15,
    A29,
    Def18;
    
        end;
    
        (
    dom ( 
    Den (o2,A))) 
    = ( 
    Args (o2,A)) & ( 
    dom ( 
    Den (o1,A))) 
    = ( 
    Args (o1,A)) by 
    FUNCT_2:def 1;
    
        then (
    dom ( 
    Den (o1,A))) 
    = (( 
    dom ( 
    Den (o2,A))) 
    /\ ( 
    Args (o1,A))) by 
    A2,
    XBOOLE_1: 28;
    
        hence thesis by
    A11,
    FUNCT_1: 46;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:24
    
    for U1 be
    non-empty  
    OSAlgebra of S, U2 be 
    monotone
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 st F 
    is_homomorphism (U1,U2) & F is 
    order-sorted holds ( 
    OSCng F) is 
    monotone
    
    proof
    
      let U1 be
    non-empty  
    OSAlgebra of S, U2 be 
    monotone
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2 such that 
    
      
    
    A1: F 
    is_homomorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted;
    
      reconsider S1 = the
    Sorts of U1 as 
    OrderSortedSet of S by 
    OSALG_1: 17;
    
      set O1 = the
    Sorts of U1; 
    
      let o1,o2 be
    OperSymbol of S such that 
    
      
    
    A3: o1 
    <= o2; 
    
      
    
      
    
    A4: (( 
    Den (o2,U2)) 
    | ( 
    Args (o1,U2))) 
    = ( 
    Den (o1,U2)) by 
    A3,
    OSALG_1:def 21;
    
      set R = (
    OSCng F), rs1 = ( 
    the_result_sort_of o1), rs2 = ( 
    the_result_sort_of o2); 
    
      let x1 be
    Element of ( 
    Args (o1,U1)), x2 be 
    Element of ( 
    Args (o2,U1)) such that 
    
      
    
    A5: for y be 
    Nat st y 
    in ( 
    dom x1) holds 
    [(x1
    . y), (x2 
    . y)] 
    in (R 
    . (( 
    the_arity_of o2) 
    /. y)); 
    
      (
    Args (o1,U1)) 
    c= ( 
    Args (o2,U1)) by 
    A3,
    OSALG_1: 26;
    
      then
    
      reconsider x12 = x1 as
    Element of ( 
    Args (o2,U1)); 
    
      set D1 = ((
    Den (o1,U1)) 
    . x1), D2 = (( 
    Den (o2,U1)) 
    . x2), M = ( 
    MSCng F); 
    
      
    
      
    
    A6: D1 
    in (S1 
    . rs1) by 
    MSUALG_9: 18;
    
      (F
    # x1) 
    in ( 
    Args (o1,U2)); 
    
      then
    
      
    
    A7: (F 
    # x1) 
    in ( 
    dom ( 
    Den (o1,U2))) by 
    FUNCT_2:def 1;
    
      
    
      
    
    A8: rs1 
    <= rs2 by 
    A3;
    
      then (S1
    . rs1) 
    c= (S1 
    . rs2) by 
    OSALG_1:def 16;
    
      then
    
      reconsider D11 = D1, D12 = ((
    Den (o2,U1)) 
    . x12) as 
    Element of (O1 
    . rs2) by 
    MSUALG_9: 18;
    
      D1
    in ( 
    dom (F 
    . rs1)) by 
    A6,
    FUNCT_2:def 1;
    
      
    
      then ((F
    . rs2) 
    . (( 
    Den (o1,U1)) 
    . x1)) 
    = ((F 
    . rs1) 
    . (( 
    Den (o1,U1)) 
    . x1)) by 
    A2,
    A8
    
      .= ((
    Den (o1,U2)) 
    . (F 
    # x1)) by 
    A1
    
      .= ((
    Den (o2,U2)) 
    . (F 
    # x1)) by 
    A7,
    A4,
    FUNCT_1: 47
    
      .= ((
    Den (o2,U2)) 
    . (F 
    # x12)) by 
    A2,
    A3,
    OSALG_3: 12
    
      .= ((F
    . rs2) 
    . (( 
    Den (o2,U1)) 
    . x12)) by 
    A1;
    
      then
    
      
    
    A9: D2 
    in (O1 
    . rs2) & 
    [D11, D12]
    in ( 
    MSCng (F,rs2)) by 
    MSUALG_4:def 17,
    MSUALG_9: 18;
    
      (
    field (R 
    . rs2)) 
    = (O1 
    . rs2) by 
    ORDERS_1: 12;
    
      then
    
      
    
    A10: (R 
    . rs2) 
    is_transitive_in (O1 
    . rs2) by 
    RELAT_2:def 16;
    
      
    
      
    
    A11: 
    [((
    Den (o2,U1)) 
    . x12), (( 
    Den (o2,U1)) 
    . x2)] 
    in (R 
    . rs2) by 
    A5,
    MSUALG_4:def 4;
    
      (M
    . rs2) 
    = ( 
    MSCng (F,rs2)) & M 
    = R by 
    A1,
    A2,
    Def23,
    MSUALG_4:def 18;
    
      hence thesis by
    A11,
    A9,
    A10,
    RELAT_2:def 8;
    
    end;
    
    definition
    
      let S;
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S; 
    
      let F be
    ManySortedFunction of U1, U2; 
    
      let R be
    OSCongruence of U1; 
    
      let s be
    Element of S; 
    
      assume that
    
      
    
    A1: F 
    is_homomorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted and 
    
      
    
    A3: R 
    c= ( 
    OSCng F); 
    
      :: 
    
    OSALG_4:def27
    
      func
    
    OSHomQuot (F,R,s) -> 
    Function of (the 
    Sorts of ( 
    QuotOSAlg (U1,R)) 
    . s), (the 
    Sorts of U2 
    . s) means 
    
      :
    
    Def27: for x be 
    Element of (the 
    Sorts of U1 
    . s) holds (it 
    . ( 
    OSClass (R,x))) 
    = ((F 
    . s) 
    . x); 
    
      existence
    
      proof
    
        set qa = (
    QuotOSAlg (U1,R)), cqa = the 
    Sorts of qa, S1 = the 
    Sorts of U1, S2 = the 
    Sorts of U2; 
    
        defpred
    
    P[
    object, 
    object] means for a be
    Element of (S1 
    . s) st $1 
    = ( 
    OSClass (R,a)) holds $2 
    = ((F 
    . s) 
    . a); 
    
        
    
        
    
    A4: (cqa 
    . s) 
    = ( 
    OSClass (R,s)) by 
    Def11;
    
        
    
        
    
    A5: for x be 
    object st x 
    in (cqa 
    . s) holds ex y be 
    object st y 
    in (S2 
    . s) & 
    P[x, y]
    
        proof
    
          let x be
    object;
    
          
    
          
    
    A6: (R 
    . s) 
    c= (( 
    OSCng F) 
    . s) by 
    A3,
    PBOOLE:def 2;
    
          assume x
    in (cqa 
    . s); 
    
          then
    
          consider a be
    set such that 
    
          
    
    A7: a 
    in (the 
    Sorts of U1 
    . s) and 
    
          
    
    A8: x 
    = ( 
    Class (( 
    CompClass (R,( 
    CComp s))),a)) by 
    A4,
    Def10;
    
          reconsider a as
    Element of (S1 
    . s) by 
    A7;
    
          take y = ((F
    . s) 
    . a); 
    
          thus y
    in (S2 
    . s); 
    
          let b be
    Element of (S1 
    . s); 
    
          assume
    
          
    
    A9: x 
    = ( 
    OSClass (R,b)); 
    
          x
    = ( 
    OSClass (R,a)) by 
    A8;
    
          then
    [b, a]
    in (R 
    . s) by 
    A9,
    Th12;
    
          then
    [b, a]
    in (( 
    OSCng F) 
    . s) by 
    A6;
    
          then
    [b, a]
    in (( 
    MSCng F) 
    . s) by 
    A1,
    A2,
    Def23;
    
          then
    [b, a]
    in ( 
    MSCng (F,s)) by 
    A1,
    MSUALG_4:def 18;
    
          hence thesis by
    MSUALG_4:def 17;
    
        end;
    
        consider G be
    Function such that 
    
        
    
    A10: ( 
    dom G) 
    = (cqa 
    . s) & ( 
    rng G) 
    c= (S2 
    . s) & for x be 
    object st x 
    in (cqa 
    . s) holds 
    P[x, (G
    . x)] from 
    FUNCT_1:sch 6(
    A5);
    
        reconsider G as
    Function of (cqa 
    . s), (S2 
    . s) by 
    A10,
    FUNCT_2:def 1,
    RELSET_1: 4;
    
        take G;
    
        let a be
    Element of (S1 
    . s); 
    
        thus thesis by
    A4,
    A10;
    
      end;
    
      uniqueness
    
      proof
    
        set qa = (
    QuotOSAlg (U1,R)), cqa = the 
    Sorts of qa, u1 = the 
    Sorts of U1, u2 = the 
    Sorts of U2; 
    
        let H,G be
    Function of (cqa 
    . s), (u2 
    . s); 
    
        assume that
    
        
    
    A11: for a be 
    Element of (u1 
    . s) holds (H 
    . ( 
    OSClass (R,a))) 
    = ((F 
    . s) 
    . a) and 
    
        
    
    A12: for a be 
    Element of (u1 
    . s) holds (G 
    . ( 
    OSClass (R,a))) 
    = ((F 
    . s) 
    . a); 
    
        
    
        
    
    A13: (cqa 
    . s) 
    = ( 
    OSClass (R,s)) by 
    Def11;
    
        for x be
    object st x 
    in (cqa 
    . s) holds (H 
    . x) 
    = (G 
    . x) 
    
        proof
    
          let x be
    object;
    
          assume x
    in (cqa 
    . s); 
    
          then
    
          consider y be
    set such that 
    
          
    
    A14: y 
    in (the 
    Sorts of U1 
    . s) and 
    
          
    
    A15: x 
    = ( 
    Class (( 
    CompClass (R,( 
    CComp s))),y)) by 
    A13,
    Def10;
    
          reconsider y1 = y as
    Element of (u1 
    . s) by 
    A14;
    
          
    
          
    
    A16: ( 
    OSClass (R,y1)) 
    = x by 
    A15;
    
          
    
          hence (H
    . x) 
    = ((F 
    . s) 
    . y1) by 
    A11
    
          .= (G
    . x) by 
    A12,
    A16;
    
        end;
    
        hence thesis by
    FUNCT_2: 12;
    
      end;
    
    end
    
    definition
    
      let S;
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S; 
    
      let F be
    ManySortedFunction of U1, U2; 
    
      let R be
    OSCongruence of U1; 
    
      :: 
    
    OSALG_4:def28
    
      func
    
    OSHomQuot (F,R) -> 
    ManySortedFunction of ( 
    QuotOSAlg (U1,R)), U2 means 
    
      :
    
    Def28: for s be 
    Element of S holds (it 
    . s) 
    = ( 
    OSHomQuot (F,R,s)); 
    
      existence
    
      proof
    
        deffunc
    
    F(
    Element of S) = ( 
    OSHomQuot (F,R,$1)); 
    
        consider f be
    Function such that 
    
        
    
    A1: ( 
    dom f) 
    = the 
    carrier of S & for d be 
    Element of S holds (f 
    . d) 
    =  
    F(d) from
    FUNCT_1:sch 4;
    
        reconsider f as
    ManySortedSet of the 
    carrier of S by 
    A1,
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
        for x be
    object st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Function
    
        proof
    
          let x be
    object;
    
          assume x
    in ( 
    dom f); 
    
          then
    
          reconsider y = x as
    Element of S; 
    
          (f
    . y) 
    = ( 
    OSHomQuot (F,R,y)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of the 
    carrier of S by 
    FUNCOP_1:def 6;
    
        for i be
    object st i 
    in the 
    carrier of S holds (f 
    . i) is 
    Function of (the 
    Sorts of ( 
    QuotOSAlg (U1,R)) 
    . i), (the 
    Sorts of U2 
    . i) 
    
        proof
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    Element of S; 
    
          (f
    . s) 
    = ( 
    OSHomQuot (F,R,s)) by 
    A1;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider f as
    ManySortedFunction of the 
    Sorts of ( 
    QuotOSAlg (U1,R)), the 
    Sorts of U2 by 
    PBOOLE:def 15;
    
        reconsider f as
    ManySortedFunction of ( 
    QuotOSAlg (U1,R)), U2; 
    
        take f;
    
        thus thesis by
    A1;
    
      end;
    
      uniqueness
    
      proof
    
        let H,G be
    ManySortedFunction of ( 
    QuotOSAlg (U1,R)), U2; 
    
        assume that
    
        
    
    A2: for s be 
    Element of S holds (H 
    . s) 
    = ( 
    OSHomQuot (F,R,s)) and 
    
        
    
    A3: for s be 
    Element of S holds (G 
    . s) 
    = ( 
    OSHomQuot (F,R,s)); 
    
        now
    
          let i be
    object;
    
          assume i
    in the 
    carrier of S; 
    
          then
    
          reconsider s = i as
    SortSymbol of S; 
    
          (H
    . s) 
    = ( 
    OSHomQuot (F,R,s)) by 
    A2;
    
          hence (H
    . i) 
    = (G 
    . i) by 
    A3;
    
        end;
    
        hence thesis by
    PBOOLE: 3;
    
      end;
    
    end
    
    theorem :: 
    
    OSALG_4:25
    
    for U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2, R be 
    OSCongruence of U1 st F 
    is_homomorphism (U1,U2) & F is 
    order-sorted & R 
    c= ( 
    OSCng F) holds ( 
    OSHomQuot (F,R)) 
    is_homomorphism (( 
    QuotOSAlg (U1,R)),U2) & ( 
    OSHomQuot (F,R)) is 
    order-sorted
    
    proof
    
      let U1,U2 be
    non-empty  
    OSAlgebra of S, F be 
    ManySortedFunction of U1, U2, R be 
    OSCongruence of U1; 
    
      set mc = R, qa = (
    QuotOSAlg (U1,mc)), qh = ( 
    OSHomQuot (F,R)), S1 = the 
    Sorts of U1; 
    
      assume that
    
      
    
    A1: F 
    is_homomorphism (U1,U2) and 
    
      
    
    A2: F is 
    order-sorted and 
    
      
    
    A3: R 
    c= ( 
    OSCng F); 
    
      for o be
    Element of the 
    carrier' of S st ( 
    Args (o,qa)) 
    <>  
    {} holds for x be 
    Element of ( 
    Args (o,qa)) holds ((qh 
    . ( 
    the_result_sort_of o)) 
    . (( 
    Den (o,qa)) 
    . x)) 
    = (( 
    Den (o,U2)) 
    . (qh 
    # x)) 
    
      proof
    
        let o be
    Element of the 
    carrier' of S such that ( 
    Args (o,qa)) 
    <>  
    {} ; 
    
        let x be
    Element of ( 
    Args (o,qa)); 
    
        reconsider o1 = o as
    OperSymbol of S; 
    
        set ro = (
    the_result_sort_of o), ar = ( 
    the_arity_of o); 
    
        
    
        
    
    A4: ( 
    dom x) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        (
    Args (o,qa)) 
    = (((( 
    OSClass mc) 
    # ) 
    * the 
    Arity of S) 
    . o) by 
    MSUALG_1:def 4;
    
        then
    
        consider a be
    Element of ( 
    Args (o,U1)) such that 
    
        
    
    A5: x 
    = (mc 
    #_os a) by 
    Th14;
    
        
    
        
    
    A6: ( 
    dom a) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        
    
    A7: 
    
        now
    
          let y be
    object;
    
          assume
    
          
    
    A8: y 
    in ( 
    dom ar); 
    
          then
    
          reconsider n = y as
    Nat;
    
          (ar
    . n) 
    in ( 
    rng ar) by 
    A8,
    FUNCT_1:def 3;
    
          then
    
          reconsider s = (ar
    . n) as 
    SortSymbol of S; 
    
          
    
          
    
    A9: (ar 
    /. n) 
    = (ar 
    . n) by 
    A8,
    PARTFUN1:def 6;
    
          then
    
          consider an be
    Element of (S1 
    . s) such that 
    
          
    
    A10: an 
    = (a 
    . n) and 
    
          
    
    A11: (x 
    . n) 
    = ( 
    OSClass (mc,an)) by 
    A5,
    A8,
    Def13;
    
          ((qh
    # x) 
    . n) 
    = ((qh 
    . s) 
    . (x 
    . n)) by 
    A4,
    A8,
    A9,
    MSUALG_3:def 6
    
          .= ((
    OSHomQuot (F,R,s)) 
    . ( 
    OSClass (mc,an))) by 
    A11,
    Def28
    
          .= ((F
    . s) 
    . an) by 
    A1,
    A2,
    A3,
    Def27
    
          .= ((F
    # a) 
    . n) by 
    A6,
    A8,
    A9,
    A10,
    MSUALG_3:def 6;
    
          hence ((qh
    # x) 
    . y) 
    = ((F 
    # a) 
    . y); 
    
        end;
    
        o
    in the 
    carrier' of S; 
    
        then o
    in ( 
    dom (S1 
    * the 
    ResultSort of S)) by 
    PARTFUN1:def 2;
    
        
    
        then
    
        
    
    A12: ((the 
    Sorts of U1 
    * the 
    ResultSort of S) 
    . o) 
    = (the 
    Sorts of U1 
    . (the 
    ResultSort of S 
    . o)) by 
    FUNCT_1: 12
    
        .= (the
    Sorts of U1 
    . ro) by 
    MSUALG_1:def 2;
    
        then (
    rng ( 
    Den (o,U1))) 
    c= ( 
    Result (o,U1)) & ( 
    Result (o,U1)) 
    = (S1 
    . ro) by 
    MSUALG_1:def 5;
    
        then (
    rng ( 
    Den (o,U1))) 
    c= ( 
    dom ( 
    OSQuotRes (mc,o))) by 
    A12,
    FUNCT_2:def 1;
    
        then
    
        
    
    A13: ( 
    dom ( 
    Den (o,U1))) 
    = ( 
    Args (o,U1)) & ( 
    dom (( 
    OSQuotRes (mc,o)) 
    * ( 
    Den (o,U1)))) 
    = ( 
    dom ( 
    Den (o,U1))) by 
    FUNCT_2:def 1,
    RELAT_1: 27;
    
        ar
    = (the 
    Arity of S 
    . o) by 
    MSUALG_1:def 1;
    
        then
    
        
    
    A14: ( 
    product (( 
    OSClass mc) 
    * ar)) 
    = (((( 
    OSClass mc) 
    # ) 
    * the 
    Arity of S) 
    . o) by 
    MSAFREE: 1;
    
        reconsider da = ((
    Den (o,U1)) 
    . a) as 
    Element of (S1 
    . ro) by 
    A12,
    MSUALG_1:def 5;
    
        
    
        
    
    A15: (qh 
    . ro) 
    = ( 
    OSHomQuot (F,R,ro)) by 
    Def28;
    
        (
    Den (o,qa)) 
    = (( 
    OSQuotCharact mc) 
    . o) by 
    MSUALG_1:def 6
    
        .= (
    OSQuotCharact (mc,o1)) by 
    Def19;
    
        
    
        then ((
    Den (o,qa)) 
    . x) 
    = ((( 
    OSQuotRes (mc,o)) 
    * ( 
    Den (o,U1))) 
    . a) by 
    A5,
    A14,
    Def18
    
        .= ((
    OSQuotRes (mc,o)) 
    . da) by 
    A13,
    FUNCT_1: 12
    
        .= (
    OSClass (R,da)) by 
    Def14;
    
        
    
        then
    
        
    
    A16: ((qh 
    . ro) 
    . (( 
    Den (o,qa)) 
    . x)) 
    = ((F 
    . ro) 
    . (( 
    Den (o,U1)) 
    . a)) by 
    A1,
    A2,
    A3,
    A15,
    Def27
    
        .= ((
    Den (o,U2)) 
    . (F 
    # a)) by 
    A1;
    
        (
    dom (qh 
    # x)) 
    = ( 
    dom ar) & ( 
    dom (F 
    # a)) 
    = ( 
    dom ar) by 
    MSUALG_3: 6;
    
        hence thesis by
    A7,
    A16,
    FUNCT_1: 2;
    
      end;
    
      hence qh
    is_homomorphism (qa,U2); 
    
      thus (
    OSHomQuot (F,R)) is 
    order-sorted
    
      proof
    
        reconsider S1O = S1 as
    OrderSortedSet of S by 
    OSALG_1: 17;
    
        reconsider sqa = the
    Sorts of qa as 
    OrderSortedSet of S; 
    
        let s1,s2 be
    Element of S such that 
    
        
    
    A17: s1 
    <= s2; 
    
        let a1 be
    set such that 
    
        
    
    A18: a1 
    in ( 
    dom (qh 
    . s1)); 
    
        a1
    in (( 
    OSClass R) 
    . s1) by 
    A18;
    
        then a1
    in ( 
    OSClass (R,s1)) by 
    Def11;
    
        then
    
        consider x be
    set such that 
    
        
    
    A19: x 
    in (S1 
    . s1) and 
    
        
    
    A20: a1 
    = ( 
    Class (( 
    CompClass (R,( 
    CComp s1))),x)) by 
    Def10;
    
        (S1O
    . s1) 
    c= (S1O 
    . s2) by 
    A17,
    OSALG_1:def 16;
    
        then
    
        reconsider x2 = x as
    Element of (S1 
    . s2) by 
    A19;
    
        
    
        
    
    A21: a1 
    = ( 
    OSClass (R,x2)) by 
    A17,
    A20,
    Th4;
    
        reconsider s3 = s1, s4 = s2 as
    Element of S; 
    
        
    
        
    
    A22: ( 
    dom (qh 
    . s1)) 
    = (the 
    Sorts of qa 
    . s1) & ( 
    dom (qh 
    . s2)) 
    = (the 
    Sorts of qa 
    . s2) by 
    FUNCT_2:def 1;
    
        reconsider x1 = x as
    Element of (S1 
    . s1) by 
    A19;
    
        x1
    in ( 
    dom (F 
    . s3)) by 
    A19,
    FUNCT_2:def 1;
    
        then
    
        
    
    A23: ((F 
    . s3) 
    . x1) 
    = ((F 
    . s4) 
    . x1) by 
    A2,
    A17;
    
        (sqa
    . s1) 
    c= (sqa 
    . s2) by 
    A17,
    OSALG_1:def 16;
    
        hence a1
    in ( 
    dom (qh 
    . s2)) by 
    A18,
    A22;
    
        
    
        thus ((qh
    . s1) 
    . a1) 
    = (( 
    OSHomQuot (F,R,s1)) 
    . ( 
    OSClass (R,x1))) by 
    A20,
    Def28
    
        .= ((F
    . s2) 
    . x1) by 
    A1,
    A2,
    A3,
    A23,
    Def27
    
        .= ((
    OSHomQuot (F,R,s2)) 
    . ( 
    OSClass (R,x2))) by 
    A1,
    A2,
    A3,
    Def27
    
        .= ((qh
    . s2) 
    . a1) by 
    A21,
    Def28;
    
      end;
    
    end;