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 Th51:
  for F being Projections_family of a,I st a is_a_product_wrt F
  for f being Morphism of b,a st
  dom f = b & cod f = a &
  f is invertible holds b is_a_product_wrt F*f
proof
  let F be Projections_family of a,I such that
A1: a is_a_product_wrt F;
  let f be Morphism of b,a such that
A2: dom f = b and
A3: cod f = a and
A4: f is invertible;
  thus F*f is Projections_family of b,I by A2,A3,Th45;
  let c;
A5: doms F = I-->cod f by A3,Def13;
  let F9 be Projections_family of c,I;
  assume cods(F*f) = cods F9;
  then cods F = cods F9 by A5,Th16;
  then consider h such that
A6: h in Hom(c,a) and
A7: for k st k in Hom(c,a) holds (for x st x in I holds (F/.x)(*)k = F9/.x
  ) iff h = k by A1;
A8: cod h = a by A6,CAT_1:1;
  consider g being Morphism of a,b such that
A9: f*g = id a and
A10: g*f = id b by A4;
A11: Hom(a,b) <> {} & Hom(b,a) <> {} by A4;
  then
A12: dom g = cod f by A3,CAT_1:5;
A13: cod g = dom f by A2,A11,CAT_1:5;
A14: f(*)g = id cod f by A9,A3,A11,CAT_1:def 13;
A15: g(*)f = id dom f by A10,A2,A11,CAT_1:def 13;
  dom h = c by A6,CAT_1:1;
  then
A16: dom(g(*)h) = c by A3,A12,A8,CAT_1:17;
  take gh = g(*)h;
  cod(g(*)h) = b by A2,A3,A12,A13,A8,CAT_1:17;
  hence gh in Hom(c,b) by A16;
  let k;
  assume
A17: k in Hom(c,b);
  then
A18: cod k = b by CAT_1:1;
A19: dom k = c by A17,CAT_1:1;
  thus (for x st x in I holds ((F*f)/.x)(*)k = F9/.x) implies gh = k
  proof
    assume
A20: for x st x in I holds ((F*f)/.x)(*)k = F9/.x;
    now
      dom(f(*)k) = c & cod(f(*)k) = a by A2,A3,A19,A18,CAT_1:17;
      hence f(*)k in Hom(c,a);
      let x;
      assume
A21:  x in I;
      then dom(F/.x) = a by Th41;
      hence (F/.x)(*)(f(*)k) = (F/.x)(*)f(*)k by A2,A3,A18,CAT_1:18
        .= ((F*f)/.x)(*)k by A21,Def5
        .= F9/.x by A20,A21;
    end;
    then g(*)(f(*)k) = g(*)h by A7;
    hence gh = (id b)(*)k by A2,A12,A15,A18,CAT_1:18
      .= k by A18,CAT_1:21;
  end;
  assume
A22: gh = k;
  let x;
  assume
A23: x in I;
  then
A24: dom(F/.x) = a by Th41;
  thus ((F*f)/.x)(*)k = ((F/.x)(*)f)(*)k by A23,Def5
    .= (F/.x)(*)(f(*)(g(*)h)) by A2,A3,A18,A22,A24,CAT_1:18
    .= (F/.x)(*)((id cod f)(*)h) by A3,A12,A13,A14,A8,CAT_1:18
    .= (F/.x)(*)h by A3,A8,CAT_1:21
    .= F9/.x by A6,A7,A23;
end;
