let S be non empty non void ManySortedSign ; for U1, U2, U3 being non-empty MSAlgebra over S
for H1 being ManySortedFunction of U1,U2
for H2 being ManySortedFunction of U2,U3 st H1 is_homomorphism U1,U2 & H2 is_homomorphism U2,U3 holds
H2 ** H1 is_homomorphism U1,U3
let U1, U2, U3 be non-empty MSAlgebra over S; for H1 being ManySortedFunction of U1,U2
for H2 being ManySortedFunction of U2,U3 st H1 is_homomorphism U1,U2 & H2 is_homomorphism U2,U3 holds
H2 ** H1 is_homomorphism U1,U3
let H1 be ManySortedFunction of U1,U2; for H2 being ManySortedFunction of U2,U3 st H1 is_homomorphism U1,U2 & H2 is_homomorphism U2,U3 holds
H2 ** H1 is_homomorphism U1,U3
let H2 be ManySortedFunction of U2,U3; ( H1 is_homomorphism U1,U2 & H2 is_homomorphism U2,U3 implies H2 ** H1 is_homomorphism U1,U3 )
assume that
A1:
H1 is_homomorphism U1,U2
and
A2:
H2 is_homomorphism U2,U3
; H2 ** H1 is_homomorphism U1,U3
let o be OperSymbol of S; MSUALG_3:def 7 ( Args (o,U1) <> {} implies for x being Element of Args (o,U1) holds ((H2 ** H1) . (the_result_sort_of o)) . ((Den (o,U1)) . x) = (Den (o,U3)) . ((H2 ** H1) # x) )
assume
Args (o,U1) <> {}
; for x being Element of Args (o,U1) holds ((H2 ** H1) . (the_result_sort_of o)) . ((Den (o,U1)) . x) = (Den (o,U3)) . ((H2 ** H1) # x)
let x be Element of Args (o,U1); ((H2 ** H1) . (the_result_sort_of o)) . ((Den (o,U1)) . x) = (Den (o,U3)) . ((H2 ** H1) # x)
set F = H2 ** H1;
set r = the_result_sort_of o;
(H1 . (the_result_sort_of o)) . ((Den (o,U1)) . x) = (Den (o,U2)) . (H1 # x)
by A1;
then A3:
(H2 . (the_result_sort_of o)) . ((H1 . (the_result_sort_of o)) . ((Den (o,U1)) . x)) = (Den (o,U3)) . (H2 # (H1 # x))
by A2;
A4:
( (H2 ** H1) . (the_result_sort_of o) = (H2 . (the_result_sort_of o)) * (H1 . (the_result_sort_of o)) & dom ((H2 ** H1) . (the_result_sort_of o)) = the Sorts of U1 . (the_result_sort_of o) )
by Th2, FUNCT_2:def 1;
rng the ResultSort of S c= the carrier of S
by RELAT_1:def 19;
then
rng the ResultSort of S c= dom the Sorts of U1
by PARTFUN1:def 2;
then A5:
( Result (o,U1) = ( the Sorts of U1 * the ResultSort of S) . o & dom ( the Sorts of U1 * the ResultSort of S) = dom the ResultSort of S )
by MSUALG_1:def 5, RELAT_1:27;
o in the carrier' of S
;
then
o in dom the ResultSort of S
by FUNCT_2:def 1;
then Result (o,U1) =
the Sorts of U1 . ( the ResultSort of S . o)
by A5, FUNCT_1:12
.=
the Sorts of U1 . (the_result_sort_of o)
by MSUALG_1:def 2
;
then
((H2 ** H1) . (the_result_sort_of o)) . ((Den (o,U1)) . x) = (Den (o,U3)) . (H2 # (H1 # x))
by A3, A4, FUNCT_1:12;
hence
((H2 ** H1) . (the_result_sort_of o)) . ((Den (o,U1)) . x) = (Den (o,U3)) . ((H2 ** H1) # x)
by Th8; verum