( dom f = the carrier of S1 & rng f c= the carrier of S2 ) by B1, PUA2MSS1:def 12;
then reconsider f9 = f as Function of the carrier of S1, the carrier of S2 by FUNCT_2:def 1, RELSET_1:4;
A1: rng g c= the carrier' of S2 by B1, PUA2MSS1:def 12;
A2: dom g = the carrier' of S1 by B1, PUA2MSS1:def 12;
then reconsider g9 = g as Function of the carrier' of S1, the carrier' of S2 by A1, FUNCT_2:2;
dom the Charact of A = the carrier' of S2 by PARTFUN1:def 2;
then dom ( the Charact of A * g9) = the carrier' of S1 by A2, A1, RELAT_1:27;
then reconsider C = the Charact of A * g9 as ManySortedSet of the carrier' of S1 by PARTFUN1:def 2;
C is ManySortedFunction of (( the Sorts of A * f9) #) * the Arity of S1,( the Sorts of A * f9) * the ResultSort of S1
proof
let o be set ; :: according to PBOOLE:def 15 :: thesis: ( not o in the carrier' of S1 or C . o is Element of bool [:(((( the Sorts of A * f9) #) * the Arity of S1) . o),((( the Sorts of A * f9) * the ResultSort of S1) . o):] )
assume A3: o in the carrier' of S1 ; :: thesis: C . o is Element of bool [:(((( the Sorts of A * f9) #) * the Arity of S1) . o),((( the Sorts of A * f9) * the ResultSort of S1) . o):]
then reconsider p1 = the Arity of S1 . o as Element of the carrier of S1 * by FUNCT_2:5;
A4: g . o in rng g by A2, A3, FUNCT_1:def 3;
then reconsider p2 = the Arity of S2 . (g . o) as Element of the carrier of S2 * by A1, FUNCT_2:5;
reconsider o = o as OperSymbol of S1 by A3;
A5: C . o = the Charact of A . (g9 . o) by A1, A3, A4, FUNCT_2:15;
( the Sorts of A * f9) * the ResultSort of S1 = the Sorts of A * (f9 * the ResultSort of S1) by RELAT_1:36
.= the Sorts of A * ( the ResultSort of S2 * g) by B1, PUA2MSS1:def 12
.= ( the Sorts of A * the ResultSort of S2) * g by RELAT_1:36 ;
then A6: (( the Sorts of A * f9) * the ResultSort of S1) . o = ( the Sorts of A * the ResultSort of S2) . (g9 . o) by A1, A3, A4, FUNCT_2:15;
A7: ( the Sorts of A * f9) * p1 = the Sorts of A * (f9 * p1) by RELAT_1:36
.= the Sorts of A * p2 by B1, A3, PUA2MSS1:def 12 ;
((( the Sorts of A * f9) #) * the Arity of S1) . o = (( the Sorts of A * f9) #) . p1 by A3, FUNCT_2:15
.= product (( the Sorts of A * f9) * p1) by FINSEQ_2:def 5
.= ( the Sorts of A #) . p2 by A7, FINSEQ_2:def 5
.= (( the Sorts of A #) * the Arity of S2) . (g9 . o) by A1, A4, FUNCT_2:15 ;
hence C . o is Element of bool [:(((( the Sorts of A * f9) #) * the Arity of S1) . o),((( the Sorts of A * f9) * the ResultSort of S1) . o):] by A1, A4, A6, A5, PBOOLE:def 15; :: thesis: verum
end;
then reconsider C = C as ManySortedFunction of (( the Sorts of A * f9) #) * the Arity of S1,( the Sorts of A * f9) * the ResultSort of S1 ;
take MSAlgebra(# ( the Sorts of A * f9),C #) ; :: thesis: ( the Sorts of MSAlgebra(# ( the Sorts of A * f9),C #) = the Sorts of A * f & the Charact of MSAlgebra(# ( the Sorts of A * f9),C #) = the Charact of A * g )
thus ( the Sorts of MSAlgebra(# ( the Sorts of A * f9),C #) = the Sorts of A * f & the Charact of MSAlgebra(# ( the Sorts of A * f9),C #) = the Charact of A * g ) ; :: thesis: verum