defpred S1[ set , set ] means ex f being Function of ((FreeGen F3()) . $1),(the Sorts of F2() . $1) st
( $2 = f & ( for x being Element of F3() . $1 holds f . (root-tree [x,$1]) = F4(x,$1) ) );
A2: for a being set st a in the carrier of F1() holds
ex y being set st S1[a,y]
proof
let a be set ; :: thesis: ( a in the carrier of F1() implies ex y being set st S1[a,y] )
assume a in the carrier of F1() ; :: thesis: ex y being set st S1[a,y]
then reconsider s = a as SortSymbol of F1() ;
A3: (FreeGen F3()) . s = FreeGen s,F3() by MSAFREE:def 18;
defpred S2[ set , set ] means ex x being Element of F3() . s st
( $1 = root-tree [x,s] & $2 = F4(x,s) );
A4: for y being set st y in (FreeGen F3()) . s holds
ex z being set st
( z in the Sorts of F2() . s & S2[y,z] )
proof
let y be set ; :: thesis: ( y in (FreeGen F3()) . s implies ex z being set st
( z in the Sorts of F2() . s & S2[y,z] ) )

assume y in (FreeGen F3()) . s ; :: thesis: ex z being set st
( z in the Sorts of F2() . s & S2[y,z] )

then consider a being set such that
A5: ( a in F3() . s & y = root-tree [a,s] ) by A3, MSAFREE:def 17;
reconsider a = a as Element of F3() . s by A5;
take z = F4(a,s); :: thesis: ( z in the Sorts of F2() . s & S2[y,z] )
thus z in the Sorts of F2() . s by A1; :: thesis: S2[y,z]
take a ; :: thesis: ( y = root-tree [a,s] & z = F4(a,s) )
thus ( y = root-tree [a,s] & z = F4(a,s) ) by A5; :: thesis: verum
end;
consider f being Function such that
A6: ( dom f = (FreeGen F3()) . s & rng f c= the Sorts of F2() . s ) and
A7: for y being set st y in (FreeGen F3()) . s holds
S2[y,f . y] from WELLORD2:sch 1(A4);
reconsider f = f as Function of ((FreeGen F3()) . a),(the Sorts of F2() . a) by A6, FUNCT_2:4;
take y = f; :: thesis: S1[a,y]
take f ; :: thesis: ( y = f & ( for x being Element of F3() . a holds f . (root-tree [x,a]) = F4(x,a) ) )
thus y = f ; :: thesis: for x being Element of F3() . a holds f . (root-tree [x,a]) = F4(x,a)
let x be Element of F3() . a; :: thesis: f . (root-tree [x,a]) = F4(x,a)
root-tree [x,s] in (FreeGen F3()) . s by A3, MSAFREE:def 17;
then consider z being Element of F3() . s such that
A8: ( root-tree [x,s] = root-tree [z,s] & f . (root-tree [x,s]) = F4(z,s) ) by A7;
[x,s] = [z,s] by A8, TREES_4:4;
hence f . (root-tree [x,a]) = F4(x,a) by A8, ZFMISC_1:33; :: thesis: verum
end;
consider h being Function such that
A9: dom h = the carrier of F1() and
A10: for a being set st a in the carrier of F1() holds
S1[a,h . a] from CLASSES1:sch 1(A2);
reconsider h = h as ManySortedSet of by A9, PARTFUN1:def 4, RELAT_1:def 18;
h is ManySortedFunction of FreeGen F3(),the Sorts of F2()
proof
let a be set ; :: according to PBOOLE:def 18 :: thesis: ( not a in the carrier of F1() or h . a is Element of bool [:((FreeGen F3()) . a),(the Sorts of F2() . a):] )
assume a in the carrier of F1() ; :: thesis: h . a is Element of bool [:((FreeGen F3()) . a),(the Sorts of F2() . a):]
then ex f being Function of ((FreeGen F3()) . a),(the Sorts of F2() . a) st
( h . a = f & ( for x being Element of F3() . a holds f . (root-tree [x,a]) = F4(x,a) ) ) by A10;
hence h . a is Element of bool [:((FreeGen F3()) . a),(the Sorts of F2() . a):] ; :: thesis: verum
end;
then reconsider h = h as ManySortedFunction of FreeGen F3(),the Sorts of F2() ;
consider H being ManySortedFunction of (FreeMSA F3()),F2() such that
A11: ( H is_homomorphism FreeMSA F3(),F2() & H || (FreeGen F3()) = h ) by MSAFREE:def 5;
take H ; :: thesis: ( H is_homomorphism FreeMSA F3(),F2() & ( for s being SortSymbol of F1()
for x being Element of F3() . s holds (H . s) . (root-tree [x,s]) = F4(x,s) ) )

thus H is_homomorphism FreeMSA F3(),F2() by A11; :: thesis: for s being SortSymbol of F1()
for x being Element of F3() . s holds (H . s) . (root-tree [x,s]) = F4(x,s)

let s be SortSymbol of F1(); :: thesis: for x being Element of F3() . s holds (H . s) . (root-tree [x,s]) = F4(x,s)
let x be Element of F3() . s; :: thesis: (H . s) . (root-tree [x,s]) = F4(x,s)
reconsider t = root-tree [x,s] as Term of F1(),F3() by MSATERM:4;
(FreeGen F3()) . s = FreeGen s,F3() by MSAFREE:def 18;
then ( t in (FreeGen F3()) . s & h . s = (H . s) | ((FreeGen F3()) . s) ) by A11, MSAFREE:def 1, MSAFREE:def 17;
then A12: (H . s) . (root-tree [x,s]) = (h . s) . (root-tree [x,s]) by FUNCT_1:72;
ex f being Function of ((FreeGen F3()) . s),(the Sorts of F2() . s) st
( h . s = f & ( for x being Element of F3() . s holds f . (root-tree [x,s]) = F4(x,s) ) ) by A10;
hence (H . s) . (root-tree [x,s]) = F4(x,s) by A12; :: thesis: verum