reserve V for non empty set,
  A,B,A9,B9 for Element of V;
reserve f,f9 for Element of Funcs(V);
reserve m,m1,m2,m3,m9 for Element of Maps V;
reserve a,b for Object of Ens(V);
reserve f,g,f1,f2 for Morphism of Ens(V);
reserve C for Category,
  a,b,a9,b9,c for Object of C,
  f,g,h,f9,g9 for Morphism of C;

theorem Th55:
  cod g = dom f & dom g9 = cod f9 implies
    hom(f(*)g,g9(*)f9) = hom(g, g9)*hom(f,f9)
proof
  assume that
A1: cod g = dom f and
A2: dom g9 = cod f9;
A3: dom(g9(*)f9) = dom f9 by A2,CAT_1:17;
A4: cod(f(*)g) = cod f by A1,CAT_1:17;
A5: cod(g9(*)f9) = cod g9 & dom(f(*)g) = dom g by A1,A2,CAT_1:17;
  now
    set h = hom(f(*)g,g9(*)f9), h2 = hom(g,g9), h1 = hom(f,f9);
A6: Hom(dom f,cod f9) = {} implies Hom(cod f,dom f9) = {} by Th50;
A7: Hom(dom g,cod g9) = {} implies Hom(cod g,dom g9) = {} by Th50;
    hence dom h = Hom(cod f,dom f9) by A1,A2,A3,A5,A4,A6,FUNCT_2:def 1;
    thus
A8: dom(h2*h1) = Hom(cod f,dom f9) by A1,A2,A7,A6,FUNCT_2:def 1;
    let x be object;
    assume
A9: x in Hom(cod f,dom f9);
    then reconsider k = x as Morphism of C;
A10: h1.x in Hom(cod g,dom g9) by A1,A2,A9,Th50,FUNCT_2:5;
    then reconsider l = h1.x as Morphism of C;
A11: dom k = cod f by A9,CAT_1:1;
    then
A12: cod(k(*)(f(*)g)) = cod k by A4,CAT_1:17;
A13: cod k = dom f9 by A9,CAT_1:1;
    then
A14: dom(f9(*)k) = dom k by CAT_1:17;
    then
A15: dom (f9(*)k(*)f) = dom f by A11,CAT_1:17;
    cod(f9(*)k) = cod f9 by A13,CAT_1:17;
    then
A16: cod(f9(*)k(*)f) = cod f9 by A11,A14,CAT_1:17;
    thus h.x = (g9(*)f9)(*)k(*)(f(*)g) by A3,A4,A9,Def22
      .= (g9(*)f9)(*)(k(*)(f(*)g)) by A3,A4,A13,A11,CAT_1:18
      .= g9(*)(f9(*)(k(*)(f(*)g))) by A2,A13,A12,CAT_1:18
      .= g9(*)(f9(*)k(*)(f(*)g)) by A4,A13,A11,CAT_1:18
      .= g9(*)(f9(*)k(*)f(*)g) by A1,A11,A14,CAT_1:18
      .= g9(*)(f9(*)k(*)f)(*)g by A1,A2,A15,A16,CAT_1:18
      .= g9(*)l(*)g by A9,Def22
      .= h2.l by A10,Def22
      .= (h2*h1).x by A8,A9,FUNCT_1:12;
  end;
  hence thesis;
end;
