CurrentModule = Oscar
We call lattice with isometry any pair
In Oscar, such a pair is encoded in the type called ZZLatWithIsom
:
ZZLatWithIsom
It is seen as a quadruple
Given a lattice with isometry
ambient_isometry(::ZZLatWithIsom)
ambient_space(::ZZLatWithIsom)
isometry(::ZZLatWithIsom)
lattice(::ZZLatWithIsom)
order_of_isometry(::ZZLatWithIsom)
Note that for some computations, it is more convenient to work either with the isometry of the lattice itself, or with the fixed isometry of the ambient quadratic space inducing it on the lattice.
We provide two ways to construct a pair ZZLatWithIsom
is through the methods integer_lattice_with_isometry
. These
two methods do not require as input an ambient quadratic space with isometry.
integer_lattice_with_isometry(::ZZLat, ::QQMatrix)
integer_lattice_with_isometry(::ZZLat)
By default, the first constructor will always check whether the matrix defines an isometry of the lattice, or its ambient space. We recommend not to disable this parameter to avoid any further issues. Note that as in the case of quadratic spaces with isometry, both isometries of integer lattices of finite order and infinite order are supported.
Another way of constructing such lattices with isometry is by fixing an ambient
quadratic space with isometry, of type QuadSpaceWithIsom
, and specifying a basis
for an integral lattice in that space. If this lattice is preserved by the fixed
isometry of the quadratic space considered, then we endow it with the induced
action.
lattice(::QuadSpaceWithIsom)
lattice(::QuadSpaceWithIsom, ::MatElem{ <:RationalUnion})
lattice_in_same_ambient_space(::ZZLatWithIsom, ::MatElem)
Given a lattice with isometry genus(Lf)
.
Here is a list of what are the current accessible attributes:
basis_matrix(::ZZLatWithIsom)
characteristic_polynomial(::ZZLatWithIsom)
degree(::ZZLatWithIsom)
det(::ZZLatWithIsom)
discriminant(::ZZLatWithIsom)
genus(::ZZLatWithIsom)
gram_matrix(::ZZLatWithIsom)
is_definite(::ZZLatWithIsom)
is_even(::ZZLatWithIsom)
is_elementary(::ZZLatWithIsom, ::IntegerUnion)
is_elementary_with_prime(::ZZLatWithIsom)
is_integral(::ZZLatWithIsom)
is_positive_definite(::ZZLatWithIsom)
is_primary(::ZZLatWithIsom, ::IntegerUnion)
is_primary_with_prime(::ZZLatWithIsom)
is_negative_definite(::ZZLatWithIsom)
is_unimodular(::ZZLatWithIsom)
minimum(::ZZLatWithIsom)
minimal_polynomial(::ZZLatWithIsom)
norm(::ZZLatWithIsom)
rank(::ZZLatWithIsom)
rational_span(::ZZLatWithIsom)
scale(::ZZLatWithIsom)
signature_tuple(::ZZLatWithIsom)
Similarly, some basic operations on
Base.:^(::ZZLatWithIsom, ::Int)
biproduct(::Vector{ZZLatWithIsom})
direct_product(::Vector{ZZLatWithIsom})
direct_sum(::Vector{ZZLatWithIsom})
dual(::ZZLatWithIsom)
lll(::ZZLatWithIsom)
orthogonal_submodule(::ZZLatWithIsom, ::QQMatrix)
rescale(::ZZLatWithIsom, ::RationalUnion)
Given a lattice with isometry
type(::ZZLatWithIsom)
Since determining whether two pairs of lattices with isometry are isomorphic is
a challenging task, one can perform a coarser comparison by looking at the type.
This set of data keeps track of some local and global invariants of the pair
is_of_type(::ZZLatWithIsom, t::Dict)
is_of_same_type(::ZZLatWithIsom, ::ZZLatWithIsom)
Finally, if the minimal polynomial of
These names follow from the fact that, by the trace equivalence, one can
associate to the pair
is_of_hermitian_type(::ZZLatWithIsom)
is_hermitian(::Dict)
As mentioned in the previous section, to a lattice with isometry
hermitian_structure(::ZZLatWithIsom)
Given an integral lattice with isometry
discriminant_group(::ZZLatWithIsom)
For simple cases as for definite lattices,
image_centralizer_in_Oq(::ZZLatWithIsom)
Note: hermitian Miranda-Morrison is only available for even lattices.
For an implementation of the regular Miranda-Morrison theory, we refer to the
function image_in_Oq
which actually computes the image of
More generally, for a finitely generated subgroup
discriminant_representation(::ZZLat, ::MatrixGroup)
We will see later in the section about enumeration of lattices with isometry
that one can compute
As for single integer lattices, it is possible to compute kernel sublattices of
some
kernel_lattice(::ZZLatWithIsom, ::Union{ZZPolyRingElem, QQPolyRingElem})
kernel_lattice(::ZZLatWithIsom, ::Integer)
Note that such sublattices are by definition primitive in
coinvariant_lattice(::ZZLatWithIsom)
invariant_lattice(::ZZLatWithIsom)
invariant_coinvariant_pair(::ZZLatWithIsom)
Similarly, we provide the possibility to compute invariant and coinvariant
sublattices given an orthogonal representation G
in matrix form of a finite
group on a given lattice L
:
coinvariant_lattice(::ZZLat, ::MatrixGroup)
invariant_lattice(::ZZLat, ::MatrixGroup)
invariant_coinvariant_pair(::ZZLat, ::MatrixGroup)
We conclude this introduction about standard functionalities for lattices with
isometry by introducing a last invariant for lattices with finite isometry of
hermitian type
signatures(::ZZLatWithIsom)
Given an integer lattice with isometry rational_spinor_norm(::QuadSpaceWithIsom)
for a definition.
rational_spinor_norm(::ZZLatWithIsom)
We choose as a convention that two pairs QuadSpaceWithIsom
are equal, and if the underlying lattices