One More Lattice Computation

William Stein

August 16, 2001

Contents

1 The Question 1

2 The Input 2

3 The Output 3

1 The Question

Subject: one more
From: gross@math.harvard.edu
To: was@abel.math.harvard.edu
Date: Thu, 16 Aug 2001 10:42:16 -0400 (EDT)
Dear William,
I want to request one more computation, like the one you did for me last
week. It's in a simpler case, but I need a little more data.
Start with the 5th degree polynomial:
y^5 - 5*y^3 + 4*y -1
which has discriminant 38569, and 5 real roots. A root y generates the
ring A = Z[y] of integers in a totally real 5th degree numberfield,
with class number 1 and strict class number 2. I calculated totally
positive generators of the inverse different, up to squares of units,
and got:
d = (y^4 -4*y^2 + 1)/(5*y^4 - 15*y^2 + 4)
d' = (y+2)*d
if I did it right. Consider the lattices L = A with form Tr(dxy), and
L' = A with form Tr(d'xy). Both are integral, unimodular, positive
definite of rank 5, so must be isomorphic to Z^5. Hence both have
10 short vectors of lenght 1, or five short vectors up to sign.
I need the short vectors m of L and m' of L' up to sign, together
with the 5 by 5 matrix of their inner products with respect to the
first form: <m,m'> = Tr(dmm'). Can MAGMA handle this? I promise not

to bother you again (for a while...).
Thanks, Dick

2 The Input

R<y> := PolynomialRing(RationalField());
f := y^5 - 5*y^3 + 4*y -1;
print "f has discriminant", Discriminant(f);
RR := PolynomialRing(RealField());
roots := [r[1] : r in Roots(RR!f)];
print "roots = ", roots;
K<a> := NumberField(f);   // a is image of y in K.
A := MaximalOrder(K);
"h_A = ", ClassNumber(A);
function EmbeddingSigns(z)
   h := RR!Eltseq(K!z);
   return [Sign(Evaluate(h, roots[i])) : i in [1..#roots]];
end function;
d := (a^4 -4*a^2 + 1)/(5*a^4 - 15*a^2 + 4);
dprime := (a+2)*d;
print "\nEmbeddingSigns(d) =", EmbeddingSigns(d);
print "EmbeddingSigns(dprime) =", EmbeddingSigns(dprime);
print "\nNorm(d) =",Norm(d);
print "Norm(dprime) =",Norm(dprime);
print "Norm(1/f'(y)) =", Norm(1/Evaluate(Derivative(f),a));
B_d := MatrixAlgebra(Integers(),5)!
             [Trace(d*A.r*A.c) : r in [1..5], c in [1..5]];
B_dprime := MatrixAlgebra(Integers(),5)!
             [Trace(dprime*A.r*A.c) : r in [1..5], c in [1..5]];
print "\nB_d =", B_d;
print "B_dprime =", B_dprime;
print "\nDeterminant(B_d) =", Determinant(B_d);
print "Determinant(B_dprime) =", Determinant(B_dprime);
L_d := LatticeWithGram(B_d);
L_dprime := LatticeWithGram(B_dprime);
short_d := [v[1] : v in ShortVectors(L_d,1)];
short_dprime := [v[1] : v in ShortVectors(L_dprime,1)];
print "\nThe length 1 vectors for L_d up to sign, are:", short_d;
print "\nThe length 1 vectors for L_dprime up to sign, are:", short_dprime;
print "\nThe inner-product matrix of the short vectors with respect";

print "to the first form <m,m'> = Tr(dmm') is:";
C_d := MatrixAlgebra(Rationals(),5)!
          [InnerProduct(short_d[r], short_d[c]) : r in [1..5], c in [1..5]];
C_dprime := MatrixAlgebra(Rationals(),5)!
          [InnerProduct(L_d!Eltseq(short_dprime[r]),
             L_d!Eltseq(short_dprime[c])) : r in [1..5], c in [1..5]];
print "Short product matrix for L:", C_d;
print "which has determinant", Determinant(C_d);
print "\nShort product matrix for L':", C_dprime;
print "which has determinant", Determinant(C_dprime);

3 The Output

load "lattice-aug16-01.m";
Loading "lattice-aug16-01.m"
f has discriminant 38569
roots =  [ 0.27583419331709204817213899775777366753,
           0.79073430354452036503335025361110446084,
          -1.1509841732749715814109750623618883790,
           2.0384952910367372139914775431571571379,
          -1.9540796146233780457859917321641468873 ]
h_A =  1
EmbeddingSigns(d) = [ 1, 1, 1, 1, 1 ]
EmbeddingSigns(dprime) = [ 1, 1, 1, 1, 1 ]
Norm(d) = 1/38569
Norm(dprime) = 1/38569
Norm(1/f'(y)) = 1/38569
B_d =
[ 1  0  1  0  2]
[ 0  1  0  2  1]
[ 1  0  2  1  6]
[ 0  2  1  6  6]
[ 2  1  6  6 22]
B_dprime =
[ 2  1  2  2  5]
[ 1  2  2  5  8]
[ 2  2  5  8 18]
[ 2  5  8 18 34]
[ 5  8 18 34 72]
Determinant(B_d) = 1
Determinant(B_dprime) = 1
The length 1 vectors for L_d up to sign, are: [
( 1 -2 -1  1  0),
( 1  0 -1  0  0),
(1 0 0 0 0),

( 2 -1 -4  0  1),
(0 1 0 0 0)
]
The length 1 vectors for L_dprime up to sign, are: [
( 1 -3  1  2 -1),
( 1 -2 -1  1  0),
( 1 -2  1  2 -1),
( 1  1 -3 -1  1),
( 0  2 -1 -2  1)
]
The inner-product matrix of the short vectors with respect
to the first form <m,m'> = Tr(dmm') is:
Short product matrix for L:
[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
which has determinant 1
Short product matrix for L':
[ 6  2  6 -3 -6]
[ 2  1  2 -1 -2]
[ 6  2  7 -3 -7]
[-3 -1 -3  2  3]
[-6 -2 -7  3  8]
which has determinant 1