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;
reserve f,g for Morphism of C;

theorem
  for p1 being Morphism of c,a, p2 being Morphism of c,b st
    Hom(c,a) <> {} & Hom(c,b) <> {} &
    c is_a_product_wrt p1,p2 &
    Hom(a,b) <> {} & Hom(b,a) <> {}
 holds p1 is retraction & p2 is retraction
proof
 let p1 be Morphism of c,a, p2 be Morphism of c,b such that
A1: Hom(c,a) <> {} & Hom(c,b) <> {} and
A2: c is_a_product_wrt p1,p2 and
A3: Hom(a,b) <> {} & Hom(b,a) <> {};
  set I = {0,{0}};
  dom p1 = c & dom p2 = c by A2;
  then reconsider F = (0,{0})-->(p1,p2) as Projections_family of c,I by Th44;
A4: F/.0 = p1 by Th3;
A5: F/.{0} = p2 by Th3;
A6: now
    thus F is Projections_family of c,I;
    thus c is_a_product_wrt F by A2,Th54;
    let x1,x2;
    assume that
A7: x1 in I and
A8: x2 in I;
A9: x2 = 0 or x2 = {0} by A8,TARSKI:def 2;
 x1 = 0 or x1 = {0} by A7,TARSKI:def 2;
    then
A10:   cod(F/.x1) = a or cod(F/.x1) = b by A4,A5,A1,CAT_1:5;
     cod(F/.x2) = a or cod(F/.x2) = b by A9,A4,A5,A1,CAT_1:5;
    hence Hom(cod(F/.x1),cod(F/.x2)) <> {} by A3,A10;
  end;
A11: {0} in I by TARSKI:def 2;
A12: 0 in I by TARSKI:def 2;
  cod(F/.0) = a & cod(F/.{0}) = b by A4,A5,A1,CAT_1:5;
 hence thesis by A4,A6,A11,Th49,A5,A1,A12;
end;
