reserve C for CatStr;
reserve f,g for Morphism of C;
reserve C for non void non empty CatStr,
  f,g for Morphism of C,
  a,b,c,d for Object of C;
reserve o,m for set;
reserve B,C,D for Category;
reserve a,b,c,d for Object of C;
reserve f,f1,f2,g,g1,g2 for Morphism of C;
reserve f,f1,f2 for Morphism of a,b;
reserve f9 for Morphism of b,a;
reserve g for Morphism of b,c;
reserve h,h1,h2 for Morphism of c,d;

theorem Th68:
  for T being Functor of B,C for S being Functor of C,D holds S*T
  is Functor of B,D
proof
  let T be Functor of B,C;
  let S be Functor of C,D;
  reconsider FF = (Obj S)*(Obj T) as Function of the carrier of B, the carrier
  of D;
  reconsider TT = S*T as Function of the carrier' of B, the carrier' of D;
  now
    thus for b being Object of B holds TT.(id b) = id(FF.b)
    proof
      let b be Object of B;
      thus TT.(id b) = S.(T.(id b)) by FUNCT_2:15
        .= S.(id(T.b)) by Th63
        .= id((S.((Obj T).b))) by Th63
        .= id(FF.b) by FUNCT_2:15;
    end;
    thus for f being Morphism of B holds FF.(dom f) = dom (TT.f) & FF.(cod f)
    = cod (TT.f)
    proof
      let f be Morphism of B;
      thus FF.(dom f) = (Obj S).((Obj T).(dom f)) by FUNCT_2:15
        .= (Obj S).(dom (T.f)) by Th64
        .= (dom (S.(T.f))) by Th64
        .= dom (TT.f) by FUNCT_2:15;
      thus FF.(cod f) = (Obj S).((Obj T).(cod f)) by FUNCT_2:15
        .= (Obj S).(cod (T.f)) by Th64
        .= (cod (S.(T.f))) by Th64
        .= cod (TT.f) by FUNCT_2:15;
    end;
    let f,g be Morphism of B;
    assume
A1: dom g = cod f;
    then
A2: dom(T.g) = cod(T.f) by Th59;
    thus TT.(g(*)f) = S.(T.(g(*)f)) by FUNCT_2:15
      .= S.((T.g)(*)(T.f)) by A1,Th59
      .= (S.(T.g))(*)(S.(T.f)) by A2,Th59
      .= ((TT.g)(*)(S.(T.f))) by FUNCT_2:15
      .= (TT.g)(*)(TT.f) by FUNCT_2:15;
  end;
  hence thesis by Th60;
end;
