let A, B, C be category; :: thesis: ( A,B are_equivalent & B,C are_equivalent implies A,C are_equivalent )
given F1 being covariant Functor of A,B, G1 being covariant Functor of B,A such that A1: G1 * F1, id A are_naturally_equivalent and
A2: F1 * G1, id B are_naturally_equivalent ; :: according to YELLOW18:def 2 :: thesis: ( not B,C are_equivalent or A,C are_equivalent )
given F2 being covariant Functor of B,C, G2 being covariant Functor of C,B such that A3: G2 * F2, id B are_naturally_equivalent and
A4: F2 * G2, id C are_naturally_equivalent ; :: according to YELLOW18:def 2 :: thesis: A,C are_equivalent
take F = F2 * F1; :: according to YELLOW18:def 2 :: thesis: ex G being covariant Functor of C,A st
( G * F, id A are_naturally_equivalent & F * G, id C are_naturally_equivalent )

take G = G1 * G2; :: thesis: ( G * F, id A are_naturally_equivalent & F * G, id C are_naturally_equivalent )
FunctorStr(# the ObjectMap of F1,the MorphMap of F1 #) = FunctorStr(# the ObjectMap of F1,the MorphMap of F1 #) ;
then A5: FunctorStr(# the ObjectMap of G1,the MorphMap of G1 #) * F1 = G1 * F1 by Th3;
FunctorStr(# the ObjectMap of G2,the MorphMap of G2 #) = FunctorStr(# the ObjectMap of G2,the MorphMap of G2 #) ;
then A6: FunctorStr(# the ObjectMap of F2,the MorphMap of F2 #) * G2 = F2 * G2 by Th3;
A7: ( G1 * (id B) = FunctorStr(# the ObjectMap of G1,the MorphMap of G1 #) & F2 * (id B) = FunctorStr(# the ObjectMap of F2,the MorphMap of F2 #) ) by FUNCTOR3:5;
A8: ( G * F2 = G1 * (G2 * F2) & F * G1 = F2 * (F1 * G1) & (G * F2) * F1 = G * F & (F * G1) * G2 = F * G ) by FUNCTOR0:33;
then ( G * F2,G1 * (id B) are_naturally_equivalent & F * G1,F2 * (id B) are_naturally_equivalent ) by A2, A3, FUNCTOR3:35;
then ( G * F,G1 * F1 are_naturally_equivalent & F * G,F2 * G2 are_naturally_equivalent ) by A5, A6, A7, A8, FUNCTOR3:36;
hence ( G * F, id A are_naturally_equivalent & F * G, id C are_naturally_equivalent ) by A1, A4, FUNCTOR3:33; :: thesis: verum