 reserve R for Ring;
 reserve x, y, y1 for set;
 reserve a, b for Element of R;
 reserve V for LeftMod of R;
 reserve v, w for Vector of V;
 reserve u,v,w for Vector of V;
 reserve F,G,H,I for FinSequence of V;
 reserve j,k,n for Nat;
 reserve f,f9,g for sequence of V;
 reserve R for Ring;
 reserve V, X, Y for LeftMod of R;
 reserve u, u1, u2, v, v1, v2 for Vector of V;
 reserve a for Element of R;
 reserve V1, V2, V3 for Subset of V;
 reserve x for set;
 reserve W, W1, W2 for Submodule of V;
 reserve w, w1, w2 for Vector of W;
 reserve D for non empty set;
 reserve d1 for Element of D;
 reserve A for BinOp of D;
 reserve M for Function of [:the carrier of R,D:],D;
reserve B,C for Coset of W;
 reserve V for LeftMod of R;
 reserve W, W1, W2, W3 for Submodule of V;
 reserve u, u1, u2, v, v1, v2 for Vector of V;
 reserve a, a1, a2 for Element of R;
 reserve X, Y, y, y1, y2 for set;
 reserve C for Coset of W;
 reserve C1 for Coset of W1;
 reserve C2 for Coset of W2;
reserve A1,A2,B for Element of Submodules(V);

theorem
  for AG be non empty Abelian add-associative right_zeroed
    right_complementable addLoopStr holds
  ModuleStr (# the carrier of AG, the addF of AG, the ZeroF of AG,
  Int-mult-left(AG) #) is Z_Module
  proof
    let AG be non empty Abelian add-associative right_zeroed
      right_complementable addLoopStr;
    reconsider ZS = ModuleStr (# the carrier of AG,
      the addF of AG, the ZeroF of AG,
      Int-mult-left(AG) #) as non empty ModuleStr over INT.Ring;
    set ML= the lmult of ZS;
    set AD= the addF of ZS;
    set CA= the carrier of ZS;
    set Z0= the ZeroF of ZS;
    set MLI = Int-mult-left(AG);
    A1: for v, w being Element of ZS holds v + w = w + v
    proof
      let v, w be Element of ZS;
      reconsider v1=v,w1=w as Element of AG;
      thus v + w = v1+w1
      .= w1+v1
      .= w+v;
    end;
    A2: for u, v, w being Element of ZS holds (u + v) + w = u + (v + w)
    proof
      let u, v, w be Element of ZS;
      reconsider u1=u,v1=v,w1=w as Element of AG;
      thus (u + v) + w = u1+v1+w1
      .= u1+(v1+w1) by RLVECT_1:def 3
      .= u+(v+w);
    end;
    A3: for v being Element of ZS holds v + 0.ZS = v
    proof
      let v be Vector of ZS;
      reconsider v1=v as Element of AG;
      thus v + 0.ZS = v1+0.AG
      .= v by RLVECT_1:def 4;
    end;
    A4: now
      let v be Vector of ZS;
      reconsider v1=v as Element of AG;
      consider w1 being Element of AG such that
      A5: v1+w1 = 0.AG by ALGSTR_0:def 11;
      reconsider w=w1 as Element of ZS;
      v+w = 0.ZS by A5;
      hence v is right_complementable;
    end;
    A6: for a, b be Element of INT.Ring, v being Vector of ZS
    holds (a + b) * v = a * v + b * v
    proof
      let a, b be Element of INT.Ring, v being Vector of ZS;
      reconsider a1=a,b1=b as Element of INT;
      reconsider v1=v as Element of AG;
      thus (a+b) * v = MLI.(a,v1) + MLI.(b,v1) by Th159
      .= a * v + b * v;
    end;
    A7: for a be Element of INT.Ring, v, w being Vector of ZS
    holds a * (v + w) = a * v + a * w
    proof
      let a be Element of INT.Ring, v, w being Vector of ZS;
      reconsider a1=a as Element of INT.Ring;
      reconsider v1=v,w1=w as Element of AG;
      thus a * (v + w) = MLI.(a1,v1+w1)
      .= MLI.(a1,v1) + MLI.(a1,w1) by Th161
      .= a * v + a * w;
    end;
    A8: for a, b be Element of INT.Ring for v being Vector of
    ZS holds (a * b) * v = a * (b * v) by Th163;
    for v being Vector of ZS holds (1.(INT.Ring)) * v = v by Th155;
    hence thesis by A1,A2,A3,A4,A6,A7,A8,
      VECTSP_1:def 14,VECTSP_1:def 15,VECTSP_1:def 16,VECTSP_1:def 17,
    ALGSTR_0:def 16,RLVECT_1:def 2,def 3,def 4;
end;
