 CoCalc Public Fileswww / gross / lattices-aug9.tex
Author: William A. Stein
1\documentclass{article}
2\include{macros}
3\title{A Lattice Computation for Dick Gross}
4\date{August 2001}
5\begin{document}
6\maketitle
7\section{The Assignment}
8\begin{verbatim}
9From: gross@math.harvard.edu
10To: was@math.harvard.edu
11Date: Wed, 8 Aug 2001 10:52:49 -0400 (EDT)
12\end{verbatim}
13I have a computational request, which isn't entirely trivial. Take the
14reciprocal polynomial of degree~$18$:
15$$x^{18} - x^{17} + x^{16} - x^{15} - x^{12} + x^{11} 16 - x^{10} + x^9 - x^8 + x^7 - x^6 - x^3 17 + x^2 - x + 1.$$
18
19
20If I entered it correctly, the discriminant = $(53995179961)^2$. There is
21a degree~$9$ polynomial satisfied by $(x + 1/x)$, of
22discriminant $53995179961$, call this~$g(x)$.
23
24First, verify that both the degree~$9$ field and the degree $18$ field have
25class number~$1$. Next, find a totally positive generator for the inverse
26different ideal I of the degree~$9$ field. This has generator $1/g'(x)$, but
27that isn't totally positive, so this involves finding a unit of the right
28signs. Anyhow, call the totally positive generator d, and let A be the ring
29of integers of the degree~$9$ field, generated by a root of $g(x)$ over $\Z$.
30
31Finally,  consider the Euclidean lattive~$L$ of rank~$9$, with elements in
32the ring of integers~$A$ and with bilinear form $\langle a,b\rangle = \Tr(dab)$.
33This lattice is unimodular and positive definite, so by the theory of lattices
34is either isomorphic to $\Z^9$ or to $E_8 + \Z$. I suspect that the latter is
35true. If one did a search for vectors a with $\langle a,a\rangle = 1$, one could
36distinguish these lattices, as the former has~$18$ such vectors, and the
37latter has only~$2$. Is this doable?
38
40\subsection{Class number of degree 18 field in PARI}
41\begin{verbatim}
42? f = x^18 - x^17 + x^16 - x^15 - x^12 + x^11 - x^10 + x^9 - x^8 \
43           + x^7 - x^6 - x^3 + x^2 - x + 1;
44? factor(poldisc(f))
45%1 =
46[53995179961 2]
47? b = bnfclassunit(f);
48? b.clgp
49%2 = [1, [], []]
50\end{verbatim}
51
52\subsection{Creating the degree 9 field in MAGMA}
53\begin{verbatim}
54> f := x^18 - x^17 + x^16 - x^15 - x^12 + x^11 - x^10 + x^9 - x^8
55          + x^7 - x^6 - x^3 + x^2 - x + 1;
56> factor(Discriminant(f));
57[ <53995179961, 2> ]
58> K<a> := NumberField(f);
59> L<b> := sub<K|a+1/a>;
60> L;
61Number Field with defining polynomial x^9 - 3*x^8 - 23*x^7 +
62   35*x^6 + 81*x^5 - 116*x^4 - 67*x^3 + 104*x^2 + 8*x - 19
63   over the Rational Field
64> time h := ClassNumber(MaximalOrder(L));
65Time: 1.350
66> h;
671
68\end{verbatim}
69
70\subsection{Computing the unit group}
71Next we find the group of units.
72\begin{verbatim}
73> g := DefiningPolynomial(L);
74> g;
75x^9 - 3*x^8 - 23*x^7 + 35*x^6 + 81*x^5 - 116*x^4 - 67*x^3 + 104*x^2 + 8*x - 19
76> Roots(PolynomialRing(RealField())!g);
77[ <-0.468111906454000689322313234631336807368973901776, 1>, <0.558484342299467301848260817414060396183155100382, 1>, <1.2313073740889668988677367163865053658, 1>, <1.3706568287964283199650620889897443169, 1>, <1.1474930126118010257418142242557119149, 1>, <5.6479185634867740095959132409297992529, 1>, <-3.6958681103558892478674250772828809120, 1>, <-1.7843250602092410500834767489211165859, 1>, <-1.00755504426430656874557202714048694160132114234, 1> ]
78> #$1; 799 80> O := MaximalOrder(L); 81> U,phi := UnitGroup(O); // takes < 10 seconds 82> U; // as expected (r-1) 83Abelian Group isomorphic to Z/2 + Z (8 copies) 84Defined on 9 generators 85Relations: 862*U.1 = 0 87> [phi(U.i) : i in [1..9]]; // on a basis for O. 88[ 89[-1, 0, 0, 0, 0, 0, 0, 0, 0], 90[2444, 1559, 4517, 2264, 3770, 4548, 2086, 1083, -6909], 91[24992, 15909, 46139, 23157, 38546, 46485, 21320, 11069, -70615], 92[18236, 11605, 33686, 16906, 28130, 33927, 15561, 8079, -51540], 93[2443, 1559, 4517, 2264, 3770, 4548, 2086, 1083, -6909], 94[47385, 30164, 87513, 43915, 73086, 88147, 40429, 20990, -133906], 95[2307, 1466, 4259, 2146, 3558, 4288, 1968, 1022, -6519], 96[15894, 10113, 29338, 14725, 24515, 29563, 13558, 7039, -44906], 97[2500, 1586, 4596, 2316, 3851, 4639, 2128, 1105, -7049] 98] 99\end{verbatim} 100 101\subsection{Finding a totally positive generator for the inverse different.} 102\begin{verbatim} 103> gprime := Derivative(g); gprime; 1049*x^8 - 24*x^7 - 161*x^6 + 210*x^5 + 405*x^4 - 464*x^3 - 201*x^2 + 208*x + 8 105> alpha := 1/Evaluate(gprime,b); 106> // This element is not totally positive 107> RR<y> := PolynomialRing(RealField()); 108> #[r : r in Roots(RR!MinimalPolynomial(alpha)) | r gt 0]; 1095 // 5 is less than 9 = # embeddings 110\end{verbatim} 111Since~$\alpha$is not totally positive, we have to find a unit$u$such 112that$u\alpha$is totally positive. 113\begin{verbatim} 114> R := [r : r in Roots(RR!g)]; // these correspond to the real embeddings. 115> function EmbeddingSigns(z) 116 h := RR!Eltseq(L!z); 117 return [Sign(Evaluate(h, R[i])) : i in [1..#R]]; 118 end function; 119> EmbeddingSigns(alpha); 120[ -1, 1, 1, -1, -1, 1, 1, -1, 1 ] 121> EmbeddingSigns(alpha^2); // a good check. 122[ 1, 1, 1, 1, 1, 1, 1, 1, 1 ] 123\end{verbatim} 124We can now see the embedding signs for the units. 125\begin{verbatim} 126> for i in [1..9] do EmbeddingSigns(phi(U.i)); end for; 127[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ] 128[ -1, 1, -1, -1, 1, 1, 1, 1, -1 ] 129[ 1, 1, -1, 1, 1, -1, -1, -1, -1 ] 130[ 1, -1, -1, -1, -1, 1, 1, -1, 1 ] 131[ -1, -1, -1, -1, -1, 1, 1, 1, -1 ] 132[ 1, -1, 1, -1, 1, -1, 1, 1, -1 ] 133[ 1, -1, 1, -1, 1, -1, 1, -1, -1 ] 134[ 1, -1, -1, 1, -1, 1, -1, 1, 1 ] 135[ 1, 1, -1, -1, -1, 1, 1, -1, -1 ] 136\end{verbatim} 137Now the problem is reduced to linear algebra over$\F_2$. 138\begin{verbatim} 139> A := MatrixAlgebra(GF(2),9)!0; 140> for r in [1..9] do for c in [1..9] do 141 if EmbeddingSigns(phi(U.r))[c] eq -1 then A[r,c] := 1; end if; 142 end for; end for; 143> A; 144[1 1 1 1 1 1 1 1 1] 145[1 0 1 1 0 0 0 0 1] 146[0 0 1 0 0 1 1 1 1] 147[0 1 1 1 1 0 0 1 0] 148[1 1 1 1 1 0 0 0 1] 149[0 1 0 1 0 1 0 0 1] 150[0 1 0 1 0 1 0 1 1] 151[0 1 1 0 1 0 1 0 0] 152[0 0 1 1 1 0 0 1 1] 153> Rank(A); 1548 155> V := RowSpace(A); 156> W := VectorSpace(GF(2),9); 157> v1 := W![1,0,0,1,1,0,0,1,0]; 158> v2 := W![0,1,1,0,0,1,1,0,1]; 159> v1 in V; 160false 161> v2 in V; 162false 163\end{verbatim} 164Ut oh, something's wrong. There is no totally positive generator of the inverse different! 165 166Since$V$has dimension 8, NOT dimension$9$, there is a nontrivial 167totally positive unit. Let's exhibit it. 168\begin{verbatim} 169> Kernel(A); 170Vector space of degree 9, dimension 1 over GF(2) 171Echelonized basis: 172(1 0 0 0 1 1 0 1 1) 173> EmbeddingSigns(phi(U.1*U.5*U.6*U.8*U.9)); 174[ 1, 1, 1, 1, 1, 1, 1, 1, 1 ] 175> aa := U.1*U.5*U.6*U.8*U.9; 176> MinimalPolynomial(phi(aa)); 177$.1^9 - 37*$.1^8 + 334*$.1^7 - 1251*$.1^6 + 2322*$.1^5 - 2250*$.1^4 + 1125*$.1^3 - 272*$.1^2 + 28*$.1 - 1
178> ZZ<x> := Parent($1); 179> MinimalPolynomial(phi(aa)); 180x^9 - 37*x^8 + 334*x^7 - 1251*x^6 + 2322*x^5 - 2250*x^4 + 1125*x^3 - 272*x^2 + 28*x - 1 181> [r gt 0 : r in Roots(RR!MinimalPolynomial(phi(aa)))]; 182[ true, true, true, true, true, true, true, true, true ] 183\end{verbatim} 184Thus 185$$x^9 - 37x^8 + 334x^7 - 1251x^6 + 2322x^5 - 2250x^4 + 1125x^3 - 272x^2 + 28x - 1$$ 186is the characteristic polynomial of a nontrivially nonsquare 187totally positive unit. 188 189 190I'm confused, so I send the following email: 191\begin{verbatim} 192To: gross@math.harvard.edu 193Date: Wed, 8 Aug 2001 19:30:00 -0400 194 195 196Dear Dick, 197 198I should clarify that I had checked that the totally positive unit 199that I sent you in the proceeding email is not a square. 200 201I flipped through the paper you gave me and came across your 202Proposition 12.1. I think that condition (a) of that proposition 203isn't satisfied for the field k defined by the polynomial 204 205 f = x^18 - x^17 + x^16 - x^15 - x^12 + x^11 - x^10 + x^9 - x^8 206 + x^7 - x^6 - x^3 + x^2 - x + 1 207 208I mapped the units to (F_2)^9 using the map that sends a unit to 209sequence of 1s and 0s, where a 1 means that the corresponding 210embedding of the unit is negative. Unless I made a mistake, 211the image has the following basis: 212[ 213(1 0 0 0 0 0 0 0 1), 214(0 1 0 0 0 0 0 0 1), 215(0 0 1 0 0 0 0 0 1), 216(0 0 0 1 0 0 0 0 1), 217(0 0 0 0 1 0 0 0 1), 218(0 0 0 0 0 1 0 0 1), 219(0 0 0 0 0 0 1 0 1), 220(0 0 0 0 0 0 0 1 0) 221] 222 223So we don't have the vector (0 0 0 0 0 0 0 1 1). 224 225I think by "strict class number" you mean the "narrow class number", 226because of what the mathscinet review of "On the$4$-rank of the 227strict class group of a quadratic number field" says. Using PARI, I 228find that the narrow class number of Q[x]/(f) is 1, not 2 like it 229would have to be to use in Proposition 12.1. Here's how the PARI 230computation of the narrow class number goes: 231? f = x^18 - x^17 + x^16 - x^15 - x^12 + x^11 - x^10 + x^9 - x^8 \ 232 + x^7 - x^6 - x^3 + x^2 - x + 1; 233? k=bnfinit(f); 234? bnfnarrow(k) 235%1 = [1, [], []] 236 237 238 -- William 239\end{verbatim} 240 241He responds 242\begin{verbatim} 243From: gross@math.harvard.edu 244To: was@math.harvard.edu 245Date: Thu, 9 Aug 2001 09:46:43 -0400 (EDT) 246 247 248In my paper, the field k is defined by the 9th degree polynomial, which 249I think is 250 251y^9 - y^8 - 8*y^7 + 7*y^6 + 20*y^5 - 14*y^4 - 17*y^3 + 8*y^2 + 4*y - 1 252 253and the field K is defined by the 18th degree polynomial I sent you. 254The strict class number of k is 2, and the strict class number of K 255is 1. 256 257You are right that there is a relation on the signs of units in k, so 258there is a totally positive unit which is not a square. The relation 259is that the product of signs over the 8 real places which become 260complex in K is equal to 1; these correspond to the 8 roots of the 261polynomial g(y) above which lie in the interval -2 < y < 2. But 262g'(y) is positive at 4 of these roots, and negative at 4 of them, by 263what I used to teach in math 1a. So there should be a unit u which 264makes u/g'(y) totally positive. One can modify u by the totally 265positive unit you sent me, and that gives the two lattices L1 and L2 266of my paper. 267 268Dick 269 270--- 271Let g(y) = y^9 - y^8 - 8*y^7 + 7*y^6 + 20*y^5 - 14*y^4 - 17*y^3 + 8*y^2 + 4*y - 1 272 273be the polynomial for the degree 9 field k, and index the real places of k by 274the roots of g(y), in increasing order, from -1.995.. to 2.029.. Just fooling 275around, I found the following units, with their signs: 276 277-1 - - - - - - - - - 278y - - - - + + + + + 279y-2 - - - - - - - - + 280y-1 - - - - - - + + + 281y+2 + + + + + + + + + (and not a square). 282 283With a little more work, I found the signs 284 285 + + + - - - - + + for y^2 - y - 1 286 + - - + + + - - + for y^4 - 4*y^2 + 2 287 288Anyhow, this fits my prediction that the only relation on signs is that the 289first 8 entries (the real places ramified in K/k) have an even number of 290- signs. Since g'(y) has the signs + - + - + - + - +, we should be able to 291find a unit that matches it. 292 293Dick 294--- 295 296 297 298Since g(y) + 1 = (y-2)*(y-1)^2*(y)*(y+1)*(y+2)*(y^3-3*y-1), the elements 299 300y-2,y-1,y,y+1,y+2 are all units. Amazing. 301 302Dick 303\end{verbatim} 304 305Indeed, 306\begin{verbatim} 307? g=x^9 - 3*x^8 - 23*x^7 + 35*x^6 + 81*x^5 - \ 308 116*x^4 - 67*x^3 + 104*x^2 + 8*x - 19; 309? k=bnfinit(g); 310? bnfnarrow(k) 311%5 = [2, ...] 312\end{verbatim} 313 314Now I see what the problem is. The degree 9 polynomial~$g$that I've been 315using above is {\em not} the minimal polynomial of$x+1/x$; it's just 316a polynomial that MAGMA chose which corresponds to the same field, but 317is somehow reduced in a better way than the minimal polynomial of 318$x+1/x$. So, we restart the computation with the correct~$g$. 319time h := ClassNumber(MaximalOrder(L)); 320 321\begin{verbatim} 322 323> f := x^18 - x^17 + x^16 - x^15 - x^12 + x^11 - x^10 + x^9 - x^8 324 + x^7 - x^6 - x^3 + x^2 - x + 1; 325> K<a> := NumberField(f); 326> g := MinimalPolynomial(a+1/a); 327> g; 328x^9 - x^8 - 8*x^7 + 7*x^6 + 20*x^5 - 14*x^4 - 17*x^3 + 8*x^2 + 4*x - 1 329> L<b> := NumberField(g); 330> L; 331Number Field with defining polynomial x^9 - x^8 - 8*x^7 + 7*x^6 + 20*x^5 - 14*x^4 - 17*x^3 + 8*x^2 + 4*x - 1 over the Rational Field 332> time h := ClassNumber(MaximalOrder(L)); 333Time: 0.900 334> h; 3351 336> O := MaximalOrder(L); 337> time U,phi := UnitGroup(O); // takes < 10 seconds 338Time: 2.800 339> U; // as expected (r-1) 340Abelian Group isomorphic to Z/2 + Z (8 copies) 341Defined on 9 generators 342Relations: 3432*U.1 = 0 344> gprime := Derivative(g); gprime; 3459*x^8 - 8*x^7 - 56*x^6 + 42*x^5 + 100*x^4 - 56*x^3 - 51*x^2 + 16*x + 4 346> alpha := 1/Evaluate(gprime,b); 347> RR<y> := PolynomialRing(RealField()); 348> #[r : r in Roots(RR!MinimalPolynomial(alpha)) | r gt 0]; 3495 350> R := [r : r in Roots(RR!g)]; // these correspond to the real embeddings. 351> function EmbeddingSigns(z) 352 h := RR!Eltseq(L!z); 353 return [Sign(Evaluate(h, R[i])) : i in [1..#R]]; 354 end function; 355function> function> function> > 356> 357> EmbeddingSigns(alpha); 358[ -1, 1, -1, 1, -1, 1, 1, -1, 1 ] 359> for i in [1..9] do EmbeddingSigns(phi(U.i)); end for; 360[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ] 361[ 1, 1, -1, 1, 1, 1, -1, -1, -1 ] 362[ 1, 1, -1, -1, -1, -1, 1, 1, -1 ] 363[ 1, 1, 1, -1, -1, 1, 1, -1, -1 ] 364[ 1, 1, 1, -1, -1, -1, 1, 1, 1 ] 365[ 1, -1, -1, -1, 1, -1, 1, -1, 1 ] 366[ 1, -1, -1, -1, 1, 1, 1, -1, 1 ] 367[ 1, 1, 1, 1, -1, -1, -1, -1, -1 ] 368[ 1, -1, -1, 1, 1, -1, -1, 1, -1 ] 369> A := MatrixAlgebra(GF(2),9)!0; 370> for r in [1..9] do for c in [1..9] do 371> for|for> if EmbeddingSigns(phi(U.r))[c] eq -1 then A[r,c] := 1; end if; 372 end for; end for; 373for|for> > 374> A; 375[1 1 1 1 1 1 1 1 1] 376[0 0 1 0 0 0 1 1 1] 377[0 0 1 1 1 1 0 0 1] 378[0 0 0 1 1 0 0 1 1] 379[0 0 0 1 1 1 0 0 0] 380[0 1 1 1 0 1 0 1 0] 381[0 1 1 1 0 0 0 1 0] 382[0 0 0 0 1 1 1 1 1] 383[0 1 1 0 0 1 1 0 1] 384> V := RowSpace(A); 385> V; 386Vector space of degree 9, dimension 8 over GF(2) 387Echelonized basis: 388(1 0 0 0 0 0 0 0 1) 389(0 1 0 0 0 0 0 0 1) 390(0 0 1 0 0 0 0 0 1) 391(0 0 0 1 0 0 0 0 1) 392(0 0 0 0 1 0 0 0 1) 393(0 0 0 0 0 1 0 0 0) 394(0 0 0 0 0 0 1 0 1) 395(0 0 0 0 0 0 0 1 1) 396> W := VectorSpace(GF(2),9); 397> // [ -1, 1, -1, 1, -1, 1, 1, -1, 1 ] 398> v := W![1,0,1,0,1,0,0,1,0]; 399> > v in V; 400true 401> v; 402(1 0 1 0 1 0 0 1 0) 403> Eltseq(V!v); 404[ 1, 0, 1, 0, 1, 0, 0, 1, 0 ] 405> ?Solve; 406MAGMA_HTML_DIR is not set 407> Solution(A,v); 408(1 1 0 0 0 1 0 0 0) 409> alpha; 4101/53995179961*(8462152596*b^8 - 6852528273*b^7 - 64893174399*b^6 + 44327911581*b^5 + 148290056856*b^4 - 74228933970*b^3 - 99225969383*b^2 + 23785291597*b + 10873550202) 411> d := alpha*phi(U.1+U.2+U.6); 412> EmbeddingSigns(d); 413[ 1, 1, 1, 1, 1, 1, 1, 1, 1 ] 414> d; 4151/53995179961*(-3426147347*b^8 + 817946757*b^7 + 29470572047*b^6 - 3984702109*b^5 - 80455461231*b^4 + 2178527185*b^3 + 70870946633*b^2 + 3409710051*b - 2902988849) 416> Norm(d); 4171/53995179961 418> Norm(alpha); 4191/53995179961 420> // d is the totally positive generator for the inverse different! 421> Kernel(A); 422Vector space of degree 9, dimension 1 over GF(2) 423Echelonized basis: 424(0 0 0 0 1 1 0 1 1) 425> // ... and, that's a nonsquare unit that is totally positive... 426> 427> O; 428Maximal Equation Order with defining polynomial x^9 - x^8 - 8*x^7 + 7*x^6 + 20*x^5 - 14*x^4 - 17*x^3 + 8*x^2 + 4*x - 1 over Z 429> Trace(d*O.1*O.2); 4300 431> Trace(d*O.1*O.3); 4321 433> function bin(a,b) return Trace(d*a*b); end function; 434> bin(O.1,O.3); 4351 436> Type($1);
437FldRatElt
438> B := MatrixAlgebra(Rationals(),9)!0;
439> for r in [1..9] do for c in [1..9] do B[r,c] := bin(O.r,O.c); end for; end for;
440> B;
441[   1    0    1    0    2    0    6    0   21]
442[   0    1    0    2    0    6    0   21    0]
443[   1    0    2    0    6    0   21    0   78]
444[   0    2    0    6    0   21    0   78    0]
445[   2    0    6    0   21    0   78    0  298]
446[   0    6    0   21    0   78    0  298    0]
447[   6    0   21    0   78    0  298    0 1157]
448[   0   21    0   78    0  298    0 1157    1]
449[  21    0   78    0  298    0 1157    1 4539]
450> Determinant(B);
4511
452> // B is the Gram matrix that defines our lattice.
453> L := LatticeWithGram(B);
454> L;
455Standard Lattice of rank 9 and degree 9
456Inner Product Matrix:
457[   1    0    1    0    2    0    6    0   21]
458[   0    1    0    2    0    6    0   21    0]
459[   1    0    2    0    6    0   21    0   78]
460[   0    2    0    6    0   21    0   78    0]
461[   2    0    6    0   21    0   78    0  298]
462[   0    6    0   21    0   78    0  298    0]
463[   6    0   21    0   78    0  298    0 1157]
464[   0   21    0   78    0  298    0 1157    1]
465[  21    0   78    0  298    0 1157    1 4539]
466> time short := ShortVectors(L,1);
467Time: 0.000
468> short;
469[
470<( 1  0 -1  0  0  0  0  0  0), 1>,
471<(1 0 0 0 0 0 0 0 0), 1>,
472<( 2  0 -4  0  1  0  0  0  0), 1>,
473<( 3  0 -9  0  6  0 -1  0  0), 1>,
474<(  4   0 -17   0  20   0  -8   0   1), 1>,
475<(  4   3 -17  -9  20   6  -8  -1   1), 1>,
476<(  4   5 -17 -13  20   7  -8  -1   1), 1>,
477<(  4   7 -17 -14  20   7  -8  -1   1), 1>,
478<(0 1 0 0 0 0 0 0 0), 1>
479]
480\end{verbatim}
481
482Now I'll send an email:
483
484\begin{verbatim}
485Dear Dick,
486
487The problem was that MAGMA chose the wrong polynomial as defining
488polynomial for the subfield.  With the correct polynomial, the
489computation was very easy.  A totally-positive generator for the
490inverse different has minimal polynomial
491
492x^9 - x^8 + 21031903322/53995179961*x^7 - 4130791902/53995179961*x^6 +
493    447388898/53995179961*x^5 - 27890118/53995179961*x^4 +
494    1015898/53995179961*x^3 - 21138/53995179961*x^2 + 230/53995179961*x
495    - 1/53995179961
496
497The rank 9 lattice is defined by the Gram matrix:
498[   1    0    1    0    2    0    6    0   21]
499[   0    1    0    2    0    6    0   21    0]
500[   1    0    2    0    6    0   21    0   78]
501[   0    2    0    6    0   21    0   78    0]
502[   2    0    6    0   21    0   78    0  298]
503[   0    6    0   21    0   78    0  298    0]
504[   6    0   21    0   78    0  298    0 1157]
505[   0   21    0   78    0  298    0 1157    1]
506[  21    0   78    0  298    0 1157    1 4539]
507
508This lattice has 18 vectors of length 1, so it's Z^9.
509The vectors, up to sign and along with their norms, are:
510[
511<( 1  0 -1  0  0  0  0  0  0), 1>,
512<(1 0 0 0 0 0 0 0 0), 1>,
513<( 2  0 -4  0  1  0  0  0  0), 1>,
514<( 3  0 -9  0  6  0 -1  0  0), 1>,
515<(  4   0 -17   0  20   0  -8   0   1), 1>,
516<(  4   3 -17  -9  20   6  -8  -1   1), 1>,
517<(  4   5 -17 -13  20   7  -8  -1   1), 1>,
518<(  4   7 -17 -14  20   7  -8  -1   1), 1>,
519<(0 1 0 0 0 0 0 0 0), 1>
520]
521\end{verbatim}
522
523Then Dick asked me to compute the same info with $d$ multiplied
524by $b+2$:
525
526\begin{verbatim}
527> restore "august9.session";
528Restoring Magma state from "august9.session"
529> d;
5301/53995179961*(-3426147347*b^8 + 817946757*b^7 + 29470572047*b^6 - 3984702109*b^5 - 80455461231*b^4 + 2178527185*b^3 + 70870946633*b^2 + 3409710051*b - 2902988849)
531> EmbeddingSigns(b+2);
532[ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
533> d2 := (b+2)*d;
534> function bin2(a,b) return Trace(d2*a*b); end function;
535> B2 := MatrixAlgebra(Rationals(),9)!0;
536> for r in [1..9] do for c in [1..9] do B2[r,c] := bin2(O.r,O.c); end for; end for;
537> B2;
538[   2    1    2    2    4    6   12   21   42]
539[   1    2    2    4    6   12   21   42   78]
540[   2    2    4    6   12   21   42   78  156]
541[   2    4    6   12   21   42   78  156  298]
542[   4    6   12   21   42   78  156  298  596]
543[   6   12   21   42   78  156  298  596 1157]
544[  12   21   42   78  156  298  596 1157 2315]
545[  21   42   78  156  298  596 1157 2315 4541]
546[  42   78  156  298  596 1157 2315 4541 9095]
547>
548> L2 :=  LatticeWithGram(B2);
549> L2;
550Standard Lattice of rank 9 and degree 9
551Inner Product Matrix:
552[   2    1    2    2    4    6   12   21   42]
553[   1    2    2    4    6   12   21   42   78]
554[   2    2    4    6   12   21   42   78  156]
555[   2    4    6   12   21   42   78  156  298]
556[   4    6   12   21   42   78  156  298  596]
557[   6   12   21   42   78  156  298  596 1157]
558[  12   21   42   78  156  298  596 1157 2315]
559[  21   42   78  156  298  596 1157 2315 4541]
560[  42   78  156  298  596 1157 2315 4541 9095]
561>  time short2 := ShortVectors(L2,1);
562Time: 0.000
563> #short2;
5641
565> short2;
566[
567<( 2 -1 -8  4  8 -4 -2  1  0), 1>
568]
569> Determinant(L2);
5701
571> save "august9.session";
572Saving Magma state to "august9.session"
573\end{verbatim}
574
575I then wrote to him:
576
577\begin{verbatim}
578From: William A. Stein <was@math.harvard.edu>
579To: gross@math.harvard.edu
580Date: Thu, 9 Aug 2001 16:09:04 -0400
581
582
583On Thursday 09 August 2001 04:02 pm, you wrote:
584> Great. Could you now multiply the totally positive generator you used
585> by the totally positive unit (x+2) and calculate the new Gram matrix and
586> lattice. Is it also Z^9?
587
588
589No, it's not!
590
591The Gram matrix for this other lattice is
592
593[   2    1    2    2    4    6   12   21   42]
594[   1    2    2    4    6   12   21   42   78]
595[   2    2    4    6   12   21   42   78  156]
596[   2    4    6   12   21   42   78  156  298]
597[   4    6   12   21   42   78  156  298  596]
598[   6   12   21   42   78  156  298  596 1157]
599[  12   21   42   78  156  298  596 1157 2315]
600[  21   42   78  156  298  596 1157 2315 4541]
601[  42   78  156  298  596 1157 2315 4541 9095]
602
603There are only two vectors of length 1:
604
605  ( 2 -1 -8  4  8 -4 -2  1  0) and its negative.
606
607Best regards,
608
609   William
610\end{verbatim}
611
612
613
614\end{document}
615