reserve G,F for RealLinearSpace;

theorem Th23:
  for X ,Y be non empty RealNormSpace
  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*>:])
  & ( for v be Point of [:X,Y:] holds ||. I.v .|| = ||.v.|| )
  proof
    let X,Y be non empty RealNormSpace;
    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*>
    & ( for v be Point of Y holds ||. J.v .|| = ||.v.|| ) by Th16;
    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;
    thus I is one-to-one
    proof
      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; then
        consider x1,y1 be object such that
A6:     x1 in the carrier of X & y1 in the carrier of Y & z1=[x1,y1]
        by 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;
A8:     [x1,<*y1*>] = I.(x1,y1) by A4,A6
        .= I.(x2,y2) by A5,A6,A7
        .= [x2,<*y2*>] by A4,A7; then
        <*y1*> = <*y2*> by XTUPLE_0:1; then
        y1 = y2 by FINSEQ_1:76;
        hence z1=z2 by A6,A7,A8,XTUPLE_0:1;
      end;
      hence thesis by FUNCT_2:19;
    end;
    thus I is onto
    proof
      now let w be object;
        assume w in the carrier of [:X, product <*Y*>:]; then
        consider x,y1 be object such that
        A9:   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,A9,FUNCT_2:def 3; then
        consider y be object such that
        A10:  y in the carrier of Y & y1=J.y by FUNCT_2:11;
        A11:  J.y = <*y*> by A10,A1;
        reconsider z = [x,y] as Element of
          [:the carrier of X,the carrier of Y:] by A9,A10,ZFMISC_1:87;
        w = I.(x,y) by A4,A9,A10,A11
        .= 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 thesis by FUNCT_2:def 3;
    end;
    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
      A12:  v=[x1,x2] by Lm1;
      consider y1 be Point of X, y2 be Point of Y such that
      A13:  w=[y1,y2] by Lm1;
      A14: I.(v+w) = I.(x1+y1,x2+y2) by A12,A13,Def1
      .= [x1+y1,<*x2+y2*>] by A4;
      I.v = I.(x1,x2) & I.w = I.(y1,y2) by A12,A13; then
      A15: I.v = [x1,<*x2*>] & I.w = [y1,<*y2*>] by A4;
      A16: 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 A16;
      <*x2+y2*> = J.(x2+y2) by A1
      .= xx2+yy2 by A16,A1;
      hence I.v + I.w = I.(v+w) by A14,A15,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
      A17:  v=[x1,x2] by Lm1;
      A18: I.(r*v) = I.(r*x1,r*x2) by A17,Th18
      .= [r*x1,<*r*x2*>] by A4;
      A19: I.v = I.(x1,x2) by A17
      .= [x1,<*x2*>] by A4;
      A20: J.x2 = <*x2*> by A1; then
      reconsider xx2=<*x2*> as Point of product <*Y*>;
      <* r*x2 *> = J.(r*x2) by A1
      .= r*xx2 by A20,A1;
      hence r*(I.v) = I.(r*v) by A18,A19,Th18;
    end;
    A21:<*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 A21,A4;
    thus for v be Point of [:X,Y:] holds ||. I.v .|| = ||.v.||
    proof
      let v be Point of [:X,Y:];
      consider x1 be Point of X, x2 be Point of Y such that
      A22:  v=[x1,x2] by Lm1;
      A23: J.x2 = <*x2*> by A1; then
      reconsider xx2=<*x2*> as Point of product <*Y*>;
      A24:ex w be Element of REAL 2 st
      w=<* ||.x1.||,||.x2.|| *> & ||.v.||  = |.w.| by A22,Th18;
      I.v = I.(x1,x2) by A22
      .= [x1,<*x2*>] by A4; then
      ex s be Element of REAL 2 st s=<* ||.x1.||,||.xx2.|| *> &
      ||. I.v .|| = |.s.| by Th18;
      hence ||. I.v .|| = ||.v.|| by A23,A1,A24;
    end;
  end;
