reserve G,F for RealLinearSpace;

theorem Th12:
  for X,Y be RealLinearSpace holds
  ex I be Function of [:X,Y:],product <*X,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 Real
  holds I.(r*v)=r*(I.v) )
  & I.(0.[:X,Y:])=0.product <*X,Y*>
  proof
    let X,Y be RealLinearSpace;
    set CarrX = the carrier of X;
    set CarrY = the carrier of Y;
    consider I be Function of [:CarrX,CarrY:],product <*CarrX,CarrY*> such that
    A1: I is one-to-one & I is onto
    & for x,y be object st x in CarrX & y in CarrY
    holds I.(x,y) = <*x,y*> by Th5;
    len carr <*X,Y*> = len <*X,Y*> by PRVECT_1:def 11; then
    A2:len carr <*X,Y*> = 2 by FINSEQ_1:44; then
    A3:dom carr <*X,Y*> = {1,2} by FINSEQ_1:2,def 3;
    len <*X,Y*> = 2 by FINSEQ_1:44; then
    A4:dom <*X,Y*> = {1,2} by FINSEQ_1:2,def 3;
    A5:<*X,Y*>.1 = X & <*X,Y*>.2 = Y;
    1 in {1,2} & 2 in {1,2} by TARSKI:def 2; then
    (carr <*X,Y*>).1 = CarrX & (carr <*X,Y*>).2 = CarrY
    by A4,A5,PRVECT_1:def 11; then
    A6:carr <*X,Y*> = <* CarrX,CarrY *> by A2,FINSEQ_1:44; then
    reconsider I as Function of [:X,Y:],product <*X,Y*>;
    A7:for x be Point of X,y be Point of Y holds I.(x,y) = <*x,y*> by A1;
    A8: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, y1 be Point of Y such that
      A9: v = [x1,y1] by Lm1;
      consider x2 be Point of X, y2 be Point of Y such that
      A10: w = [x2,y2] by Lm1;
      I.v = I.(x1,y1) & I.w = I.(x2,y2) by A9,A10; then
      A11:I.v = <*x1,y1*> & I.w = <*x2,y2*> by A1;
      A12:I.(v+w) =I.(x1+x2,y1+y2) by A9,A10,Def1
      .= <* x1+x2,y1+y2 *> by A1;
      reconsider Iv = I.v, Iw = I.w as Element of product carr <*X,Y*>;
      reconsider j1=1, j2=2 as Element of dom (carr <*X,Y*>)
        by A3,TARSKI:def 2;
      A14: (addop <*X,Y*>).j1 = the addF of (<*X,Y*>.j1) by PRVECT_1:def 12;
      A15: ([:addop <*X,Y*>:].(Iv,Iw)).j1
      = ((addop <*X,Y*>).j1).(Iv.j1,Iw.j1) by PRVECT_1:def 8
      .= x1+x2 by A14,A11;
      A16: (addop <*X,Y*>).j2 = the addF of (<*X,Y*>.j2) by PRVECT_1:def 12;
      A17: ([:addop <*X,Y*>:].(Iv,Iw)).j2
      = ((addop <*X,Y*>).j2).(Iv.j2,Iw.j2) by PRVECT_1:def 8
      .= y1+y2 by A16,A11;
      consider Ivw be Function such that
      A18: I.v + I.w = Ivw & dom Ivw = dom carr <*X,Y*>
      & for i be object st i in dom carr <*X,Y*>
      holds Ivw.i in carr (<*X,Y*>).i by CARD_3:def 5;
      A19: dom Ivw = Seg 2 by A2,A18,FINSEQ_1:def 3; then
      reconsider Ivw as FinSequence by FINSEQ_1:def 2;
      len Ivw = 2 by A19,FINSEQ_1:def 3;
      hence thesis by A12,A18,A15,A17,FINSEQ_1:44;
    end;
    A20:for v be Point of [:X,Y:], r be Real holds I.(r*v)=r*(I.v)
    proof
      let v be Point of [:X,Y:], r be Real;
      consider x1 be Point of X, y1 be Point of Y such that
      A21: v = [x1,y1] by Lm1;
      A22:I.v =I.(x1,y1) by A21 .= <*x1,y1*> by A1;
      A23:I.(r*v) =I.(r*x1,r*y1) by A21,Def2 .= <* r*x1,r*y1 *> by A1;
      reconsider j1=1, j2=2 as Element of dom carr <*X,Y*> by A3,TARSKI:def 2;
      A25: (multop <*X,Y*>).j1 = the Mult of (<*X,Y*>.j1)
      & (multop <*X,Y*>).j2 = the Mult of (<*X,Y*>.j2) by PRVECT_2:def 8;
      reconsider Iv = I.v as Element of product carr <*X,Y*>;
      reconsider rr=r as Element of REAL by XREAL_0:def 1;
      ([:multop <*X,Y*>:].(rr,Iv)).j1 = ((multop <*X,Y*>).j1).(r,Iv.j1)
      & ([:multop <*X,Y*>:].(rr,Iv)).j2 = ((multop <*X,Y*>).j2).(r,Iv.j2)
      by PRVECT_2:def 2; then
      A26: ([:multop <*X,Y*>:].(rr,Iv)).j1 = r*x1
      & ([:multop <*X,Y*>:].(rr,Iv)).j2 = r*y1 by A25,A22;
      consider Ivw be Function such that
      A27: r*(I.v) = Ivw & dom Ivw = dom carr <*X,Y*>
      & for i be object st i in dom carr <*X,Y*>
holds Ivw.i in carr (<*X,Y*>).i
      by CARD_3:def 5;
      A28: dom Ivw = Seg 2 by A2,A27,FINSEQ_1:def 3; then
      reconsider Ivw as FinSequence by FINSEQ_1:def 2;
      len Ivw = 2 by A28,FINSEQ_1:def 3;
      hence thesis by A23,A27,A26,FINSEQ_1:44;
    end;
    I.(0.[:X,Y:]) = I.(0.[:X,Y:] + 0.[:X,Y:])
    .= I.(0.[:X,Y:]) + I.(0.[:X,Y:]) by A8; then
    I.(0.[:X,Y:]) - I.(0.[:X,Y:])
    = I.(0.[:X,Y:]) + (I.(0.[:X,Y:]) - I.(0.[:X,Y:])) by RLVECT_1:28
    .= I.(0.[:X,Y:]) + 0.product <*X,Y*> by RLVECT_1:15
    .= I.(0.[:X,Y:]); then
    0.product <*X,Y*> = I.(0.[:X,Y:]) by RLVECT_1:15;
    hence thesis by A7,A8,A20,A1,A6;
  end;
