|
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
Magma allows various computations with lattices associated with
finite integral 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
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).
Nagens(L) : Lat -> RngIntElt
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.
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(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(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(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(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(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(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(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(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(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(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 gFgtr=F for all g∈G.
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 TFTtr = 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 TgTtr 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(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(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(L) : Lat -> RngIntElt
Return the dimension of the endomorphism algebra of the G-lattice L
or a rational matrix group G by a modular method
(which always yields a correct answer).
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(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(L) : Lat -> RngIntElt
Return the dimension of the centre of the endomorphism algebra of the G-lattice L
or a rational matrix group G by a
modular method (which always yields a correct answer).
The functions in this subsection compute G-invariant sublattices of
a G-lattice.
Sublattices(L, p) : Lat, RngIntElt -> [ AlgMatElt ]
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
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 Qp tensor L is
irreducible as a Qp 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(L, Q) : Lat, [ RngIntElt ] -> [ AlgMatElt ]
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
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 ∈Q and whose index in L is a
product of elements of Q.
The parameters are as above.
Sublattices(L) : Lat -> [ AlgMatElt ]
Limit: RngIntElt Default: ∞
Levels: RngIntElt Default: ∞
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 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] [Right] [Left] [Up] [Index] [Root]
|