let C be Category; :: thesis: for g, f, g9, f9 being Morphism of C st cod g = dom f & dom g9 = cod f9 holds
hom (f * g),(g9 * f9) = (hom g,g9) * (hom f,f9)

let g, f, g9, f9 be Morphism of C; :: thesis: ( cod g = dom f & dom g9 = cod f9 implies hom (f * g),(g9 * f9) = (hom g,g9) * (hom f,f9) )
assume that
A1: cod g = dom f and
A2: dom g9 = cod f9 ; :: thesis: hom (f * g),(g9 * f9) = (hom g,g9) * (hom f,f9)
A3: dom (g9 * f9) = dom f9 by A2, CAT_1:42;
A4: cod (f * g) = cod f by A1, CAT_1:42;
A5: ( cod (g9 * f9) = cod g9 & dom (f * g) = dom g ) by A1, A2, CAT_1:42;
now
set h = hom (f * g),(g9 * f9);
set h2 = hom g,g9;
set h1 = hom f,f9;
A6: ( Hom (dom f),(cod f9) = {} implies Hom (cod f),(dom f9) = {} ) by Th51;
A7: ( Hom (dom g),(cod g9) = {} implies Hom (cod g),(dom g9) = {} ) by Th51;
hence dom (hom (f * g),(g9 * f9)) = Hom (cod f),(dom f9) by A1, A2, A3, A5, A4, A6, FUNCT_2:def 1; :: thesis: ( dom ((hom g,g9) * (hom f,f9)) = Hom (cod f),(dom f9) & ( for x being set st x in Hom (cod f),(dom f9) holds
(hom (f * g),(g9 * f9)) . x = ((hom g,g9) * (hom f,f9)) . x ) )

thus A8: dom ((hom g,g9) * (hom f,f9)) = Hom (cod f),(dom f9) by A1, A2, A7, A6, FUNCT_2:def 1; :: thesis: for x being set st x in Hom (cod f),(dom f9) holds
(hom (f * g),(g9 * f9)) . x = ((hom g,g9) * (hom f,f9)) . x

let x be set ; :: thesis: ( x in Hom (cod f),(dom f9) implies (hom (f * g),(g9 * f9)) . x = ((hom g,g9) * (hom f,f9)) . x )
assume A9: x in Hom (cod f),(dom f9) ; :: thesis: (hom (f * g),(g9 * f9)) . x = ((hom g,g9) * (hom f,f9)) . x
then reconsider k = x as Morphism of C ;
A10: (hom f,f9) . x in Hom (cod g),(dom g9) by A1, A2, A9, Th51, FUNCT_2:7;
then reconsider l = (hom f,f9) . x as Morphism of C ;
A11: dom k = cod f by A9, CAT_1:18;
then A12: cod (k * (f * g)) = cod k by A4, CAT_1:42;
A13: cod k = dom f9 by A9, CAT_1:18;
then A14: dom (f9 * k) = dom k by CAT_1:42;
then A15: dom ((f9 * k) * f) = dom f by A11, CAT_1:42;
cod (f9 * k) = cod f9 by A13, CAT_1:42;
then A16: cod ((f9 * k) * f) = cod f9 by A11, A14, CAT_1:42;
thus (hom (f * g),(g9 * f9)) . x = ((g9 * f9) * k) * (f * g) by A3, A4, A9, Def24
.= (g9 * f9) * (k * (f * g)) by A3, A4, A13, A11, CAT_1:43
.= g9 * (f9 * (k * (f * g))) by A2, A13, A12, CAT_1:43
.= g9 * ((f9 * k) * (f * g)) by A4, A13, A11, CAT_1:43
.= g9 * (((f9 * k) * f) * g) by A1, A11, A14, CAT_1:43
.= (g9 * ((f9 * k) * f)) * g by A1, A2, A15, A16, CAT_1:43
.= (g9 * l) * g by A9, Def24
.= (hom g,g9) . l by A10, Def24
.= ((hom g,g9) * (hom f,f9)) . x by A8, A9, FUNCT_1:22 ; :: thesis: verum
end;
hence hom (f * g),(g9 * f9) = (hom g,g9) * (hom f,f9) by FUNCT_1:9; :: thesis: verum