
theorem Th57:
  for I being non empty set
  for J being TopStruct-yielding non-Empty ManySortedSet of I
  for P being non empty Subset of product Carrier J st P in product_prebasis J
  holds ex i being Element of I st proj(J,i).:P is open &
    for j being Element of I st j <> i holds proj(J,j).:P = [#](J.j)
proof
  let I being non empty set;
  let J being TopStruct-yielding non-Empty ManySortedSet of I;
  let P be non empty Subset of product Carrier J;
  assume P in product_prebasis J;
  then consider i being set, T being TopStruct, V being Subset of T such that
    A1: i in I & V is open & T = J.i and
    A2: P = product( (Carrier J) +* (i,V)) by WAYBEL18:def 2;
  reconsider i as Element of I by A1;
  reconsider V as Subset of J.i by A1;
  take i;
  A3: dom Carrier J = I by PARTFUN1:def 2;
  a4: rng proj(J,i) = the carrier of J.i by Th52;
  proj(J,i).:P = proj(J,i).:(proj(J,i)"V) by A2, WAYBEL18:4;
  hence proj(J,i).:P is open by A1, a4, FUNCT_1:77;
  let j be Element of I;
  assume A5: j <> i;
  for x being object holds x in proj(J,j).:P iff x in [#](J.j)
  proof
    let x be object;
    hereby
      assume x in proj(J,j).:P;
      then consider y being object such that
        A6: y in dom proj(J,j) & y in P & x = proj(J,j).y by FUNCT_1:def 6;
      consider g being Function such that
        A7: y = g & dom g = dom ((Carrier J) +* (i,V)) and
        A8: for z being object st z in dom ((Carrier J) +* (i,V))
          holds g.z in ((Carrier J) +* (i,V)).z by A2, A6, CARD_3:def 5;
      j in dom Carrier J by A3;
      then A9: j in dom ((Carrier J) +* (i,V)) by FUNCT_7:30;
      x = g.j by A6, A7, YELLOW17:8;
      then x in ((Carrier J) +* (i,V)).j by A8, A9;
      then x in (Carrier J).j by A5, FUNCT_7:32;
      hence x in [#](J.j) by PENCIL_3:7;
    end;
    assume x in [#](J.j);
    then x in (Carrier J).j by PENCIL_3:7;
    then A10: x in ((Carrier J) +* (i,V)).j by A5, FUNCT_7:32;
    set g0 = the Element of product( (Carrier J) +* (i,V));
    set g = g0 +* (j,x);
    a11:(Carrier J).i = [#](J.i) by PENCIL_3:7
      .= the carrier of J.i by STRUCT_0:def 3;
    consider g00 being Function such that
      A12: g0 = g00 & dom g00 = dom ((Carrier J) +* (i,V)) and
      A13: for z being object st z in dom ((Carrier J) +* (i,V))
        holds g00.z in ((Carrier J) +* (i,V)).z by A2, CARD_3:def 5;
    ex f being Function st g = f & dom f = dom ((Carrier J) +* (i,V)) &
      for z being object st z in dom ((Carrier J) +* (i,V))
        holds f.z in ((Carrier J) +* (i,V)).z
    proof
      take g;
      thus g=g & dom g = dom ((Carrier J) +* (i,V)) by A12, FUNCT_7:30;
      let z be object;
      assume A15: z in dom ((Carrier J) +* (i,V));
      z <> j implies g.z = g0.z by FUNCT_7:32;
      hence thesis by A10, A12,A13, A15, FUNCT_7:31;
    end;
    then A16: g in product( (Carrier J) +* (i,V)) by CARD_3:def 5;
    a17: product( (Carrier J) +* (i,V)) c= product Carrier J by A3, a11, Th39;
    then g in product Carrier J by A16;
    then g in dom proj(Carrier J,j) by CARD_3:def 16;
    then A18: g in dom proj(J,j) by WAYBEL18:def 4;
    A19: j in dom Carrier J by A3;
    A20: g is Element of product J by a17,A16, WAYBEL18:def 3;
    j in dom g0 by A12, A19, FUNCT_7:30;
    then x = g.j by FUNCT_7:31
      .= proj(J,j).g by A20, YELLOW17:8;
    hence thesis by A2, A16, A18, FUNCT_1:def 6;
  end;
  hence proj(J,j).:P = [#](J.j) by TARSKI:2;
end;
