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 Th48:
  for F being Projections_family of c,I, F9 being
  Projections_family of d,I st c is_a_product_wrt F & d is_a_product_wrt F9 &
  cods F = cods F9 holds c,d are_isomorphic
proof
  let F be Projections_family of c,I, F9 be Projections_family of d,I such
  that
A1: c is_a_product_wrt F and
A2: d is_a_product_wrt F9 and
A3: cods F = cods F9;
  consider gf being Morphism of C such that
  gf in Hom(d,d) and
A4: for k st k in Hom(d,d) holds (for x st x in I holds (F9/.x)(*)k = F9
  /.x ) iff gf = k by A2;
  consider f such that
A5: f in Hom(d,c) and
A6: for k st k in Hom(d,c) holds (for x st x in I holds (F/.x)(*)k = F9/.x
  ) iff f = k by A1,A3;
  reconsider f as Morphism of d,c by A5,CAT_1:def 5;
  consider fg being Morphism of C such that
  fg in Hom(c,c) and
A7: for k st k in Hom(c,c) holds (for x st x in I holds (F/.x)(*)k = F/.x
  ) iff fg = k by A1;
  consider g such that
A8: g in Hom(c,d) and
A9: for k st k in Hom(c,d) holds (for x st x in I holds (F9/.x)(*)k = F/.x
  ) iff g = k by A2,A3;
  reconsider g as Morphism of c,d by A8,CAT_1:def 5;
A10: cod g = d by A8,CAT_1:1;
A11: now
    set k = id c;
    thus k in Hom(c,c) by CAT_1:27;
    let x;
    assume x in I;
    then dom(F/.x) = c by Th41;
    hence (F/.x)(*)k = F/.x by CAT_1:22;
  end;
A12: now
    set k = id d;
    thus k in Hom(d,d) by CAT_1:27;
    let x;
    assume x in I;
    then dom(F9/.x) = d by Th41;
    hence (F9/.x)(*)k = F9/.x by CAT_1:22;
  end;
  take g;
  thus
 Hom(c,d) <> {} & Hom(d,c) <> {} by A5,A8;
  take f;
A13: dom g = c by A8,CAT_1:1;
A14: cod f = c by A5,CAT_1:1;
A15: dom f = d by A5,CAT_1:1;
A16: now
    dom(g(*)f) = d & cod(g(*)f) = d by A15,A10,A14,A13,CAT_1:17;
    hence g(*)f in Hom(d,d);
    let x;
    assume
A17: x in I;
    then dom(F9/.x) = d by Th41;
    hence (F9/.x)(*)(g(*)f) = (F9/.x)(*)g(*)f by A10,A14,A13,CAT_1:18
      .= (F/.x)(*)f by A8,A9,A17
      .= F9/.x by A5,A6,A17;
  end;
  thus g*f = g(*)f by A5,A8,CAT_1:def 13
    .= gf by A4,A16
    .= id d by A4,A12;
A18: now
    dom(f(*)g) = c & cod(f(*)g) = c by A15,A10,A14,A13,CAT_1:17;
    hence f(*)g in Hom(c,c);
    let x;
    assume
A19: x in I;
    then dom(F/.x) = c by Th41;
    hence (F/.x)(*)(f(*)g) = (F/.x)(*)f(*)g by A15,A10,A14,CAT_1:18
      .= (F9/.x)(*)g by A5,A6,A19
      .= F/.x by A8,A9,A19;
  end;
  thus f*g = f(*)g by A5,A8,CAT_1:def 13
    .= fg by A7,A18
    .= id c by A11,A7;
end;
