let A be strict Universal_Algebra; :: thesis: for a1, b1 being strict non-empty SubAlgebra of A
for a2, b2 being strict non-empty MSSubAlgebra of MSAlg A st a2 = MSAlg a1 & b2 = MSAlg b1 holds
MSAlg (a1 "\/" b1) = a2 "\/" b2

let a1, b1 be strict non-empty SubAlgebra of A; :: thesis: for a2, b2 being strict non-empty MSSubAlgebra of MSAlg A st a2 = MSAlg a1 & b2 = MSAlg b1 holds
MSAlg (a1 "\/" b1) = a2 "\/" b2

reconsider MSA = MSAlg (a1 "\/" b1) as MSSubAlgebra of MSAlg A by Th12;
let a2, b2 be strict non-empty MSSubAlgebra of MSAlg A; :: thesis: ( a2 = MSAlg a1 & b2 = MSAlg b1 implies MSAlg (a1 "\/" b1) = a2 "\/" b2 )
assume that
A1: a2 = MSAlg a1 and
A2: b2 = MSAlg b1 ; :: thesis: MSAlg (a1 "\/" b1) = a2 "\/" b2
MSSign (a1 "\/" b1) = MSSign A by Th7;
then reconsider MSA = MSA as strict non-empty MSSubAlgebra of MSAlg A ;
for B being 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 MSA 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); :: thesis: ( B = the Sorts of a2 (\/) the Sorts of b2 implies MSA = GenMSAlg B )
assume A4: B = the Sorts of a2 (\/) the Sorts of b2 ; :: thesis: MSA = GenMSAlg B
A5: for U1 being MSSubAlgebra of MSAlg A st B is MSSubset of U1 holds
MSA is MSSubAlgebra of U1
proof
let U1 be MSSubAlgebra of MSAlg A; :: thesis: ( B is MSSubset of U1 implies MSA is MSSubAlgebra of U1 )
assume A6: B is MSSubset of U1 ; :: thesis: MSA is MSSubAlgebra of U1
per cases ( U1 is non-empty or not U1 is non-empty ) ;
suppose U1 is non-empty ; :: thesis: MSA is MSSubAlgebra of U1
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 ;
( MSAlgebra(# the Sorts of U11, the Charact 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 MSA is MSSubAlgebra of MSAlgebra(# the Sorts of U11, the Charact of U11 #) by A3, A10, Th26;
hence MSA is MSSubAlgebra of U1 by Th21; :: thesis: verum
end;
suppose not U1 is non-empty ; :: thesis: MSA is MSSubAlgebra of U1
then the Sorts of U1 is non-empty by MSUALG_1:def 3;
then A11: ex i being 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 the Element of a1 in B . x by A13, XBOOLE_0:def 3;
hence MSA is MSSubAlgebra of U1 by A3, A11, A12, TARSKI:def 1; :: thesis: verum
end;
end;
end;
MSA = MSAlgebra(# (MSSorts (a1 "\/" b1)),(MSCharact (a1 "\/" b1)) #) by MSUALG_1:def 11;
then A14: the Sorts of MSA = 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 ; :: according to PBOOLE:def 2 :: thesis: ( not x in the carrier of (MSSign A) or ( the Sorts of a2 (\/) the Sorts of b2) . x c= M1 . x )
A15: a1 "\/" b1 = GenUnivAlg K by UNIALG_2:def 13;
assume A16: x in the carrier of (MSSign A) ; :: thesis: ( the Sorts of a2 (\/) the Sorts of b2) . x c= M1 . x
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 ( the Sorts of a2 (\/) the Sorts of b2) . x c= M1 . x by A17, A15, UNIALG_2:def 12; :: thesis: verum
end;
then B is MSSubset of MSA by A4, PBOOLE:def 18;
hence MSA = GenMSAlg B by A5, MSUALG_2:def 17; :: thesis: verum
end;
hence MSAlg (a1 "\/" b1) = a2 "\/" b2 by MSUALG_2:def 18; :: thesis: verum