"Source: Text/Lat/LatNF.text";
"Line: 2035";
"Date: Fri Sep 26 12:10:10 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Lat/LatNF.text, line: 2035
// Example: H32E7 ()
print "Example: H32E7";
ei := GetEchoInput();
SetEchoInput(true);
K<u> := QuadraticField(257); // class number 3
O := Integers(K);
v1 := Vector([K|1,0,0]);
v2 := Vector([K|0,u,0]);
p2 := Factorization(2*O)[1][1]; // nonprincipal
Js := [(2*O)/p2,2*O];
L := NumberFieldLattice([v1,v2] : Ideals:=Js);
IsFree(L);
assert not $1;
DS := DirectSum([L,L,L]); // Steinitz class is principal
S := SimpleLattice(DS);
DS eq S;
assert $1;
K<u> := QuadraticField(5);
O := Integers(K);
Vs := [Vector([K|2,0,1]),Vector([K|0,1,2])];
Js := [1*O,2*O];
G := DiagonalMatrix([K|4,1]);
L := NumberFieldLattice(Vs : Gram:=G,Ideals:=Js);
AutomorphismGroup(L);
A := AutomorphismGroup(L : NaturalAction);
L*(&*Generators(A)) eq L;
assert $1;
Sphere(L,4);
assert #$1 eq 4;
Sphere(L,8);
assert #$1 eq 4;
Sphere(L,20 : Negatives:=false);
assert #$1 eq 6;
[Coordinates(v) : v in $1]; // coordinates
K<u> := QuadraticField(257);
O := Integers(K);
v1 := Vector([K|1,0,0]);
v2 := Vector([K|0,u,0]);
I := [1*O,2*O];
G := Matrix(2,2,[K|1,0,0,2]);
L := NumberFieldLattice([v1,v2] : Gram:=G,Ideals:=I);
T := Matrix(2,2,[u-1,5,51,u+1]);
PB :=PseudoBasis(L);
M := NumberFieldLattice(PB : Gram:=T*G*Transpose(T),Ideals:=I);
b,U := IsIsometric(T*L,M : NaturalAction); assert b;
T*L*U^(-1) eq L;
assert $1;
SetEchoInput(ei);
