let C be Category; :: thesis: for a, b, c being Object of C
for p1 being Morphism of c,a
for 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 )

let a, b, c be Object of C; :: thesis: for p1 being Morphism of c,a
for 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 )

let p1 be Morphism of c,a; :: thesis: for 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 )

let p2 be Morphism of c,b; :: thesis: ( Hom (c,a) <> {} & Hom (c,b) <> {} & c is_a_product_wrt p1,p2 & Hom (a,b) <> {} & Hom (b,a) <> {} implies ( p1 is retraction & p2 is retraction ) )
assume 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) <> {} ) ; :: thesis: ( p1 is retraction & p2 is retraction )
set I = ;
( dom p1 = c & dom p2 = c ) by A2;
then reconsider F = (0,) --> (p1,p2) as Projections_family of c, by Th44;
A4: F /. 0 = p1 by Th3;
A5: F /. = p2 by Th3;
A6: now :: thesis: ( F is Projections_family of c, & c is_a_product_wrt F & ( for x1, x2 being set st x1 in & x2 in holds
Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) )
thus F is Projections_family of c, ; :: thesis: ( c is_a_product_wrt F & ( for x1, x2 being set st x1 in & x2 in holds
Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} ) )

thus c is_a_product_wrt F by ; :: thesis: for x1, x2 being set st x1 in & x2 in holds
Hom ((cod (F /. x1)),(cod (F /. x2))) <> {}

let x1, x2 be set ; :: thesis: ( x1 in & x2 in implies Hom ((cod (F /. x1)),(cod (F /. x2))) <> {} )
assume that
A7: x1 in and
A8: x2 in ; :: thesis: Hom ((cod (F /. x1)),(cod (F /. x2))) <> {}
A9: ( x2 = 0 or x2 = ) by ;
( x1 = 0 or x1 = ) by ;
then A10: ( cod (F /. x1) = a or cod (F /. x1) = b ) by ;
( 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 ; :: thesis: verum
end;
A11: {0} in by TARSKI:def 2;
A12: 0 in by TARSKI:def 2;
( cod (F /. 0) = a & cod () = b ) by ;
hence ( p1 is retraction & p2 is retraction ) by A4, A6, A11, Th49, A5, A1, A12; :: thesis: verum