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
  Hom(a,c) <> {} & Hom(b,c) <> {} implies for i1 being Morphism of a,c,
i2 being Morphism of b,c holds c is_a_coproduct_wrt i1,i2 iff for d st Hom(a,d)
<>{} & Hom(b,d)<>{} holds Hom(c,d) <> {} & for f being Morphism of a,d, 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
proof
  assume that
A1: Hom(a,c) <> {} and
A2: Hom(b,c) <> {};
  let i1 be Morphism of a,c, i2 be Morphism of b,c;
  thus c is_a_coproduct_wrt i1,i2 implies for d st Hom(a,d)<>{} & Hom(b,d)<>{}
holds Hom(c,d) <> {} & for f being Morphism of a,d, 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
  proof
    assume that
    cod i1 = c and
    cod i2 = c and
A3: for d,f,g st f in Hom(dom i1,d) & g in Hom(dom i2,d) ex h st h in
    Hom(c,d) & for k st k in Hom(c,d) holds k(*)i1 = f & k(*)i2 = g iff h = k;
    let d such that
A4: Hom(a,d)<>{} and
A5: Hom(b,d)<>{};
    set f = the Morphism of a,d,g = the Morphism of b,d;
A6: dom i2 = b by A2,CAT_1:5;
    then
A7: g in Hom(dom i2,d) by A5,CAT_1:def 5;
A8: dom i1 = a by A1,CAT_1:5;
    then f in Hom(dom i1,d) by A4,CAT_1:def 5;
    then
A9: ex h st h in Hom(c,d) & for k st k in Hom(c,d) holds k(*)i1 = f & k(*)i2
    = g iff h = k by A3,A7;
    hence Hom(c,d) <> {};
    let f be Morphism of a,d, g be Morphism of b,d;
A10: g in Hom(dom i2,d) by A5,A6,CAT_1:def 5;
    f in Hom(dom i1,d) by A4,A8,CAT_1:def 5;
    then consider h such that
A11: h in Hom(c,d) and
A12: for k st k in Hom(c,d) holds k(*)i1 = f & k(*)i2 = g iff h = k by A3,A10;
    reconsider h as Morphism of c,d by A11,CAT_1:def 5;
    take h;
    let k be Morphism of c,d;
A13: k in Hom(c,d) by A9,CAT_1:def 5;
    k*i1 = k(*)(i1 qua Morphism of C) & k*i2 = k(*)(i2 qua Morphism of C)
            by A1,A2,A9,CAT_1:def 13;
    hence thesis by A12,A13;
  end;
  assume
A14: for d st Hom(a,d)<>{} & Hom(b,d)<>{} holds Hom(c,d) <> {} & for f
  being Morphism of a,d, 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 cod i1 = c & cod i2 = c by A1,A2,CAT_1:5;
  let d,f,g such that
A15: f in Hom(dom i1,d) and
A16: g in Hom(dom i2,d);
A17: Hom(a,d) <> {} by A1,A15,CAT_1:5;
A18: dom i1 = a by A1,CAT_1:5;
  then
A19: f is Morphism of a,d by A15,CAT_1:def 5;
A20: dom i2 = b by A2,CAT_1:5;
  then g is Morphism of b,d by A16,CAT_1:def 5;
  then consider h being Morphism of c,d such that
A21: for k being Morphism of c,d holds k*i1 = f & k*i2 = g iff h = k by A14,A16
,A20,A19,A17;
  reconsider h9 = h as Morphism of C;
  take h9;
A22: Hom(c,d) <> {} by A14,A15,A16,A18,A20;
  hence h9 in Hom(c,d) by CAT_1:def 5;
  let k;
  assume k in Hom(c,d);
  then reconsider k9 = k as Morphism of c,d by CAT_1:def 5;
  k(*)i1 = k9*i1 & k(*)i2 = k9*i2 by A1,A2,A22,CAT_1:def 13;
  hence thesis by A21;
end;
