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.
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).
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.)
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).
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).
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).
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 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.
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).
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 ]
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.
For a rational matrix group G or a G-lattice L, return a sequence consisting of n >= 0 invariant bilinear forms for G.
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.
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.
For a rational matrix group G or a G-lattice L, return a basis for the space of antisymmetric invariant bilinear forms for G.
For a rational matrix group G or a G-lattice L, return a sequence of n >= 0 independent antisymmetric invariant bilinear forms for G.
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.
For a rational matrix group G or a G-lattice L, return the dimension of the space of symmetric invariant bilinear forms for G.
For a rational matrix group G or a G-lattice L, return the dimension of the space of antisymmetric invariant bilinear forms for G.
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.
> 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.740We 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
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
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.
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.
Return the dimension of the endomorphism algebra of L by a modular method (which always yields a correct answer).
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.
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.
Return the dimension of the centre of the endomorphism algebra of L by a modular method (which always yields a correct answer).
The functions in this subsection compute G-invariant sublattices of
a G-lattice.
Sublattices(G, p) : GrpMat, 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.
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.
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.
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;[Next] [Prev] [_____] [Left] [Up] [Index] [Root]