[Next] [Prev] [_____] [Left] [Up] [Index] [Root]
Lattices from Matrix Groups

Lattices from Matrix Groups

Magma allows various computations with lattices associated with finite integral or rational matrix groups by use of G-lattices.

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.

Subsections

Creation of G-Lattices

The following functions create G-lattices. Note that the group G must be a finite integral matrix group.

Lattice(G) : GrpMat -> Lat
Given a finite integral matrix G, return the standard G-lattice (with standard basis and rank equal to the degree of G).
LatticeWithBasis(G, B) : GrpMat, ModMatRngElt -> Lat
Given a finite integral matrix G and a non-singular matrix B whose row space is invariant under G (i.e., Bg = T_gB for each g in G where T_g 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.)
LatticeWithBasis(G, B, M) : GrpMat, ModMatRngElt, AlgMatElt -> Lat
Given a finite integral matrix G, a non-singular matrix B whose row space is invariant under G (i.e., Bg = T_gB for all g in G where T_g is a unimodular integral matrix depending on g) and a positive definite matrix M invariant under G (i.e., gMg^(tr)=M for all g in 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).
LatticeWithGram(G, F) : GrpMat, AlgMatElt -> Lat
Given a finite integral matrix G and a positive definite matrix F invariant under G (i.e., gFg^(tr)=F for all g in 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).

Operations on G-Lattices

The following functions provide basic operations on G-lattices.

Group(L) : Lat -> GrpMat
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).
NumberOfActionGenerators(L) : Lat -> RngIntElt
Nagens(L) : Lat -> RngIntElt
Given a G-lattice L, return the number of generators of G.
ActionGenerator(L, i) : Lat, RngIntElt -> GrpMat
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).
NaturalGroup(L) : Lat -> GrpMat
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.
NaturalActionGenerator(L, i) : Lat, RngIntElt -> GrpMat
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.

Related Operations on Matrix Groups

The following functions apply to integral or rational matrix groups.

BravaisGroup(G) : GrpMat -> GrpMat
For a finite integral or rational matrix group G compute its Bravais group which is the group fixing all symmetric bilinear forms fixed by G.
IntegralGroup(G) : GrpMat -> GrpMat, AlgMatElt
Return the action of the finite rational matrix group G on an invariant lattice as an integral matrix group, thus giving an equivalent integral group H, together with the transformation matrix T from the standard lattice to the invariant lattice. Thus H = T.G.T^(-1).

Invariant Forms

The functions in this section compute invariant forms for G-lattices. Each function can be applied to a G-lattice or simply a group G, in which case the standard G-lattice is understood.

InvariantForms(G) : GrpMat -> [ AlgMatElt ]
InvariantForms(L) : Lat -> [ AlgMatElt ]
For a rational matrix group G or 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.
InvariantForms(G, n) : GrpMat, RngIntElt -> [ AlgMatElt ]
InvariantForms(L, n) : Lat, RngIntElt -> [ AlgMatElt ]
For a rational matrix group G or a G-lattice L, return a sequence consisting of n >= 0 invariant bilinear forms for G.
SymmetricForms(G) : GrpMat -> [ AlgMatElt ]
SymmetricForms(L) : Lat -> [ AlgMatElt ]
For a rational matrix group G or 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.
SymmetricForms(G, n) : GrpMat, RngIntElt -> [ AlgMatElt ]
SymmetricForms(L, n) : Lat, RngIntElt -> [ AlgMatElt ]
For a rational matrix group G or 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.
AntisymmetricForms(G) : GrpMat -> [ AlgMatElt ]
AntisymmetricForms(L) : Lat -> [ AlgMatElt ]
For a rational matrix group G or a G-lattice L, return a basis for the space of antisymmetric invariant bilinear forms for G.
AntisymmetricForms(G, n) : GrpMat, RngIntElt -> [ AlgMatElt ]
AntisymmetricForms(L, n) : Lat, RngIntElt -> [ AlgMatElt ]
For a rational matrix group G or a G-lattice L, return a sequence of n >= 0 independent antisymmetric invariant bilinear forms for G.
NumberOfInvariantForms(G) : GrpMat -> RngIntElt, RngIntElt
NumberOfInvariantForms(L) : Lat -> RngIntElt, RngIntElt
For a rational matrix group G or 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.
NumberOfSymmetricForms(G) : GrpMat -> RngIntElt
NumberOfSymmetricForms(L) : Lat -> RngIntElt
For a rational matrix group G or a G-lattice L, return the dimension of the space of symmetric invariant bilinear forms for G.
NumberOfAntisymmetricForms(G) : GrpMat -> RngIntElt
NumberOfAntisymmetricForms(L) : Lat -> RngIntElt
For a rational matrix group G or a G-lattice L, return the dimension of the space of antisymmetric invariant bilinear forms for G.
PositiveDefiniteForm(G) : GrpMat -> AlgMatElt
PositiveDefiniteForm(L) : Lat -> AlgMatElt
For a rational matrix group G or a G-lattice L, return a positive definite symmetric form for G. This is a positive definite matrix F such that gFg^(tr)=F for all g in G.

Example Lat_PositiveDefiniteForm (H45E21)

We show how LLL-reducing a positive definite symmetric form for a group may be used to conjugate the group into a nicer form. We first define the group G which is of degree 9 over the integer ring.

> G := MatrixGroup<9, IntegerRing() |
>   [ -1781731, 1744537, 3509672, -467946, -3777123, -1659243, 
>     -1215620, 892886, 4244750, -532827, 521826, 1049768, -140005, 
>     -1129733, -496265, -363582, 267120, 1269666, -3417426, 3346624, 
>     6731475, -897325, -7245390, -3183365, -2332163, 1712361, 8141504,
>     -7206660, 7055778, 14196027, -1892944, -15276952, -6710466, 
>     -4916401, 3611748, 17169155, -411977, 403558, 811448, -108129, 
>     -873601, -383948, -281266, 206380, 981456, 1645899, -1611203, 
>     -3241427, 432029, 3488657, 1532633, 1122849, -824450, -3920241, 
>     -3508029, 3433875, 6909549, -921254, -7435421, -3265875, 
>     -2392762, 1757782, 8356451, -1723244, 1687240, 3394387, -452555, 
>     -3653091, -1604778, -1175715, 863532, 4105313, 1136881, -1113657,
>     -2239273, 298397, 2410785, 1059538, 776179, -569532, -2708430 ],
>   [ 1547984, -365886, -253523, 94059, -885596, -798122, -721020, 
>     -424686, 54692, 462382, -109417, -75306, 28054, -264708, -238562,
>     -215571, -126754, 16977, 2971185, -701688, -488072, 180795, 
>     -1699282, -1531865, -1383617, -815484, 103032, 6259131, -1480000,
>     -1023615, 380068, -3581376, -3227234, -2915726, -1716831, 223138,
>     358623, -84568, -59219, 21877, -204995, -184890, -166941, -98502,
>     12027, -1432017, 337980, 236093, -87180, 818602, 737792, 666303, 
>     393241, -48251, 3048191, -720470, -499647, 185161, -1743596, 
>     -1571012, -1419248, -836367, 106813, 1497437, -353872, -245443, 
>     91010, -856598, -771999, -697392, -410865, 52612, -989599, 
>     233376, 163371, -60364, 565686, 510205, 460681, 271801, -33248 ]>;
We next compute a positive definite symmetric form F fixed by G.

> time F := PositiveDefiniteForm(G);
Time: 0.740
We note that the entries of F are quite large (all entries are about 16 decimal digits long).

> F[1];
(274281755649882 82003116793115 526235243116365 1109257256976932 
63471051404179 -253459575089665 539985561138855 265290704786344 
-175150935369215)
We next LLL reduce F to R (using the function LLLGram since F is a positive definite matrix), also computing the transformation matrix T such that TFT^(tr) = R. R is considerably simpler than F.

> R, T := LLLGram(F);
> R;
[ 47768  23884      0      0      0      0  -9404      0  18808]
[ 23884  47768  23884      0      0      0 -18808   9404   9404]
[     0  23884  47768      0      0      0  -9404  18808      0]
[     0      0      0  68316      0 -34158      0      0      0]
[     0      0      0      0  68316 -34158      0      0      0]
[     0      0      0 -34158 -34158  68316      0      0      0]
[ -9404 -18808  -9404      0      0      0  85842 -42921 -42921]
[     0   9404  18808      0      0      0 -42921  85842      0]
[ 18808   9404      0      0      0      0 -42921      0  85842]
> T;
[ -5 -14 -15   2  56  18  12   3 -11]
[-12  14 -30   0  50  23  24   3 -39]
[  2 -12 -29   5  33  22  19 -17 -45]
[ 29 -17 -37   2  40  19  14  -8 -43]
[ -9 -21   9   0  14  10   2   8  12]
[ 14  -5 -19   6   4  -7  -5 -11 -20]
[ -4 -44  -8   5  38  23   9   0 -11]
[-15   1   6  -1   9  13  12  -8  -2]
[ 22 -14 -30   7  38  -1  -2 -10 -24]
> T * F * Transpose(T) eq R;
true;
Finally, we conjugate G by T (i.e., compute TgT^(tr) for each generator g of G) to obtain a (much!) nicer group H equivalent to G.

> H := MatrixGroup<9, IntegerRing() | [T*G.i*T^-1: i in [1..Ngens(G)]]>;
> H;
MatrixGroup(9, Integer Ring)
Generators:
    [ 0  0  1  0  0  0  0  0  0]
    [ 0 -1  1  0  0  0  0  0  0]
    [-1  0  0  0  0  0  0  0  0]
    [ 0  0  0 -1 -1 -1  0  0  0]
    [ 0  0  0  0  0 -1  0  0  0]
    [ 0  0  0  1  0  1  0  0  0]
    [ 0  0  0  0  0  0 -1 -1  0]
    [ 0  0  0  0  0  0  0  0 -1]
    [ 0  0  0  0  0  0  0  1  0]

[-1 1 0 0 0 0 0 0 0] [-1 0 0 0 0 0 0 0 0] [ 0 -1 1 0 0 0 0 0 0] [ 0 0 0 0 1 0 0 0 0] [ 0 0 0 1 0 0 0 0 0] [ 0 0 0 -1 -1 -1 0 0 0] [ 0 0 0 0 0 0 0 0 1] [ 0 0 0 0 0 0 1 1 0] [ 0 0 0 0 0 0 -1 0 -1] > #H; 288 > #G; 288


Endomorphisms

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.

EndomorphismRing(G) : GrpMat -> AlgMat
EndomorphismRing(L) : Lat -> AlgMat
For a G-lattice L or a rational matrix group G with associated G-lattice L, return the endomorphism ring of L as a matrix algebra over Q.
Endomorphisms(G, n) : GrpMat, RngIntElt -> [ AlgMatElt ]
Endomorphisms(L, n) : Lat, RngIntElt -> [ AlgMatElt ]
For a G-lattice L or a rational matrix group G with associated 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.
DimensionOfEndomorphismRing(G) : GrpMat -> RngIntElt
DimensionOfEndomorphismRing(L) : Lat -> RngIntElt
Return the dimension of the endomorphism algebra of L by a modular method (which always yields a correct answer).
CentreOfEndomorphismRing(G) : GrpMat -> AlgMat
CentreOfEndomorphismRing(L) : Lat -> AlgMat
For a G-lattice L or a rational matrix group G with associated 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.
CentralEndomorphisms(G, n) : GrpMat, RngIntElt -> [ AlgMatElt ]
CentralEndomorphisms(L, n) : Lat, RngIntElt -> [ AlgMatElt ]
For a G-lattice L or a rational matrix group G with associated 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.
DimensionOfCentreOfEndomorphismRing(G) : GrpMat -> RngIntElt
DimensionOfCentreOfEndomorphismRing(L) : Lat -> RngIntElt
Return the dimension of the centre of the endomorphism algebra of L by a modular method (which always yields a correct answer).

G-invariant Sublattices

The functions in this subsection compute G-invariant sublattices of a G-lattice.

Sublattices(G, p) : GrpMat, RngIntElt -> [ AlgMatElt ]
Sublattices(L, p) : Lat, RngIntElt -> [ AlgMatElt ]
    Limit: RngIntElt                    Default: Infinity
    Levels: RngIntElt                   Default: Infinity
Given an integral matrix group G with natural lattice L or a G-lattice L, together with a prime p, compute the set of sublattices (as a sequence) of L which are invariant under G, not contained in p L and have index a power of p in L.

This set is finite if and only if Q_p tensor L is irreducible as a Q_p G-module. 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.

Sublattices(G, Q) : GrpMat, [ RngIntElt ] -> [ AlgMatElt ]
Sublattices(L, Q) : Lat, [ RngIntElt ] -> [ AlgMatElt ]
    Limit: RngIntElt                    Default: Infinity
    Levels: RngIntElt                   Default: Infinity
Given an integral matrix group G with natural lattice L or a G-lattice L, together with a set or sequence Q of primes, compute the set of sublattices (as a sequence) of the natural lattice L of G which are invariant under G, not contained in p L for any p in Q and whose index in L is a product of elements of Q. The parameters are as above.
Sublattices(G) : GrpMat -> [ AlgMatElt ]
Sublattices(L) : Lat -> [ AlgMatElt ]
    Limit: RngIntElt                    Default: Infinity
    Levels: RngIntElt                   Default: Infinity
Given an integral matrix group G with natural lattice L or a G-lattice L, compute the set of representatives for the G-invariant sublattices of the natural lattice L of G (as a sequence). The parameters are as above.

Example Lat_Sublattices (H45E22)

We construct sublattices of the standard G-lattice where G is an absolutely irreducible degree-8 integral matrix representation of the group GL(2, 3) x (S)_3.

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;
18
For 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;
18
We 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;
4
Thus 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;
[Next] [Prev] [_____] [Left] [Up] [Index] [Root]