reserve A for non empty AltCatStr,
  B, C for non empty reflexive AltCatStr,
  F for feasible Covariant FunctorStr over A, B,
  G for feasible Covariant FunctorStr over B, C,
  M for feasible Contravariant FunctorStr over A, B,
  N for feasible Contravariant FunctorStr over B, C,
  o1, o2 for Object of A,
  m for Morphism of o1, o2;
reserve A, B, C, D for transitive with_units non empty AltCatStr,
  F1, F2, F3 for covariant Functor of A, B,
  G1, G2, G3 for covariant Functor of B, C,
  H1, H2 for covariant Functor of C, D,
  p for transformation of F1, F2,
  p1 for transformation of F2, F3,
  q for transformation of G1, G2,
  q1 for transformation of G2, G3,
  r for transformation of H1, H2;
reserve A, B, C, D for category,
  F1, F2, F3 for covariant Functor of A, B,
  G1, G2, G3 for covariant Functor of B, C;
reserve t for natural_transformation of F1, F2,
  s for natural_transformation of G1, G2,
  s1 for natural_transformation of G2, G3;
reserve e for natural_equivalence of F1, F2,
  e1 for natural_equivalence of F2, F3,
  f for natural_equivalence of G1, G2;

theorem
  F1, F2 are_naturally_equivalent & G1, G2 are_naturally_equivalent
implies G1*F1, G2*F2 are_naturally_equivalent & f (#) e is natural_equivalence
  of G1*F1, G2*F2
proof
  assume that
A1: F1, F2 are_naturally_equivalent and
A2: G1, G2 are_naturally_equivalent;
A3: G1*F1, G1*F2 are_naturally_equivalent by A1,Th35;
  G1 is_naturally_transformable_to G2 by A2;
  then reconsider sF2 = f*F2 as natural_transformation of G1*F2, G2*F2 by Th29;
  F1 is_naturally_transformable_to F2 by A1;
  then reconsider G1t = G1*e as natural_transformation of G1*F1, G1*F2 by Th28;
A4: G1*F2, G2*F2 are_naturally_equivalent by A2,Th36;
  f*F2 is natural_equivalence of G1*F2, G2*F2 & G1*e is
  natural_equivalence of G1*F1, G1*F2 by A1,A2,Th35,Th36;
  then sF2`*`G1t is natural_equivalence of G1*F1, G2*F2 by A4,A3,Th34;
  hence thesis by A4,A3,Th33,FUNCTOR2:def 8;
end;
