
theorem Th41:
  OrdC 1 is with_binary_products
  proof
    set C = OrdC 1;
    consider f be morphism of OrdC 1 such that
A1: f is identity & Ob OrdC 1 = {f} & Mor OrdC 1 = {f} by Th15;
A2: for o1,o2 being Object of C, f1 being morphism of C holds
    f1 is Morphism of o1,o2
    proof
      let o1,o2 be Object of C;
      let f1 be morphism of C;
A3:   dom f1 = f by A1,TARSKI:def 1 .= o1 by A1,TARSKI:def 1;
      cod f1 = f by A1,TARSKI:def 1 .= o2 by A1,TARSKI:def 1;
      then f1 in Hom(o1,o2) by A3,CAT_7:20;
      hence f1 is Morphism of o1,o2 by CAT_7:def 3;
    end;
    let a,b be Object of C;
A4: a = f by A1,TARSKI:def 1 .= b by A1,TARSKI:def 1;
    take a;
    reconsider p1 = f as Morphism of a,a by A2;
    reconsider p2 = f as Morphism of a,b by A2;
    take p1,p2;
    thus
A5: Hom(a,a) <> {} & Hom(a,b) <> {} by A4;
    for c1 being Object of C,
        q1 being Morphism of c1,a, q2 being Morphism of c1,b
    st Hom(c1,a) <> {} & Hom(c1,b) <> {}
    holds Hom(c1,a) <> {} & ex h being Morphism of c1,a st
    p1 * h = q1 & p2 * h = q2
    & for h1 being Morphism of c1,a st p1 * h1 = q1 & p2 * h1 = q2 holds h = h1
    proof
      let c1 be Object of C;
      let q1 be Morphism of c1,a;
      let q2 be Morphism of c1,b;
      assume Hom(c1,a) <> {} & Hom(c1,b) <> {};
      c1 = f by A1,TARSKI:def 1 .= a by A1,TARSKI:def 1;
      hence Hom(c1,a) <> {};
      reconsider h = f as Morphism of c1,a by A2;
      take h;
      thus p1 * h = f by A1,TARSKI:def 1 .= q1 by A1,TARSKI:def 1;
      thus p2 * h = f by A1,TARSKI:def 1 .= q2 by A1,TARSKI:def 1;
      let h1 be Morphism of c1,a;
      assume p1 * h1 = q1 & p2 * h1 = q2;
      thus h = h1 by A1,TARSKI:def 1;
    end;
    hence a,p1,p2 is_product_of a,b by A5,Def10;
  end;
