In Magma a G-lattice L is a lattice upon which a finite integral matrix group G acts by right multiplication.
Each G-lattice L has references to both the original ("natural") group G which acts on the standard lattice in which L is embedded and also the reduced group of L which is the reduced representation of G on the basis of L.
The following functions create G-lattices. Note that the group G must be a finite integral matrix group.
Given a finite integral matrix group G, return the standard G-lattice (with standard basis and rank equal to the degree of G).
Given a finite integral matrix group G and a non-singular matrix B whose row space is invariant under G (i.e., Bg = TgB for each g∈G where Tg is a unimodular integral matrix depending on g), return the G-lattice with basis matrix B. (The number of columns of B must equal the degree of G; G acts naturally on the lattice spanned by B.)
Given a finite integral matrix group G, a non-singular matrix B whose row space is invariant under G (i.e., Bg = TgB for all g∈G where Tg is a unimodular integral matrix depending on g) and a positive definite matrix M invariant under G (i.e., gMgtr=M for all g∈G) return the G-lattice with basis matrix B and inner product matrix M. (The number of columns of B must equal the degree of G and both the number of rows and the number of columns of M must equal the degree of G; G acts naturally on the lattice spanned by B and fixes the Gram matrix of the lattice).
Given a finite integral matrix group G and a positive definite matrix F invariant under G (i.e., gFgtr=F for all g∈G) return the G-lattice with standard basis and inner product matrix F (and thus Gram matrix F). (Both the number of rows and the number of columns of M must equal the degree of G; G fixes the Gram matrix of the returned lattice).
The following functions provide basic operations on G-lattices.
Given a lattice L, return whether L is a G-lattice (i.e., there is a group associated with L).
Given a G-lattice L, return the matrix group of the (reduced) action of G on L. The resulting group thus acts on the coordinate lattice of L (like the automorphism group).
Given a G-lattice L, return the number of generators of G.
Given a G-lattice L, return the i-th generator of the (reduced) action of G on L. This is the reduced action of the i-th generator of the original group G (which may be the identity matrix).
Given a G-lattice L, return the matrix group of the (natural) action of G on L. The resulting group thus acts on L naturally.
Given a G-lattice L, return the i-th generator of the natural action of G on L. This is simply the i-th generator of the original group G.
The functions in this section compute invariant forms for G-lattices.
For a G-lattice L, return a basis for the space of invariant bilinear forms for G (represented by their Gram matrices) as a sequence of matrices. The first entry of the sequence is a positive definite symmetric form for G.
For a G-lattice L, return a sequence consisting of n≥0 invariant bilinear forms for G.
For a G-lattice L, return a basis for the space of symmetric invariant bilinear forms for G. The first entry of the sequence is a positive definite symmetric form of G.
For a G-lattice L, return a sequence of n≥0 independent symmetric invariant bilinear forms for G. The first entry of the first sequence (if n>0) is a positive definite symmetric form for G.
For a G-lattice L, return a basis for the space of antisymmetric invariant bilinear forms for G.
For a G-lattice L, return a sequence of n≥0 independent antisymmetric invariant bilinear forms for G.
For a G-lattice L, return the dimension of the space of (symmetric and anti-symmetric) invariant bilinear forms for G. The algorithm uses a modular method which is always correct and is faster than the actual computation of the forms.
For a G-lattice L, return the dimension of the space of symmetric invariant bilinear forms for G.
For a G-lattice L, return the dimension of the space of antisymmetric invariant bilinear forms for G.
For a G-lattice L, return a positive definite symmetric form for G. This is a positive definite matrix F such that gFgtr=F for all g∈G.
The functions in this subsection compute endomorphisms of G-lattices. This is done by approximating the averaging operator over the group and applying it to random elements.
For a G-lattice L, return the endomorphism ring of L as a matrix algebra over Q.
For a G-lattice L, return a sequence containing n independent endomorphisms of L as elements of the corresponding matrix algebra over Q. n must be in the range [0 .. d], where d is the dimension of the endomorphism ring of L. This function may be useful in situations where the full endomorphism algebra is not required, e.g., to split a reducible lattice.
Return the dimension of the endomorphism algebra of the G-lattice L by a modular method (which always yields a correct answer).
For a G-lattice L, return the centre of the endomorphism ring of L as a matrix algebra over Q.This function can be used to split a reducible lattice into its homogeneous components.
For a G-lattice L, return a sequence containing n independent central endomorphisms of L as elements of the corresponding matrix algebra over Q. n must be in the range [0 .. d], where d is the dimension of the centre of the endomorphism ring of L.
Return the dimension of the centre of the endomorphism algebra of the G-lattice L by a modular method (which always yields a correct answer).
The functions in this section compute G-invariant sublattices of a given G-lattice L.
For a fixed prime p, the algorithm constructs the maximal G-invariant sublattices of L as kernels of Fp G-epimorphisms L/pL to S for some simple FpG-module S as described in [Ple74].
Iterating this process yields all G-invariant sublattices of L whose index in L is a p-power. Finally, intersecting lattices of coprime index yields all sublattices of L.
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
Projections: [Mtrx] Default: []
Given eithertogether with a set or sequence Q of primes, compute the G-invariant sublattices of L (as a sequence) which are not contained in p L for any p ∈Q and whose index in L is a product of elements of Q.
- (a)
- an integral matrix group G with natural lattice L=Zn
- (b)
- a sequence G of integral matrices generating a Z-order in Qn x n with natural lattice L= Zn
- (c)
- a G-lattice L in Qn.
This set of G-invariant sublattices of L is finite if and only if Qp tensor L is irreducible as a Qp G-module for all p∈Q.
Setting the parameter Limit := n will terminate the computation after n sublattices have been found.
Setting the parameter Levels := n will only compute sublattices M such that L/M has at most n composition factors.
The optional parameter Projections can be a sequence of n by n matrices that describe projections on Qn that map L to itself. In this case, Magma will only compute those sublattices of L which have the same images under the projections as L does.
The second return value indicates whether the returned sequence contains all such sublattices or not.
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
Projections: [Mtrx] Default: []
The same as the above where the set Q consists only of the given ptime p.
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
Projections: [Mtrx] Default: []
For an integral matrix group G or a G-lattice L this intrinsic equals the one above with Q taken to be the prime divisors of the order of G.
MaximalOrders: BoolElt Default: false
For an integral matrix group G returns representatives for the isomorphism classes of G-invariant lattices (i.e. the orbits under the unit group of the endomorphism ring E of G).If MaximalOrders is set to true, only sublattice classes which are invariant under some maximal order of E are considered.
Currently the function requires E to be a field.
We first define the group G.
> G := MatrixGroup<8, IntegerRing() | > [-1, 0, 0, 0, 0, 0, 0, 0, > 0, 0, -1, 0, 0, 0, 0, 0, > 0, 0, 0, 1, 0, 0, 0, 0, > 0, 1, 0, 0, 0, 0, 0, 0, > -1, 0, 0, 0, 1, 0, 0, 0, > 0, 0, -1, 0, 0, 0, 1, 0, > 0, 0, 0, 1, 0, 0, 0, -1, > 0, 1, 0, 0, 0, -1, 0, 0], > > [ 0, 0, 0, 0, 0, 0, 0, 1, > 0, 0, 0, 0, 0, 0, 1, 0, > 0, 0, 0, 0, -1, 0, 0, 0, > 0, 0, 0, 0, 0, 1, 0, 0, > 0, 0, 0, -1, 0, 0, 0, 1, > 0, 0, -1, 0, 0, 0, 1, 0, > 1, 0, 0, 0, -1, 0, 0, 0, > 0, -1, 0, 0, 0, 1, 0, 0]>;We next compute the unique positive definite form F fixed by G.
> time F := PositiveDefiniteForm(G); Time: 0.050 > F; [2 0 0 0 1 0 0 0] [0 2 0 0 0 1 0 0] [0 0 2 0 0 0 1 0] [0 0 0 2 0 0 0 1] [1 0 0 0 2 0 0 0] [0 1 0 0 0 2 0 0] [0 0 1 0 0 0 2 0] [0 0 0 1 0 0 0 2]We now compute all sublattices of the standard G-lattice.
> time Sub := Sublattices(G); Time: 0.370 > #Sub; 18For each sublattice we compute the invariant positive definite form for the group given by the action of G on the sublattice.
> PrimitiveMatrix := func<X | > P ! ((ChangeRing(P, RationalField()) ! X) / GCD(Eltseq(X))) > where P is Parent(X)>; > FF := [PrimitiveMatrix(B * F * Transpose(B)) > where B is BasisMatrix(L): L in Sub];We next create the sequence of all the lattices whose Gram matrices are given by the (LLL-reduced) forms.
> Sub := [LatticeWithGram(LLLGram(F)) : F in FF]; > #Sub; 18We now compute representatives for the Z-isomorphism classes of the sequence of lattices.
> Rep := []; > for L in Sub do > if forall{LL: LL in Rep | not IsIsometric(L, LL)} then > Append(~Rep, L); > end if; > end for; > #Rep; 4Thus there are 4 non-isomorphic sublattices. We note the size of the automorphism group, the determinant, the minimum and the kissing number of each lattice. (In fact, the automorphism groups of these 4 lattices happen to be maximal finite subgroups of GL(8, Q) and all have GL(2, 3) x (S)3 as a common irreducible subgroup.)
> time A := [AutomorphismGroup(L) : L in Rep]; Time: 0.240 > [#G: G in A]; [ 497664, 6912, 696729600, 2654208 ] > [Determinant(L): L in Rep]; [ 81, 1296, 1, 16 ] > [Minimum(L): L in Rep]; [ 2, 4, 2, 2 ] > [KissingNumber(L): L in Rep]; [ 24, 72, 240, 48 ]Finally, we note that each lattice is isomorphic to a standard construction based on root lattices.
> l := IsIsometric(Rep[1], > TensorProduct(Lattice("A", 2), StandardLattice(4))); l; true > l := IsIsometric(Rep[2], > TensorProduct(Lattice("A", 2), Lattice("F", 4))); l; true > l := IsIsometric(Rep[3], Lattice("E", 8)); l; true > l := IsIsometric(Rep[4], > TensorProduct(Lattice("F", 4), StandardLattice(2))); l;
> G := MatrixGroup<4, IntegerRing() | > [ -1, 0, 1, 0, 0, -1, 1, -3, -1, 0, 0, 0, 0, 0, 0, 1 ], > [ -1, 0, 0, 0, -3, 2, 0, 3, 0, 0, -1, 0, 1, -1, 0, -1 ] >; > E := EndomorphismRing(G); > I := CentralIdempotents(ChangeRing(E, RationalField())); I; [ [ 0 0 0 0] [-1 1 0 0] [ 0 0 0 0] [ 0 0 0 1], [1 0 0 0] [1 0 0 0] [0 0 1 0] [0 0 0 0] ]Since the central idempotents are all integral, they map the standard lattice Zn to itself. Even though this group G fixes infinitely many sublattices of Zn (even up to scalar multiples), there can only be finitely many which have the same images under the central idempotents as Zn.
> S := Sublattices(G : Projections:= I); #S; 3So in this case there are only three such lattices. To check that the lattices do project correctly, we can use
> I := [ Matrix(Integers(), i) : i in I ]; > Images := [ [Image(BasisMatrix(s) * i) : i in I] : s in S ]; > #Set(Images) eq 1; true
Magma can construct the lattice V of all G-invariant sublattices of the standard lattice L = Zn. Various properties of the lattice V may then be examined. Magma only stores the primitive sublattices of L, i.e. those sublattices that are not contained in kL for some k > 1.
In general, G fixes infinitely many primitive lattices. Thus one has to limit the number of sublattices to be constructed just as in the Sublattice intrinsic. In this case, all operations on V like coercions, intersections, sums etc. assume that the result of the operation is again is a scalar multiple of some element stored in V.
The lattice V has type LatLat and elements of V have type LatLatElt and are numbered from 1 to n where n is the number of primitive sublattices of L that have been constructed in the beginning.
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
Projections: [ Mtrx ] Default: []
Given either an integral matrix group G of degree n or a sequence G of integral matrices generating a Z-order in Qn x n together with a set or sequence Q of primes, compute the G-invariant sublattices of Zn (as a sequence) which are not contained in p Zn for any p ∈Q and whose index in Zn is a product of elements of Q.The second return value indicates whether all G-invariant lattices have been constructed.
The optional parameters are the same as for the Sublattices intrinsic.
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
Projections: [ Mtrx ] Default: []
Same as above where the set Q consists only of the given prime p.
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
Projections: [ Mtrx ] Default: []
Same as above where the set Q is taken to be set of prime divisors of the order of the group G.
> G:= sub< GL(2, Integers()) | [0,1,-1,0] >; > V:= SublatticeLattice(G); V; Lattice of 2 sublattices
In the following, V is a lattice of G-invariant lattices for some group or Z-order G and Q denotes the set of primes that where used to create V.
The number of (primitive) lattices stored in V.
The i-th element of the lattice V with respect to the internal labeling.
Given a (basis matrix of some) G-invariant lattice M, create the element of the lattice V corresponding to M.
The number of different levels (layers) stored in V. Note that levels are counted starting from 0.
The primitive lattices stored at the i-th level (layer). Note that levels are counted starting from 0.
The i-th entry of the result is a sequence of the primitive lattice elements lying on the i - 1-th level.
The primes that where used to create V.
A sequence containing the constituents (simple Fp G - modules) that where used during the construction of the G-lattices in V.
The integer corresponding to lattice element e.
The sum of the lattice elements e and f.
The intersection of the lattice elements e and f.
Tests whether e and f are equal.
The sequence S of maximal sublattices of e having index p for some p ∈Q. The second return value is a list C of integers such that S[i]/e is isomorphic to the C[i]-th constituent of V. The ordering of the constituents is the same as in the Constituents intrinsic.
The sequence S of minimal superlattices of e in which e has index p for some p ∈Q. The second return value is a list C of integers such that e/S[i] is isomorphic to the C[i]-th constituent of V. The ordering of the constituents is the same as in the Constituents intrinsic.
The G-lattice corresponding to e.
The basis matrix of the G-lattice corresponding to e.
> G:= AutomorphismGroup(Lattice("A", 5)); > FactoredOrder(G); [ <2, 5>, <3, 2>, <5, 1> ] > #SublatticeLattice(G, 5); 1Hence there are no primitive sublattices between L and 5L. Hence it suffices to check only the lattices at 2 and 3 the two remaining prime divisors of the order of G.
> V:= SublatticeLattice(G, {2,3}); #V; 4 > M:= MaximalSublattices(V ! 1); M; [ sublattice number 2, sublattice number 3 ] > V ! 2 meet V ! 3; sublattice number 4Moreover, the second and third lattice are (up to rescaling) dual to each other with respect to some G-invariant form.
> F:= PositiveDefiniteForm(G); > L:= Dual(Lattice(BasisMatrix(V ! 2), F) : Rescale:= false); > V ! L; sublattice number 3 times 1/6In particular, every G-invariant lattice can be constructed from lattice number 2 by taking scalar multiples, duals, sums and intersections. For example the standard lattice can be written as:
> (V ! 2) + (V ! (6*L)); sublattice number 1
To shorten the example, we choose G such that the standard lattice L is already invariant under M.
> SetSeed(1); > G:= MatrixGroup<8, IntegerRing() | > [ 0, 1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 1, > 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 1, > 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, -1, 1, > 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, 1 ], > [ 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, > -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, > 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, > 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ] >; #G; 336 > E:= EndomorphismRing(G); > M:= MaximalOrder(ChangeRing(E, RationalField())); > ok, M:= CanChangeUniverse(Basis(M), MatrixRing(Integers(), 8)); ok; trueSo L is M-invariant. The lattices at the primes 3 and 7 are multiples of L as we can see as follows:
> w7:= IntegralMatrix(E.2 - Trace(E.2)/8); > w7 div:= GCD( Eltseq(w7) ); // a square root of 7 > V:= SublatticeLattice([ Matrix(G.i) : i in [1..Ngens(G)] ] cat M, [3,7]); #V; 2 > V ! w7; sublattice number 2So it remains to check the lattices at 2. The two prime ideals in M over 2 are generated by p and q where
> p:= 1 - (w7+1) div 2; > q:= (w7+1) div 2; > Gens:= [ Matrix(G.i) : i in [1..Ngens(G)] ]; > V:= SublatticeLattice(Gens cat M, 2: Levels:= 3); > Levels(V); [ [ sublattice number 1 ], [ sublattice number 2, sublattice number 3 ], [ sublattice number 4, sublattice number 5, sublattice number 6 ], [ sublattice number 7, sublattice number 8, sublattice number 9, sublattice number 10 ] ] > [ V | BasisMatrix(V ! i)*x : i in [1..3], x in [p,q] ]; [ sublattice number 4, sublattice number 7, sublattice number 8, sublattice number 6, sublattice number 9, sublattice number 10 ]So the lattice numbers 1, 2, 3 and 5 represent the orbits of the action of E on the set of all MG-invariant lattices. Moreover, every matrix group N normalizing G acts on the MG-invariant lattices and (up to conjugacy) thus fixes one of these four lattices. If it fixes L, it also fixes V!2 + V!3 = V!5 and vice versa. Similarly, it fixes V!2 if and only if it fixes V!3.
> F:= PositiveDefiniteForm(G); > N1:= Normalizer(AutomorphismGroup(LatticeWithGram(F)), G); #N1; 672 > A:= AutomorphismGroup(Lattice(BasisMatrix(V ! 2), F) : NaturalAction); > N2:= Normalizer(A, ChangeRing(G, Rationals())); #N2; 336So N1 (which is isomorphic to 2.L(2, 7):2) is up to conjugacy the only proper finite extension of G in GL(8, Q).