let I be set ; :: thesis: for C being Category
for c being Object of C
for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds
Hom (cod (F /. x1)),(cod (F /. x2)) <> {} ) holds
for x being set st x in I holds
F /. x is retraction

let C be Category; :: thesis: for c being Object of C
for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds
Hom (cod (F /. x1)),(cod (F /. x2)) <> {} ) holds
for x being set st x in I holds
F /. x is retraction

let c be Object of C; :: thesis: for F being Projections_family of c,I st c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds
Hom (cod (F /. x1)),(cod (F /. x2)) <> {} ) holds
for x being set st x in I holds
F /. x is retraction

let F be Projections_family of c,I; :: thesis: ( c is_a_product_wrt F & ( for x1, x2 being set st x1 in I & x2 in I holds
Hom (cod (F /. x1)),(cod (F /. x2)) <> {} ) implies for x being set st x in I holds
F /. x is retraction )

assume that
A1: c is_a_product_wrt F and
A2: for x1, x2 being set st x1 in I & x2 in I holds
Hom (cod (F /. x1)),(cod (F /. x2)) <> {} ; :: thesis: for x being set st x in I holds
F /. x is retraction

let x be set ; :: thesis: ( x in I implies F /. x is retraction )
assume A3: x in I ; :: thesis: F /. x is retraction
set d = cod (F /. x);
defpred S1[ set , set ] means ( ( $1 = x implies $2 = id (cod (F /. x)) ) & ( $1 <> x implies $2 in Hom (cod (F /. x)),(cod (F /. $1)) ) );
A4: for y being set st y in I holds
ex z being set st
( z in the carrier' of C & S1[y,z] )
proof
let y be set ; :: thesis: ( y in I implies ex z being set st
( z in the carrier' of C & S1[y,z] ) )

consider z being Element of Hom (cod (F /. x)),(cod (F /. y));
assume y in I ; :: thesis: ex z being set st
( z in the carrier' of C & S1[y,z] )

then A5: Hom (cod (F /. x)),(cod (F /. y)) <> {} by A2, A3;
then A6: z is Morphism of cod (F /. x), cod (F /. y) by CAT_1:21;
per cases ( y = x or y <> x ) ;
suppose A7: y = x ; :: thesis: ex z being set st
( z in the carrier' of C & S1[y,z] )

take z = id (cod (F /. x)); :: thesis: ( z in the carrier' of C & S1[y,z] )
thus z in the carrier' of C ; :: thesis: S1[y,z]
thus S1[y,z] by A7; :: thesis: verum
end;
suppose A8: y <> x ; :: thesis: ex z being set st
( z in the carrier' of C & S1[y,z] )

take z ; :: thesis: ( z in the carrier' of C & S1[y,z] )
thus z in the carrier' of C by A6; :: thesis: S1[y,z]
thus S1[y,z] by A5, A8; :: thesis: verum
end;
end;
end;
consider F9 being Function such that
A9: ( dom F9 = I & rng F9 c= the carrier' of C ) and
A10: for y being set st y in I holds
S1[y,F9 . y] from WELLORD2:sch 1(A4);
reconsider F9 = F9 as Function of I,the carrier' of C by A9, FUNCT_2:def 1, RELSET_1:11;
now
let y be set ; :: thesis: ( y in I implies (doms F9) /. y = (I --> (cod (F /. x))) /. y )
assume A11: y in I ; :: thesis: (doms F9) /. y = (I --> (cod (F /. x))) /. y
then A12: F9 . y = F9 /. y by FUNCT_2:def 14;
then A13: ( y <> x implies F9 /. y in Hom (cod (F /. x)),(cod (F /. y)) ) by A10, A11;
( y = x implies F9 /. y = id (cod (F /. x)) ) by A10, A11, A12;
then dom (F9 /. y) = cod (F /. x) by A13, CAT_1:18, CAT_1:44;
hence (doms F9) /. y = cod (F /. x) by A11, Def3
.= (I --> (cod (F /. x))) /. y by A11, Th2 ;
:: thesis: verum
end;
then doms F9 = I --> (cod (F /. x)) by Th1;
then A14: F9 is Projections_family of cod (F /. x),I by Def14;
now
let y be set ; :: thesis: ( y in I implies (cods F9) /. y = (cods F) /. y )
assume A15: y in I ; :: thesis: (cods F9) /. y = (cods F) /. y
then A16: F9 . y = F9 /. y by FUNCT_2:def 14;
then A17: ( y <> x implies F9 /. y in Hom (cod (F /. x)),(cod (F /. y)) ) by A10, A15;
( y = x implies F9 /. y = id (cod (F /. x)) ) by A10, A15, A16;
then cod (F9 /. y) = cod (F /. y) by A17, CAT_1:18, CAT_1:44;
hence (cods F9) /. y = cod (F /. y) by A15, Def4
.= (cods F) /. y by A15, Def4 ;
:: thesis: verum
end;
then cods F = cods F9 by Th1;
then consider i being Morphism of C such that
A18: i in Hom (cod (F /. x)),c and
A19: for k being Morphism of C st k in Hom (cod (F /. x)),c holds
( ( for y being set st y in I holds
(F /. y) * k = F9 /. y ) iff i = k ) by A1, A14, Def15;
take i ; :: according to CAT_3:def 10 :: thesis: ( cod i = dom (F /. x) & (F /. x) * i = id (cod (F /. x)) )
thus cod i = c by A18, CAT_1:18
.= dom (F /. x) by A3, Th45 ; :: thesis: (F /. x) * i = id (cod (F /. x))
thus (F /. x) * i = F9 /. x by A3, A18, A19
.= F9 . x by A3, FUNCT_2:def 14
.= id (cod (F /. x)) by A3, A10 ; :: thesis: verum