
theorem Th12:
  for G be RealNormSpace holds
    ( for x be set holds
      ( x is Point of product <*G*>
        iff ex x1 be Point of G st x = <*x1*> ) )
  & ( for x,y be Point of product <*G*>, x1,y1 be Point of G
      st x = <*x1*> & y = <*y1*>
      holds x+y = <* x1+y1 *> )
  & 0.(product <*G*>) = <* 0.G *>
  & ( for x be Point of product <*G*>, x1 be Point of G
      st x = <*x1*>
      holds -x = <* -x1 *> )
  & ( for x be Point of product <*G*>,
         x1 be Point of G, a be Real
      st x = <*x1*>
      holds a*x = <* a*x1 *> )
  & ( for x be Point of product <*G*>, x1 be Point of G
      st x = <*x1*> holds ||.x.|| = ||.x1.|| )
  proof
    let G be RealNormSpace;
    consider I be Function of G,(product <*G*>) such that
    A1: I is one-to-one & I is onto
      & ( for x be Point of G holds I.x = <*x*> )
      & ( for v, w be Point of G holds I.(v + w) = I.v + I.w )
      & ( for v be Point of G for r be Element of REAL
          holds I.(r * v) = r * (I.v) )
      & 0.(product <*G*>) = I.(0.G)
      & ( for v be Point of G holds ||. I.v.|| = ||.v.|| )
      by PRVECT_3:16;

    thus
    A2: for x be set holds
        ( x is Point of product <*G*>
          iff ex x1 be Point of G st x = <*x1*> )
    proof
      let y be set;
      hereby
        assume y is Point of product <*G*>; then
        consider x be Element of the carrier of G such that
        A3: y = I.x by A1,FUNCT_2:113;
        take x;
        thus y = <*x*> by A1,A3;
      end;

      hereby
        assume ex x1 be Point of G st y = <*x1*>; then
        consider x1 be Point of G such that
        A4: y = <*x1*>;
        I.x1 = <*x1*> by A1;
        hence y is Point of product <*G*> by A4;
      end;
    end;

    thus
    A5: for x,y be Point of product <*G*>,
          x1,y1 be Point of G
        st x = <*x1*> & y = <*y1*> holds x+y = <* x1+y1 *>
    proof
      let x,y be Point of product <*G*>;
      let x1,y1 be Point of G;
      assume
      A6: x = <*x1*> & y = <*y1*>;
      A7: I.(x1+y1) = <* x1+y1 *> by A1;
      I.x1 = <*x1*> & I.y1 = <*y1*> by A1;
      hence <* x1+y1 *> = x+y by A1,A6,A7;
    end;

    thus
    0. product <*G*> = <* 0.G *> by A1;

    thus
    for x be Point of product <*G*>,
        x1 be Point of G
    st x = <*x1*> holds -x = <* -x1 *>
    proof
      let x be Point of product <*G*>;
      let x1 be Point of G;
      assume
      A8: x = <*x1*>;
      reconsider y = <* -x1 *> as Point of product <*G*> by A2;
      x+y
       = <* x1+-x1 *> by A5,A8
      .= <* 0.G *> by RLVECT_1:def 10
      .= 0.(product <*G*>) by A1;
      hence thesis by RLVECT_1:def 10;
    end;

    thus
    for x be Point of product <*G*>,
       x1 be Point of G, a be Real
    st x = <*x1*> holds a*x = <* a*x1 *>
    proof
      let x be Point of product <*G*>;
      let x1 be Point of G, a be Real;
      assume
      A9: x = <*x1*>;
      reconsider a0 = a as Element of REAL by XREAL_0:def 1;
      A10: <*x1*> = I.x1 by A1;
      I.(a0*x1) = <* a0*x1 *> by A1;
      hence thesis by A1,A9,A10;
    end;

    thus
    for x be Point of product <*G*>,
       x1 be Point of G
     st x = <*x1*>
    holds ||.x.|| = ||.x1.||
    proof
      let x be Point of product <*G*>;
      let x1 be Point of G;
      assume
      A11: x = <*x1*>;
      ||.I.x1.|| = ||.x.|| by A1,A11;
      hence ||.x.|| = ||.x1.|| by A1;
    end;
  end;
