
theorem Th15:
  for X,Y be non empty set ex I be Function of [:X,Y:],[:X,product<*Y*>:]
  st I is one-to-one onto &
  (for x,y be set st x in X & y in Y holds I.(x,y) = [x,<*y*>])
proof
  let X,Y be non empty set;
A1: product <*Y*> <> {}
  proof
    assume product <*Y*> = {};
    then {} in rng <*Y*> by CARD_3:26;
    then {} in { Y } by FINSEQ_1:39;
    hence contradiction by TARSKI:def 1;
  end;
  consider J be Function of Y,product <*Y*> such that
A2: J is one-to-one & J is onto &
(for y be object st y in Y holds J.y = <*y*>)
  by PRVECT_3:4;
  defpred P[object,object,object] means $3 = [$1,<* $2 *>];
A3: for x,y be object st x in X & y in Y
   ex z be object st z in [:X,product <*Y*>:]
  & P[x,y,z]
  proof
    let x,y be object;
    assume
A4: x in X & y in Y;
    reconsider z = [x,<*y*>] as set by TARSKI:1;
    take z;
    J.y = <* y *> by A2,A4;
    then <* y *> in product <*Y*> by A4,A1,FUNCT_2:5;
    hence thesis by A4,ZFMISC_1:87;
  end;
  consider I be Function of [:X,Y:],[:X,product <*Y*>:] such that
A5: for x,y be object st x in X & y in Y holds P[x,y,I.(x,y)]
  from BINOP_1:sch 1(A3);
  reconsider I as Function of [:X,Y:],[:X,product <*Y*>:];
  take I;
  thus I is one-to-one
  proof
    now let z1,z2 be object;
      assume
A6:   z1 in [:X,Y:] & z2 in [:X,Y:] & I.z1 = I.z2;
      then consider x1,y1 be object such that
A7:   x1 in X & y1 in Y & z1 = [x1,y1] by ZFMISC_1:def 2;
      consider x2,y2 be object such that
A8:   x2 in X & y2 in Y & z2 = [x2,y2] by A6,ZFMISC_1:def 2;
A9:   [x1,<*y1*>] = I.(x1,y1) by A5,A7
        .= I.(x2,y2) by A6,A7,A8
        .= [x2,<*y2*>] by A5,A8;
      then <*y1*> = <*y2*> by XTUPLE_0:1;
      then y1 = y2 by FINSEQ_1:76;
      hence z1 = z2 by A7,A8,A9,XTUPLE_0:1;
    end;
    hence thesis by FUNCT_2:19,A1;
  end;
  thus I is onto
  proof
    now let w be object;
      assume w in [:X, product <*Y*>:];
      then consider x,y1 be object such that
A10:   x in X & y1 in product <*Y*> & w = [x,y1] by ZFMISC_1:def 2;
      y1 in rng J by A2,A10,FUNCT_2:def 3;
      then consider y be object such that
A11:  y in Y & y1 = J.y by FUNCT_2:11;
A12:  J.y = <*y*> by A11,A2;
      reconsider z = [x,y] as Element of [:X,Y:] by A10,A11,ZFMISC_1:87;
      w = I.(x,y) by A5,A10,A11,A12
        .= I.z;
      hence w in rng I by FUNCT_2:4,A1;
    end;
    then [:X,product <*Y*>:] c= rng I by TARSKI:def 3;
    hence thesis by FUNCT_2:def 3,XBOOLE_0:def 10;
  end;
  thus for x,y be set st x in X & y in Y holds I.(x,y) = [x,<*y*>] by A5;
end;
