let C be Category; :: thesis: for a, c, b being Object of C st Hom a,c <> {} & Hom b,c <> {} holds
for i1 being Morphism of a,c
for i2 being Morphism of b,c holds
( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) )

let a, c, b be Object of C; :: thesis: ( Hom a,c <> {} & Hom b,c <> {} implies for i1 being Morphism of a,c
for i2 being Morphism of b,c holds
( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) )

assume A1: ( Hom a,c <> {} & Hom b,c <> {} ) ; :: thesis: for i1 being Morphism of a,c
for i2 being Morphism of b,c holds
( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) )

let i1 be Morphism of a,c; :: thesis: for i2 being Morphism of b,c holds
( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) )

let i2 be Morphism of b,c; :: thesis: ( c is_a_coproduct_wrt i1,i2 iff for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) )

thus ( c is_a_coproduct_wrt i1,i2 implies for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) :: thesis: ( ( for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ) implies c is_a_coproduct_wrt i1,i2 )
proof
assume that
( cod i1 = c & cod i2 = c ) and
A2: for d being Object of C
for f, g being Morphism of C st f in Hom (dom i1),d & g in Hom (dom i2),d holds
ex h being Morphism of C st
( h in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ; :: according to CAT_3:def 19 :: thesis: for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) )

let d be Object of C; :: thesis: ( Hom a,d <> {} & Hom b,d <> {} implies ( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) )

assume A3: ( Hom a,d <> {} & Hom b,d <> {} ) ; :: thesis: ( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) )

consider f being Morphism of a,d, g being Morphism of b,d;
A4: ( dom i1 = a & dom i2 = b ) by A1, CAT_1:23;
then ( f in Hom (dom i1),d & g in Hom (dom i2),d ) by A3, CAT_1:def 7;
then A5: ex h being Morphism of C st
( h in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) by A2;
hence Hom c,d <> {} ; :: thesis: for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k )

let f be Morphism of a,d; :: thesis: for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k )

let g be Morphism of b,d; :: thesis: ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k )

( f in Hom (dom i1),d & g in Hom (dom i2),d ) by A3, A4, CAT_1:def 7;
then consider h being Morphism of C such that
A6: h in Hom c,d and
A7: for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) by A2;
reconsider h = h as Morphism of c,d by A6, CAT_1:def 7;
take h ; :: thesis: for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k )

let k be Morphism of c,d; :: thesis: ( ( k * i1 = f & k * i2 = g ) iff h = k )
( k * i1 = k * i1 & k * i2 = k * i2 & k in Hom c,d ) by A1, A5, CAT_1:def 7, CAT_1:def 13;
hence ( ( k * i1 = f & k * i2 = g ) iff h = k ) by A7; :: thesis: verum
end;
assume A8: for d being Object of C st Hom a,d <> {} & Hom b,d <> {} holds
( Hom c,d <> {} & ( for f being Morphism of a,d
for g being Morphism of b,d ex h being Morphism of c,d st
for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) ; :: thesis: c is_a_coproduct_wrt i1,i2
thus ( cod i1 = c & cod i2 = c ) by A1, CAT_1:23; :: according to CAT_3:def 19 :: thesis: for d being Object of C
for f, g being Morphism of C st f in Hom (dom i1),d & g in Hom (dom i2),d holds
ex h being Morphism of C st
( h in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) )

let d be Object of C; :: thesis: for f, g being Morphism of C st f in Hom (dom i1),d & g in Hom (dom i2),d holds
ex h being Morphism of C st
( h in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) )

let f, g be Morphism of C; :: thesis: ( f in Hom (dom i1),d & g in Hom (dom i2),d implies ex h being Morphism of C st
( h in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) ) )

assume that
A9: f in Hom (dom i1),d and
A10: g in Hom (dom i2),d ; :: thesis: ex h being Morphism of C st
( h in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) ) )

A11: ( dom i1 = a & dom i2 = b ) by A1, CAT_1:23;
then ( f is Morphism of a,d & g is Morphism of b,d & Hom a,d <> {} & Hom b,d <> {} ) by A9, A10, CAT_1:def 7;
then consider h being Morphism of c,d such that
A12: for k being Morphism of c,d holds
( ( k * i1 = f & k * i2 = g ) iff h = k ) by A8;
reconsider h' = h as Morphism of C ;
take h' ; :: thesis: ( h' in Hom c,d & ( for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h' = k ) ) )

A13: Hom c,d <> {} by A8, A9, A10, A11;
hence h' in Hom c,d by CAT_1:def 7; :: thesis: for k being Morphism of C st k in Hom c,d holds
( ( k * i1 = f & k * i2 = g ) iff h' = k )

let k be Morphism of C; :: thesis: ( k in Hom c,d implies ( ( k * i1 = f & k * i2 = g ) iff h' = k ) )
assume k in Hom c,d ; :: thesis: ( ( k * i1 = f & k * i2 = g ) iff h' = k )
then reconsider k' = k as Morphism of c,d by CAT_1:def 7;
( k * i1 = k' * i1 & k * i2 = k' * i2 ) by A1, A13, CAT_1:def 13;
hence ( ( k * i1 = f & k * i2 = g ) iff h' = k ) by A12; :: thesis: verum