reserve I for set,
  x,x1,x2,y,z for set,
  A for non empty set;
reserve C,D for Category;
reserve a,b,c,d for Object of C;
reserve f,g,h,i,j,k,p1,p2,q1,q2,i1,i2,j1,j2 for Morphism of C;
reserve f for Morphism of a,b,
        g for Morphism of b,a;
reserve g for Morphism of b,c;

theorem
  f is coretraction iff f opp is retraction
proof
  thus f is coretraction implies f opp is retraction
  proof
   assume
A1: Hom(a,b) <> {} & Hom(b,a) <> {};
    given i being Morphism of b,a such that
A2: i*f = id a;
   thus Hom(b opp,a opp) <> {} & Hom(a opp,b opp) <> {} by A1,OPPCAT_1:5;
    take i opp;
    thus (f opp)*(i opp) = id a by A1,A2,OPPCAT_1:70
      .= id(a opp) by OPPCAT_1:71;
  end;
   assume
A3: Hom(b opp,a opp) <> {} & Hom(a opp,b opp) <> {};
  given i being Morphism of a opp, b opp such that
A4: (f opp)*i = id(a opp);
  thus
A5: Hom(a,b) <> {} & Hom(b,a) <> {} by A3,OPPCAT_1:5;
  take opp i;
 (opp i) opp = opp i by A5,OPPCAT_1:def 6
       .= i by A3,OPPCAT_1:def 7;
  hence (opp i)*f = (f opp)*i by A5,OPPCAT_1:70
      .= id(a opp) by A4
      .= id a by OPPCAT_1:71;
end;
