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

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

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

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