Lattices #
Let A
be an R
-algebra and V
an A
-module. Then an R
-submodule M
of V
is a lattice,
if M
is finitely generated and spans V
as an A
-module.
The typical use case is A = K
is the fraction field of an integral domain R
and V = ι → K
for some finite ι
. The scalar multiple a lattice by a unit in K
is again a lattice. This gives
rise to a homothety relation.
When R
is a DVR and ι = Fin 2
, then by taking the quotient of the type of R
-lattices in
ι → K
by the homothety relation, one obtains the vertices of what is called the Bruhat-Tits tree
of GL 2 K
.
Main definitions #
Submodule.IsLattice
: AnR
-submoduleM
ofV
is a lattice, if it is finitely generated and itsA
-span isV
.
Main properties #
Let R
be a PID and A = K
its field of fractions.
Submodule.IsLattice.free
: Every lattice inV
isR
-free.Basis.extendOfIsLattice
: AnyR
-basis of a latticeM
inV
defines aK
-basis ofV
.Submodule.IsLattice.rank
: TheR
-rank of a lattice inV
is equal to theK
-rank ofV
.Submodule.IsLattice.inf
: The intersection of two lattices is a lattice.
Note #
In the case R = ℤ
and A = K
a field, there is also IsZLattice
where the finitely
generated condition is replaced by having the discrete topology. This is for example used
for complex tori.
An R
-submodule M
of V
is a lattice if it is finitely generated
and spans V
as an A
-module.
Note 1: A
is marked as an outParam
here. In practice this should not cause issues, since
R
and A
are fixed, where typically A
is the fraction field of R
.
Note 2: In the case R = ℤ
and A = K
a field, there is also IsZLattice
where the finitely
generated condition is replaced by having the discrete topology.
- fg : M.FG
Instances
Any R
-lattice is finite.
The action of Aˣ
on R
-submodules of V
preserves IsLattice
.
The supremum of two lattices is a lattice.
Any basis of an R
-lattice in V
defines a K
-basis of V
.
Equations
- Basis.extendOfIsLattice K b = Basis.mk ⋯ ⋯
Instances For
A finitely-generated R
-submodule of V
of rank at least the K
-rank of V
is a lattice.
Any lattice over a PID is a free R
-module.
Note that under our conditions, NoZeroSMulDivisors R K
simply says that algebraMap R K
is
injective.
Any lattice has R
-rank equal to the K
-rank of V
.
Any R
-lattice in ι → K
has #ι
as R
-rank.
Module.finrank
version of IsLattice.rank
.
The intersection of two lattices is a lattice.