Given a lattice L and a list S, construct the sublattice L' of L generated by the elements specified by the list S. Each term Si of the list S must be an expression defining an object of one of the following types:The constructor returns the sublattice L' and the inclusion homomorphism from L' into L.
- (a)
- an element of L or coercible into L,
- (b)
- a set or sequence of elements coercible into L,
- (c)
- a sublattice of L,
- (d)
- a set or sequence of sublattices of L.
Given a lattice L lying inside V=Rn and a list S, construct the superlattice L' of L generated by L together with the elements specified by the list S. Each term Si of the list S must be an expression defining an object of one of the following types:The constructor returns the superlattice L' and the inclusion homomorphism from L into L'.
- (a)
- an element of V or coercible into V,
- (b)
- a set or sequence of elements coercible into V,
- (c)
- a sublattice of V,
- (d)
- a set or sequence of sublattices of V.
Given a lattice L of rank m and an l x m integer matrix, construct the sublattice of L defined by the transformation matrix T, i.e., the lattice generated by the rows of the matrix obtained by multiplying the basis matrix of L from the left by T. The resulting lattice will have rank less than or equal to l.
Given a lattice L and a scalar s, construct the sublattice or superlattice of L obtained by multiplying the basis matrix of L by the scalar s.
Given a lattice L and a scalar s, construct the sublattice or superlattice of L obtained by multiplying the basis matrix of L by the scalar 1/s.
Given a lattice L and a list S, construct the quotient L/L', where L' is the sublattice of L generated by the elements of the list S. The elements of S must be the same as for the sub<> constructor. The quotient Q := L / L' is constructed as an abelian group. As a second value the function returns the natural epimorphism L -> Q.
Given two lattices L and S such that S is a sublattice of L, construct the quotient Q := L / S as an abelian group. As a second value the function returns the natural epimorphism L -> Q.
Given a lattice L and a sublattice S of L, return the index of S in L. This is the cardinality of the quotient L/S. If the index is infinite, zero is returned.
> L := LatticeWithBasis(4, [1,2,3,4, 0,1,1,1, 0,1,3,5]); > L; Lattice of rank 3 and degree 4 Basis: (1 2 3 4) (0 1 1 1) (0 1 3 5) > E := ext<L | [1,0,0,0]>; > E; Lattice of rank 3 and degree 4 Basis: ( 1 0 0 0) ( 0 1 0 -1) ( 0 1 1 1) > Index(E, L); 2 > Q, f := quo<E | L>; > Q; Abelian Group isomorphic to Z/2 Defined on 1 generator Relations: 2*Q.1 = 0 > f(E.1); Q.1
The functions in this section enable one to construct new lattices from old ones using standard operations. Note that the functions will preserve the basis matrices of their arguments if possible (e.g., DirectSum), but if this is not possible the basis of the resulting lattice will be LLL-reduced (e.g., +, meet).
Rescale: BoolElt Default: true
Let L be a lattice in Rn and let V := R tensor Z L be the real vector space generated by L. Then the dual lattice L^# of L is defined by L^# := { v ∈V | (v, l) ∈Z forall l ∈L }. For an integral lattice L one always has L ⊆L^#. This function returns a rescaled version L' of the dual L^# by default so that the basis of L' is LLL-reduced and L' is an integral lattice and its Gram matrix is primitive (its entries are coprime). By setting the parameter Rescale to {false}, the rescaling can be suppressed and the proper dual lattice is returned.
Rescale: BoolElt Default: true
Given an integral lattice L and a positive integer n that divides the exponent e of the DualQuotient group of L, this function computes the nth partial dual of L. This is defined by pulling back (e/n).g for generators g of the DualQuotient and intersecting with the lattice itself.
Let L be a lattice in Rn and let V := R tensor Z L be the real vector space generated by L, then L^# := { v ∈V | (v, l) ∈Z forall l ∈L } is the dual lattice of L. Let B be the basis matrix of L, M the inner product matrix of L, and F the Gram matrix of L. This function returns the dual L^# as the lattice with basis matrix F - 1B and inner product matrix M (so that its Gram matrix is F - 1).
Given an integral lattice L, construct the dual quotient Q of L, which is defined to be the finite abelian group L^# / L of order Determinant(L), where L^# is the unscaled dual lattice of L (the lattice returned by Dual with the Rescale parameter set to false). This function returns three values:
- (a)
- The dual quotient Q.
- (b)
- The unscaled dual lattice L^#.
- (c)
- The natural epimorphism φ: L^# -> Q whose kernel is L.
Given an integral lattice L, construct its maximal even sublattice together with the natural embedding into L.
> L := Lattice(LatticeDatabase(),"LAMBDA29"); > Dimension(L); 29 > IsEven(L); true > IsEven(Dual(L)); false; > G := DualQuotient(L); > Exponent(G); 8 > Factorization(Determinant(L)); [ <2, 31> ] > PartialDual(L,1) eq L; true > Factorization(Determinant(PartialDual(L, 2))); [ <2, 54> ] > Factorization(Determinant(PartialDual(L, 4))); [ <2, 73> ] > Factorization(Determinant(PartialDual(L, 8))); [ <2, 56> ] > Factorization(Determinant(Dual(L))); [ <2, 56> ]
Given compatible lattices L and M, construct the lattice generated by their union.
Given compatible lattices L and M, construct their intersection L∩M.
Given lattices L and M, construct their orthogonal sum which is their direct sum with inner product being the orthogonal sum of the inner products of L and M.
Given a lattice L, construct the sequence of indecomposable orthogonal summands composing L. Additional bilinear forms can be given in F. In this case the decomposition will be orthogonal wrt. these forms as well.
Optimize: BoolElt Default: false
Given a sequence of bilinear forms F, where the first form is positive definite, returns the basis matrices B1, ..., Bs of the indecomposable orthogonal summands of the standard lattice Zn wrt. the forms in F. The second return value is a list of s sequences. The i-th sequence contains the forms of F wrt. to basis described by Bi. If Optimize is set, then the basis matrices will be LLL reduced wrt. the first form in F.
Given two lattices L and M, construct their tensor product with inner product given by the Kronecker product of the matrices defining the inner products of L and M.
Given a lattice L, construct its exterior square, generated by the skew tensors in L tensor L. The inner product is inherited from the inner product of the tensor square of the vector space containing L and the exterior square lattice lies inside the tensor square of the lattice.
Given a lattice L, construct its symmetric square, generated by the symmetric tensors in L tensor L. The inner product is inherited from the inner product of the tensor square of the vector space containing L and the symmetric square lattice lies inside the tensor square of the lattice.
Given a lattice L of degree n with integral or rational entries, return the pure lattice P=(Q tensor L) ∩Zn of L. The pure lattice P generates the same subspace in Qn over Q that L does but the elementary divisors of its basis matrix are trivial.
Given an exact lattice L, return the lattice obtained from L by multiplying the basis by the smallest positive scalar S so that the resulting basis is integral, and S.