mssublat.miz
    
    begin
    
    reserve a for
    set, 
    
i for
    Nat;
    
    theorem :: 
    
    MSSUBLAT:1
    
    
    
    
    
    Th1: (( 
    *--> a) 
    .  
    0 ) 
    =  
    {}  
    
    proof
    
      
    
      thus ((
    *--> a) 
    .  
    0 ) 
    = ( 
    0  
    |-> a) by 
    FINSEQ_2:def 6
    
      .=
    {} ; 
    
    end;
    
    theorem :: 
    
    MSSUBLAT:2
    
    ((
    *--> a) 
    . 1) 
    =  
    <*a*>
    
    proof
    
      
    
      thus ((
    *--> a) 
    . 1) 
    = (1 
    |-> a) by 
    FINSEQ_2:def 6
    
      .=
    <*a*> by
    FINSEQ_2: 59;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:3
    
    ((
    *--> a) 
    . 2) 
    =  
    <*a, a*>
    
    proof
    
      
    
      thus ((
    *--> a) 
    . 2) 
    = (2 
    |-> a) by 
    FINSEQ_2:def 6
    
      .=
    <*a, a*> by
    FINSEQ_2: 61;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:4
    
    ((
    *--> a) 
    . 3) 
    =  
    <*a, a, a*>
    
    proof
    
      
    
      thus ((
    *--> a) 
    . 3) 
    = (3 
    |-> a) by 
    FINSEQ_2:def 6
    
      .=
    <*a, a, a*> by
    FINSEQ_2: 62;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:5
    
    
    
    
    
    Th5: for f be 
    FinSequence of 
    {
    0 } holds f 
    = (i 
    |->  
    0 ) iff ( 
    len f) 
    = i 
    
    proof
    
      let f be
    FinSequence of 
    {
    0 }; 
    
      thus f
    = (i 
    |->  
    0 ) implies ( 
    len f) 
    = i by 
    CARD_1:def 7;
    
      assume (
    len f) 
    = i; 
    
      then
    
      
    
    A1: ( 
    dom f) 
    = ( 
    Seg i) by 
    FINSEQ_1:def 3;
    
      per cases ;
    
        suppose
    
        
    
    A2: ( 
    Seg i) 
    =  
    {} ; 
    
        
    
        hence f
    =  
    {} by 
    A1
    
        .= (
    0  
    |->  
    0 ) 
    
        .= (i
    |->  
    0 ) by 
    A2;
    
      end;
    
        suppose
    
        
    
    A3: ( 
    Seg i) 
    <>  
    {} ; 
    
        (
    rng f) 
    c=  
    {
    0 } by 
    FINSEQ_1:def 4;
    
        then (
    rng f) 
    =  
    {
    0 } or ( 
    rng f) 
    =  
    {} by 
    ZFMISC_1: 33;
    
        hence thesis by
    A1,
    A3,
    FUNCOP_1: 9,
    RELAT_1: 42;
    
      end;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:6
    
    
    
    
    
    Th6: for f be 
    FinSequence st f 
    = (( 
    *-->  
    0 ) 
    . i) holds ( 
    len f) 
    = i 
    
    proof
    
      let p be
    FinSequence;
    
      assume
    
      
    
    A1: p 
    = (( 
    *-->  
    0 ) 
    . i); 
    
      p
    = (i 
    |->  
    0 ) by 
    A1,
    FINSEQ_2:def 6;
    
      hence thesis by
    CARD_1:def 7;
    
    end;
    
    begin
    
    reconsider z =
    0 as 
    Element of 
    {
    0 } by 
    TARSKI:def 1;
    
    theorem :: 
    
    MSSUBLAT:7
    
    
    
    
    
    Th7: for U1,U2 be 
    Universal_Algebra st U1 is 
    SubAlgebra of U2 holds ( 
    MSSign U1) 
    = ( 
    MSSign U2) 
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      set ff2 = ((
    dom ( 
    signature U1)) 
    --> z), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
      reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature U1)) as 
    Function of ( 
    dom ( 
    signature U1)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      reconsider gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature U2)) as 
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      assume U1 is
    SubAlgebra of U2; 
    
      then
    
      
    
    A1: (U1,U2) 
    are_similar by 
    UNIALG_2: 13;
    
      
    
      
    
    A2: ( 
    MSSign U1) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U1)), ff1, ff2 #) & ( 
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) by 
    MSUALG_1: 10;
    
      thus thesis by
    A1,
    A2;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:8
    
    
    
    
    
    Th8: for U1,U2 be 
    Universal_Algebra st U1 is 
    SubAlgebra of U2 holds for B be 
    MSSubset of ( 
    MSAlg U2) st B 
    = the 
    Sorts of ( 
    MSAlg U1) holds for o be 
    OperSymbol of ( 
    MSSign U2) holds for a be 
    OperSymbol of ( 
    MSSign U1) st a 
    = o holds ( 
    Den (a,( 
    MSAlg U1))) 
    = (( 
    Den (o,( 
    MSAlg U2))) 
    | ( 
    Args (a,( 
    MSAlg U1)))) 
    
    proof
    
      let U1,U2 be
    Universal_Algebra such that 
    
      
    
    A1: U1 is 
    SubAlgebra of U2; 
    
      
    
      
    
    A2: ( 
    MSSign U1) 
    = ( 
    MSSign U2) by 
    A1,
    Th7;
    
      
    
      
    
    A3: ( 
    MSSign U1) 
    = ( 
    MSSign U2) by 
    A1,
    Th7;
    
      let B be
    MSSubset of ( 
    MSAlg U2) such that 
    
      
    
    A4: B 
    = the 
    Sorts of ( 
    MSAlg U1); 
    
      let o be
    OperSymbol of ( 
    MSSign U2); 
    
      reconsider a = o as
    Element of the 
    carrier' of ( 
    MSSign U1) by 
    A1,
    Th7;
    
      set X = (
    Args (a,( 
    MSAlg U1))); 
    
      set Y = (
    dom ( 
    Den (a,( 
    MSAlg U1)))); 
    
      the
    Sorts of ( 
    MSAlg U2) is 
    MSSubset of ( 
    MSAlg U2) & B 
    c= the 
    Sorts of ( 
    MSAlg U2) by 
    PBOOLE:def 18;
    
      then
    
      
    
    A5: (((B 
    # ) 
    * the 
    Arity of ( 
    MSSign U1)) 
    . a) 
    c= (((the 
    Sorts of ( 
    MSAlg U2) 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . o) by 
    A3,
    MSUALG_2: 2;
    
      (
    dom ( 
    Den (o,( 
    MSAlg U2)))) 
    = ( 
    Args (o,( 
    MSAlg U2))) & ( 
    Args (o,( 
    MSAlg U2))) 
    = (((the 
    Sorts of ( 
    MSAlg U2) 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . o) by 
    FUNCT_2:def 1,
    MSUALG_1:def 4;
    
      then (
    Args (a,( 
    MSAlg U1))) 
    c= ( 
    dom ( 
    Den (o,( 
    MSAlg U2)))) by 
    A4,
    A2,
    A5,
    MSUALG_1:def 4;
    
      then (
    dom (( 
    Den (o,( 
    MSAlg U2))) 
    | ( 
    Args (a,( 
    MSAlg U1))))) 
    = ( 
    Args (a,( 
    MSAlg U1))) by 
    RELAT_1: 62;
    
      then (
    dom (( 
    Den (o,( 
    MSAlg U2))) 
    | ( 
    Args (a,( 
    MSAlg U1))))) 
    = ( 
    dom ( 
    Den (a,( 
    MSAlg U1)))) by 
    FUNCT_2:def 1;
    
      then
    
      
    
    A6: Y 
    = (( 
    dom ( 
    Den (o,( 
    MSAlg U2)))) 
    /\ X) by 
    RELAT_1: 61;
    
      for x be
    object st x 
    in Y holds (( 
    Den (o,( 
    MSAlg U2))) 
    . x) 
    = (( 
    Den (a,( 
    MSAlg U1))) 
    . x) 
    
      proof
    
        (
    MSAlg U1) 
    =  
    MSAlgebra (# ( 
    MSSorts U1), ( 
    MSCharact U1) #) by 
    MSUALG_1:def 11;
    
        then the
    Sorts of ( 
    MSAlg U1) 
    = ( 
    0  
    .--> the 
    carrier of U1) by 
    MSUALG_1:def 9;
    
        then (
    rng the 
    Sorts of ( 
    MSAlg U1)) 
    =  
    {the 
    carrier of U1} by 
    FUNCOP_1: 8;
    
        then
    
        
    
    A7: the 
    carrier of U1 is 
    Component of the 
    Sorts of ( 
    MSAlg U1) by 
    TARSKI:def 1;
    
        reconsider cc = the
    carrier of U1 as non 
    empty  
    Subset of U2 by 
    A1,
    UNIALG_2:def 7;
    
        let x be
    object;
    
        
    
        
    
    A8: ( 
    MSAlg U2) 
    =  
    MSAlgebra (# ( 
    MSSorts U2), ( 
    MSCharact U2) #) by 
    MSUALG_1:def 11;
    
        (U1,U2)
    are_similar by 
    A1,
    UNIALG_2: 13;
    
        then
    
        
    
    A9: ( 
    signature U1) 
    = ( 
    signature U2); 
    
        assume x
    in Y; 
    
        then x
    in X by 
    A6,
    XBOOLE_0:def 4;
    
        then x
    in (( 
    len ( 
    the_arity_of a)) 
    -tuples_on ( 
    the_sort_of ( 
    MSAlg U1))) by 
    MSUALG_1: 6;
    
        then
    
        
    
    A10: x 
    in (( 
    len ( 
    the_arity_of a)) 
    -tuples_on the 
    carrier of U1) by 
    A7,
    MSUALG_1:def 12;
    
        reconsider gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature U2)) as 
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        set ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature U1)), ff2 = (( 
    dom ( 
    signature U1)) 
    --> z), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
        reconsider ff1 as
    Function of ( 
    dom ( 
    signature U1)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        consider n be
    Nat such that 
    
        
    
    A11: ( 
    dom ( 
    signature U2)) 
    = ( 
    Seg n) by 
    FINSEQ_1:def 2;
    
        
    
        
    
    A12: ( 
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) by 
    MSUALG_1: 10;
    
        then
    
        
    
    A13: a 
    in ( 
    Seg n) by 
    A11;
    
        
    
        
    
    A14: ( 
    dom the 
    charact of U2) 
    = ( 
    Seg ( 
    len the 
    charact of U2)) by 
    FINSEQ_1:def 3
    
        .= (
    Seg ( 
    len ( 
    signature U2))) by 
    UNIALG_1:def 4
    
        .= (
    dom ( 
    signature U2)) by 
    FINSEQ_1:def 3;
    
        then
    
        reconsider op = (the
    charact of U2 
    . a) as 
    operation of U2 by 
    A12,
    FUNCT_1:def 3;
    
        reconsider a as
    Element of 
    NAT by 
    A13;
    
        
    
        
    
    A15: ( 
    rng ( 
    signature U1)) 
    c=  
    NAT by 
    FINSEQ_1:def 4;
    
        (U1,U2)
    are_similar by 
    A1,
    UNIALG_2: 13;
    
        then
    
        
    
    A16: ( 
    signature U1) 
    = ( 
    signature U2); 
    
        then
    
        
    
    A17: (( 
    signature U1) 
    . a) 
    in ( 
    rng ( 
    signature U1)) by 
    A12,
    FUNCT_1:def 3;
    
        then
    
        reconsider sig = ((
    signature U1) 
    . a) as 
    Element of 
    NAT by 
    A15;
    
        (
    dom ( 
    *-->  
    0 )) 
    =  
    NAT by 
    FUNCT_2:def 1;
    
        then (
    MSSign U1) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U1)), ff1, ff2 #) & a 
    in ( 
    dom (( 
    *-->  
    0 ) 
    * ( 
    signature U1))) by 
    A12,
    A16,
    A17,
    A15,
    FUNCT_1: 11,
    MSUALG_1: 10;
    
        then (the
    Arity of ( 
    MSSign U1) 
    . a) 
    = (( 
    *-->  
    0 ) 
    . (( 
    signature U1) 
    . a)) by 
    FUNCT_1: 12;
    
        then
    
        
    
    A18: (the 
    Arity of ( 
    MSSign U1) 
    . a) 
    = (sig 
    |->  
    0 ) by 
    FINSEQ_2:def 6;
    
        reconsider ar = (the
    Arity of ( 
    MSSign U1) 
    . a) as 
    FinSequence;
    
        x
    in (( 
    len ar) 
    -tuples_on the 
    carrier of U1) by 
    A10,
    MSUALG_1:def 1;
    
        then x
    in (sig 
    -tuples_on the 
    carrier of U1) by 
    A18,
    CARD_1:def 7;
    
        then
    
        
    
    A19: x 
    in (( 
    arity op) 
    -tuples_on the 
    carrier of U1) by 
    A12,
    A9,
    UNIALG_1:def 4;
    
        now
    
          let n be
    object;
    
          assume n
    in ( 
    dom ( 
    Opers (U2,cc))); 
    
          then (
    rng ( 
    Opers (U2,cc))) 
    c= ( 
    PFuncs ((cc 
    * ),cc)) & (( 
    Opers (U2,cc)) 
    . n) 
    in ( 
    rng ( 
    Opers (U2,cc))) by 
    FINSEQ_1:def 4,
    FUNCT_1:def 3;
    
          hence ((
    Opers (U2,cc)) 
    . n) is 
    Function by 
    PARTFUN1: 46;
    
        end;
    
        then
    
        reconsider f = (
    Opers (U2,cc)) as 
    Function-yielding  
    Function by 
    FUNCOP_1:def 6;
    
        cc is
    opers_closed by 
    A1,
    UNIALG_2:def 7;
    
        then
    
        
    
    A20: cc 
    is_closed_on op; 
    
        a
    in ( 
    dom the 
    charact of U2) by 
    A12,
    A14;
    
        then
    
        
    
    A21: o 
    in ( 
    dom ( 
    Opers (U2,cc))) by 
    UNIALG_2:def 6;
    
        reconsider a as
    OperSymbol of ( 
    MSSign U1); 
    
        (
    MSAlg U1) 
    =  
    MSAlgebra (# ( 
    MSSorts U1), ( 
    MSCharact U1) #) by 
    MSUALG_1:def 11;
    
        
    
        then ((
    Den (a,( 
    MSAlg U1))) 
    . x) 
    = ((( 
    MSCharact U1) 
    . o) 
    . x) by 
    MSUALG_1:def 6
    
        .= ((the
    charact of U1 
    . o) 
    . x) by 
    MSUALG_1:def 10
    
        .= ((f
    . o) 
    . x) by 
    A1,
    UNIALG_2:def 7
    
        .= ((op
    /. cc) 
    . x) by 
    A21,
    UNIALG_2:def 6
    
        .= ((op
    | (( 
    arity op) 
    -tuples_on cc)) 
    . x) by 
    A20,
    UNIALG_2:def 5
    
        .= ((the
    charact of U2 
    . o) 
    . x) by 
    A19,
    FUNCT_1: 49
    
        .= ((the
    Charact of ( 
    MSAlg U2) 
    . o) 
    . x) by 
    A8,
    MSUALG_1:def 10
    
        .= ((
    Den (o,( 
    MSAlg U2))) 
    . x) by 
    MSUALG_1:def 6;
    
        hence thesis;
    
      end;
    
      hence thesis by
    A6,
    FUNCT_1: 46;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:9
    
    
    
    
    
    Th9: for U1,U2 be 
    Universal_Algebra st U1 is 
    SubAlgebra of U2 holds the 
    Sorts of ( 
    MSAlg U1) is 
    MSSubset of ( 
    MSAlg U2) 
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      set gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature U2)), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
      reconsider gg1 as
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A1: ( 
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) by 
    MSUALG_1: 10;
    
      (
    MSAlg U2) 
    =  
    MSAlgebra (# ( 
    MSSorts U2), ( 
    MSCharact U2) #) by 
    MSUALG_1:def 11;
    
      then
    
      
    
    A2: the 
    Sorts of ( 
    MSAlg U2) 
    = ( 
    0  
    .--> the 
    carrier of U2) by 
    MSUALG_1:def 9;
    
      assume
    
      
    
    A3: U1 is 
    SubAlgebra of U2; 
    
      then (
    MSSign U1) 
    = ( 
    MSSign U2) by 
    Th7;
    
      then
    
      reconsider A = (
    MSAlg U1) as 
    non-empty  
    MSAlgebra over ( 
    MSSign U2); 
    
      (
    MSAlg U1) 
    =  
    MSAlgebra (# ( 
    MSSorts U1), ( 
    MSCharact U1) #) by 
    MSUALG_1:def 11;
    
      then
    
      
    
    A4: the 
    Sorts of A 
    = ( 
    0  
    .--> the 
    carrier of U1) by 
    MSUALG_1:def 9;
    
      
    
      
    
    A5: 
    0  
    in  
    {
    0 } by 
    TARSKI:def 1;
    
      
    
      
    
    A6: the 
    carrier of U1 is 
    Subset of U2 by 
    A3,
    UNIALG_2:def 7;
    
      the
    Sorts of A 
    c= the 
    Sorts of ( 
    MSAlg U2) 
    
      proof
    
        let i be
    object;
    
        assume i
    in the 
    carrier of ( 
    MSSign U2); 
    
        then
    
        
    
    A7: i 
    =  
    0 by 
    A1,
    TARSKI:def 1;
    
        (the
    Sorts of A 
    .  
    0 ) 
    = the 
    carrier of U1 & (the 
    Sorts of ( 
    MSAlg U2) 
    .  
    0 ) 
    = the 
    carrier of U2 by 
    A4,
    A2,
    A5,
    FUNCOP_1: 7;
    
        hence thesis by
    A6,
    A7;
    
      end;
    
      hence thesis by
    PBOOLE:def 18;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:10
    
    
    
    
    
    Th10: for U1,U2 be 
    Universal_Algebra st U1 is 
    SubAlgebra of U2 holds for B be 
    MSSubset of ( 
    MSAlg U2) st B 
    = the 
    Sorts of ( 
    MSAlg U1) holds B is 
    opers_closed
    
    proof
    
      let U1,U2 be
    Universal_Algebra such that 
    
      
    
    A1: U1 is 
    SubAlgebra of U2; 
    
      let B be
    MSSubset of ( 
    MSAlg U2) such that 
    
      
    
    A2: B 
    = the 
    Sorts of ( 
    MSAlg U1); 
    
      let o be
    OperSymbol of ( 
    MSSign U2); 
    
      reconsider a = o as
    Element of the 
    carrier' of ( 
    MSSign U1) by 
    A1,
    Th7;
    
      set S = ((B
    * the 
    ResultSort of ( 
    MSSign U2)) 
    . a); 
    
      S
    = ((the 
    Sorts of ( 
    MSAlg U1) 
    * the 
    ResultSort of ( 
    MSSign U1)) 
    . a) by 
    A1,
    A2,
    Th7;
    
      then
    
      
    
    A3: S 
    = ( 
    Result (a,( 
    MSAlg U1))) by 
    MSUALG_1:def 5;
    
      set Z = (
    rng (( 
    Den (o,( 
    MSAlg U2))) 
    | (((B 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . a))); 
    
      (
    MSSign U1) 
    = ( 
    MSSign U2) by 
    A1,
    Th7;
    
      then (
    rng ( 
    Den (a,( 
    MSAlg U1)))) 
    c= ( 
    Result (a,( 
    MSAlg U1))) & Z 
    = ( 
    rng (( 
    Den (o,( 
    MSAlg U2))) 
    | ( 
    Args (a,( 
    MSAlg U1))))) by 
    A2,
    MSUALG_1:def 4,
    RELAT_1:def 19;
    
      then Z
    c= ( 
    Result (a,( 
    MSAlg U1))) by 
    A1,
    A2,
    Th8;
    
      hence thesis by
    A3;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:11
    
    
    
    
    
    Th11: for U1,U2 be 
    Universal_Algebra st U1 is 
    SubAlgebra of U2 holds for B be 
    MSSubset of ( 
    MSAlg U2) st B 
    = the 
    Sorts of ( 
    MSAlg U1) holds the 
    Charact of ( 
    MSAlg U1) 
    = ( 
    Opers (( 
    MSAlg U2),B)) 
    
    proof
    
      let U1,U2 be
    Universal_Algebra such that 
    
      
    
    A1: U1 is 
    SubAlgebra of U2; 
    
      let B be
    MSSubset of ( 
    MSAlg U2); 
    
      set f1 = the
    Charact of ( 
    MSAlg U1), f2 = ( 
    Opers (( 
    MSAlg U2),B)); 
    
      the
    carrier' of ( 
    MSSign U1) 
    = the 
    carrier' of ( 
    MSSign U2) 
    
      proof
    
        set ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature U1)), ff2 = (( 
    dom ( 
    signature U1)) 
    --> z), gg1 = (( 
    *-->  
    0 ) 
    * ( 
    signature U2)), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
        reconsider ff1 as
    Function of ( 
    dom ( 
    signature U1)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        reconsider gg1 as
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        
    
        
    
    A2: ( 
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) by 
    MSUALG_1: 10;
    
        (U1,U2)
    are_similar & ( 
    MSSign U1) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U1)), ff1, ff2 #) by 
    A1,
    MSUALG_1: 10,
    UNIALG_2: 13;
    
        hence thesis by
    A2;
    
      end;
    
      then
    
      reconsider f1 as
    ManySortedSet of the 
    carrier' of ( 
    MSSign U2); 
    
      assume
    
      
    
    A3: B 
    = the 
    Sorts of ( 
    MSAlg U1); 
    
      for x be
    object st x 
    in the 
    carrier' of ( 
    MSSign U2) holds (f1 
    . x) 
    = (f2 
    . x) 
    
      proof
    
        let x be
    object;
    
        assume
    
        
    
    A4: x 
    in the 
    carrier' of ( 
    MSSign U2); 
    
        then
    
        reconsider y = x as
    OperSymbol of ( 
    MSSign U2); 
    
        reconsider x as
    OperSymbol of ( 
    MSSign U1) by 
    A1,
    A4,
    Th7;
    
        B is
    opers_closed by 
    A1,
    A3,
    Th10;
    
        then (f2
    . y) 
    = (y 
    /. B) & B 
    is_closed_on y by 
    MSUALG_2:def 8;
    
        then
    
        
    
    A5: (f2 
    . y) 
    = (( 
    Den (y,( 
    MSAlg U2))) 
    | (((B 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . y)) by 
    MSUALG_2:def 7;
    
        (((B
    # ) 
    * the 
    Arity of ( 
    MSSign U1)) 
    . x) 
    = (((the 
    Sorts of ( 
    MSAlg U1) 
    # ) 
    * the 
    Arity of ( 
    MSSign U1)) 
    . x) by 
    A1,
    A3,
    Th7;
    
        then (f2
    . y) 
    = (( 
    Den (y,( 
    MSAlg U2))) 
    | (((the 
    Sorts of ( 
    MSAlg U1) 
    # ) 
    * the 
    Arity of ( 
    MSSign U1)) 
    . x)) by 
    A1,
    A5,
    Th7;
    
        then (f1
    . x) 
    = ( 
    Den (x,( 
    MSAlg U1))) & (f2 
    . y) 
    = (( 
    Den (y,( 
    MSAlg U2))) 
    | ( 
    Args (x,( 
    MSAlg U1)))) by 
    MSUALG_1:def 4,
    MSUALG_1:def 6;
    
        hence thesis by
    A1,
    A3,
    Th8;
    
      end;
    
      hence thesis by
    PBOOLE: 3;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:12
    
    
    
    
    
    Th12: for U1,U2 be 
    Universal_Algebra st U1 is 
    SubAlgebra of U2 holds ( 
    MSAlg U1) is 
    MSSubAlgebra of ( 
    MSAlg U2) 
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      assume
    
      
    
    A1: U1 is 
    SubAlgebra of U2; 
    
      then (
    MSSign U1) 
    = ( 
    MSSign U2) by 
    Th7;
    
      then
    
      reconsider A = (
    MSAlg U1) as 
    non-empty  
    MSAlgebra over ( 
    MSSign U2); 
    
      A is
    MSSubAlgebra of ( 
    MSAlg U2) 
    
      proof
    
        thus the
    Sorts of A is 
    MSSubset of ( 
    MSAlg U2) by 
    A1,
    Th9;
    
        let B be
    MSSubset of ( 
    MSAlg U2); 
    
        assume
    
        
    
    A2: B 
    = the 
    Sorts of A; 
    
        hence B is
    opers_closed by 
    A1,
    Th10;
    
        thus thesis by
    A1,
    A2,
    Th11;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:13
    
    
    
    
    
    Th13: for U1,U2 be 
    Universal_Algebra st ( 
    MSAlg U1) is 
    MSSubAlgebra of ( 
    MSAlg U2) holds the 
    carrier of U1 is 
    Subset of U2 
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      set MU1 = (
    MSAlg U1), MU2 = ( 
    MSAlg U2); 
    
      assume
    
      
    
    A1: MU1 is 
    MSSubAlgebra of MU2; 
    
      then
    
      reconsider MU1 as
    MSAlgebra over ( 
    MSSign U2); 
    
      reconsider C = the
    Sorts of MU1 as 
    MSSubset of MU2 by 
    A1,
    MSUALG_2:def 9;
    
      set gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature U2)), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
      reconsider gg1 as
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      reconsider C1 = C as
    ManySortedSet of the 
    carrier of ( 
    MSSign U2); 
    
      
    
      
    
    A2: 
    0  
    in  
    {
    0 } by 
    TARSKI:def 1;
    
      MU2
    =  
    MSAlgebra (# ( 
    MSSorts U2), ( 
    MSCharact U2) #) by 
    MSUALG_1:def 11;
    
      then
    
      
    
    A3: C1 
    c= ( 
    MSSorts U2) by 
    PBOOLE:def 18;
    
      (
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) & ( 
    MSSorts U2) 
    = ( 
    0  
    .--> the 
    carrier of U2) by 
    MSUALG_1: 10,
    MSUALG_1:def 9;
    
      then MU1
    =  
    MSAlgebra (# ( 
    MSSorts U1), ( 
    MSCharact U1) #) & (C1 
    .  
    0 ) 
    c= (( 
    {
    0 } 
    --> the 
    carrier of U2) 
    .  
    0 ) by 
    A3,
    MSUALG_1:def 11;
    
      then ((
    MSSorts U1) 
    .  
    0 ) 
    c= the 
    carrier of U2 by 
    A2,
    FUNCOP_1: 7;
    
      then ((
    0  
    .--> the 
    carrier of U1) 
    .  
    0 ) 
    c= the 
    carrier of U2 by 
    MSUALG_1:def 9;
    
      hence thesis by
    A2,
    FUNCOP_1: 7;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:14
    
    
    
    
    
    Th14: for U1,U2 be 
    Universal_Algebra st ( 
    MSAlg U1) is 
    MSSubAlgebra of ( 
    MSAlg U2) holds for B be non 
    empty  
    Subset of U2 st B 
    = the 
    carrier of U1 holds B is 
    opers_closed
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      set MU1 = (
    MSAlg U1), MU2 = ( 
    MSAlg U2); 
    
      
    
      
    
    A1: MU2 
    =  
    MSAlgebra (# ( 
    MSSorts U2), ( 
    MSCharact U2) #) by 
    MSUALG_1:def 11;
    
      assume
    
      
    
    A2: MU1 is 
    MSSubAlgebra of MU2; 
    
      then
    
      reconsider MU1 as
    MSAlgebra over ( 
    MSSign U2); 
    
      let B be non
    empty  
    Subset of U2; 
    
      assume
    
      
    
    A3: B 
    = the 
    carrier of U1; 
    
      let o be
    operation of U2; 
    
      reconsider C = the
    Sorts of MU1 as 
    MSSubset of MU2 by 
    A2,
    MSUALG_2:def 9;
    
      
    
      
    
    A4: MU1 
    =  
    MSAlgebra (# ( 
    MSSorts U1), ( 
    MSCharact U1) #) by 
    MSUALG_1:def 11;
    
      set gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature U2)), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
      reconsider gg1 as
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A5: ( 
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) by 
    MSUALG_1: 10;
    
      
    
      
    
    A6: C is 
    opers_closed by 
    A2,
    MSUALG_2:def 9;
    
      thus B
    is_closed_on o 
    
      proof
    
        
    
        
    
    A7: 
    0  
    in  
    {
    0 } by 
    TARSKI:def 1;
    
        let s be
    FinSequence of B; 
    
        consider n be
    object such that 
    
        
    
    A8: n 
    in ( 
    dom the 
    charact of U2) and 
    
        
    
    A9: o 
    = (the 
    charact of U2 
    . n) by 
    FUNCT_1:def 3;
    
        
    
        
    
    A10: ( 
    dom the 
    charact of U2) 
    = ( 
    Seg ( 
    len the 
    charact of U2)) & ( 
    dom ( 
    signature U2)) 
    = ( 
    Seg ( 
    len ( 
    signature U2))) by 
    FINSEQ_1:def 3;
    
        then
    
        
    
    A11: n 
    in ( 
    dom ( 
    signature U2)) by 
    A8,
    UNIALG_1:def 4;
    
        reconsider n as
    OperSymbol of ( 
    MSSign U2) by 
    A5,
    A8,
    A10,
    UNIALG_1:def 4;
    
        assume
    
        
    
    A12: ( 
    len s) 
    = ( 
    arity o); 
    
        ex y be
    set st y 
    in ( 
    dom (( 
    Den (n,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n))) & ((( 
    Den (n,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n)) 
    . y) 
    = (o 
    . s) 
    
        proof
    
          take s;
    
          thus s
    in ( 
    dom (( 
    Den (n,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n))) 
    
          proof
    
            ((
    arity o) 
    |->  
    0 ) is 
    FinSequence of the 
    carrier of ( 
    MSSign U2) by 
    A5,
    FINSEQ_2: 63;
    
            then
    
            reconsider ao0 = ((
    arity o) 
    |->  
    0 ) as 
    Element of (the 
    carrier of ( 
    MSSign U2) 
    * ) by 
    FINSEQ_1:def 11;
    
            
    
    A13: 
    
            now
    
              assume (
    Seg ( 
    arity o)) 
    =  
    {} ; 
    
              then ((
    arity o) 
    |->  
    0 ) 
    = ( 
    <*> the 
    carrier of ( 
    MSSign U2)); 
    
              hence ((
    arity o) 
    |->  
    0 ) is 
    FinSequence of the 
    carrier of ( 
    MSSign U2); 
    
            end;
    
            (
    Seg ( 
    arity o)) 
    <>  
    {} implies ( 
    dom (( 
    arity o) 
    |->  
    0 )) 
    = ( 
    Seg ( 
    arity o)) & ( 
    rng (( 
    arity o) 
    |->  
    0 )) 
    c= the 
    carrier of ( 
    MSSign U2) by 
    A5,
    FUNCOP_1: 13;
    
            then ((
    arity o) 
    |->  
    0 ) is 
    FinSequence of the 
    carrier of ( 
    MSSign U2) by 
    A13,
    FINSEQ_1:def 4;
    
            then
    
            reconsider aro = ((
    arity o) 
    |->  
    0 ) as 
    Element of (the 
    carrier of ( 
    MSSign U2) 
    * ) by 
    FINSEQ_1:def 11;
    
            
    
            
    
    A14: ( 
    dom the 
    Arity of ( 
    MSSign U2)) 
    = the 
    carrier' of ( 
    MSSign U2) by 
    FUNCT_2:def 1;
    
            the
    Sorts of MU2 
    = ( 
    0  
    .--> the 
    carrier of U2) by 
    A1,
    MSUALG_1:def 9;
    
            
    
            then
    
            
    
    A15: (the 
    Sorts of MU2 
    * aro) 
    = (( 
    arity o) 
    |-> the 
    carrier of U2) by 
    FINSEQ_2: 144
    
            .= ((
    Seg ( 
    arity o)) 
    --> the 
    carrier of U2); 
    
            (
    dom s) 
    = ( 
    Seg ( 
    arity o)) by 
    A12,
    FINSEQ_1:def 3;
    
            then
    
            
    
    A16: ( 
    dom s) 
    = ( 
    dom (the 
    Sorts of MU2 
    * aro)) by 
    A15;
    
            
    
            
    
    A17: for x be 
    object st x 
    in ( 
    dom (the 
    Sorts of MU2 
    * aro)) holds (s 
    . x) 
    in ((the 
    Sorts of MU2 
    * aro) 
    . x) 
    
            proof
    
              let x be
    object;
    
              (
    rng s) 
    c= B by 
    FINSEQ_1:def 4;
    
              then
    
              
    
    A18: ( 
    rng s) 
    c= the 
    carrier of U2 by 
    XBOOLE_1: 1;
    
              assume
    
              
    
    A19: x 
    in ( 
    dom (the 
    Sorts of MU2 
    * aro)); 
    
              (s
    . x) 
    in ( 
    rng s) by 
    A16,
    A19,
    FUNCT_1:def 3;
    
              then
    
              
    
    A20: 
    0  
    in  
    {
    0 } & (s 
    . x) 
    in the 
    carrier of U2 by 
    A18,
    TARSKI:def 1;
    
              ((the
    Sorts of MU2 
    * aro) 
    . x) 
    = (the 
    Sorts of MU2 
    . (aro 
    . x)) by 
    A19,
    FUNCT_1: 12
    
              .= ((
    MSSorts U2) 
    .  
    0 ) by 
    A1
    
              .= ((
    0  
    .--> the 
    carrier of U2) 
    .  
    0 ) by 
    MSUALG_1:def 9;
    
              hence thesis by
    A20,
    FUNCOP_1: 7;
    
            end;
    
            (
    dom ( 
    Den (n,MU2))) 
    = ( 
    Args (n,MU2)) by 
    FUNCT_2:def 1;
    
            
    
            then (
    dom ( 
    Den (n,MU2))) 
    = (((the 
    Sorts of MU2 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n) by 
    MSUALG_1:def 4
    
            .= ((the
    Sorts of MU2 
    # ) 
    . ((( 
    *-->  
    0 ) 
    * ( 
    signature U2)) 
    . n)) by 
    A5,
    A14,
    FUNCT_1: 13
    
            .= ((the
    Sorts of MU2 
    # ) 
    . (( 
    *-->  
    0 ) 
    . (( 
    signature U2) 
    . n))) by 
    A11,
    FUNCT_1: 13
    
            .= ((the
    Sorts of MU2 
    # ) 
    . (( 
    *-->  
    0 ) 
    . ( 
    arity o))) by 
    A9,
    A11,
    UNIALG_1:def 4
    
            .= ((the
    Sorts of MU2 
    # ) 
    . (( 
    arity o) 
    |->  
    0 )) by 
    FINSEQ_2:def 6;
    
            then (
    dom ( 
    Den (n,MU2))) 
    = ( 
    product (the 
    Sorts of MU2 
    * aro)) by 
    FINSEQ_2:def 5;
    
            then
    
            
    
    A21: s 
    in ( 
    dom ( 
    Den (n,MU2))) by 
    A16,
    A17,
    CARD_3:def 5;
    
            
    
            
    
    A22: s is 
    Element of (( 
    len s) 
    -tuples_on B) by 
    FINSEQ_2: 92;
    
            
    
            
    
    A23: 
    0  
    in  
    {
    0 } by 
    TARSKI:def 1;
    
            
    
            
    
    A24: n 
    in ( 
    dom ( 
    signature U2)) by 
    A8,
    A10,
    UNIALG_1:def 4;
    
            
    
            
    
    A25: C 
    = ( 
    0  
    .--> the 
    carrier of U1) by 
    A4,
    MSUALG_1:def 9;
    
            then (
    dom C) 
    =  
    {
    0 }; 
    
            then
    
            
    
    A26: 
    0  
    in ( 
    dom C) by 
    TARSKI:def 1;
    
            (
    dom ( 
    *-->  
    0 )) 
    =  
    NAT & (( 
    signature U2) 
    . n) 
    = ( 
    arity o) by 
    A9,
    A11,
    FUNCT_2:def 1,
    UNIALG_1:def 4;
    
            then
    
            
    
    A27: n 
    in ( 
    dom (( 
    *-->  
    0 ) 
    * ( 
    signature U2))) by 
    A24,
    FUNCT_1: 11;
    
            
    
            then (((C
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n) 
    = ((C 
    # ) 
    . ((( 
    *-->  
    0 ) 
    * ( 
    signature U2)) 
    . n)) by 
    A5,
    FUNCT_1: 13
    
            .= ((C
    # ) 
    . (( 
    *-->  
    0 ) 
    . (( 
    signature U2) 
    . n))) by 
    A27,
    FUNCT_1: 12
    
            .= ((C
    # ) 
    . (( 
    *-->  
    0 ) 
    . ( 
    arity o))) by 
    A9,
    A24,
    UNIALG_1:def 4
    
            .= ((C
    # ) 
    . (( 
    arity o) 
    |->  
    0 )) by 
    FINSEQ_2:def 6;
    
            
    
            then (((C
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n) 
    = ( 
    product (C 
    * ao0)) by 
    FINSEQ_2:def 5
    
            .= (
    product (( 
    Seg ( 
    arity o)) 
    --> (C 
    .  
    0 ))) by 
    A26,
    FUNCOP_1: 17
    
            .= (
    product (( 
    Seg ( 
    arity o)) 
    --> B)) by 
    A3,
    A25,
    A23,
    FUNCOP_1: 7
    
            .= (
    Funcs (( 
    Seg ( 
    arity o)),B)) by 
    CARD_3: 11
    
            .= ((
    arity o) 
    -tuples_on B) by 
    FINSEQ_2: 93;
    
            then s
    in (( 
    dom ( 
    Den (n,MU2))) 
    /\ (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n)) by 
    A12,
    A21,
    A22,
    XBOOLE_0:def 4;
    
            hence thesis by
    RELAT_1: 61;
    
          end;
    
          
    
          hence (((
    Den (n,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n)) 
    . s) 
    = (( 
    Den (n,MU2)) 
    . s) by 
    FUNCT_1: 47
    
          .= (((
    MSCharact U2) 
    . n) 
    . s) by 
    A1,
    MSUALG_1:def 6
    
          .= (o
    . s) by 
    A9,
    MSUALG_1:def 10;
    
        end;
    
        then
    
        
    
    A28: (o 
    . s) 
    in ( 
    rng (( 
    Den (n,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n))) by 
    FUNCT_1:def 3;
    
        C
    is_closed_on n by 
    A6;
    
        then
    
        
    
    A29: ( 
    rng (( 
    Den (n,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . n))) 
    c= ((C 
    * the 
    ResultSort of ( 
    MSSign U2)) 
    . n); 
    
        n
    in ( 
    dom (( 
    dom ( 
    signature U2)) 
    -->  
    0 )) by 
    A11;
    
        
    
        then ((C
    * the 
    ResultSort of ( 
    MSSign U2)) 
    . n) 
    = (C 
    . ((( 
    dom ( 
    signature U2)) 
    -->  
    0 ) 
    . n)) by 
    A5,
    FUNCT_1: 13
    
        .= (the
    Sorts of MU1 
    .  
    0 ) 
    
        .= ((
    0  
    .--> the 
    carrier of U1) 
    .  
    0 ) by 
    A4,
    MSUALG_1:def 9
    
        .= B by
    A3,
    A7,
    FUNCOP_1: 7;
    
        hence thesis by
    A29,
    A28;
    
      end;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:15
    
    
    
    
    
    Th15: for U1,U2 be 
    Universal_Algebra st ( 
    MSAlg U1) is 
    MSSubAlgebra of ( 
    MSAlg U2) holds for B be non 
    empty  
    Subset of U2 st B 
    = the 
    carrier of U1 holds the 
    charact of U1 
    = ( 
    Opers (U2,B)) 
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      set MU1 = (
    MSAlg U1), MU2 = ( 
    MSAlg U2); 
    
      
    
      
    
    A1: MU2 
    =  
    MSAlgebra (# ( 
    MSSorts U2), ( 
    MSCharact U2) #) by 
    MSUALG_1:def 11;
    
      assume
    
      
    
    A2: MU1 is 
    MSSubAlgebra of MU2; 
    
      then
    
      reconsider MU1 as
    MSAlgebra over ( 
    MSSign U2); 
    
      reconsider C = the
    Sorts of MU1 as 
    MSSubset of MU2 by 
    A2,
    MSUALG_2:def 9;
    
      
    
      
    
    A3: the 
    Charact of MU1 
    = ( 
    Opers (MU2,C)) by 
    A2,
    MSUALG_2:def 9;
    
      set gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature U2)), gg2 = (( 
    dom ( 
    signature U2)) 
    --> z); 
    
      reconsider gg1 as
    Function of ( 
    dom ( 
    signature U2)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A4: ( 
    MSSign U2) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature U2)), gg1, gg2 #) by 
    MSUALG_1: 10;
    
      let B be non
    empty  
    Subset of U2; 
    
      assume
    
      
    
    A5: B 
    = the 
    carrier of U1; 
    
      then
    
      reconsider ch1 = the
    charact of U1 as 
    PFuncFinSequence of B; 
    
      
    
      
    
    A6: MU1 
    =  
    MSAlgebra (# ( 
    MSSorts U1), ( 
    MSCharact U1) #) by 
    MSUALG_1:def 11;
    
      
    
      then
    
      
    
    A7: ( 
    dom ch1) 
    = ( 
    dom the 
    Charact of MU1) by 
    MSUALG_1:def 10
    
      .= the
    carrier' of ( 
    MSSign U2) by 
    PARTFUN1:def 2
    
      .= (
    Seg ( 
    len ( 
    signature U2))) by 
    A4,
    FINSEQ_1:def 3
    
      .= (
    Seg ( 
    len the 
    charact of U2)) by 
    UNIALG_1:def 4
    
      .= (
    dom the 
    charact of U2) by 
    FINSEQ_1:def 3;
    
      
    
      
    
    A8: C is 
    opers_closed by 
    A2,
    MSUALG_2:def 9;
    
      for n be
    set, o be 
    operation of U2 st n 
    in ( 
    dom ch1) & o 
    = (the 
    charact of U2 
    . n) holds (ch1 
    . n) 
    = (o 
    /. B) 
    
      proof
    
        
    
        
    
    A9: C 
    = ( 
    0  
    .--> the 
    carrier of U1) by 
    A6,
    MSUALG_1:def 9;
    
        then (
    dom C) 
    =  
    {
    0 }; 
    
        then
    
        
    
    A10: 
    0  
    in ( 
    dom C) by 
    TARSKI:def 1;
    
        let n be
    set;
    
        let o be
    operation of U2; 
    
        assume that
    
        
    
    A11: n 
    in ( 
    dom ch1) and 
    
        
    
    A12: o 
    = (the 
    charact of U2 
    . n); 
    
        n
    in ( 
    dom the 
    Charact of MU2) by 
    A1,
    A7,
    A11,
    MSUALG_1:def 10;
    
        then
    
        reconsider N = n as
    OperSymbol of ( 
    MSSign U2) by 
    PARTFUN1:def 2;
    
        
    
        
    
    A13: ( 
    dom the 
    charact of U2) 
    = ( 
    Seg ( 
    len the 
    charact of U2)) & ( 
    dom ( 
    signature U2)) 
    = ( 
    Seg ( 
    len ( 
    signature U2))) by 
    FINSEQ_1:def 3;
    
        then
    
        
    
    A14: N 
    in ( 
    dom ( 
    signature U2)) by 
    A7,
    A11,
    UNIALG_1:def 4;
    
        ((
    arity o) 
    |->  
    0 ) is 
    FinSequence of the 
    carrier of ( 
    MSSign U2) by 
    A4,
    FINSEQ_2: 63;
    
        then
    
        reconsider ao0 = ((
    arity o) 
    |->  
    0 ) as 
    Element of (the 
    carrier of ( 
    MSSign U2) 
    * ) by 
    FINSEQ_1:def 11;
    
        
    
        
    
    A15: C 
    is_closed_on N by 
    A8;
    
        B is
    opers_closed by 
    A2,
    A5,
    Th14;
    
        then
    
        
    
    A16: B 
    is_closed_on o; 
    
        
    
        
    
    A17: 
    0  
    in  
    {
    0 } by 
    TARSKI:def 1;
    
        N
    in ( 
    dom ( 
    signature U2)) by 
    A7,
    A11,
    A13,
    UNIALG_1:def 4;
    
        then (
    dom ( 
    *-->  
    0 )) 
    =  
    NAT & (( 
    signature U2) 
    . N) 
    = ( 
    arity o) by 
    A12,
    FUNCT_2:def 1,
    UNIALG_1:def 4;
    
        then
    
        
    
    A18: N 
    in ( 
    dom (( 
    *-->  
    0 ) 
    * ( 
    signature U2))) by 
    A14,
    FUNCT_1: 11;
    
        
    
        then (((C
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . N) 
    = ((C 
    # ) 
    . ((( 
    *-->  
    0 ) 
    * ( 
    signature U2)) 
    . N)) by 
    A4,
    FUNCT_1: 13
    
        .= ((C
    # ) 
    . (( 
    *-->  
    0 ) 
    . (( 
    signature U2) 
    . N))) by 
    A18,
    FUNCT_1: 12
    
        .= ((C
    # ) 
    . (( 
    *-->  
    0 ) 
    . ( 
    arity o))) by 
    A12,
    A14,
    UNIALG_1:def 4
    
        .= ((C
    # ) 
    . (( 
    arity o) 
    |->  
    0 )) by 
    FINSEQ_2:def 6;
    
        
    
        then
    
        
    
    A19: (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . N) 
    = ( 
    product (C 
    * ao0)) by 
    FINSEQ_2:def 5
    
        .= (
    product (( 
    Seg ( 
    arity o)) 
    --> (C 
    .  
    0 ))) by 
    A10,
    FUNCOP_1: 17
    
        .= (
    product (( 
    Seg ( 
    arity o)) 
    --> B)) by 
    A5,
    A9,
    A17,
    FUNCOP_1: 7
    
        .= (
    Funcs (( 
    Seg ( 
    arity o)),B)) by 
    CARD_3: 11
    
        .= ((
    arity o) 
    -tuples_on B) by 
    FINSEQ_2: 93;
    
        (ch1
    . N) 
    = (the 
    Charact of MU1 
    . N) by 
    A6,
    MSUALG_1:def 10
    
        .= (N
    /. C) by 
    A3,
    MSUALG_2:def 8
    
        .= ((
    Den (N,MU2)) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . N)) by 
    A15,
    MSUALG_2:def 7
    
        .= (((
    MSCharact U2) 
    . N) 
    | (((C 
    # ) 
    * the 
    Arity of ( 
    MSSign U2)) 
    . N)) by 
    A1,
    MSUALG_1:def 6
    
        .= (o
    | (( 
    arity o) 
    -tuples_on B)) by 
    A12,
    A19,
    MSUALG_1:def 10;
    
        hence thesis by
    A16,
    UNIALG_2:def 5;
    
      end;
    
      hence thesis by
    A7,
    UNIALG_2:def 6;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:16
    
    
    
    
    
    Th16: for U1,U2 be 
    Universal_Algebra st ( 
    MSAlg U1) is 
    MSSubAlgebra of ( 
    MSAlg U2) holds U1 is 
    SubAlgebra of U2 
    
    proof
    
      let U1,U2 be
    Universal_Algebra;
    
      assume
    
      
    
    A1: ( 
    MSAlg U1) is 
    MSSubAlgebra of ( 
    MSAlg U2); 
    
      hence the
    carrier of U1 is 
    Subset of U2 by 
    Th13;
    
      let B be non
    empty  
    Subset of U2; 
    
      assume B
    = the 
    carrier of U1; 
    
      hence thesis by
    A1,
    Th14,
    Th15;
    
    end;
    
    reserve MS for
    segmental non 
    void1
    -element  
    ManySortedSign, 
    
A for
    non-empty  
    MSAlgebra over MS; 
    
    theorem :: 
    
    MSSUBLAT:17
    
    
    
    
    
    Th17: for B be 
    non-empty  
    MSSubAlgebra of A holds the 
    carrier of ( 
    1-Alg B) is 
    Subset of ( 
    1-Alg A) 
    
    proof
    
      let B be
    non-empty  
    MSSubAlgebra of A; 
    
      the
    Sorts of B is 
    MSSubset of A by 
    MSUALG_2:def 9;
    
      then
    
      
    
    A1: the 
    Sorts of B 
    c= the 
    Sorts of A by 
    PBOOLE:def 18;
    
      (
    1-Alg B) 
    =  
    UAStr (# ( 
    the_sort_of B), ( 
    the_charact_of B) #) by 
    MSUALG_1:def 14;
    
      then
    
      reconsider c = the
    carrier of ( 
    1-Alg B) as 
    Component of the 
    Sorts of B by 
    MSUALG_1:def 12;
    
      (
    1-Alg A) 
    =  
    UAStr (# ( 
    the_sort_of A), ( 
    the_charact_of A) #) by 
    MSUALG_1:def 14;
    
      then
    
      reconsider d = the
    carrier of ( 
    1-Alg A) as 
    Component of the 
    Sorts of A by 
    MSUALG_1:def 12;
    
      
    
      
    
    A2: ( 
    dom the 
    Sorts of A) 
    = the 
    carrier of MS by 
    PARTFUN1:def 2;
    
      then
    
      consider dr be
    object such that 
    
      
    
    A3: dr 
    in the 
    carrier of MS and 
    
      
    
    A4: d 
    = (the 
    Sorts of A 
    . dr) by 
    FUNCT_1:def 3;
    
      (
    dom the 
    Sorts of A) 
    = ( 
    dom the 
    Sorts of B) by 
    A2,
    PARTFUN1:def 2;
    
      then
    
      consider cr be
    object such that 
    
      
    
    A5: cr 
    in the 
    carrier of MS and 
    
      
    
    A6: c 
    = (the 
    Sorts of B 
    . cr) by 
    A2,
    FUNCT_1:def 3;
    
      cr
    = dr by 
    A5,
    A3,
    STRUCT_0:def 10;
    
      hence thesis by
    A1,
    A5,
    A6,
    A4;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:18
    
    
    
    
    
    Th18: for B be 
    non-empty  
    MSSubAlgebra of A holds for S be non 
    empty  
    Subset of ( 
    1-Alg A) st S 
    = the 
    carrier of ( 
    1-Alg B) holds S is 
    opers_closed
    
    proof
    
      let B be
    non-empty  
    MSSubAlgebra of A; 
    
      reconsider C = the
    Sorts of B as 
    MSSubset of A by 
    MSUALG_2:def 9;
    
      
    
      
    
    A1: C is 
    opers_closed by 
    MSUALG_2:def 9;
    
      
    
      
    
    A2: ( 
    1-Alg B) 
    =  
    UAStr (# ( 
    the_sort_of B), ( 
    the_charact_of B) #) by 
    MSUALG_1:def 14;
    
      let S be non
    empty  
    Subset of ( 
    1-Alg A) such that 
    
      
    
    A3: S 
    = the 
    carrier of ( 
    1-Alg B); 
    
      set 1A = (
    1-Alg A); 
    
      
    
      
    
    A4: ( 
    1-Alg A) 
    =  
    UAStr (# ( 
    the_sort_of A), ( 
    the_charact_of A) #) by 
    MSUALG_1:def 14;
    
      let o be
    operation of 1A; 
    
      
    
      
    
    A5: ( 
    dom the 
    Sorts of A) 
    = the 
    carrier of MS by 
    PARTFUN1:def 2;
    
      then
    
      
    
    A6: ( 
    dom the 
    Sorts of A) 
    = ( 
    dom the 
    Sorts of B) by 
    PARTFUN1:def 2;
    
      thus S
    is_closed_on o 
    
      proof
    
        reconsider com = S as
    Component of the 
    Sorts of B by 
    A2,
    A3,
    MSUALG_1:def 12;
    
        consider n be
    object such that 
    
        
    
    A7: n 
    in ( 
    dom the 
    charact of 1A) and 
    
        
    
    A8: o 
    = (the 
    charact of 1A 
    . n) by 
    FUNCT_1:def 3;
    
        n
    in ( 
    dom the 
    Charact of A) by 
    A4,
    A7,
    MSUALG_1:def 13;
    
        then
    
        reconsider n as
    OperSymbol of MS by 
    PARTFUN1:def 2;
    
        reconsider crn = (C
    . (the 
    ResultSort of MS 
    . n)) as 
    Component of the 
    Sorts of B by 
    A5,
    A6,
    FUNCT_1:def 3;
    
        let s be
    FinSequence of S; 
    
        
    
        
    
    A9: ( 
    dom the 
    Arity of MS) 
    = the 
    carrier' of MS by 
    FUNCT_2:def 1;
    
        assume
    
        
    
    A10: ( 
    len s) 
    = ( 
    arity o); 
    
        ex y be
    set st y 
    in ( 
    dom (( 
    Den (n,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . n))) & ((( 
    Den (n,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . n)) 
    . y) 
    = (o 
    . s) 
    
        proof
    
          take s;
    
          
    
          
    
    A11: (the 
    Charact of A 
    . n) 
    = (the 
    charact of 1A 
    . n) by 
    A4,
    MSUALG_1:def 13;
    
          thus s
    in ( 
    dom (( 
    Den (n,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . n))) 
    
          proof
    
            (
    rng s) 
    c= S by 
    FINSEQ_1:def 4;
    
            then (
    rng s) 
    c= the 
    carrier of 1A by 
    XBOOLE_1: 1;
    
            then
    
            reconsider s1 = s as
    FinSequence of the 
    carrier of 1A by 
    FINSEQ_1:def 4;
    
            reconsider An = (the
    Arity of MS 
    . n) as 
    Element of (the 
    carrier of MS 
    * ); 
    
            set f = (the
    Sorts of A 
    * An); 
    
            consider d be
    object such that 
    
            
    
    A12: d 
    in ( 
    dom o) by 
    XBOOLE_0:def 1;
    
            o
    in ( 
    PFuncs ((the 
    carrier of 1A 
    * ),the 
    carrier of 1A)) by 
    PARTFUN1: 45;
    
            then ex o1 be
    Function st o1 
    = o & ( 
    dom o1) 
    c= (the 
    carrier of 1A 
    * ) & ( 
    rng o1) 
    c= the 
    carrier of 1A by 
    PARTFUN1:def 3;
    
            then
    
            reconsider d as
    FinSequence of the 
    carrier of 1A by 
    A12,
    FINSEQ_1:def 11;
    
            
    
            
    
    A13: ( 
    dom ( 
    Den (n,A))) 
    = ( 
    Args (n,A)) by 
    FUNCT_2:def 1
    
            .= ((
    len ( 
    the_arity_of n)) 
    -tuples_on the 
    carrier of 1A) by 
    A4,
    MSUALG_1: 6;
    
            (
    dom ( 
    Den (n,A))) 
    = ( 
    Args (n,A)) by 
    FUNCT_2:def 1;
    
            
    
            then (
    dom ( 
    Den (n,A))) 
    = (((the 
    Sorts of A 
    # ) 
    * the 
    Arity of MS) 
    . n) by 
    MSUALG_1:def 4
    
            .= ((the
    Sorts of A 
    # ) 
    . (the 
    Arity of MS 
    . n)) by 
    A9,
    FUNCT_1: 13;
    
            then
    
            
    
    A14: ( 
    dom ( 
    Den (n,A))) 
    = ( 
    product (the 
    Sorts of A 
    * An)) by 
    FINSEQ_2:def 5;
    
            
    
            
    
    A15: o 
    = (the 
    Charact of A 
    . n) by 
    A4,
    A8,
    MSUALG_1:def 13
    
            .= (
    Den (n,A)) by 
    MSUALG_1:def 6;
    
            (
    len d) 
    = ( 
    len s1) by 
    A10,
    A12,
    MARGREL1:def 25;
    
            then (
    len s) 
    = ( 
    len ( 
    the_arity_of n)) by 
    A12,
    A15,
    A13,
    CARD_1:def 7;
    
            
    
            then
    
            
    
    A16: ( 
    dom s) 
    = ( 
    Seg ( 
    len ( 
    the_arity_of n))) by 
    FINSEQ_1:def 3
    
            .= (
    dom ( 
    the_arity_of n)) by 
    FINSEQ_1:def 3
    
            .= (
    dom An) by 
    MSUALG_1:def 1;
    
            
    
            
    
    A17: ( 
    dom s) 
    c= ( 
    dom (C 
    * An)) 
    
            proof
    
              let x be
    object;
    
              assume
    
              
    
    A18: x 
    in ( 
    dom s); 
    
              then (
    rng An) 
    c= the 
    carrier of MS & (An 
    . x) 
    in ( 
    rng An) by 
    A16,
    FINSEQ_1:def 4,
    FUNCT_1:def 3;
    
              then (An
    . x) 
    in the 
    carrier of MS; 
    
              then (An
    . x) 
    in ( 
    dom C) by 
    PARTFUN1:def 2;
    
              hence thesis by
    A16,
    A18,
    FUNCT_1: 11;
    
            end;
    
            (
    dom (C 
    * An)) 
    c= ( 
    dom s) by 
    A16,
    RELAT_1: 25;
    
            then
    
            
    
    A19: ( 
    dom s) 
    = ( 
    dom (C 
    * An)) by 
    A17;
    
            
    
            
    
    A20: for x be 
    object st x 
    in ( 
    dom s) holds (s 
    . x) 
    in ((C 
    * An) 
    . x) 
    
            proof
    
              let x be
    object;
    
              
    
              
    
    A21: ( 
    rng s) 
    c= S by 
    FINSEQ_1:def 4;
    
              assume
    
              
    
    A22: x 
    in ( 
    dom s); 
    
              then
    
              
    
    A23: (s 
    . x) 
    in ( 
    rng s) by 
    FUNCT_1:def 3;
    
              (
    dom s) 
    c= ( 
    dom An) by 
    A19,
    RELAT_1: 25;
    
              then (
    rng An) 
    c= the 
    carrier of MS & (An 
    . x) 
    in ( 
    rng An) by 
    A22,
    FINSEQ_1:def 4,
    FUNCT_1:def 3;
    
              then (An
    . x) 
    in the 
    carrier of MS; 
    
              then
    
              
    
    A24: (An 
    . x) 
    in ( 
    dom C) by 
    PARTFUN1:def 2;
    
              ((C
    * An) 
    . x) 
    = (C 
    . (An 
    . x)) by 
    A17,
    A22,
    FUNCT_1: 12;
    
              then
    
              reconsider canx = ((C
    * An) 
    . x) as 
    Component of C by 
    A24,
    FUNCT_1:def 3;
    
              ((C
    * An) 
    . x) 
    = canx 
    
              .= S by
    A2,
    A3,
    MSUALG_1:def 12;
    
              hence thesis by
    A23,
    A21;
    
            end;
    
            
    
            
    
    A25: ( 
    dom f) 
    c= ( 
    dom s) by 
    A16,
    FUNCT_1: 11;
    
            
    
            
    
    A26: for x be 
    object st x 
    in ( 
    dom f) holds (s 
    . x) 
    in (f 
    . x) 
    
            proof
    
              let x be
    object;
    
              
    
              
    
    A27: ( 
    rng s) 
    c= S by 
    FINSEQ_1:def 4;
    
              assume
    
              
    
    A28: x 
    in ( 
    dom f); 
    
              then (f
    . x) 
    in ( 
    rng f) by 
    FUNCT_1:def 3;
    
              then
    
              reconsider fx = (f
    . x) as 
    Component of the 
    Sorts of A by 
    FUNCT_1: 14;
    
              (s
    . x) 
    in ( 
    rng s) by 
    A25,
    A28,
    FUNCT_1:def 3;
    
              then fx
    = ( 
    the_sort_of A) & (s 
    . x) 
    in S by 
    A27,
    MSUALG_1:def 12;
    
              hence thesis by
    A4;
    
            end;
    
            (
    dom the 
    Arity of MS) 
    = the 
    carrier' of MS by 
    FUNCT_2:def 1;
    
            
    
            then (((C
    # ) 
    * the 
    Arity of MS) 
    . n) 
    = ((C 
    # ) 
    . An) by 
    FUNCT_1: 13
    
            .= (
    product (C 
    * An)) by 
    FINSEQ_2:def 5;
    
            then
    
            
    
    A29: s 
    in (((C 
    # ) 
    * the 
    Arity of MS) 
    . n) by 
    A19,
    A20,
    CARD_3: 9;
    
            (
    dom s) 
    c= ( 
    dom f) 
    
            proof
    
              let x be
    object;
    
              assume
    
              
    
    A30: x 
    in ( 
    dom s); 
    
              then (
    rng An) 
    c= the 
    carrier of MS & (An 
    . x) 
    in ( 
    rng An) by 
    A16,
    FINSEQ_1:def 4,
    FUNCT_1:def 3;
    
              then (An
    . x) 
    in the 
    carrier of MS; 
    
              then (An
    . x) 
    in ( 
    dom the 
    Sorts of A) by 
    PARTFUN1:def 2;
    
              hence thesis by
    A16,
    A30,
    FUNCT_1: 11;
    
            end;
    
            then (
    dom s) 
    = ( 
    dom f) by 
    A25;
    
            then s
    in ( 
    dom ( 
    Den (n,A))) by 
    A14,
    A26,
    CARD_3: 9;
    
            then s
    in (( 
    dom ( 
    Den (n,A))) 
    /\ (((C 
    # ) 
    * the 
    Arity of MS) 
    . n)) by 
    A29,
    XBOOLE_0:def 4;
    
            hence thesis by
    RELAT_1: 61;
    
          end;
    
          
    
          hence (((
    Den (n,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . n)) 
    . s) 
    = (( 
    Den (n,A)) 
    . s) by 
    FUNCT_1: 47
    
          .= (o
    . s) by 
    A8,
    A11,
    MSUALG_1:def 6;
    
        end;
    
        then
    
        
    
    A31: (o 
    . s) 
    in ( 
    rng (( 
    Den (n,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . n))) by 
    FUNCT_1:def 3;
    
        (
    dom the 
    ResultSort of MS) 
    = the 
    carrier' of MS by 
    FUNCT_2:def 1;
    
        
    
        then
    
        
    
    A32: ((C 
    * the 
    ResultSort of MS) 
    . n) 
    = crn by 
    FUNCT_1: 13
    
        .= com by
    MSUALG_1: 5;
    
        C
    is_closed_on n by 
    A1;
    
        then (
    rng (( 
    Den (n,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . n))) 
    c= ((C 
    * the 
    ResultSort of MS) 
    . n); 
    
        hence thesis by
    A31,
    A32;
    
      end;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:19
    
    
    
    
    
    Th19: for B be 
    non-empty  
    MSSubAlgebra of A holds for S be non 
    empty  
    Subset of ( 
    1-Alg A) st S 
    = the 
    carrier of ( 
    1-Alg B) holds the 
    charact of ( 
    1-Alg B) 
    = ( 
    Opers (( 
    1-Alg A),S)) 
    
    proof
    
      let B be
    non-empty  
    MSSubAlgebra of A; 
    
      reconsider C = the
    Sorts of B as 
    MSSubset of A by 
    MSUALG_2:def 9;
    
      
    
      
    
    A1: the 
    Charact of B 
    = ( 
    Opers (A,C)) by 
    MSUALG_2:def 9;
    
      set 1B = (
    1-Alg B), 1A = ( 
    1-Alg A); 
    
      
    
      
    
    A2: ( 
    1-Alg A) 
    =  
    UAStr (# ( 
    the_sort_of A), ( 
    the_charact_of A) #) by 
    MSUALG_1:def 14;
    
      set f1 = the
    charact of 1B; 
    
      let S be non
    empty  
    Subset of ( 
    1-Alg A) such that 
    
      
    
    A3: S 
    = the 
    carrier of ( 
    1-Alg B); 
    
      reconsider f1 as
    PFuncFinSequence of S by 
    A3;
    
      
    
      
    
    A4: ( 
    1-Alg B) 
    =  
    UAStr (# ( 
    the_sort_of B), ( 
    the_charact_of B) #) by 
    MSUALG_1:def 14;
    
      then
    
      
    
    A5: f1 
    = the 
    Charact of B by 
    MSUALG_1:def 13;
    
      
    
      
    
    A6: C is 
    opers_closed by 
    MSUALG_2:def 9;
    
      
    
      
    
    A7: for n be 
    set, o be 
    operation of 1A st n 
    in ( 
    dom f1) & o 
    = (the 
    charact of 1A 
    . n) holds (f1 
    . n) 
    = (o 
    /. S) 
    
      proof
    
        let n be
    set, o be 
    operation of 1A; 
    
        assume that
    
        
    
    A8: n 
    in ( 
    dom f1) and 
    
        
    
    A9: o 
    = (the 
    charact of 1A 
    . n); 
    
        reconsider y = n as
    OperSymbol of MS by 
    A5,
    A8,
    PARTFUN1:def 2;
    
        o
    = (the 
    Charact of A 
    . y) by 
    A2,
    A9,
    MSUALG_1:def 13
    
        .= (
    Den (y,A)) by 
    MSUALG_1:def 6;
    
        
    
        then
    
        
    
    A10: ( 
    dom o) 
    = ( 
    Args (y,A)) by 
    FUNCT_2:def 1
    
        .= ((
    len ( 
    the_arity_of y)) 
    -tuples_on ( 
    the_sort_of A)) by 
    MSUALG_1: 6;
    
        now
    
          set a = the
    Element of (( 
    len ( 
    the_arity_of y)) 
    -tuples_on ( 
    the_sort_of A)); 
    
          a
    in ( 
    dom o) by 
    A10;
    
          hence ex x be
    FinSequence st x 
    in ( 
    dom o); 
    
          let x be
    FinSequence;
    
          assume x
    in ( 
    dom o); 
    
          then ex s be
    Element of (( 
    the_sort_of A) 
    * ) st x 
    = s & ( 
    len s) 
    = ( 
    len ( 
    the_arity_of y)) by 
    A10;
    
          hence (
    len ( 
    the_arity_of y)) 
    = ( 
    len x); 
    
        end;
    
        then
    
        
    
    A11: ( 
    arity o) 
    = ( 
    len ( 
    the_arity_of y)) by 
    MARGREL1:def 25;
    
        S is
    opers_closed by 
    A3,
    Th18;
    
        then
    
        
    
    A12: S 
    is_closed_on o; 
    
        
    
        
    
    A13: C 
    is_closed_on y by 
    A6;
    
        
    
        
    
    A14: (((C 
    # ) 
    * the 
    Arity of MS) 
    . y) 
    = ( 
    Args (y,B)) by 
    MSUALG_1:def 4
    
        .= ((
    arity o) 
    -tuples_on S) by 
    A4,
    A3,
    A11,
    MSUALG_1: 6;
    
        (f1
    . n) 
    = (the 
    Charact of B 
    . y) by 
    A4,
    MSUALG_1:def 13
    
        .= (y
    /. C) by 
    A1,
    MSUALG_2:def 8
    
        .= ((
    Den (y,A)) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . y)) by 
    A13,
    MSUALG_2:def 7
    
        .= ((the
    Charact of A 
    . y) 
    | (((C 
    # ) 
    * the 
    Arity of MS) 
    . y)) by 
    MSUALG_1:def 6
    
        .= (o
    | (( 
    arity o) 
    -tuples_on S)) by 
    A2,
    A9,
    A14,
    MSUALG_1:def 13;
    
        hence thesis by
    A12,
    UNIALG_2:def 5;
    
      end;
    
      (
    dom f1) 
    = the 
    carrier' of MS by 
    A5,
    PARTFUN1:def 2
    
      .= (
    dom the 
    Charact of A) by 
    PARTFUN1:def 2
    
      .= (
    dom the 
    charact of 1A) by 
    A2,
    MSUALG_1:def 13;
    
      hence thesis by
    A7,
    UNIALG_2:def 6;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:20
    
    
    
    
    
    Th20: for B be 
    non-empty  
    MSSubAlgebra of A holds ( 
    1-Alg B) is 
    SubAlgebra of ( 
    1-Alg A) 
    
    proof
    
      let B be
    non-empty  
    MSSubAlgebra of A; 
    
      the
    carrier of ( 
    1-Alg B) is 
    Subset of ( 
    1-Alg A) & for S be non 
    empty  
    Subset of ( 
    1-Alg A) st S 
    = the 
    carrier of ( 
    1-Alg B) holds the 
    charact of ( 
    1-Alg B) 
    = ( 
    Opers (( 
    1-Alg A),S)) & S is 
    opers_closed by 
    Th17,
    Th18,
    Th19;
    
      hence thesis by
    UNIALG_2:def 7;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:21
    
    
    
    
    
    Th21: for S be non 
    empty non 
    void  
    ManySortedSign, A,B be 
    MSAlgebra over S holds A is 
    MSSubAlgebra of B iff A is 
    MSSubAlgebra of the MSAlgebra of B 
    
    proof
    
      let S be non
    empty non 
    void  
    ManySortedSign, A,B be 
    MSAlgebra over S; 
    
      thus A is
    MSSubAlgebra of B implies A is 
    MSSubAlgebra of the MSAlgebra of B 
    
      proof
    
        assume
    
        
    
    A1: A is 
    MSSubAlgebra of B; 
    
        hence the
    Sorts of A is 
    MSSubset of the MSAlgebra of B by 
    MSUALG_2:def 9;
    
        thus for BB be
    MSSubset of the MSAlgebra of B st BB 
    = the 
    Sorts of A holds BB is 
    opers_closed & the 
    Charact of A 
    = ( 
    Opers ( the MSAlgebra of B,BB)) 
    
        proof
    
          let BB be
    MSSubset of the MSAlgebra of B such that 
    
          
    
    A2: BB 
    = the 
    Sorts of A; 
    
          reconsider bb = BB as
    MSSubset of B; 
    
          
    
          
    
    A3: bb is 
    opers_closed by 
    A1,
    A2,
    MSUALG_2:def 9;
    
          
    
          
    
    A4: BB is 
    opers_closed
    
          proof
    
            let o be
    OperSymbol of S; 
    
            
    
            
    
    A5: ( 
    Den (o,B)) 
    = (the 
    Charact of the MSAlgebra of B 
    . o) by 
    MSUALG_1:def 6
    
            .= (
    Den (o, the MSAlgebra of B)) by 
    MSUALG_1:def 6;
    
            bb
    is_closed_on o by 
    A3;
    
            then (
    rng (( 
    Den (o, the MSAlgebra of B)) 
    | (((BB 
    # ) 
    * the 
    Arity of S) 
    . o))) 
    c= ((BB 
    * the 
    ResultSort of S) 
    . o) by 
    A5;
    
            hence thesis;
    
          end;
    
          for o be
    object st o 
    in the 
    carrier' of S holds (the 
    Charact of A 
    . o) 
    = (( 
    Opers ( the MSAlgebra of B,BB)) 
    . o) 
    
          proof
    
            let o be
    object;
    
            assume o
    in the 
    carrier' of S; 
    
            then
    
            reconsider o as
    OperSymbol of S; 
    
            
    
            
    
    A6: ( 
    Den (o,B)) 
    = (the 
    Charact of the MSAlgebra of B 
    . o) by 
    MSUALG_1:def 6
    
            .= (
    Den (o, the MSAlgebra of B)) by 
    MSUALG_1:def 6;
    
            
    
            
    
    A7: bb 
    is_closed_on o by 
    A3;
    
            
    
            
    
    A8: BB 
    is_closed_on o by 
    A4;
    
            ((
    Opers (B,bb)) 
    . o) 
    = (o 
    /. bb) by 
    MSUALG_2:def 8
    
            .= ((
    Den (o, the MSAlgebra of B)) 
    | (((BB 
    # ) 
    * the 
    Arity of S) 
    . o)) by 
    A6,
    A7,
    MSUALG_2:def 7
    
            .= (o
    /. BB) by 
    A8,
    MSUALG_2:def 7
    
            .= ((
    Opers ( the MSAlgebra of B,BB)) 
    . o) by 
    MSUALG_2:def 8;
    
            hence thesis by
    A1,
    A2,
    MSUALG_2:def 9;
    
          end;
    
          hence thesis by
    A4;
    
        end;
    
      end;
    
      assume
    
      
    
    A9: A is 
    MSSubAlgebra of the MSAlgebra of B; 
    
      hence the
    Sorts of A is 
    MSSubset of B by 
    MSUALG_2:def 9;
    
      let C be
    MSSubset of B such that 
    
      
    
    A10: C 
    = the 
    Sorts of A; 
    
      reconsider CC = C as
    MSSubset of the MSAlgebra of B; 
    
      
    
      
    
    A11: CC is 
    opers_closed by 
    A9,
    A10,
    MSUALG_2:def 9;
    
      
    
      
    
    A12: C is 
    opers_closed
    
      proof
    
        let o be
    OperSymbol of S; 
    
        
    
        
    
    A13: ( 
    Den (o,B)) 
    = (the 
    Charact of the MSAlgebra of B 
    . o) by 
    MSUALG_1:def 6
    
        .= (
    Den (o, the MSAlgebra of B)) by 
    MSUALG_1:def 6;
    
        CC
    is_closed_on o by 
    A11;
    
        then (
    rng (( 
    Den (o,B)) 
    | (((C 
    # ) 
    * the 
    Arity of S) 
    . o))) 
    c= ((C 
    * the 
    ResultSort of S) 
    . o) by 
    A13;
    
        hence thesis;
    
      end;
    
      for o be
    object st o 
    in the 
    carrier' of S holds (the 
    Charact of A 
    . o) 
    = (( 
    Opers (B,C)) 
    . o) 
    
      proof
    
        let o be
    object;
    
        assume o
    in the 
    carrier' of S; 
    
        then
    
        reconsider o as
    OperSymbol of S; 
    
        
    
        
    
    A14: ( 
    Den (o,B)) 
    = (the 
    Charact of the MSAlgebra of B 
    . o) by 
    MSUALG_1:def 6
    
        .= (
    Den (o, the MSAlgebra of B)) by 
    MSUALG_1:def 6;
    
        
    
        
    
    A15: CC 
    is_closed_on o by 
    A11;
    
        
    
        
    
    A16: C 
    is_closed_on o by 
    A12;
    
        ((
    Opers ( the MSAlgebra of B,CC)) 
    . o) 
    = (o 
    /. CC) by 
    MSUALG_2:def 8
    
        .= ((
    Den (o,B)) 
    | (((C 
    # ) 
    * the 
    Arity of S) 
    . o)) by 
    A14,
    A15,
    MSUALG_2:def 7
    
        .= (o
    /. C) by 
    A16,
    MSUALG_2:def 7
    
        .= ((
    Opers (B,C)) 
    . o) by 
    MSUALG_2:def 8;
    
        hence thesis by
    A9,
    A10,
    MSUALG_2:def 9;
    
      end;
    
      hence thesis by
    A12;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:22
    
    for A,B be
    Universal_Algebra holds ( 
    signature A) 
    = ( 
    signature B) iff ( 
    MSSign A) 
    = ( 
    MSSign B) 
    
    proof
    
      
    
      
    
    A1: for A,B be 
    Universal_Algebra st ( 
    MSSign A) 
    = ( 
    MSSign B) holds ( 
    signature A) 
    = ( 
    signature B) 
    
      proof
    
        let A,B be
    Universal_Algebra;
    
        reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        reconsider gg1 = ((
    *-->  
    0 ) 
    * ( 
    signature B)) as 
    Function of ( 
    dom ( 
    signature B)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        
    
        
    
    A2: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) & ( 
    MSSign B) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature B)), gg1, (( 
    dom ( 
    signature B)) 
    --> z) #) by 
    MSUALG_1: 10;
    
        assume
    
        
    
    A3: ( 
    MSSign A) 
    = ( 
    MSSign B); 
    
        now
    
          let i be
    Nat;
    
          assume
    
          
    
    A4: i 
    in ( 
    dom ( 
    signature A)); 
    
          then
    
          reconsider k = ((
    signature A) 
    . i) as 
    Element of 
    NAT by 
    PARTFUN1: 4;
    
          
    
          
    
    A5: i 
    in ( 
    dom (( 
    *-->  
    0 ) 
    * ( 
    signature A))) by 
    A4,
    FINSEQ_3: 120;
    
          
    
          then
    
          
    
    A6: (( 
    *-->  
    0 ) 
    . (( 
    signature B) 
    . i)) 
    = ((( 
    *-->  
    0 ) 
    * ( 
    signature A)) 
    . i) by 
    A3,
    A2,
    FINSEQ_3: 120
    
          .= ((
    *-->  
    0 ) 
    . (( 
    signature A) 
    . i)) by 
    A5,
    FINSEQ_3: 120;
    
          reconsider m = ((
    signature B) 
    . i) as 
    Element of 
    NAT by 
    A3,
    A2,
    A4,
    PARTFUN1: 4;
    
          reconsider q = ((
    *-->  
    0 ) 
    . m) as 
    FinSequence;
    
          reconsider p = ((
    *-->  
    0 ) 
    . k) as 
    FinSequence;
    
          
    
          thus ((
    signature A) 
    . i) 
    = ( 
    len p) by 
    Th6
    
          .= (
    len q) by 
    A6
    
          .= ((
    signature B) 
    . i) by 
    Th6;
    
        end;
    
        hence thesis by
    A3,
    A2,
    FINSEQ_1: 13;
    
      end;
    
      for A,B be
    Universal_Algebra st ( 
    signature A) 
    = ( 
    signature B) holds ( 
    MSSign A) 
    = ( 
    MSSign B) by 
    UNIALG_2:def 1,
    MSUHOM_1: 10;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:23
    
    
    
    
    
    Th23: for A be 
    non-empty  
    MSAlgebra over MS st the 
    carrier of MS 
    =  
    {
    0 } holds ( 
    MSSign ( 
    1-Alg A)) 
    = the ManySortedSign of MS 
    
    proof
    
      let A be
    non-empty  
    MSAlgebra over MS; 
    
      reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature ( 
    1-Alg A))) as 
    Function of ( 
    dom ( 
    signature ( 
    1-Alg A))), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A1: ( 
    MSSign ( 
    1-Alg A)) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature ( 
    1-Alg A))), ff1, (( 
    dom ( 
    signature ( 
    1-Alg A))) 
    --> z) #) by 
    MSUALG_1: 10;
    
      (
    dom the 
    ResultSort of MS) 
    = the 
    carrier' of MS by 
    FUNCT_2:def 1;
    
      then
    
      
    
    A2: ( 
    rng the 
    ResultSort of MS) 
    <>  
    {} by 
    RELAT_1: 42;
    
      consider k be
    Nat such that 
    
      
    
    A3: the 
    carrier' of MS 
    = ( 
    Seg k) by 
    MSUALG_1:def 7;
    
      
    
      
    
    A4: ( 
    1-Alg A) 
    =  
    UAStr (# ( 
    the_sort_of A), ( 
    the_charact_of A) #) by 
    MSUALG_1:def 14;
    
      
    
      
    
    A5: ( 
    len ( 
    signature ( 
    1-Alg A))) 
    = ( 
    len the 
    charact of ( 
    1-Alg A)) by 
    UNIALG_1:def 4;
    
      
    
      then
    
      
    
    A6: ( 
    dom ( 
    signature ( 
    1-Alg A))) 
    = ( 
    dom the 
    charact of ( 
    1-Alg A)) by 
    FINSEQ_3: 29
    
      .= (
    dom the 
    Charact of A) by 
    A4,
    MSUALG_1:def 13
    
      .= the
    carrier' of MS by 
    PARTFUN1:def 2;
    
      then
    
      
    
    A7: the 
    carrier' of MS 
    = ( 
    dom ff1) by 
    FUNCT_2:def 1;
    
      assume
    
      
    
    A8: the 
    carrier of MS 
    =  
    {
    0 }; 
    
      
    
      
    
    A9: for x be 
    object st x 
    in the 
    carrier' of MS holds ((( 
    *-->  
    0 ) 
    * ( 
    signature ( 
    1-Alg A))) 
    . x) 
    = (the 
    Arity of MS 
    . x) 
    
      proof
    
        let x be
    object;
    
        assume x
    in the 
    carrier' of MS; 
    
        then
    
        reconsider x as
    OperSymbol of MS; 
    
        x
    in ( 
    Seg k) by 
    A3;
    
        then
    
        reconsider n = x as
    Nat;
    
        n
    in ( 
    dom ( 
    signature ( 
    1-Alg A))) by 
    A6;
    
        then
    
        
    
    A10: n 
    in ( 
    dom the 
    charact of ( 
    1-Alg A)) by 
    A5,
    FINSEQ_3: 29;
    
        then
    
        reconsider h = (the
    charact of ( 
    1-Alg A) 
    . n) as 
    PartFunc of (the 
    carrier of ( 
    1-Alg A) 
    * ), the 
    carrier of ( 
    1-Alg A) by 
    UNIALG_1: 1;
    
        reconsider h as
    homogeneous
    quasi_total non 
    empty  
    PartFunc of (the 
    carrier of ( 
    1-Alg A) 
    * ), the 
    carrier of ( 
    1-Alg A) by 
    A10,
    MARGREL1:def 24;
    
        set aa = the
    Element of ( 
    dom h); 
    
        set ah = (
    arity h); 
    
        (
    dom h) 
    c= (the 
    carrier of ( 
    1-Alg A) 
    * ) by 
    RELAT_1:def 18;
    
        then aa
    in (the 
    carrier of ( 
    1-Alg A) 
    * ); 
    
        then
    
        reconsider bb = aa as
    FinSequence of the 
    carrier of ( 
    1-Alg A) by 
    FINSEQ_1:def 11;
    
        
    
        
    
    A11: bb 
    in ( 
    dom h); 
    
        h
    = (the 
    Charact of A 
    . x) by 
    A4,
    MSUALG_1:def 13
    
        .= (
    Den (x,A)) by 
    MSUALG_1:def 6;
    
        then bb
    in ( 
    Args (x,A)) by 
    A11,
    FUNCT_2:def 1;
    
        then bb
    in (( 
    len ( 
    the_arity_of x)) 
    -tuples_on ( 
    the_sort_of A)) by 
    MSUALG_1: 6;
    
        
    
        then
    
        
    
    A12: ( 
    len ( 
    the_arity_of x)) 
    = ( 
    len bb) by 
    CARD_1:def 7
    
        .= ah by
    MARGREL1:def 25;
    
        (((
    *-->  
    0 ) 
    * ( 
    signature ( 
    1-Alg A))) 
    . x) 
    = (( 
    *-->  
    0 ) 
    . (( 
    signature ( 
    1-Alg A)) 
    . x)) by 
    A6,
    FUNCT_1: 13
    
        .= ((
    *-->  
    0 ) 
    . ah) by 
    A6,
    UNIALG_1:def 4
    
        .= (ah
    |->  
    0 ) by 
    FINSEQ_2:def 6
    
        .= (
    the_arity_of x) by 
    A8,
    A12,
    Th5
    
        .= (the
    Arity of MS 
    . x) by 
    MSUALG_1:def 1;
    
        hence thesis;
    
      end;
    
      (
    rng the 
    ResultSort of MS) 
    c=  
    {
    0 } by 
    A8,
    RELAT_1:def 19;
    
      then the
    carrier' of MS 
    = ( 
    dom the 
    ResultSort of MS) & ( 
    rng the 
    ResultSort of MS) 
    =  
    {
    0 } by 
    A2,
    FUNCT_2:def 1,
    ZFMISC_1: 33;
    
      then the
    carrier' of MS 
    = ( 
    dom the 
    Arity of MS) & the 
    ResultSort of ( 
    MSSign ( 
    1-Alg A)) 
    = the 
    ResultSort of MS by 
    A1,
    A6,
    FUNCOP_1: 9,
    FUNCT_2:def 1;
    
      hence thesis by
    A8,
    A1,
    A7,
    A9,
    FUNCT_1: 2;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:24
    
    
    
    
    
    Th24: for A,B be 
    non-empty  
    MSAlgebra over MS st ( 
    1-Alg A) 
    = ( 
    1-Alg B) holds the MSAlgebra of A 
    = the MSAlgebra of B 
    
    proof
    
      let A,B be
    non-empty  
    MSAlgebra over MS such that 
    
      
    
    A1: ( 
    1-Alg A) 
    = ( 
    1-Alg B); 
    
      
    
      
    
    A2: ( 
    1-Alg B) 
    =  
    UAStr (# ( 
    the_sort_of B), ( 
    the_charact_of B) #) by 
    MSUALG_1:def 14;
    
      
    
      
    
    A3: ( 
    1-Alg A) 
    =  
    UAStr (# ( 
    the_sort_of A), ( 
    the_charact_of A) #) by 
    MSUALG_1:def 14;
    
      
    
    A4: 
    
      now
    
        let i be
    object such that 
    
        
    
    A5: i 
    in the 
    carrier of MS; 
    
        
    
        
    
    A6: ex c be 
    Component of the 
    Sorts of B st (the 
    Sorts of B 
    . i) 
    = c 
    
        proof
    
          reconsider c = (the
    Sorts of B 
    . i) as 
    Component of the 
    Sorts of B by 
    A5,
    PBOOLE: 139;
    
          take c;
    
          thus thesis;
    
        end;
    
        ex c be
    Component of the 
    Sorts of A st (the 
    Sorts of A 
    . i) 
    = c 
    
        proof
    
          reconsider c = (the
    Sorts of A 
    . i) as 
    Component of the 
    Sorts of A by 
    A5,
    PBOOLE: 139;
    
          take c;
    
          thus thesis;
    
        end;
    
        
    
        then (the
    Sorts of A 
    . i) 
    = ( 
    the_sort_of B) by 
    A1,
    A3,
    A2,
    MSUALG_1:def 12
    
        .= (the
    Sorts of B 
    . i) by 
    A6,
    MSUALG_1:def 12;
    
        hence (the
    Sorts of A 
    . i) 
    = (the 
    Sorts of B 
    . i); 
    
      end;
    
      the
    Charact of A 
    = the 
    charact of ( 
    1-Alg A) by 
    A3,
    MSUALG_1:def 13
    
      .= the
    Charact of B by 
    A1,
    A2,
    MSUALG_1:def 13;
    
      hence thesis by
    A4,
    PBOOLE: 3;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:25
    
    for A be
    non-empty  
    MSAlgebra over MS st the 
    carrier of MS 
    =  
    {
    0 } holds the 
    Sorts of A 
    = the 
    Sorts of ( 
    MSAlg ( 
    1-Alg A)) 
    
    proof
    
      let A be
    non-empty  
    MSAlgebra over MS; 
    
      assume
    
      
    
    A1: the 
    carrier of MS 
    =  
    {
    0 }; 
    
      
    
    A2: 
    
      now
    
        let i be
    object;
    
        assume
    
        
    
    A3: i 
    in the 
    carrier of MS; 
    
        
    
        
    
    A4: ex c be 
    Component of the 
    Sorts of A st (the 
    Sorts of A 
    . i) 
    = c 
    
        proof
    
          reconsider c = (the
    Sorts of A 
    . i) as 
    Component of the 
    Sorts of A by 
    A3,
    PBOOLE: 139;
    
          take c;
    
          thus thesis;
    
        end;
    
        ((
    {
    0 } 
    --> ( 
    the_sort_of A)) 
    . i) 
    = ( 
    the_sort_of A) by 
    A1,
    A3,
    FUNCOP_1: 7;
    
        hence (the
    Sorts of A 
    . i) 
    = (( 
    {
    0 } 
    --> ( 
    the_sort_of A)) 
    . i) by 
    A4,
    MSUALG_1:def 12;
    
      end;
    
      (
    1-Alg A) 
    =  
    UAStr (# ( 
    the_sort_of A), ( 
    the_charact_of A) #) by 
    MSUALG_1:def 14;
    
      then
    
      
    
    A5: ( 
    MSAlg ( 
    1-Alg A)) 
    =  
    MSAlgebra (# ( 
    MSSorts ( 
    1-Alg A)), ( 
    MSCharact ( 
    1-Alg A)) #) & ( 
    MSSorts ( 
    1-Alg A)) 
    = ( 
    0  
    .--> ( 
    the_sort_of A)) by 
    MSUALG_1:def 9,
    MSUALG_1:def 11;
    
      (
    {
    0 } 
    --> ( 
    the_sort_of A)) is 
    ManySortedSet of the 
    carrier of MS by 
    A1;
    
      hence thesis by
    A5,
    A2,
    PBOOLE: 3;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:26
    
    
    
    
    
    Th26: for A be 
    non-empty  
    MSAlgebra over MS st the 
    carrier of MS 
    =  
    {
    0 } holds ( 
    MSAlg ( 
    1-Alg A)) 
    = the MSAlgebra of A 
    
    proof
    
      let A be
    non-empty  
    MSAlgebra over MS; 
    
      reconsider c = (
    the_sort_of ( 
    MSAlg ( 
    1-Alg A))) as 
    Component of the 
    Sorts of ( 
    MSAlg ( 
    1-Alg A)) by 
    MSUALG_1:def 12;
    
      assume the
    carrier of MS 
    =  
    {
    0 }; 
    
      then (
    MSSign ( 
    1-Alg A)) 
    = the ManySortedSign of MS by 
    Th23;
    
      then
    
      reconsider M1A = (
    MSAlg ( 
    1-Alg A)) as 
    strict  
    MSAlgebra over MS; 
    
      reconsider M1A as
    non-empty
    strict  
    MSAlgebra over MS by 
    MSUALG_1:def 3;
    
      
    
      
    
    A1: ( 
    1-Alg M1A) 
    =  
    UAStr (# ( 
    the_sort_of M1A), ( 
    the_charact_of M1A) #) by 
    MSUALG_1:def 14;
    
      reconsider c as
    Component of the 
    Sorts of M1A; 
    
      
    
      
    
    A2: ( 
    1-Alg ( 
    MSAlg ( 
    1-Alg A))) 
    =  
    UAStr (# ( 
    the_sort_of ( 
    MSAlg ( 
    1-Alg A))), ( 
    the_charact_of ( 
    MSAlg ( 
    1-Alg A))) #) by 
    MSUALG_1:def 14;
    
      
    
      then
    
      
    
    A3: the 
    charact of ( 
    1-Alg A) 
    = ( 
    the_charact_of ( 
    MSAlg ( 
    1-Alg A))) by 
    MSUALG_1: 9
    
      .= the
    Charact of M1A by 
    MSUALG_1:def 13
    
      .= the
    charact of ( 
    1-Alg M1A) by 
    A1,
    MSUALG_1:def 13;
    
      c
    = ( 
    the_sort_of M1A) by 
    MSUALG_1:def 12;
    
      then the
    carrier of ( 
    1-Alg A) 
    = the 
    carrier of ( 
    1-Alg M1A) by 
    A2,
    A1,
    MSUALG_1: 9;
    
      hence thesis by
    A3,
    Th24;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:27
    
    for A be
    Universal_Algebra, B be 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) st the 
    carrier of ( 
    MSSign A) 
    =  
    {
    0 } holds ( 
    1-Alg B) is 
    SubAlgebra of A 
    
    proof
    
      let A be
    Universal_Algebra, B be 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A); 
    
      assume the
    carrier of ( 
    MSSign A) 
    =  
    {
    0 }; 
    
      then (
    MSAlg ( 
    1-Alg B)) 
    = the MSAlgebra of B by 
    Th26;
    
      hence thesis by
    Th16;
    
    end;
    
    begin
    
    theorem :: 
    
    MSSUBLAT:28
    
    
    
    
    
    Th28: for A be 
    Universal_Algebra, a1,b1 be 
    strict  
    SubAlgebra of A, a2,b2 be 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) st a2 
    = ( 
    MSAlg a1) & b2 
    = ( 
    MSAlg b1) holds (the 
    Sorts of a2 
    (\/) the 
    Sorts of b2) 
    = ( 
    0  
    .--> (the 
    carrier of a1 
    \/ the 
    carrier of b1)) 
    
    proof
    
      let A be
    Universal_Algebra;
    
      let a1,b1 be
    strict  
    SubAlgebra of A; 
    
      let a2,b2 be
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) such that 
    
      
    
    A1: a2 
    = ( 
    MSAlg a1) and 
    
      
    
    A2: b2 
    = ( 
    MSAlg b1); 
    
      a2
    =  
    MSAlgebra (# ( 
    MSSorts a1), ( 
    MSCharact a1) #) by 
    A1,
    MSUALG_1:def 11;
    
      then
    
      
    
    A3: the 
    Sorts of a2 
    = ( 
    0  
    .--> the 
    carrier of a1) by 
    MSUALG_1:def 9;
    
      reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A4: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) by 
    MSUALG_1: 10;
    
      then
    
      reconsider W = (
    0  
    .--> (the 
    carrier of a1 
    \/ the 
    carrier of b1)) as 
    ManySortedSet of the 
    carrier of ( 
    MSSign A); 
    
      
    
      
    
    A5: b2 
    =  
    MSAlgebra (# ( 
    MSSorts b1), ( 
    MSCharact b1) #) by 
    A2,
    MSUALG_1:def 11;
    
      now
    
        let x be
    object;
    
        assume
    
        
    
    A6: x 
    in the 
    carrier of ( 
    MSSign A); 
    
        then
    
        
    
    A7: x 
    =  
    0 by 
    A4,
    TARSKI:def 1;
    
        (W
    . x) 
    = (( 
    0  
    .--> (the 
    carrier of a1 
    \/ the 
    carrier of b1)) 
    .  
    0 ) by 
    A4,
    A6,
    TARSKI:def 1
    
        .= (the
    carrier of a1 
    \/ the 
    carrier of b1) by 
    FUNCOP_1: 72
    
        .= (((
    0  
    .--> the 
    carrier of a1) 
    .  
    0 ) 
    \/ the 
    carrier of b1) by 
    FUNCOP_1: 72
    
        .= (((
    0  
    .--> the 
    carrier of a1) 
    .  
    0 ) 
    \/ (( 
    0  
    .--> the 
    carrier of b1) 
    .  
    0 )) by 
    FUNCOP_1: 72
    
        .= ((the
    Sorts of a2 
    . x) 
    \/ (the 
    Sorts of b2 
    . x)) by 
    A3,
    A5,
    A7,
    MSUALG_1:def 9;
    
        hence (W
    . x) 
    = ((the 
    Sorts of a2 
    . x) 
    \/ (the 
    Sorts of b2 
    . x)); 
    
      end;
    
      hence thesis by
    PBOOLE:def 4;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:29
    
    
    
    
    
    Th29: for A be 
    Universal_Algebra, a1,b1 be 
    strict
    non-empty  
    SubAlgebra of A, a2,b2 be 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) st a2 
    = ( 
    MSAlg a1) & b2 
    = ( 
    MSAlg b1) holds (the 
    Sorts of a2 
    (/\) the 
    Sorts of b2) 
    = ( 
    0  
    .--> (the 
    carrier of a1 
    /\ the 
    carrier of b1)) 
    
    proof
    
      let A be
    Universal_Algebra;
    
      let a1,b1 be
    strict
    non-empty  
    SubAlgebra of A; 
    
      let a2,b2 be
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) such that 
    
      
    
    A1: a2 
    = ( 
    MSAlg a1) and 
    
      
    
    A2: b2 
    = ( 
    MSAlg b1); 
    
      a2
    =  
    MSAlgebra (# ( 
    MSSorts a1), ( 
    MSCharact a1) #) by 
    A1,
    MSUALG_1:def 11;
    
      then
    
      
    
    A3: the 
    Sorts of a2 
    = ( 
    0  
    .--> the 
    carrier of a1) by 
    MSUALG_1:def 9;
    
      reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A4: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) by 
    MSUALG_1: 10;
    
      then
    
      reconsider W = (
    0  
    .--> (the 
    carrier of a1 
    /\ the 
    carrier of b1)) as 
    ManySortedSet of the 
    carrier of ( 
    MSSign A); 
    
      
    
      
    
    A5: b2 
    =  
    MSAlgebra (# ( 
    MSSorts b1), ( 
    MSCharact b1) #) by 
    A2,
    MSUALG_1:def 11;
    
      now
    
        let x be
    object;
    
        assume x
    in the 
    carrier of ( 
    MSSign A); 
    
        then
    
        
    
    A6: x 
    =  
    0 by 
    A4,
    TARSKI:def 1;
    
        
    
        then (W
    . x) 
    = (the 
    carrier of a1 
    /\ the 
    carrier of b1) by 
    FUNCOP_1: 72
    
        .= (((
    0  
    .--> the 
    carrier of a1) 
    .  
    0 ) 
    /\ the 
    carrier of b1) by 
    FUNCOP_1: 72
    
        .= (((
    0  
    .--> the 
    carrier of a1) 
    .  
    0 ) 
    /\ (( 
    0  
    .--> the 
    carrier of b1) 
    .  
    0 )) by 
    FUNCOP_1: 72
    
        .= ((the
    Sorts of a2 
    . x) 
    /\ (the 
    Sorts of b2 
    . x)) by 
    A3,
    A5,
    A6,
    MSUALG_1:def 9;
    
        hence (W
    . x) 
    = ((the 
    Sorts of a2 
    . x) 
    /\ (the 
    Sorts of b2 
    . x)); 
    
      end;
    
      hence thesis by
    PBOOLE:def 5;
    
    end;
    
    theorem :: 
    
    MSSUBLAT:30
    
    
    
    
    
    Th30: for A be 
    strict  
    Universal_Algebra, a1,b1 be 
    strict
    non-empty  
    SubAlgebra of A, a2,b2 be 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) st a2 
    = ( 
    MSAlg a1) & b2 
    = ( 
    MSAlg b1) holds ( 
    MSAlg (a1 
    "\/" b1)) 
    = (a2 
    "\/" b2) 
    
    proof
    
      let A be
    strict  
    Universal_Algebra;
    
      let a1,b1 be
    strict
    non-empty  
    SubAlgebra of A; 
    
      reconsider MSA = (
    MSAlg (a1 
    "\/" b1)) as 
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
      let a2,b2 be
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) such that 
    
      
    
    A1: a2 
    = ( 
    MSAlg a1) and 
    
      
    
    A2: b2 
    = ( 
    MSAlg b1); 
    
      (
    MSSign (a1 
    "\/" b1)) 
    = ( 
    MSSign A) by 
    Th7;
    
      then
    
      reconsider MSA as
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A); 
    
      for B be
    MSSubset of ( 
    MSAlg A) st B 
    = (the 
    Sorts of a2 
    (\/) the 
    Sorts of b2) holds MSA 
    = ( 
    GenMSAlg B) 
    
      proof
    
        the
    carrier of a1 is 
    Subset of A & the 
    carrier of b1 is 
    Subset of A by 
    UNIALG_2:def 7;
    
        then
    
        reconsider K = (the
    carrier of a1 
    \/ the 
    carrier of b1) as non 
    empty  
    Subset of A by 
    XBOOLE_1: 8;
    
        reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        set X = MSA;
    
        reconsider M1 = the
    Sorts of X as 
    ManySortedSet of the 
    carrier of ( 
    MSSign A); 
    
        
    
        
    
    A3: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) by 
    MSUALG_1: 10;
    
        then
    
        reconsider x =
    0 as 
    Element of ( 
    MSSign A); 
    
        let B be
    MSSubset of ( 
    MSAlg A) such that 
    
        
    
    A4: B 
    = (the 
    Sorts of a2 
    (\/) the 
    Sorts of b2); 
    
        
    
        
    
    A5: for U1 be 
    MSSubAlgebra of ( 
    MSAlg A) st B is 
    MSSubset of U1 holds X is 
    MSSubAlgebra of U1 
    
        proof
    
          let U1 be
    MSSubAlgebra of ( 
    MSAlg A); 
    
          assume
    
          
    
    A6: B is 
    MSSubset of U1; 
    
          per cases ;
    
            suppose U1 is
    non-empty;
    
            then
    
            reconsider U11 = U1 as
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A); 
    
            
    
            
    
    A7: ( 
    1-Alg U11) is 
    SubAlgebra of ( 
    1-Alg ( 
    MSAlg A)) by 
    Th20;
    
            then
    
            reconsider A1 = (
    1-Alg U11) as 
    strict  
    SubAlgebra of A by 
    MSUALG_1: 9;
    
            B
    c= the 
    Sorts of U11 by 
    A6,
    PBOOLE:def 18;
    
            then
    
            
    
    A8: (B 
    . x) 
    c= (the 
    Sorts of U11 
    . x); 
    
             the MSAlgebra of U11
    = ( 
    MSAlg ( 
    1-Alg U11)) & ( 
    MSAlg ( 
    1-Alg U11)) 
    =  
    MSAlgebra (# ( 
    MSSorts ( 
    1-Alg U11)), ( 
    MSCharact ( 
    1-Alg U11)) #) by 
    A3,
    Th26,
    MSUALG_1:def 11;
    
            then
    
            
    
    A9: (the 
    Sorts of U11 
    .  
    0 ) 
    = (( 
    0  
    .--> the 
    carrier of ( 
    1-Alg U11)) 
    .  
    0 ) by 
    MSUALG_1:def 9;
    
            (B
    .  
    0 ) 
    = (( 
    0  
    .--> K) 
    .  
    0 ) by 
    A1,
    A2,
    A4,
    Th28
    
            .= K by
    FUNCOP_1: 72;
    
            then (the
    carrier of a1 
    \/ the 
    carrier of b1) 
    c= the 
    carrier of A1 by 
    A8,
    A9,
    FUNCOP_1: 72;
    
            then (
    GenUnivAlg K) is 
    SubAlgebra of ( 
    1-Alg U11) by 
    UNIALG_2:def 12;
    
            then (a1
    "\/" b1) is 
    SubAlgebra of ( 
    1-Alg U11) by 
    UNIALG_2:def 13;
    
            then
    
            
    
    A10: MSA is 
    MSSubAlgebra of ( 
    MSAlg ( 
    1-Alg U11)) by 
    Th12;
    
            (
    1-Alg U11) is 
    SubAlgebra of A by 
    A7,
    MSUALG_1: 9;
    
            then (
    MSSign A) 
    = ( 
    MSSign ( 
    1-Alg U11)) by 
    Th7;
    
            then X is
    MSSubAlgebra of the MSAlgebra of U11 by 
    A3,
    A10,
    Th26;
    
            hence thesis by
    Th21;
    
          end;
    
            suppose not U1 is
    non-empty;
    
            then the
    Sorts of U1 is non 
    non-empty by 
    MSUALG_1:def 3;
    
            then
    
            
    
    A11: ex i be 
    object st i 
    in the 
    carrier of ( 
    MSSign A) & (the 
    Sorts of U1 
    . i) is 
    empty;
    
            reconsider 0a1 = (
    0  
    .--> the 
    carrier of a1) as 
    ManySortedSet of the 
    carrier of ( 
    MSSign A) by 
    A3;
    
            set e = the
    Element of a1; 
    
            B
    c= the 
    Sorts of U1 by 
    A6,
    PBOOLE:def 18;
    
            then
    
            
    
    A12: (B 
    . x) 
    c= (the 
    Sorts of U1 
    . x); 
    
            a2
    =  
    MSAlgebra (# ( 
    MSSorts a1), ( 
    MSCharact a1) #) by 
    A1,
    MSUALG_1:def 11;
    
            then B
    = (0a1 
    (\/) the 
    Sorts of b2) by 
    A4,
    MSUALG_1:def 9;
    
            then
    
            
    
    A13: (B 
    . x) 
    = ((0a1 
    . x) 
    \/ (the 
    Sorts of b2 
    . x)) by 
    PBOOLE:def 4;
    
            x
    in  
    {
    0 } by 
    TARSKI:def 1;
    
            then (0a1
    . x) 
    = the 
    carrier of a1 by 
    FUNCOP_1: 7;
    
            then e
    in (B 
    . x) by 
    A13,
    XBOOLE_0:def 3;
    
            hence thesis by
    A3,
    A11,
    A12,
    TARSKI:def 1;
    
          end;
    
        end;
    
        X
    =  
    MSAlgebra (# ( 
    MSSorts (a1 
    "\/" b1)), ( 
    MSCharact (a1 
    "\/" b1)) #) by 
    MSUALG_1:def 11;
    
        then
    
        
    
    A14: the 
    Sorts of X 
    = ( 
    0  
    .--> the 
    carrier of (a1 
    "\/" b1)) by 
    MSUALG_1:def 9;
    
        (the
    Sorts of a2 
    (\/) the 
    Sorts of b2) 
    c= M1 
    
        proof
    
          let x be
    object;
    
          
    
          
    
    A15: (a1 
    "\/" b1) 
    = ( 
    GenUnivAlg K) by 
    UNIALG_2:def 13;
    
          assume
    
          
    
    A16: x 
    in the 
    carrier of ( 
    MSSign A); 
    
          
    
          then
    
          
    
    A17: (M1 
    . x) 
    = (( 
    0  
    .--> the 
    carrier of (a1 
    "\/" b1)) 
    .  
    0 ) by 
    A14,
    A3,
    TARSKI:def 1
    
          .= the
    carrier of (a1 
    "\/" b1) by 
    FUNCOP_1: 72;
    
          ((the
    Sorts of a2 
    (\/) the 
    Sorts of b2) 
    . x) 
    = ((the 
    Sorts of a2 
    (\/) the 
    Sorts of b2) 
    .  
    0 ) by 
    A3,
    A16,
    TARSKI:def 1
    
          .= ((
    0  
    .--> (the 
    carrier of a1 
    \/ the 
    carrier of b1)) 
    .  
    0 ) by 
    A1,
    A2,
    Th28
    
          .= (the
    carrier of a1 
    \/ the 
    carrier of b1) by 
    FUNCOP_1: 72;
    
          hence thesis by
    A17,
    A15,
    UNIALG_2:def 12;
    
        end;
    
        then B is
    MSSubset of X by 
    A4,
    PBOOLE:def 18;
    
        hence thesis by
    A5,
    MSUALG_2:def 17;
    
      end;
    
      hence thesis by
    MSUALG_2:def 18;
    
    end;
    
    registration
    
      let A be
    with_const_op  
    Universal_Algebra;
    
      cluster ( 
    MSSign A) -> non 
    void
    strict
    segmental
    trivial
    all-with_const_op;
    
      coherence
    
      proof
    
        reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
        
    
        
    
    A1: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) by 
    MSUALG_1: 10;
    
        (
    MSSign A) is 
    all-with_const_op
    
        proof
    
          let s be
    SortSymbol of ( 
    MSSign A); 
    
          consider OO be
    operation of A such that 
    
          
    
    A2: ( 
    arity OO) 
    =  
    0 by 
    UNIALG_2:def 11;
    
          (
    Seg ( 
    len the 
    charact of A)) 
    = ( 
    dom the 
    charact of A) by 
    FINSEQ_1:def 3;
    
          then
    
          consider i be
    Nat such that 
    
          
    
    A3: i 
    in ( 
    Seg ( 
    len the 
    charact of A)) and 
    
          
    
    A4: (the 
    charact of A 
    . i) 
    = OO by 
    FINSEQ_2: 10;
    
          
    
          
    
    A5: ( 
    len ( 
    signature A)) 
    = ( 
    len the 
    charact of A) by 
    UNIALG_1:def 4;
    
          then
    
          
    
    A6: i 
    in ( 
    dom ( 
    signature A)) by 
    A3,
    FINSEQ_1:def 3;
    
          reconsider i as
    OperSymbol of ( 
    MSSign A) by 
    A1,
    A3,
    A5,
    FINSEQ_1:def 3;
    
          take i;
    
          ((
    *-->  
    0 ) 
    . (( 
    signature A) 
    . i)) 
    = (( 
    *-->  
    0 ) 
    .  
    0 ) by 
    A2,
    A4,
    A6,
    UNIALG_1:def 4
    
          .=
    {} by 
    Th1;
    
          hence (the
    Arity of ( 
    MSSign A) 
    . i) 
    =  
    {} by 
    A1,
    FUNCT_1: 13;
    
          thus (the
    ResultSort of ( 
    MSSign A) 
    . i) 
    = s by 
    A1,
    TARSKI:def 1;
    
        end;
    
        hence thesis;
    
      end;
    
    end
    
    theorem :: 
    
    MSSUBLAT:31
    
    
    
    
    
    Th31: for A be 
    with_const_op  
    Universal_Algebra, a1,b1 be 
    strict
    non-empty  
    SubAlgebra of A, a2,b2 be 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) st a2 
    = ( 
    MSAlg a1) & b2 
    = ( 
    MSAlg b1) holds ( 
    MSAlg (a1 
    /\ b1)) 
    = (a2 
    /\ b2) 
    
    proof
    
      let A be
    with_const_op  
    Universal_Algebra;
    
      let a1,b1 be
    strict
    non-empty  
    SubAlgebra of A; 
    
      reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A1: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) by 
    MSUALG_1: 10;
    
      (
    MSAlg (a1 
    /\ b1)) 
    =  
    MSAlgebra (# ( 
    MSSorts (a1 
    /\ b1)), ( 
    MSCharact (a1 
    /\ b1)) #) by 
    MSUALG_1:def 11;
    
      then
    
      
    
    A2: the 
    Sorts of ( 
    MSAlg (a1 
    /\ b1)) 
    = ( 
    0  
    .--> the 
    carrier of (a1 
    /\ b1)) by 
    MSUALG_1:def 9;
    
      then (
    dom the 
    Sorts of ( 
    MSAlg (a1 
    /\ b1))) 
    = the 
    carrier of ( 
    MSSign A) by 
    A1;
    
      then
    
      reconsider D = the
    Sorts of ( 
    MSAlg (a1 
    /\ b1)) as 
    ManySortedSet of the 
    carrier of ( 
    MSSign A) by 
    PARTFUN1:def 2,
    RELAT_1:def 18;
    
      let a2,b2 be
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) such that 
    
      
    
    A3: a2 
    = ( 
    MSAlg a1) & b2 
    = ( 
    MSAlg b1); 
    
      now
    
        let x be
    object;
    
        
    
        
    
    A4: the 
    carrier of a1 
    meets the 
    carrier of b1 by 
    UNIALG_2: 17;
    
        assume
    
        
    
    A5: x 
    in the 
    carrier of ( 
    MSSign A); 
    
        
    
        hence (D
    . x) 
    = (( 
    0  
    .--> the 
    carrier of (a1 
    /\ b1)) 
    .  
    0 ) by 
    A2,
    A1,
    TARSKI:def 1
    
        .= the
    carrier of (a1 
    /\ b1) by 
    FUNCOP_1: 72
    
        .= (the
    carrier of a1 
    /\ the 
    carrier of b1) by 
    A4,
    UNIALG_2:def 9
    
        .= ((
    0  
    .--> (the 
    carrier of a1 
    /\ the 
    carrier of b1)) 
    .  
    0 ) by 
    FUNCOP_1: 72
    
        .= ((the
    Sorts of a2 
    (/\) the 
    Sorts of b2) 
    .  
    0 ) by 
    A3,
    Th29
    
        .= ((the
    Sorts of a2 
    (/\) the 
    Sorts of b2) 
    . x) by 
    A1,
    A5,
    TARSKI:def 1;
    
      end;
    
      then
    
      
    
    A6: D 
    = (the 
    Sorts of a2 
    (/\) the 
    Sorts of b2); 
    
      (
    MSSign (a1 
    /\ b1)) 
    = ( 
    MSSign A) by 
    Th7;
    
      then
    
      reconsider AA = (
    MSAlg (a1 
    /\ b1)) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
      for B be
    MSSubset of ( 
    MSAlg A) st B 
    = the 
    Sorts of AA holds B is 
    opers_closed & the 
    Charact of AA 
    = ( 
    Opers (( 
    MSAlg A),B)) by 
    MSUALG_2:def 9;
    
      hence thesis by
    A6,
    MSUALG_2:def 16;
    
    end;
    
    registration
    
      let A be
    quasi_total  
    UAStr;
    
      cluster the UAStr of A -> 
    quasi_total;
    
      coherence ;
    
    end
    
    registration
    
      let A be
    partial  
    UAStr;
    
      cluster the UAStr of A -> 
    partial;
    
      coherence ;
    
    end
    
    registration
    
      let A be
    non-empty  
    UAStr;
    
      cluster the UAStr of A -> 
    non-empty;
    
      coherence ;
    
    end
    
    registration
    
      let A be
    with_const_op  
    Universal_Algebra;
    
      cluster the UAStr of A -> 
    with_const_op;
    
      coherence
    
      proof
    
        consider o be
    operation of A such that 
    
        
    
    A1: ( 
    arity o) 
    =  
    0 by 
    UNIALG_2:def 11;
    
        reconsider oo = o as
    operation of the UAStr of A; 
    
        take oo;
    
        thus thesis by
    A1;
    
      end;
    
    end
    
    theorem :: 
    
    MSSUBLAT:32
    
    for A be
    with_const_op  
    Universal_Algebra holds (( 
    UnSubAlLattice the UAStr of A),( 
    MSSubAlLattice ( 
    MSAlg the UAStr of A))) 
    are_isomorphic  
    
    proof
    
      let Z be
    with_const_op  
    Universal_Algebra;
    
      set A = the UAStr of Z;
    
      reconsider ff1 = ((
    *-->  
    0 ) 
    * ( 
    signature A)) as 
    Function of ( 
    dom ( 
    signature A)), ( 
    {
    0 } 
    * ) by 
    MSUALG_1: 2;
    
      
    
      
    
    A1: ( 
    MSSign A) 
    =  
    ManySortedSign (# 
    {
    0 }, ( 
    dom ( 
    signature A)), ff1, (( 
    dom ( 
    signature A)) 
    --> z) #) by 
    MSUALG_1: 10;
    
      defpred
    
    P[
    set, 
    set] means ex A1 be
    strict  
    SubAlgebra of A st A1 
    = $1 & $2 
    = ( 
    MSAlg A1); 
    
      
    
      
    
    A2: for x be 
    Element of ( 
    Sub A) holds ex y be 
    Element of ( 
    MSSub ( 
    MSAlg A)) st 
    P[x, y]
    
      proof
    
        let x be
    Element of ( 
    Sub A); 
    
        reconsider B = x as
    strict  
    SubAlgebra of A by 
    UNIALG_2:def 14;
    
        (
    MSSign A) 
    = ( 
    MSSign B) by 
    Th7;
    
        then (
    MSAlg B) is 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
        then
    
        reconsider y = (
    MSAlg B) as 
    Element of ( 
    MSSub ( 
    MSAlg A)) by 
    MSUALG_2:def 19;
    
        take y, B;
    
        thus thesis;
    
      end;
    
      consider f be
    Function of ( 
    Sub A), ( 
    MSSub ( 
    MSAlg A)) such that 
    
      
    
    A3: for x be 
    Element of ( 
    Sub A) holds 
    P[x, (f
    . x)] from 
    FUNCT_2:sch 3(
    A2);
    
      reconsider f as
    Function of the 
    carrier of ( 
    UnSubAlLattice A), the 
    carrier of ( 
    MSSubAlLattice ( 
    MSAlg A)); 
    
      f is
    Homomorphism of ( 
    UnSubAlLattice A), ( 
    MSSubAlLattice ( 
    MSAlg A)) 
    
      proof
    
        
    
        
    
    AA: f is 
    "\/"-preserving
    
        proof
    
          let a1,b1 be
    Element of ( 
    UnSubAlLattice A); 
    
          reconsider a2 = a1, b2 = b1 as
    Element of ( 
    Sub A); 
    
          reconsider a3 = a2, b3 = b2 as
    strict
    non-empty  
    SubAlgebra of A by 
    UNIALG_2:def 14;
    
          reconsider s = (a3
    "\/" b3) as 
    Element of ( 
    Sub A) by 
    UNIALG_2:def 14;
    
          reconsider m = (a3
    /\ b3) as 
    Element of ( 
    Sub A) by 
    UNIALG_2:def 14;
    
          
    
          
    
    A4: ex A1 be 
    strict
    non-empty  
    SubAlgebra of A st A1 
    = s & (f 
    . s) 
    = ( 
    MSAlg A1) by 
    A3;
    
          (
    MSSign b3) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g2 = (
    MSAlg b3) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          consider A4 be
    strict
    non-empty  
    SubAlgebra of A such that 
    
          
    
    A5: A4 
    = b3 and 
    
          
    
    A6: (f 
    . b3) 
    = ( 
    MSAlg A4) by 
    A3;
    
          (
    MSSign A4) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g3 = (
    MSAlg A4) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          (
    MSSign a3) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g1 = (
    MSAlg a3) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          consider A3 be
    strict
    non-empty  
    SubAlgebra of A such that 
    
          
    
    A7: A3 
    = a3 and 
    
          
    
    A8: (f 
    . a3) 
    = ( 
    MSAlg A3) by 
    A3;
    
          (
    MSSign A3) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g4 = (
    MSAlg A3) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          
    
          thus (f
    . (a1 
    "\/" b1)) 
    = (f 
    . (( 
    UniAlg_join A) 
    . (a2,b2))) by 
    LATTICES:def 1
    
          .= (
    MSAlg (a3 
    "\/" b3)) by 
    A4,
    UNIALG_2:def 15
    
          .= (g4
    "\/" g3) by 
    A7,
    A5,
    Th30
    
          .= (the
    L_join of ( 
    MSSubAlLattice ( 
    MSAlg A)) 
    . ((f 
    . a1),(f 
    . b1))) by 
    A8,
    A6,
    MSUALG_2:def 20
    
          .= ((f
    . a1) 
    "\/" (f 
    . b1)) by 
    LATTICES:def 1;
    
        end;
    
        f is
    "/\"-preserving
    
        proof
    
          let a1,b1 be
    Element of ( 
    UnSubAlLattice A); 
    
          reconsider a2 = a1, b2 = b1 as
    Element of ( 
    Sub A); 
    
          reconsider a3 = a2, b3 = b2 as
    strict
    non-empty  
    SubAlgebra of A by 
    UNIALG_2:def 14;
    
          reconsider s = (a3
    "\/" b3) as 
    Element of ( 
    Sub A) by 
    UNIALG_2:def 14;
    
          reconsider m = (a3
    /\ b3) as 
    Element of ( 
    Sub A) by 
    UNIALG_2:def 14;
    
          (
    MSSign b3) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g2 = (
    MSAlg b3) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          consider A4 be
    strict
    non-empty  
    SubAlgebra of A such that 
    
          
    
    A5: A4 
    = b3 and 
    
          
    
    A6: (f 
    . b3) 
    = ( 
    MSAlg A4) by 
    A3;
    
          (
    MSSign A4) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g3 = (
    MSAlg A4) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          (
    MSSign a3) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g1 = (
    MSAlg a3) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          consider A3 be
    strict
    non-empty  
    SubAlgebra of A such that 
    
          
    
    A7: A3 
    = a3 and 
    
          
    
    A8: (f 
    . a3) 
    = ( 
    MSAlg A3) by 
    A3;
    
          (
    MSSign A3) 
    = ( 
    MSSign A) by 
    Th7;
    
          then
    
          reconsider g4 = (
    MSAlg A3) as 
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    Th12;
    
          
    
          
    
    A9: ex A1 be 
    strict
    non-empty  
    SubAlgebra of A st A1 
    = m & (f 
    . m) 
    = ( 
    MSAlg A1) by 
    A3;
    
          
    
          thus (f
    . (a1 
    "/\" b1)) 
    = (f 
    . (( 
    UniAlg_meet A) 
    . (a2,b2))) by 
    LATTICES:def 2
    
          .= (
    MSAlg (a3 
    /\ b3)) by 
    A9,
    UNIALG_2:def 16
    
          .= (g1
    /\ g2) by 
    Th31
    
          .= (the
    L_meet of ( 
    MSSubAlLattice ( 
    MSAlg A)) 
    . ((f 
    . a1),(f 
    . b1))) by 
    A7,
    A8,
    A5,
    A6,
    MSUALG_2:def 21
    
          .= ((f
    . a1) 
    "/\" (f 
    . b1)) by 
    LATTICES:def 2;
    
        end;
    
        hence thesis by
    AA;
    
      end;
    
      then
    
      reconsider f as
    Homomorphism of ( 
    UnSubAlLattice A), ( 
    MSSubAlLattice ( 
    MSAlg A)); 
    
      take f;
    
      now
    
        let x1,x2 be
    object such that 
    
        
    
    A11: x1 
    in ( 
    dom f) & x2 
    in ( 
    dom f) and 
    
        
    
    A12: (f 
    . x1) 
    = (f 
    . x2); 
    
        reconsider y1 = x1, y2 = x2 as
    Element of ( 
    Sub A) by 
    A11,
    FUNCT_2:def 1;
    
        consider A1 be
    strict  
    SubAlgebra of A such that 
    
        
    
    A13: A1 
    = y1 and 
    
        
    
    A14: (f 
    . y1) 
    = ( 
    MSAlg A1) by 
    A3;
    
        consider A2 be
    strict  
    SubAlgebra of A such that 
    
        
    
    A15: A2 
    = y2 & (f 
    . y2) 
    = ( 
    MSAlg A2) by 
    A3;
    
        
    
        
    
    A16: ( 
    MSSign A1) 
    = ( 
    MSSign A) by 
    Th7
    
        .= (
    MSSign A2) by 
    Th7;
    
        
    
        thus x1
    = ( 
    1-Alg ( 
    MSAlg A1)) by 
    A13,
    MSUALG_1: 9
    
        .= x2 by
    A12,
    A14,
    A15,
    A16,
    MSUALG_1: 9;
    
      end;
    
      hence f is
    one-to-one by 
    FUNCT_1:def 4;
    
      
    
      
    
    A17: ( 
    dom f) 
    = ( 
    Sub A) by 
    FUNCT_2:def 1;
    
      thus (
    rng f) 
    = the 
    carrier of ( 
    MSSubAlLattice ( 
    MSAlg A)) 
    
      proof
    
        thus (
    rng f) 
    c= the 
    carrier of ( 
    MSSubAlLattice ( 
    MSAlg A)) by 
    RELAT_1:def 19;
    
        let x be
    object;
    
        assume x
    in the 
    carrier of ( 
    MSSubAlLattice ( 
    MSAlg A)); 
    
        then
    
        reconsider y = x as
    strict  
    MSSubAlgebra of ( 
    MSAlg A) by 
    MSUALG_2:def 19;
    
        reconsider C = (
    Constants ( 
    MSAlg A)) as 
    MSSubset of y by 
    MSUALG_2: 10;
    
        C
    c= the 
    Sorts of y by 
    PBOOLE:def 18;
    
        then the
    Sorts of y is 
    non-empty by 
    PBOOLE: 131;
    
        then
    
        reconsider y as
    strict
    non-empty  
    MSSubAlgebra of ( 
    MSAlg A) by 
    MSUALG_1:def 3;
    
        (
    1-Alg y) is 
    SubAlgebra of ( 
    1-Alg ( 
    MSAlg A)) by 
    Th20;
    
        then (
    1-Alg y) is 
    SubAlgebra of A by 
    MSUALG_1: 9;
    
        then
    
        reconsider y1 = (
    1-Alg y) as 
    Element of ( 
    Sub A) by 
    UNIALG_2:def 14;
    
        ex A1 be
    strict  
    SubAlgebra of A st A1 
    = y1 & (f 
    . y1) 
    = ( 
    MSAlg A1) by 
    A3;
    
        then
    
        
    
    A18: (f 
    . ( 
    1-Alg y)) 
    = x by 
    A1,
    Th26;
    
        y1
    in ( 
    dom f) by 
    A17;
    
        hence thesis by
    A18,
    FUNCT_1:def 3;
    
      end;
    
    end;