reserve C for CategoryStr;
reserve f,f1,f2,f3 for morphism of C;
reserve g1,g2 for morphism of C opp;
reserve C,D,E for with_identities CategoryStr;
reserve F for Functor of C,D;
reserve G for Functor of D,E;
reserve f for morphism of C;

theorem Th34:
  F is covariant & G is covariant & C is non empty implies (G(*)F).f = G.(F.f)
  proof
    assume
A1: F is covariant;
    assume
A2: G is covariant;
    assume
A3: C is non empty;
    then
A4: D is non empty by A1,Th29;
    then
A5: E is non empty by A2,Th29;
    reconsider x = f as object;
A6: dom(G (*) F) = the carrier of C by A5,FUNCT_2:def 1;
A7: F.x = F.f by A3,Def21;
    then
A8: G.(F.x) = G.(F.f) by A4,Def21;
A9: dom F = the carrier of C by A4,FUNCT_2:def 1;
    dom G = the carrier of D by A5,FUNCT_2:def 1;
    then [x,F.x] in F & [F.x,G.(F.x)] in G by A3,A4,A9,A7,FUNCT_1:1;
    then [f,G.(F.f)] in F * G by A8,RELAT_1:def 8;
    then
A10: [f,G.(F.f)] in G (*) F by A1,A2,Def27;
    thus (G(*)F).f = (G(*)F).x by A3,Def21
    .= G.(F.f) by A10,A6,FUNCT_1:def 2;
  end;
