reserve G,F for RealLinearSpace;

theorem Th21:
  for X,Y be non empty RealLinearSpace
  holds ex I be Function of [:X,Y:],[:X,product <*Y*>:]
  st I is one-to-one & I is onto
  & ( for x be Point of X, y be Point of Y holds I.(x,y) = [x,<*y*>] )
  & ( for v,w be Point of [:X,Y:] holds I.(v+w) = I.v + I.w )
  & ( for v be Point of [:X,Y:], r be Element of REAL
  holds I.(r*v)=r*(I.v) )
  & I.(0.[:X,Y:]) = 0.([:X,product<*Y*>:])
  proof
    let X,Y be non empty RealLinearSpace;
    consider J be Function of Y,product <*Y*> such that
    A1: J is one-to-one & J is onto
    & ( for y be Point of Y holds J.y = <*y*> )
    & ( for v,w be Point of Y holds J.(v+w) = J.v + J.w )
    & ( for v be Point of Y, r be Element of REAL holds J.(r*v)=r*(J.v) )
    & J.(0.Y)=0.product <*Y*> by Th11;
    defpred P[object,object,object] means $3 = [ $1,<* $2 *> ];
    A2:for x,y be object st x in the carrier of X & y in the carrier of Y
    ex z be object st z in the carrier of [:X,product <*Y*>:] & P[x,y,z]
    proof
      let x,y be object;
      assume A3: x in the carrier of X & y in the carrier of Y; then
      reconsider y0=y as Point of Y;
      J.y0 = <*y0*> by A1; then
      [x,<*y*>] in [:the carrier of X,the carrier of product <*Y*>:]
      by A3,ZFMISC_1:87;
      hence thesis;
    end;
    consider I be Function of [:the carrier of X,the carrier of Y:],
    the carrier of [:X,product <*Y*>:] such that
    A4: for x,y be object st x in the carrier of X & y in the carrier of Y
    holds P[x,y,I.(x,y)] from BINOP_1:sch 1(A2);
    reconsider I as Function of [:X,Y:],[:X, product <*Y*>:];
    take I;
    now let z1,z2 be object;
      assume A5: z1 in the carrier of [:X,Y:] & z2 in the carrier of [:X,Y:]
      & I.z1=I.z2;
      consider x1,y1 be object such that
      A6:  x1 in the carrier of X & y1 in the carrier of Y & z1=[x1,y1]
      by A5,ZFMISC_1:def 2;
      consider x2,y2 be object such that
      A7:  x2 in the carrier of X & y2 in the carrier of Y & z2=[x2,y2]
      by A5,ZFMISC_1:def 2;
      [x1,<*y1*>] = I.(x1,y1) by A4,A6
      .= I.(x2,y2) by A5,A6,A7
      .= [x2,<*y2*>] by A4,A7; then
      x1=x2 & <*y1*>=<*y2*> by XTUPLE_0:1;
      hence z1=z2 by A6,A7,FINSEQ_1:76;
    end;
    hence I is one-to-one by FUNCT_2:19;
    now let w be object;
      assume w in the carrier of [:X, product <*Y*>:]; then
      consider x,y1 be object such that
      A8:  x in the carrier of X & y1 in the carrier of product <*Y*> &
      w=[x,y1] by ZFMISC_1:def 2;
      y1 in rng J by A1,A8,FUNCT_2:def 3; then
      consider y be object such that
      A9:  y in the carrier of Y & y1=J.y by FUNCT_2:11;
      reconsider z = [x,y] as Element of [:the carrier of X,the carrier of Y:]
      by A8,A9,ZFMISC_1:87;
      J.y = <*y*> by A9,A1; then
      w = I.(x,y) by A4,A8,A9; then
      w = I.z;
      hence w in rng I by FUNCT_2:4;
    end; then
    the carrier of [:X, product <*Y*>:] c= rng I by TARSKI:def 3; then
    the carrier of [:X, product <*Y*>:] = rng I by XBOOLE_0:def 10;
    hence I is onto by FUNCT_2:def 3;
    thus for x be Point of X, y be Point of Y holds I.(x,y) = [x,<*y*>] by A4;
    thus for v,w be Point of [:X,Y:] holds I.(v+w) = I.v + I.w
    proof
      let v,w be Point of [:X,Y:];
      consider x1 be Point of X, x2 be Point of Y such that
      A10:  v=[x1,x2] by Lm1;
      consider y1 be Point of X, y2 be Point of Y such that
      A11:  w=[y1,y2] by Lm1;
      A12: I.(v+w) = I.(x1+y1,x2+y2) by A10,A11,Def1
      .= [x1+y1,<*x2+y2*>] by A4;
      I.v = I.(x1,x2) & I.w = I.(y1,y2) by A10,A11; then
      A13: I.v = [x1,<*x2*>] & I.w = [y1,<*y2*>] by A4;
      A14: J.x2 = <*x2*> & J.y2 = <*y2*> by A1; then
      reconsider xx2=<*x2*> as Point of product <*Y*>;
      reconsider yy2=<*y2*> as Point of product <*Y*> by A14;
      <*x2+y2*> = J.(x2+y2) by A1
      .= xx2+yy2 by A14,A1;
      hence I.v + I.w = I.(v+w) by A12,A13,Def1;
    end;
    thus for v be Point of [:X,Y:], r be Element of REAL
    holds I.(r*v)=r*(I.v)
    proof
      let v be Point of [:X,Y:], r be Element of REAL;
      consider x1 be Point of X, x2 be Point of Y such that
      A15:  v=[x1,x2] by Lm1;
      A16: I.(r*v) = I.(r*x1,r*x2) by A15,Th9
      .= [r*x1,<*r*x2*>] by A4;
      A17: I.v = I.(x1,x2) by A15
      .= [x1,<*x2*>] by A4;
      A18: J.x2 = <*x2*> by A1; then
      reconsider xx2=<*x2*> as Point of product <*Y*>;
      <* r*x2 *> = J.(r*x2) by A1
      .= r*xx2 by A18,A1;
      hence r*(I.v) = I.(r*v) by A16,A17,Th9;
    end;
    A19:<*0.Y*> = 0.product <*Y*> by A1;
    I.(0.[:X,Y:]) = I.(0.X,0.Y);
    hence I.(0.[:X,Y:]) = 0.([:X,product <*Y*>:]) by A19,A4;
  end;
