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