:: BIRKHOFF semantic presentation

definition
let c1 be non empty non void ManySortedSign ;
let c2 be V2 ManySortedSet of the carrier of c1;
let c3 be non-empty MSAlgebra of c1;
let c4 be ManySortedFunction of c2,the Sorts of c3;
func c4 -hash -> ManySortedFunction of (FreeMSA a2),a3 means :E1: :: BIRKHOFF:def 1
( a5 is_homomorphism FreeMSA a2,a3 & a5 || (FreeGen a2) = a4 ** (Reverse a2) );
existence
ex b1 being ManySortedFunction of (FreeMSA c2),c3 st
( b1 is_homomorphism FreeMSA c2,c3 & b1 || (FreeGen c2) = c4 ** (Reverse c2) )
by MSAFREE:def 5;
uniqueness
for b1, b2 being ManySortedFunction of (FreeMSA c2),c3 holds
( ( b1 is_homomorphism FreeMSA c2,c3 & b1 || (FreeGen c2) = c4 ** (Reverse c2) & b2 is_homomorphism FreeMSA c2,c3 & b2 || (FreeGen c2) = c4 ** (Reverse c2) ) implies ( b1 = b2 ) )
by EXTENS_1:18;
end;

:: deftheorem E1 defines -hash BIRKHOFF:def 1 :
for b1 being non empty non void ManySortedSign
for b2 being V2 ManySortedSet of the carrier of b1
for b3 being non-empty MSAlgebra of b1
for b4 being ManySortedFunction of b2,the Sorts of b3
for b5 being ManySortedFunction of (FreeMSA b2),b3 holds
( b5 = b4 -hash iff ( b5 is_homomorphism FreeMSA b2,b3 & b5 || (FreeGen b2) = b4 ** (Reverse b2) ) );

theorem E2: :: BIRKHOFF:1
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra of b1
for b3 being V2 ManySortedSet of the carrier of b1
for b4 being ManySortedFunction of b3,the Sorts of b2 holds rngs b4 c= rngs (b4 -hash )
proof
let c1 be non empty non void ManySortedSign ;
let c2 be non-empty MSAlgebra of c1;
let c3 be V2 ManySortedSet of the carrier of c1;
let c4 be ManySortedFunction of c3,the Sorts of c2;
set c5 = Reverse c3;
let c6 be set ; :: according to PBOOLE:def 5
assume c6 in the carrier of c1 ;
then reconsider c7 = c6 as SortSymbol of c1 ;
let c8 be set ; :: according to TARSKI:def 3
assume c8 in (rngs c4) . c6 ;
then c8 in rng (c4 . c7) by MSSUBFAM:13;
then consider c9 being set such that
E3: ( c9 in dom (c4 . c7) & c8 = (c4 . c7) . c9 ) by FUNCT_1:def 5;
rngs (Reverse c3) = c3 by EXTENS_1:14;
then Reverse c3 is "onto" by EXTENS_1:13;
then rng ((Reverse c3) . c7) = c3 . c7 by MSUALG_3:def 3;
then consider c10 being set such that
E4: ( c10 in dom ((Reverse c3) . c7) & c9 = ((Reverse c3) . c7) . c10 ) by E3, FUNCT_1:def 5;
E5: dom ((Reverse c3) . c7) = (FreeGen c3) . c7 by FUNCT_2:def 1;
E6: dom ((c4 -hash ) . c7) = the Sorts of (FreeMSA c3) . c7 by FUNCT_2:def 1;
FreeGen c3 c= the Sorts of (FreeMSA c3) by PBOOLE:def 23;
then E7: (FreeGen c3) . c7 c= the Sorts of (FreeMSA c3) . c7 by PBOOLE:def 5;
c8 = ((c4 . c7) * ((Reverse c3) . c7)) . c10 by E3, E4, FUNCT_1:23
.= ((c4 ** (Reverse c3)) . c7) . c10 by MSUALG_3:2
.= (((c4 -hash ) || (FreeGen c3)) . c7) . c10 by E1
.= (((c4 -hash ) . c7) | ((FreeGen c3) . c7)) . c10 by MSAFREE:def 1
.= ((c4 -hash ) . c7) . c10 by E4, FUNCT_1:72 ;
then c8 in rng ((c4 -hash ) . c7) by E4, E5, E6, E7, FUNCT_1:def 5;
hence c8 in (rngs (c4 -hash )) . c6 by MSSUBFAM:13;
end;

scheme :: BIRKHOFF:sch 1
s1{ F1() -> non empty non void ManySortedSign , F2() -> non-empty MSAlgebra of F1(), P1[ set ] } :
ex b1 being strict non-empty MSAlgebra of F1()ex b2 being ManySortedFunction of F2(),b1 st
( P1[b1] & b2 is_epimorphism F2(),b1 & ( for b3 being non-empty MSAlgebra of F1()
for b4 being ManySortedFunction of F2(),b3 holds
not ( b4 is_homomorphism F2(),b3 & P1[b3] & ( for b5 being ManySortedFunction of b1,b3 holds
not ( b5 is_homomorphism b1,b3 & b5 ** b2 = b4 & ( for b6 being ManySortedFunction of b1,b3 holds
( b6 ** b2 = b4 implies b5 = b6 ) ) ) ) ) ) )
provided
E3: for b1, b2 being non-empty MSAlgebra of F1() holds
( ( b1,b2 are_isomorphic & P1[b1] ) implies ( P1[b2] ) ) and E4: for b1 being non-empty MSAlgebra of F1()
for b2 being strict non-empty MSSubAlgebra of b1 holds
( P1[b1] implies P1[b2] ) and E5: for b1 being set
for b2 being MSAlgebra-Family of b1,F1() holds
( ( for b3 being set holds
not ( b3 in b1 & ( for b4 being MSAlgebra of F1() holds
not ( b4 = b2 . b3 & P1[b4] ) ) ) ) implies P1[ product b2] )
proof
set c1 = the Sorts of F2();
set c2 = the carrier of F1();
set c3 = { b1 where B is Element of (CongrLatt F2()) : ex b1 being MSCongruence of F2() st
( b2 = b1 & P1[ QuotMSAlg F2(),b2] )
}
;
defpred S1[ set ] means ex b1 being MSCongruence of F2() st
( b1 = a1 & P1[ QuotMSAlg F2(),b1] );
E6: { b1 where B is Element of (CongrLatt F2()) : S1[b1] } is Subset of (CongrLatt F2()) from DOMAIN_1:sch 7();
E7: now
let c4 be set ;
assume c4 in { b1 where B is Element of (CongrLatt F2()) : ex b1 being MSCongruence of F2() st
( b2 = b1 & P1[ QuotMSAlg F2(),b2] )
}
;
then consider c5 being Element of (CongrLatt F2()) such that
E8: c4 = c5 and
ex b1 being MSCongruence of F2() st
( b1 = c5 & P1[ QuotMSAlg F2(),b1] ) ;
thus c4 is MSCongruence of F2() by E8, MSUALG_5:def 6;
end;
consider c4 being empty set , c5 being MSAlgebra-Family of c4,F1();
for b1 being set holds
not ( b1 in c4 & ( for b2 being MSAlgebra of F1() holds
not ( b2 = c5 . b1 & P1[b2] ) ) ) ;
then E8: P1[ product c5] by E5;
consider c6 being ManySortedSet of the carrier of F1() such that
E9: {c6} = the carrier of F1() --> {{} } by MSUALG_9:6;
now
let c7 be set ;
assume c7 in the carrier of F1() ;
then reconsider c8 = c7 as SortSymbol of F1() ;
thus the Sorts of (product c5) . c7 = (SORTS c5) . c8
.= product (Carrier c5,c8) by PRALG_2:def 17
.= {{} } by CARD_3:19, PRALG_2:def 16
.= (the carrier of F1() --> {{} }) . c8 by FUNCOP_1:13
.= {c6} . c7 by E9 ;
end;
then the Sorts of (product c5) = {c6} by PBOOLE:3;
then product c5, Trivial_Algebra F1() are_isomorphic by MSUALG_9:27;
then E10: P1[ Trivial_Algebra F1()] by E3, E8;
[|the Sorts of F2(),the Sorts of F2()|] is MSCongruence of F2() by MSUALG_5:20;
then E11: [|the Sorts of F2(),the Sorts of F2()|] is Element of (CongrLatt F2()) by MSUALG_5:def 6;
reconsider c7 = [|the Sorts of F2(),the Sorts of F2()|] as MSCongruence of F2() by MSUALG_5:20;
the Sorts of (QuotMSAlg F2(),c7) = {the Sorts of F2()} by MSUALG_9:30;
then consider c8 being V2 ManySortedSet of the carrier of F1() such that
E12: the Sorts of (QuotMSAlg F2(),c7) = {c8} ;
QuotMSAlg F2(),c7, Trivial_Algebra F1() are_isomorphic by E12, MSUALG_9:27;
then Trivial_Algebra F1(), QuotMSAlg F2(),c7 are_isomorphic by MSUALG_3:17;
then P1[ QuotMSAlg F2(),c7] by E3, E10;
then E13: [|the Sorts of F2(),the Sorts of F2()|] in { b1 where B is Element of (CongrLatt F2()) : ex b1 being MSCongruence of F2() st
( b2 = b1 & P1[ QuotMSAlg F2(),b2] )
}
by E11;
E14: { b1 where B is Element of (CongrLatt F2()) : ex b1 being MSCongruence of F2() st
( b2 = b1 & P1[ QuotMSAlg F2(),b2] )
}
c= the carrier of (EqRelLatt the Sorts of F2())
proof
let c9 be set ; :: according to TARSKI:def 3
assume c9 in { b1 where B is Element of (CongrLatt F2()) : ex b1 being MSCongruence of F2() st
( b2 = b1 & P1[ QuotMSAlg F2(),b2] )
}
;
then c9 is Equivalence_Relation of the Sorts of F2() by E7;
hence c9 in the carrier of (EqRelLatt the Sorts of F2()) by MSUALG_5:def 5;
end;
then reconsider c9 = { b1 where B is Element of (CongrLatt F2()) : ex b1 being MSCongruence of F2() st
( b2 = b1 & P1[ QuotMSAlg F2(),b2] )
}
as non empty SubsetFamily of [|the Sorts of F2(),the Sorts of F2()|] by E13, MSUALG_7:6;
set c10 = meet |:c9:|;
E15: meet |:c9:| is MSEquivalence_Relation-like ManySortedRelation of the Sorts of F2() by E14, MSUALG_7:9;
reconsider c11 = meet |:c9:| as ManySortedRelation of F2() by E14, MSUALG_7:9;
c11 is MSEquivalence-like
proof
let c12 be set ; :: according to MSUALG_4:def 3,MSUALG_4:def 5
let c13 be Relation of the Sorts of F2() . c12;
assume ( c12 in the carrier of F1() & c11 . c12 = c13 ) ;
hence c13 is Equivalence_Relation of the Sorts of F2() . c12 by E15, MSUALG_4:def 3;
end;
then reconsider c12 = c11 as MSEquivalence-like ManySortedRelation of F2() ;
reconsider c13 = c12 as MSCongruence of F2() by E6, MSUALG_9:29;
take c14 = QuotMSAlg F2(),c13;
defpred S2[ set , set ] means ex b1 being MSCongruence of F2() st
( b1 = a1 & a2 = QuotMSAlg F2(),b1 );
E16: now
let c15 be set ;
assume c15 in c9 ;
then reconsider c16 = c15 as MSCongruence of F2() by E7;
consider c17 being set such that
E17: c17 = QuotMSAlg F2(),c16 ;
take c18 = c17;
thus S2[c15,c18] by E17;
end;
consider c15 being ManySortedSet of c9 such that
E17: for b1 being set holds
( b1 in c9 implies S2[b1,c15 . b1] ) from PBOOLE:sch 3(E16);
c15 is MSAlgebra-Family of c9,F1()
proof
let c16 be set ; :: according to PRALG_2:def 12
assume c16 in c9 ;
then consider c17 being MSCongruence of F2() such that
E18: ( c17 = c16 & c15 . c16 = QuotMSAlg F2(),c17 ) by E17;
thus c15 . c16 is non-empty MSAlgebra of F1() by E18;
end;
then reconsider c16 = c15 as MSAlgebra-Family of c9,F1() ;
for b1 being set holds
not ( b1 in c9 & ( for b2 being MSAlgebra of F1() holds
not ( b2 = c16 . b1 & P1[b2] ) ) )
proof
let c17 be set ;
assume E18: c17 in c9 ;
then reconsider c18 = c17 as Element of c9 ;
take c19 = c16 . c18;
consider c20 being Element of (CongrLatt F2()) such that
E19: ( c17 = c20 & ex b1 being MSCongruence of F2() st
( b1 = c20 & P1[ QuotMSAlg F2(),b1] ) ) by E18;
consider c21 being MSCongruence of F2() such that
E20: ( c21 = c17 & c16 . c17 = QuotMSAlg F2(),c21 ) by E17, E18;
thus ( c19 = c16 . c17 & P1[c19] ) by E19, E20;
end;
then E18: P1[ product c16] by E5;
reconsider c17 = MSNat_Hom F2(),c13 as ManySortedFunction of F2(),c14 ;
take c17 ;
defpred S3[ Element of c9, set ] means ex b1 being ManySortedFunction of F2(),(c16 . a1) st
( b1 = a2 & b1 is_homomorphism F2(),c16 . a1 & ex b2 being MSCongruence of F2() st
( a1 = b2 & b1 = MSNat_Hom F2(),b2 ) );
E19: for b1 being Element of c9 holds
ex b2 being set st
S3[b1,b2]
proof
let c18 be Element of c9;
consider c19 being MSCongruence of F2() such that
E20: ( c19 = c18 & c16 . c18 = QuotMSAlg F2(),c19 ) by E17;
set c20 = MSNat_Hom F2(),c19;
take MSNat_Hom F2(),c19 ;
reconsider c21 = MSNat_Hom F2(),c19 as ManySortedFunction of F2(),(c16 . c18) by E20;
take c21 ;
thus c21 = MSNat_Hom F2(),c19 ;
MSNat_Hom F2(),c19 is_epimorphism F2(), QuotMSAlg F2(),c19 by MSUALG_4:3;
hence c21 is_homomorphism F2(),c16 . c18 by E20, MSUALG_3:def 10;
take c19 ;
thus ( c18 = c19 & c21 = MSNat_Hom F2(),c19 ) by E20;
end;
consider c18 being ManySortedSet of c9 such that
E20: for b1 being Element of c9 holds
S3[b1,c18 . b1] from MSUALG_9:sch 1(E19);
E21: for b1 being Element of c9 holds
ex b2 being ManySortedFunction of F2(),(c16 . b1) st
( b2 = c18 . b1 & b2 is_homomorphism F2(),c16 . b1 )
proof
let c19 be Element of c9;
consider c20 being ManySortedFunction of F2(),(c16 . c19) such that
E22: ( c20 = c18 . c19 & c20 is_homomorphism F2(),c16 . c19 ) and
ex b1 being MSCongruence of F2() st
( c19 = b1 & c20 = MSNat_Hom F2(),b1 ) by E20;
take c20 ;
thus ( c20 = c18 . c19 & c20 is_homomorphism F2(),c16 . c19 ) by E22;
end;
c18 is Function-yielding
proof
let c19 be set ; :: according to FUNCOP_1:def 6
assume c19 in dom c18 ;
then reconsider c20 = c19 as Element of c9 by PBOOLE:def 3;
consider c21 being ManySortedFunction of F2(),(c16 . c20) such that
E22: ( c21 = c18 . c20 & c21 is_homomorphism F2(),c16 . c20 ) by E21;
thus c18 . c19 is Function by E22;
end;
then reconsider c19 = c18 as ManySortedFunction of c9 ;
consider c20 being ManySortedFunction of F2(),(product c16) such that
E22: c20 is_homomorphism F2(), product c16 and
E23: for b1 being Element of c9 holds (proj c16,b1) ** c20 = c19 . b1 by E21, PRALG_3:30;
MSHomQuot c20 is_monomorphism QuotMSAlg F2(),(MSCng c20), product c16 by E22, MSUALG_4:4;
then E24: QuotMSAlg F2(),(MSCng c20), Image (MSHomQuot c20) are_isomorphic by MSUALG_9:17;
now
let c21 be set ;
assume c21 in the carrier of F1() ;
then reconsider c22 = c21 as SortSymbol of F1() ;
consider c23 being Subset-Family of ([|the Sorts of F2(),the Sorts of F2()|] . c22) such that
E25: c23 = |:c9:| . c22 and
E26: (meet |:c9:|) . c22 = Intersect c23 by MSSUBFAM:def 2;
E27: |:c9:| . c22 = { (b1 . c22) where B is Element of Bool [|the Sorts of F2(),the Sorts of F2()|] : b1 in c9 } by CLOSURE2:15;
(MSCng c20) . c22 = c13 . c22
proof
let c24, c25 be set ; :: according to RELAT_1:def 2
hereby
assume E28: [c24,c25] in (MSCng c20) . c22 ;
then E29: ( c24 in the Sorts of F2() . c22 & c25 in the Sorts of F2() . c22 ) by ZFMISC_1:106;
[c24,c25] in [:(the Sorts of F2() . c22),(the Sorts of F2() . c22):] by E28;
then E30: [c24,c25] in [|the Sorts of F2(),the Sorts of F2()|] . c22 by PBOOLE:def 21;
E31: [c24,c25] in MSCng c20,c22 by E22, E28, MSUALG_4:def 20;
for b1 being set holds
( b1 in c23 implies [c24,c25] in b1 )
proof
let c26 be set ;
assume c26 in c23 ;
then consider c27 being Element of Bool [|the Sorts of F2(),the Sorts of F2()|] such that
E32: c26 = c27 . c22 and
E33: c27 in c9 by E25, E27;
reconsider c28 = c27 as Element of c9 by E33;
consider c29 being ManySortedFunction of F2(),(c16 . c28) such that
E34: ( c29 = c19 . c28 & c29 is_homomorphism F2(),c16 . c28 & ex b1 being MSCongruence of F2() st
( c28 = b1 & c29 = MSNat_Hom F2(),b1 ) ) by E20;
consider c30 being MSCongruence of F2() such that
E35: ( c28 = c30 & c29 = MSNat_Hom F2(),c30 ) by E34;
(c29 . c22) . c24 = (((proj c16,c28) ** c20) . c22) . c24 by E23, E34
.= (((proj c16,c28) . c22) * (c20 . c22)) . c24 by MSUALG_3:2
.= ((proj c16,c28) . c22) . ((c20 . c22) . c24) by E29, FUNCT_2:21
.= ((proj c16,c28) . c22) . ((c20 . c22) . c25) by E29, E31, MSUALG_4:def 19
.= (((proj c16,c28) . c22) * (c20 . c22)) . c25 by E29, FUNCT_2:21
.= (((proj c16,c28) ** c20) . c22) . c25 by MSUALG_3:2
.= (c29 . c22) . c25 by E23, E34 ;
hence [c24,c25] in c26 by E29, E32, E35, MSUALG_9:34;
end;
hence [c24,c25] in c13 . c22 by E26, E30, SETFAM_1:58;
end;
assume E28: [c24,c25] in c13 . c22 ;
then E29: ( c24 in the Sorts of F2() . c22 & c25 in the Sorts of F2() . c22 ) by ZFMISC_1:106;
(c20 . c22) . c24 in the Sorts of (product c16) . c22 by E29, FUNCT_2:7;
then E30: (c20 . c22) . c24 in product (Carrier c16,c22) by PRALG_2:def 17;
(c20 . c22) . c25 in the Sorts of (product c16) . c22 by E29, FUNCT_2:7;
then E31: (c20 . c22) . c25 in product (Carrier c16,c22) by PRALG_2:def 17;
for b1 being Element of c9 holds (proj (Carrier c16,c22),b1) . ((c20 . c22) . c24) = (proj (Carrier c16,c22),b1) . ((c20 . c22) . c25)
proof
let c26 be Element of c9;
reconsider c27 = c26 as MSCongruence of F2() by E7;
c27 is Element of Bool [|the Sorts of F2(),the Sorts of F2()|] by CLOSURE2:def 1;
then c27 . c22 in |:c9:| . c22 by E27;
then E32: [c24,c25] in c27 . c22 by E25, E26, E28, SETFAM_1:58;
consider c28 being ManySortedFunction of F2(),(c16 . c26) such that
E33: ( c28 = c19 . c26 & c28 is_homomorphism F2(),c16 . c26 & ex b1 being MSCongruence of F2() st
( c26 = b1 & c28 = MSNat_Hom F2(),b1 ) ) by E20;
consider c29 being MSCongruence of F2() such that
E34: ( c27 = c29 & c28 = MSNat_Hom F2(),c29 ) by E33;
thus (proj (Carrier c16,c22),c26) . ((c20 . c22) . c24) = ((proj c16,c26) . c22) . ((c20 . c22) . c24) by PRALG_3:def 3
.= (((proj c16,c26) . c22) * (c20 . c22)) . c24 by E29, FUNCT_2:21
.= (((proj c16,c26) ** c20) . c22) . c24 by MSUALG_3:2
.= (c28 . c22) . c24 by E23, E33
.= (c28 . c22) . c25 by E29, E32, E34, MSUALG_9:34
.= (((proj c16,c26) ** c20) . c22) . c25 by E23, E33
.= (((proj c16,c26) . c22) * (c20 . c22)) . c25 by MSUALG_3:2
.= ((proj c16,c26) . c22) . ((c20 . c22) . c25) by E29, FUNCT_2:21
.= (proj (Carrier c16,c22),c26) . ((c20 . c22) . c25) by PRALG_3:def 3 ;
end;
then (c20 . c22) . c24 = (c20 . c22) . c25 by E30, E31, MSUALG_9:15;
then [c24,c25] in MSCng c20,c22 by E29, MSUALG_4:def 19;
hence [c24,c25] in (MSCng c20) . c22 by E22, MSUALG_4:def 20;
end;
hence (MSCng c20) . c21 = c13 . c21 ;
end;
then MSCng c20 = c13 by PBOOLE:3;
then consider c21 being strict non-empty MSSubAlgebra of product c16 such that
E25: c14,c21 are_isomorphic by E24;
E26: c21,c14 are_isomorphic by E25, MSUALG_3:17;
P1[c21] by E4, E18;
hence P1[c14] by E3, E26;
thus E27: c17 is_epimorphism F2(),c14 by MSUALG_4:3;
let c22 be non-empty MSAlgebra of F1();
let c23 be ManySortedFunction of F2(),c22;
assume that
E28: c23 is_homomorphism F2(),c22 and
E29: P1[c22] ;
reconsider c24 = Image (MSHomQuot c23) as strict non-empty MSSubAlgebra of c22 ;
MSHomQuot c23 is_monomorphism QuotMSAlg F2(),(MSCng c23),c22 by E28, MSUALG_4:4;
then QuotMSAlg F2(),(MSCng c23),c24 are_isomorphic by MSUALG_9:17;
then E30: c24, QuotMSAlg F2(),(MSCng c23) are_isomorphic by MSUALG_3:17;
E31: MSCng c23 is Element of (CongrLatt F2()) by MSUALG_5:def 6;
P1[c24] by E4, E29;
then P1[ QuotMSAlg F2(),(MSCng c23)] by E3, E30;
then MSCng c23 in c9 by E31;
then MSCng c23 in |:c9:| by CLOSURE2:22;
then c13 c= MSCng c23 by MSSUBFAM:43;
then consider c25 being ManySortedFunction of c14,c22 such that
E32: ( c25 is_homomorphism c14,c22 & c23 = c25 ** c17 ) by E28, MSUALG_9:37;
take c25 ;
thus c25 is_homomorphism c14,c22 by E32;
thus c23 = c25 ** c17 by E32;
let c26 be ManySortedFunction of c14,c22;
assume E33: c26 ** c17 = c23 ;
c17 is "onto" by E27, MSUALG_3:def 10;
hence c25 = c26 by E32, E33, EXTENS_1:16;
end;

scheme :: BIRKHOFF:sch 2
s2{ F1() -> non empty non void ManySortedSign , F2() -> V2 ManySortedSet of the carrier of F1(), P1[ set ] } :
ex b1 being strict non-empty MSAlgebra of F1()ex b2 being ManySortedFunction of F2(),the Sorts of b1 st
( P1[b1] & ( for b3 being non-empty MSAlgebra of F1()
for b4 being ManySortedFunction of F2(),the Sorts of b3 holds
not ( P1[b3] & ( for b5 being ManySortedFunction of b1,b3 holds
not ( b5 is_homomorphism b1,b3 & b5 ** b2 = b4 & ( for b6 being ManySortedFunction of b1,b3 holds
( ( b6 is_homomorphism b1,b3 & b6 ** b2 = b4 ) implies ( b5 = b6 ) ) ) ) ) ) ) )
provided
E3: for b1, b2 being non-empty MSAlgebra of F1() holds
( ( b1,b2 are_isomorphic & P1[b1] ) implies ( P1[b2] ) ) and E4: for b1 being non-empty MSAlgebra of F1()
for b2 being strict non-empty MSSubAlgebra of b1 holds
( P1[b1] implies P1[b2] ) and E5: for b1 being set
for b2 being MSAlgebra-Family of b1,F1() holds
( ( for b3 being set holds
not ( b3 in b1 & ( for b4 being MSAlgebra of F1() holds
not ( b4 = b2 . b3 & P1[b4] ) ) ) ) implies P1[ product b2] )
proof
set c1 = FreeMSA F2();
E6: for b1, b2 being non-empty MSAlgebra of F1() holds
( ( b1,b2 are_isomorphic & P1[b1] ) implies ( P1[b2] ) ) by E3;
E7: for b1 being non-empty MSAlgebra of F1()
for b2 being strict non-empty MSSubAlgebra of b1 holds
( P1[b1] implies P1[b2] ) by E4;
E8: for b1 being set
for b2 being MSAlgebra-Family of b1,F1() holds
( ( for b3 being set holds
not ( b3 in b1 & ( for b4 being MSAlgebra of F1() holds
not ( b4 = b2 . b3 & P1[b4] ) ) ) ) implies P1[ product b2] ) by E5;
consider c2 being strict non-empty MSAlgebra of F1(), c3 being ManySortedFunction of (FreeMSA F2()),c2 such that
E9: P1[c2] and
E10: c3 is_epimorphism FreeMSA F2(),c2 and
E11: for b1 being non-empty MSAlgebra of F1()
for b2 being ManySortedFunction of (FreeMSA F2()),b1 holds
not ( b2 is_homomorphism FreeMSA F2(),b1 & P1[b1] & ( for b3 being ManySortedFunction of c2,b1 holds
not ( b3 is_homomorphism c2,b1 & b3 ** c3 = b2 & ( for b4 being ManySortedFunction of c2,b1 holds
( b4 ** c3 = b2 implies b3 = b4 ) ) ) ) ) from BIRKHOFF:sch 1(E6, E7, E8);
take c2 ;
reconsider c4 = (c3 || (FreeGen F2())) ** ((Reverse F2()) "" ) as ManySortedFunction of F2(),the Sorts of c2 ;
take c4 ;
thus P1[c2] by E9;
let c5 be non-empty MSAlgebra of F1();
let c6 be ManySortedFunction of F2(),the Sorts of c5;
assume E12: P1[c5] ;
consider c7 being ManySortedFunction of (FreeMSA F2()),c5 such that
E13: c7 is_homomorphism FreeMSA F2(),c5 and
E14: c7 || (FreeGen F2()) = c6 ** (Reverse F2()) by MSAFREE:def 5;
consider c8 being ManySortedFunction of c2,c5 such that
E15: c8 is_homomorphism c2,c5 and
E16: c8 ** c3 = c7 and
for b1 being ManySortedFunction of c2,c5 holds
( b1 ** c3 = c7 implies c8 = b1 ) by E11, E12, E13;
take c8 ;
thus c8 is_homomorphism c2,c5 by E15;
rngs (Reverse F2()) = F2() by EXTENS_1:14;
then E17: Reverse F2() is "onto" by EXTENS_1:13;
E18: Reverse F2() is "1-1" by MSUALG_9:12;
E19: c4 ** (Reverse F2()) = (c3 || (FreeGen F2())) ** (((Reverse F2()) "" ) ** (Reverse F2())) by AUTALG_1:13
.= (c3 || (FreeGen F2())) ** (id (FreeGen F2())) by E17, E18, MSUALG_3:5
.= c3 || (FreeGen F2()) by MSUALG_3:3 ;
c8 ** (c3 || (FreeGen F2())) = c7 || (FreeGen F2()) by E16, EXTENS_1:8;
then E20: (c8 ** c4) ** (Reverse F2()) = c6 ** (Reverse F2()) by E14, E19, AUTALG_1:13;
hence c8 ** c4 = c6 by E17, EXTENS_1:16;
E21: c3 is "onto" by E10, MSUALG_3:def 10;
E22: c3 is_homomorphism FreeMSA F2(),c2 by E10, MSUALG_3:def 10;
let c9 be ManySortedFunction of c2,c5;
assume c9 is_homomorphism c2,c5 ;
then E23: c9 ** c3 is_homomorphism FreeMSA F2(),c5 by E22, MSUALG_3:10;
assume c9 ** c4 = c6 ;
then c9 ** (((c3 || (FreeGen F2())) ** ((Reverse F2()) "" )) ** (Reverse F2())) = (c8 ** ((c3 || (FreeGen F2())) ** ((Reverse F2()) "" ))) ** (Reverse F2()) by E20, AUTALG_1:13;
then c9 ** (((c3 || (FreeGen F2())) ** ((Reverse F2()) "" )) ** (Reverse F2())) = c8 ** (((c3 || (FreeGen F2())) ** ((Reverse F2()) "" )) ** (Reverse F2())) by AUTALG_1:13;
then c9 ** ((c3 || (FreeGen F2())) ** (((Reverse F2()) "" ) ** (Reverse F2()))) = c8 ** (((c3 || (FreeGen F2())) ** ((Reverse F2()) "" )) ** (Reverse F2())) by AUTALG_1:13;
then c9 ** ((c3 || (FreeGen F2())) ** (((Reverse F2()) "" ) ** (Reverse F2()))) = c8 ** ((c3 || (FreeGen F2())) ** (((Reverse F2()) "" ) ** (Reverse F2()))) by AUTALG_1:13;
then c9 ** ((c3 || (FreeGen F2())) ** (id (FreeGen F2()))) = c8 ** ((c3 || (FreeGen F2())) ** (((Reverse F2()) "" ) ** (Reverse F2()))) by E17, E18, MSUALG_3:5;
then c9 ** ((c3 || (FreeGen F2())) ** (id (FreeGen F2()))) = c8 ** ((c3 || (FreeGen F2())) ** (id (FreeGen F2()))) by E17, E18, MSUALG_3:5;
then c9 ** (c3 || (FreeGen F2())) = c8 ** ((c3 || (FreeGen F2())) ** (id (FreeGen F2()))) by MSUALG_3:3;
then c9 ** (c3 || (FreeGen F2())) = c8 ** (c3 || (FreeGen F2())) by MSUALG_3:3;
then (c9 ** c3) || (FreeGen F2()) = c8 ** (c3 || (FreeGen F2())) by EXTENS_1:8;
then (c9 ** c3) || (FreeGen F2()) = (c8 ** c3) || (FreeGen F2()) by EXTENS_1:8;
then c9 ** c3 = c8 ** c3 by E13, E16, E23, EXTENS_1:18;
hence c8 = c9 by E21, EXTENS_1:16;
end;

scheme :: BIRKHOFF:sch 3
s3{ F1() -> non empty non void ManySortedSign , F2() -> non-empty MSAlgebra of F1(), F3() -> non-empty MSAlgebra of F1(), F4() -> ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of F2(), F5() -> ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of F3(), P1[ set ] } :
ex b1 being ManySortedFunction of F2(),F3() st
( b1 is_homomorphism F2(),F3() & F5() -hash = b1 ** (F4() -hash ) )
provided
E3: P1[F3()] and E4: for b1 being non-empty MSAlgebra of F1()
for b2 being ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of b1 holds
not ( P1[b1] & ( for b3 being ManySortedFunction of F2(),b1 holds
not ( b3 is_homomorphism F2(),b1 & b2 = b3 ** F4() ) ) )
proof
reconsider c1 = the carrier of F1() --> NAT as V2 ManySortedSet of the carrier of F1() ;
consider c2 being ManySortedFunction of F2(),F3() such that
E5: c2 is_homomorphism F2(),F3() and
E6: F5() = c2 ** F4() by E3, E4;
reconsider c3 = F5() as ManySortedFunction of c1,the Sorts of F3() ;
E7: c3 -hash is_homomorphism FreeMSA c1,F3() by E1;
F4() -hash is_homomorphism FreeMSA (the carrier of F1() --> NAT ),F2() by E1;
then E8: c2 ** (F4() -hash ) is_homomorphism FreeMSA (the carrier of F1() --> NAT ),F3() by E5, MSUALG_3:10;
E9: (c3 -hash ) || (FreeGen c1) = F5() ** (Reverse c1) by E1
.= c2 ** (F4() ** (Reverse c1)) by E6, AUTALG_1:13
.= c2 ** ((F4() -hash ) || (FreeGen (the carrier of F1() --> NAT ))) by E1
.= (c2 ** (F4() -hash )) || (FreeGen (the carrier of F1() --> NAT )) by EXTENS_1:8 ;
take c2 ;
thus c2 is_homomorphism F2(),F3() by E5;
thus F5() -hash = c2 ** (F4() -hash ) by E7, E8, E9, EXTENS_1:18;
end;

scheme :: BIRKHOFF:sch 4
s4{ F1() -> non empty non void ManySortedSign , F2() -> non-empty MSAlgebra of F1(), F3() -> ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of F2(), F4() -> SortSymbol of F1(), F5() -> Element of the Sorts of (TermAlg F1()) . F4(), F6() -> Element of the Sorts of (TermAlg F1()) . F4(), P1[ set ] } :
for b1 being non-empty MSAlgebra of F1() holds
( P1[b1] implies b1 |= F5() '=' F6() )
provided
E3: ((F3() -hash ) . F4()) . F5() = ((F3() -hash ) . F4()) . F6() and E4: for b1 being non-empty MSAlgebra of F1()
for b2 being ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of b1 holds
not ( P1[b1] & ( for b3 being ManySortedFunction of F2(),b1 holds
not ( b3 is_homomorphism F2(),b1 & b2 = b3 ** F3() ) ) )
proof
reconsider c1 = the carrier of F1() --> NAT as V2 ManySortedSet of the carrier of F1() ;
let c2 be non-empty MSAlgebra of F1();
assume E5: P1[c2] ;
let c3 be ManySortedFunction of (TermAlg F1()),c2; :: according to EQUATION:def 5
assume E6: c3 is_homomorphism TermAlg F1(),c2 ;
reconsider c4 = c3 as ManySortedFunction of (FreeMSA c1),c2 ;
set c5 = (c4 || (FreeGen c1)) ** ((Reverse c1) "" );
reconsider c6 = (c4 || (FreeGen c1)) ** ((Reverse c1) "" ) as ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of c2 ;
reconsider c7 = F3() as ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of F2() ;
E7: P1[c2] by E5;
E8: for b1 being non-empty MSAlgebra of F1()
for b2 being ManySortedFunction of the carrier of F1() --> NAT ,the Sorts of b1 holds
not ( P1[b1] & ( for b3 being ManySortedFunction of F2(),b1 holds
not ( b3 is_homomorphism F2(),b1 & b2 = b3 ** c7 ) ) ) by E4;
consider c8 being ManySortedFunction of F2(),c2 such that
c8 is_homomorphism F2(),c2 and
E9: c6 -hash = c8 ** (c7 -hash ) from BIRKHOFF:sch 3(E7, E8);
E10: ((c4 || (FreeGen c1)) ** ((Reverse c1) "" )) -hash is_homomorphism FreeMSA c1,c2 by E1;
rngs (Reverse c1) = c1 by EXTENS_1:14;
then E11: ( Reverse c1 is "1-1" & Reverse c1 is "onto" ) by EXTENS_1:13, MSUALG_9:12;
(((c4 || (FreeGen c1)) ** ((Reverse c1) "" )) -hash ) || (FreeGen c1) = ((c4 || (FreeGen c1)) ** ((Reverse c1) "" )) ** (Reverse c1) by E1
.= (c4 || (FreeGen c1)) ** (((Reverse c1) "" ) ** (Reverse c1)) by AUTALG_1:13
.= (c4 || (FreeGen c1)) ** (id (FreeGen c1)) by E11, MSUALG_3:5
.= c4 || (FreeGen c1) by MSUALG_3:3 ;
then E12: ((c4 || (FreeGen c1)) ** ((Reverse c1) "" )) -hash = c4 by E6, E10, EXTENS_1:18;
E13: ((((c4 || (FreeGen c1)) ** ((Reverse c1) "" )) -hash ) . F4()) . F5() = ((c8 . F4()) * ((F3() -hash ) . F