reserve x,y for set;

theorem
  for A1,A2,A3 being category for F being contravariant Functor of A1,A2
for G being covariant Functor of A2,A3 for B1 being non empty subcategory of A1
for B2 being non empty subcategory of A2 for B3 being non empty subcategory of
A3 st B1,B2 are_anti-isomorphic_under F & B2,B3 are_isomorphic_under G holds B1
  ,B3 are_anti-isomorphic_under G*F
proof
  let A1,A2,A3 be category;
  let F be contravariant Functor of A1,A2;
  let G be covariant Functor of A2,A3;
  let B1 be non empty subcategory of A1;
  let B2 be non empty subcategory of A2;
  let B3 be non empty subcategory of A3;
  assume that
  B1 is subcategory of A1 and
  B2 is subcategory of A2;
  given F1 being contravariant Functor of B1,B2 such that
A1: F1 is bijective and
A2: for a being Object of B1, a1 being Object of A1 st a = a1 holds F1.a
  = F.a1 and
A3: for b,c being Object of B1, b1,c1 being Object of A1 st <^b,c^> <>
{} & b = b1 & c = c1 for f being Morphism of b,c, f1 being Morphism of b1,c1 st
  f = f1 holds F1.f = Morph-Map(F,b1,c1).f1;
  assume that
  B2 is subcategory of A2 and
  B3 is subcategory of A3;
  given G1 being covariant Functor of B2,B3 such that
A4: G1 is bijective and
A5: for a being Object of B2, a1 being Object of A2 st a = a1 holds G1.a
  = G.a1 and
A6: for b,c being Object of B2, b1,c1 being Object of A2 st <^b,c^> <>
{} & b = b1 & c = c1 for f being Morphism of b,c, f1 being Morphism of b1,c1 st
  f = f1 holds G1.f = Morph-Map(G,b1,c1).f1;
  thus B1 is subcategory of A1 & B3 is subcategory of A3;
  take G1*F1;
  thus G1*F1 is bijective by A1,A4,FUNCTOR1:12;
  hereby
    let a be Object of B1, b be Object of A1;
    assume a = b;
    then G1.(F1.a) = G.(F.b) by A2,A5;
    hence (G1*F1).a = G.(F.b) by FUNCTOR0:33
      .= (G*F).b by FUNCTOR0:33;
  end;
  let b,c be Object of B1, b1,c1 be Object of A1 such that
A7: <^b,c^> <> {} and
A8: b = b1 & c = c1;
A9: (G*F).b1 = G.(F.b1) & (G*F).c1 = G.( F. c1) by FUNCTOR0:33;
  let f be Morphism of b,c, f1 be Morphism of b1,c1;
A10: f in <^b,c^> & <^b,c^> c= <^b1,c1^> by A7,A8,ALTCAT_2:31;
  then
A11: <^(G*F).c1, (G*F).b1^> <> {} by FUNCTOR0:def 19;
A12: <^F1.c, F1.b^> <> {} by A7,FUNCTOR0:def 19;
  then
A13: F1.f in <^F1.c, F1.b^>;
A14: F1.b = F.b1 & F1.c = F.c1 by A2,A8;
  then
A15: <^F1.c, F1.b^> c= <^F.c1, F.b1^> by ALTCAT_2:31;
  assume f = f1;
  then F1.f = Morph-Map(F,b1,c1).f1 by A3,A7,A8
    .= F.f1 by A10,A13,A15,FUNCTOR0:def 16;
  then G1.(F1.f) = Morph-Map(G,F.c1,F.b1).(F.f1) by A6,A12,A14;
  hence (G1*F1).f = Morph-Map(G,F.c1,F.b1).(F.f1) by A7,FUNCTOR3:9
    .= G.(F.f1) by A13,A15,A11,A9,FUNCTOR0:def 15
    .= (G*F).f1 by A10,FUNCTOR3:9
    .= Morph-Map(G*F,b1,c1).f1 by A10,A11,FUNCTOR0:def 16;
end;
