reserve C for category,
  o1, o2, o3 for Object of C;

theorem Th30:
  for A, B being transitive with_units non empty AltCatStr for F
  being contravariant Functor of A, B for o1, o2 being Object of A, a being
Morphism of o1, o2 st F is full faithful & <^o1,o2^> <> {} & <^o2,o1^> <> {} &
  F.a is retraction holds a is coretraction
proof
  let A, B be transitive with_units non empty AltCatStr, F be contravariant
  Functor of A, B, o1, o2 be Object of A, a be Morphism of o1, o2 such that
A1: F is full faithful and
A2: <^o1,o2^> <> {} and
A3: <^o2,o1^> <> {};
A4: <^F.o1,F.o2^> <> {} by A3,FUNCTOR0:def 19;
  assume F.a is retraction;
  then consider b being Morphism of F.o1, F.o2 such that
A5: b is_right_inverse_of F.a;
  Morph-Map(F,o2,o1) is onto by A1,Th14;
  then rng Morph-Map(F,o2,o1) = <^F.o1,F.o2^>;
  then consider a9 being object such that
A6: a9 in dom Morph-Map(F,o2,o1) and
A7: b = Morph-Map(F,o2,o1).a9 by A4,FUNCT_1:def 3;
  reconsider a9 as Morphism of o2, o1 by A4,A6,FUNCT_2:def 1;
  take a9;
A8: (F.a) * b = idm F.o1 by A5;
A9: dom Morph-Map(F,o1,o1) = <^o1,o1^> & Morph-Map(F,o1,o1) is one-to-one
  by A1,Th15,FUNCT_2:def 1;
  Morph-Map(F,o1,o1).idm o1 = F.(idm o1) by FUNCTOR0:def 16
    .= idm F.o1 by Th13
    .= (F.a) * F.a9 by A3,A8,A4,A7,FUNCTOR0:def 16
    .= F.(a9 * a) by A2,A3,FUNCTOR0:def 24
    .= Morph-Map(F,o1,o1).(a9 * a) by FUNCTOR0:def 16;
  hence a9 * a = idm o1 by A9,FUNCT_1:def 4;
end;
