Properties of Lattices

The following functions provide access to the elementary attributes and properties of lattices. Other attributes and invariants of a lattice, e.g., successive minimum, kissing number, and theta series are described in subsequent sections.

Contents

Associated Structures

AmbientSpace(L) : Lat -> ModTupFld, Map
The ambient rational or real vector space in which the lattice L embeds, followed by the embedding map.
CoordinateSpace(L) : Lat -> ModTupFld, Map
The ambient vector space of the coordinate lattice, i.e., the vector space of dimension equal to the rank of the lattice L, with inner product matrix equal to the Gram matrix of L. The embedding map is returned as the second return value.
Category(L) : Lat -> Cat
Type(L) : Lat -> Cat
Returns the category Lat of lattices.

Attributes of Lattices

Dimension(L) : Lat -> RngIntElt
Rank(L) : Lat -> RngIntElt
Return the rank of the lattice L, which equals the number of basis elements in L. Note that the rank of the lattice may be smaller than its degree n, which is the dimension of the real space Rn in which L is defined.
Degree(L) : Lat -> RngIntElt
Return the degree of the lattice L, which is the dimension n of the real space Rn in which L is defined.
Degree(v) : LatElt -> RngIntElt
Return the degree of the lattice element v, which the degree of the lattice to which it belongs.
Content(L) : Lat -> RngElt
Given an exact lattice L, return the largest rational number c such that (u, v) ∈cZ for all u, v ∈L.
Level(L) : Lat -> RngElt
Given an integral lattice L, return the smallest integer k such that k (v, v) ∈2Z for all v in the dual of L.
Determinant(L) : Lat -> RngElt
Returns the determinant of the lattice L, which is defined to be the determinant of the Gram matrix F of L. For a full rank lattice the square root of Determinant(L) is the volume of a fundamental parallelotope of the lattice.
GramMatrix(L) : Lat -> AlgMatElt
Return the Gram matrix for the lattice L of rank m, which is the m x m matrix F=BMBtr, where B is the basis matrix of L and M is the inner product matrix of L. Thus the (i, j)-th entry of F equals the inner product of the basis vectors bi and bj of L.
GramMatrix(X) : ModMatRngElt : -> AlgMatElt
Given a matrix X, return XXtr. Note that this function will take half the time as would be taken for the invocation X*Transpose(X) since the symmetry of the result is taken advantage of.
InnerProductMatrix(L) : Lat -> AlgMatElt
The inner product matrix M of the lattice L, which is an n x n matrix, where n is the degree of L. If L has the standard Euclidean product, M is the identity matrix.
Basis(L) : Lat -> [ FldReElt ]
Basis(L) : Lat -> [ FldRatElt ]
Basis(L) : Lat -> [ RngIntElt ]
Return the basis of the lattice L as a sequence [b1, ..., bm] of elements of L.
BasisMatrix(L) : Lat -> ModMatRngElt
Return the m x n matrix having the basis elements of L as rows, where m is the rank and n the degree of L. The coefficient ring of the matrix is the same as the base ring of L.
BasisDenominator(L) : Lat -> RngIntElt
Given an exact lattice L, return the common denominator of the entries of the current basis of L.
QuadraticForm(L) : Lat -> RngMPolElt
The quadratic form of the lattice L as a multivariate polynomial.

Predicates and Booleans on Lattices

L eq M : Lat, Lat -> BoolElt
Given lattices L and M, return true if and only if the lattices are subsets of one another.
L ne M : Lat, Lat -> BoolElt
The logical negation of eq.
L subset M: Lat, Lat -> BoolElt
Return true if and only if L is a sublattice of M, i.e., both L and M are lattices, and L is a subset of M.
IsExact(L) : Lat -> BoolElt
Return true if and only if L is an exact lattice, i.e., the coefficient ring of L is Z or Q and (v, w) ∈Q for all v, w ∈L.
IsIntegral(L) : Lat -> BoolElt
Return true if and only if L is an integral lattice, i.e., if and only if (v, w) ∈Z for all v, w ∈L.
IsEven(L) : Lat -> BoolElt
Return true if and only if L is an even lattice, i.e., if and only if L is integral and (v, v) ∈2Z for all v ∈L.

Base Ring and Base Change

BaseRing(L) : Lat -> Rng
CoefficientRing(L) : Lat -> Rng
Return the base ring of the lattice L, which is the ring over which the elements of L are represented. Note that lattices are always Z-modules even if the base ring is not Z; the base ring R is just defined to be the smallest ring over which the basis and inner product matrices can be represented. See the section on presentation of lattices at the beginning of the chapter for further discussion.
CoordinateRing(L) : Lat -> RngInt
Return the ring of coordinate coefficients for the lattice L. This currently will always return the integer ring Z.
ChangeRing(L, S) : Lat, Rng -> Lat, Map
BaseChange(L, S) : Lat, Rng -> Lat, Map
BaseExtend(L, S) : Lat, Rng -> Lat, Map
Given a lattice L, return the lattice L' obtained from coercing the entries of the basis and of the matrix for the inner product into the ring S, together with the homomorphism from L to L'. This will result in an error if any of the entries is not coercible into S. This function is only really useful for moving between real fields of varying precision (it is unnecessary and ineffectual to change a lattice from Z to Q; see the section on presentation of lattices).
V2.28, 13 July 2023