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.
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.
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 \({\mathbb{R}}^n\) 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 \({\mathbb{R}}^n\) 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) \in c{\mathbb{Z}}\) for all \(u, v \in L\).
- Level(L): Lat -> RngElt
Given an integral lattice \(L\), return the smallest integer \(k\) such that \(k (v,v) \in 2{\mathbb{Z}}\) 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.
- Discriminant(L): Lat -> RngInt
Returns the discriminant of the lattice \(L\), which is defined to be the ideal generated by its determinant. When \(L\) is of odd rank, returns half of this quantity, the half-discriminant.
- Scale(L): Lat -> RngIntFracIdl
The scale of the lattice \(L\), which is the ideal generated by the inner products of pairs of lattice elements. This is the ideal generated by the content of \(L\).
- GramMatrix(L): Lat -> AlgMatElt
- AuxiliaryForms(L): Lat -> [ AlgMatElt ]
Return the Gram matrix for the lattice \(L\) of rank \(m\), which is the \(m\times m\) matrix \(F=BMB^{tr}\), 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 \(b_i\) and \(b_j\) of \(L\).
- GramMatrix(L, S): Lat, [ ModTupFldElt ] -> AlgMatElt
- GramMatrix(S): [ LatElt ] -> AlgMatElt
Half: BoolElt Default: false
Given a lattice \(L\) and a sequence \(S\) of vectors in the lattice, return the Gram matrix of these vectors. If
Halfis set totrue, scales the Gram matrix by a half.
- GramMatrix(X): ModMatRngElt -> AlgMatElt
Given a matrix \(X\), return \(XX^{tr}\). 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\times 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 ]
- PseudoBasis(L): Lat -> [ RngIntElt ]
Return the basis of the lattice \(L\) as a sequence \([b_1, \ldots, b_m]\) of elements of \(L\).
- BasisMatrix(L): Lat -> ModMatRngElt
Return the \(m\times 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\).
- CoefficientIdeals(L): Lat -> [ RngInt ]
Given a lattice \(L\) of rank \(n\), return its coefficient ideals, which are \(n\) copies of the trivial ideal.
Predicates and Booleans on Lattices
- L eq M: Lat, Lat -> BoolElt
Given lattices \(L\) and \(M\), return
trueif and only if the lattices are subsets of one another.
- L subset M: Lat, Lat -> BoolElt
Return
trueif 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
trueif and only if \(L\) is an exact lattice, i.e., the coefficient ring of \(L\) is \({\mathbb{Z}}\) or \({\mathbb{Q}}\) and \((v,w) \in {\mathbb{Q}}\) for all \(v,w \in 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 \({\mathbb{Z}}\)-modules even if the base ring is not \({\mathbb{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
- Order(L): Lat -> RngInt
Return the ring of coordinate coefficients for the lattice \(L\). This currently will always return the integer ring \({\mathbb{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 \({\mathbb{Z}}\) to \({\mathbb{Q}}\); see the section on presentation of lattices).