
theorem LmDE311:
  for L being non trivial RATional positive-definite Z_Lattice,
      b being OrdBasis of L holds
  ex a being Element of F_Real st a is Element of INT.Ring &
  a <> 0 &
  a*((GramMatrix(b))~) is Matrix of dim(L),INT.Ring
  proof
    let L be non trivial RATional positive-definite Z_Lattice,
        b be OrdBasis of L;
    set G = (GramMatrix(b))~;
    reconsider M = G as Matrix of dim(L),F_Rat by ThGM3;
    A2: rng M c= (the carrier of F_Rat)*;
    A5: len M = dim(L) & width M = dim(L) by MATRIX_0:24;
    B1: for i, j being Nat st [i,j] in Indices G holds
    G * (i,j) in the carrier of F_Rat
    proof
      let i, j be Nat;
      assume B10: [i,j] in Indices G;
      then consider p be FinSequence of F_Real such that
      B11: p = G . i & G * (i,j) = p.j by MATRIX_0:def 5;
      B12: i in dom G & j in Seg (width G) by ZFMISC_1:87,B10;
      then p in rng G by B11,FUNCT_1:3;
      then
      B14:len p = width G by A5,MATRIX_0:def 3;
      p in (the carrier of F_Rat)* by A2,B11,B12,FUNCT_1:3;
      then p is FinSequence of F_Rat by FINSEQ_1:def 11; then
      B15: rng p c= the carrier of F_Rat by FINSEQ_1:def 4;
      j in dom p by B12,B14,FINSEQ_1:def 3;
      hence G * (i,j) in the carrier of F_Rat by B11,B15,FUNCT_1:3;
    end;
    deffunc F(Nat,Nat) = G * ($1,$2);
    set Dn = { F(u,v) where u is Element of NAT, v is Element of NAT :
    u in Seg (len G) & v in Seg (width G) };
    F1: Seg (len G) is finite;
    F2: Seg (width G) is finite;
    F3: Dn is finite from FRAENKEL:sch 22(F1,F2);
    D2: {G * (i,j) where i,j is Nat : [i,j] in Indices G} c= Dn
    proof
      let x be object;
      assume x in {G * (i,j) where i,j is Nat : [i,j] in Indices G};
      then consider i,j be Nat such that
      F40: x = G * (i,j) & [i,j] in Indices G;
      i in dom G & j in Seg (width G) by ZFMISC_1:87,F40;
      then i in Seg (len G) & j in Seg (width G) by FINSEQ_1:def 3;
      hence x in Dn by F40;
    end;
    {G * (i,j) where i,j is Nat : [i,j] in Indices G}
      c= the carrier of F_Rat
    proof
      let x be object;
      assume x in {G * (i,j) where i,j  is Nat  : [i,j] in Indices G};
      then consider i,j be Nat such that
      D1: x = G * (i,j) & [i,j] in Indices G;
      thus x in the carrier of F_Rat by B1,D1;
    end;
    then reconsider X = {G * (i,j) where i,j is Nat : [i,j] in Indices G}
    as finite Subset of F_Rat by D2,F3;
    consider a be Element of INT such that
    A10: a <> 0 &
    for r being Element of RAT st r in X holds a*r in INT by LmDE311A;
    reconsider a as Element of F_Real by NUMBERS:15;
    A6: len (a*G) = dim(L) & width (a*G) = dim(L) by MATRIX_0:24;
    take a;
    thus a is Element of INT.Ring & a <> 0 by A10;
    for i, j being Nat st [i,j] in Indices (a*G) holds
    (a*G) * (i,j) in the carrier of INT.Ring
    proof
      let i, j be Nat;
      assume B1: [i,j] in Indices (a*G);
      B2: Indices G = [:(Seg dim L),(Seg dim L):] by MATRIX_0:24
      .= Indices (a*G) by MATRIX_0:24; then
      B3: (a*G) * (i,j) = a * ( G * (i,j) ) by B1,MATRIX_3:def 5;
      G * (i,j) in X by B1,B2;
      hence (a*G) * (i,j) in the carrier of INT.Ring by A10,B3;
    end;
    hence thesis by A6,MATRIX_0:20,ZMATRLIN:5;
  end;
