|
Closely related to totally positive definite lattices are Lorentzian lattices.
These are defined over totally real fields, and have exactly one embedding
for which the lattice is not positive definite, at which it has a Lorentzian
signature (d - 1, 1) in dimension d.
A vector that has negative norm at this distinguished embedding is said
to be timelike, while a vector with totally positive norm is spacelike.
Given a number field lattice L over a totally real field, return
true f L is Lorentzian and if so, also a return a lattice
vector that has negative norm at the given embedding.
IsSpacelike(v): LatNFElt -> BoolElt
Given a lattice field vector v in a Lorentzian lattice L
return true if v is timelike (respectively spacelike). If the lattice
is not Lorentzian, an error is signaled.
NaturalAction: BoolElt Default: false
Given a number field lattice L and a timelike vector v in it,
determine the joint stabilizer. This is computed by determining
the stabilizer (automorphism group) of the orthogonal complement
of the vector and extending it to the lattice by requiring the
vector also to be fixed. In other words, the group
A=(Aut)(v direct-sum vperp) is computed.
The subgroup of A that stabilizes the lattice is then returned,
while A is returned as a second value.
If the NaturalAction parameter is set, the transformations
are rewritten on the ambient space.
NaturalAction: BoolElt Default: false
Given a number field lattice L and two timelike vectors v and w
in it, determine whether there is an automorphism of L that sends
w to v, and if so return such an isometry as the second argument.
If the NaturalAction parameter is set, transformations
are rewritten on the ambient space.
We construct an easy Lorentzian lattice and compute
isometries and automorphism group with various timelike vectors.
> K<u> := QuadraticField(5);
> G := DiagonalMatrix([-(u+1)/2,1,1,1]);
> L := NumberFieldLattice(K,4 : Gram:=G);
> IsLorentzian(L);
true (1 0 0 0) 1
> v := L![(u+1)/2,(u+1)/2,0,1];
> w := L![(u+1),(u+3)/2,(u+1)/2,(u+3)/2];
> assert IsTimelike(v) and IsTimelike(w);
> Norm(v), Norm(w);
1/2*(-u + 1) 1/2*(-u + 1)
> b, T := IsIsometric(L,v,w); assert b; T;
[ 2*u + 5 1/2*(5*u + 11) u + 2 1/2*(u + 1)]
[1/2*(-3*u - 5) 1/2*(-3*u - 7) 1/2*(-u - 3) 1/2*(-u - 1)]
[ 1/2*(-u - 1) 1/2*(-u - 1) 1/2*(-u - 1) 0]
[ -u - 2 -u - 3 1/2*(-u - 1) 0]
> assert T*w eq v;
> #AutomorphismGroup(L,L![1,0,1,(3-u)/2]);
16
> #AutomorphismGroup(L,L![1,0,0,0]);
48
> #AutomorphismGroup(L,L![1,1,0,0]);
48
> #AutomorphismGroup(L,L![1,(u-1)/2,(u-1)/2,(u-1)/2]);
120
> s := L![1,0,(u-1)/2,(u-1)/2];
> A, B := AutomorphismGroup(L,s);
> #A,#B; // the automorphism group of s+O is larger than L
20 40
> O := OrthogonalComplement(L,s); // s+O has index 5 in L
> assert #AutomorphismGroup(O) eq #B;
> Norm(Determinant(sub<L|[s]>+O)/Determinant(L));
25
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|