reserve G,F for RealLinearSpace;

theorem
  for G,F be RealLinearSpace holds
  ( for x be set holds
  ( x is Point of product <*G,F*>
  iff ex x1 be Point of G, x2 be Point of F st x=<* x1,x2 *> ) )
  & ( for x,y be Point of product <*G,F*>,
  x1,y1 be Point of G ,x2,y2 be Point of F
  st x = <*x1,x2*> & y = <*y1,y2*>
  holds x+y = <*x1+y1,x2+y2*> )
  & 0.(product <*G,F*>) = <* 0.G,0.F *>
  & ( for x be Point of product <*G,F*>, x1 be Point of G, x2 be Point of F
  st x=<* x1,x2 *> holds -x = <* -x1,-x2 *> )
  & ( for x be Point of product <*G,F*>, x1 be Point of G, x2 be Point of F,
  a be Real
  st x = <*x1,x2*> holds a*x = <* a*x1,a*x2 *> )
  proof
    let G,F be RealLinearSpace;
    consider I be Function of [:G,F:], product <* G,F *> such that
    A1: I is one-to-one & I is onto
    & ( for x be Point of G, y be Point of F holds I.(x,y) = <* x,y *> )
    & ( for v,w  be Point of [:G,F:] holds I.(v+w) = I.v + I.w )
    & ( for v be Point of [:G,F:], r be Real holds I.(r*v)=r*(I.v) )
    & 0. product <*G,F*> = I.(0.[:G,F:]) by Th12;
    thus
    A2: for x be set holds
    ( x is Point of product <*G,F*>
    iff ex x1 be Point of G, x2 be Point of F st x=<* x1,x2 *> )
    proof
      let y be set;
      hereby assume y is Point of product <*G,F*>; then
        y in the carrier of product <*G,F*>; then
        y in rng I by A1,FUNCT_2:def 3; then
        consider x be Element of the carrier of [:G,F:] such that
        A3:  y = I.x by FUNCT_2:113;
        consider x1 be Point of G, x2 be Point of F such that
        A4:  x=[x1,x2] by Lm1;
        take x1,x2;
        I.(x1,x2) = <*x1,x2*> by A1;
        hence y = <*x1,x2*> by A3,A4;
      end;
      now assume ex x1 be Point of G, x2 be Point of F st y = <*x1,x2*>; then
        consider x1 be Point of G, x2 be Point of F such that
        A5:  y = <*x1,x2*>;
        A6: I.[x1,x2] in rng I by FUNCT_2:112;
        I.(x1,x2) = <*x1,x2*> by A1;
        hence y is Point of product <*G,F*> by A5,A6;
      end;
      hence thesis;
    end;
    thus
    A7: for x,y be Point of product <*G,F*>,
    x1,y1 be Point of G, x2,y2 be Point of F
    st x = <*x1,x2*> & y = <*y1,y2*>
    holds x+y = <*x1+y1,x2+y2*>
    proof
      let x,y be Point of product <*G,F*>;
      let x1,y1 be Point of G, x2,y2 be Point of F;
      assume A8: x = <*x1,x2*> & y = <*y1,y2*>;
      reconsider z=[x1,x2], w=[y1,y2] as Point of [:G,F:];
      A9: z+w = [x1+y1,x2+y2] by Def1;
      I.(x1+y1,x2+y2) = <* x1+y1,x2+y2 *>
      & I.(x1,x2) = <* x1,x2 *> & I.(y1,y2) = <* y1,y2 *> by A1;
      hence <* x1+y1,x2+y2 *> =x+y by A1,A9,A8;
    end;
    thus
    A10: 0. product <*G,F*> = <* 0.G,0.F *>
    proof
      I.(0.G,0.F) = <* 0.G,0.F *> by A1;
      hence thesis by A1;
    end;
    thus for x be Point of product <*G,F*>,
    x1 be Point of G, x2 be Point of F
    st x = <*x1,x2*> holds -x = <* -x1,-x2 *>
    proof
      let x be Point of product <*G,F*>;
      let x1 be Point of G, x2 be Point of F;
      assume A11: x=<* x1,x2 *>;
      reconsider y = <* -x1,-x2 *> as Point of product <*G,F*> by A2;
      x+y = <* x1+-x1,x2+-x2 *> by A7,A11
      .= <* 0.G,x2+-x2 *> by RLVECT_1:def 10
      .= 0.(product <*G,F*>) by A10,RLVECT_1:def 10;
      hence thesis by RLVECT_1:def 10;
    end;
    thus for x be Point of product <*G,F*>,
    x1 be Point of G, x2 be Point of F, a be Real
    st x=<* x1,x2 *> holds a*x = <* a*x1,a*x2 *>
    proof
      let x be Point of product <*G,F*>;
      let x1 be Point of G, x2 be Point of F, a be Real;
      assume A12: x=<* x1,x2 *>;
      reconsider a0=a as Element of REAL by XREAL_0:def 1;
      reconsider y=[x1,x2] as Point of [:G,F:];
      A13: <* x1,x2 *> = I.(x1,x2) by A1;
      I.(a*y) = I.(a0*x1,a0*x2) by Th9
      .= <* a0*x1,a0*x2 *> by A1;
      hence thesis by A1,A12,A13;
    end;
  end;
