|
|
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:
- (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.
The constructor returns the sublattice L' and the inclusion homomorphism
from L' into 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:
- (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.
The constructor returns the superlattice L' and the inclusion homomorphism
from L into L'.
T * L : ModMatRng, Lat -> Lat
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.
L * s : Lat, RngElt -> Lat
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.
J * L : RngIntFracIdl, Lat -> Lat
Given a lattice L and a fractional ideal J, return the
lattice obtained by multiplying by the given ideal.
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.
The elementary divisors of the lattice A with respect to the lattice B.
These are fractional ideals D1 ⊆ ... ⊆Dn such that
there exist pseudobases for A and B with the same basis vectors and
coefficient ideals JB, i = Di JA, i.
The discriminant of the lattice A with respect to the lattice B.
This is the product of the elementary divisors of A with respect to B.
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.
We demonstrate simple uses of the sub-, ext- and
quo-constructors.
> 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.
OrthogonalSum(L, M) : Lat, Lat -> Lat
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.
OrthogonalDecomposition(L, F) : Lat, [Mtrx] -> [Lat]
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.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|
|