Methods for group actions on ZZLat#5339
Methods for group actions on ZZLat#5339simonbrandhorst merged 20 commits intooscar-system:masterfrom
ZZLat#5339Conversation
simonbrandhorst
left a comment
There was a problem hiding this comment.
There is a lot of copy pasting in the documentation which makes maintainance more difficult. Maybe you can consolidate it a bit?
What julia sometimes does is: "See some_function for the arguments".
| orthogonal complement ``K``, and given a finite group of isometries ``OS`` | ||
| of ``S``, return the largest (finite) group ``P`` of isometries of ``L`` | ||
| preserving ``S`` and whose restriction to ``S`` is contained in ``OS``. |
There was a problem hiding this comment.
We should not insist on finiteness. I have usecases where OS is infinite (coming from Borcherds method)
| set of vectors given as rows in a matrix with rational entries, return the | ||
| stabilizer of ``S`` in the orthogonal group of ``L``. |
There was a problem hiding this comment.
Best define precisely the action and what is stabilized precisely here.
| end | ||
|
|
||
| @doc raw""" | ||
| stabilizer_sublattice_in_orthogonal_group( |
There was a problem hiding this comment.
| stabilizer_sublattice_in_orthogonal_group( | |
| setwise_stabilizer_in_orthogonal_group( |
?
There was a problem hiding this comment.
Good suggestion, thank you!
|
|
||
| P = _maximal_extension(L, Ssat, OSsat; kwargs...) | ||
| if !is_sat | ||
| P, _ = stabilizer(P, S, on_lattices) |
There was a problem hiding this comment.
| P, _ = stabilizer(P, S, on_lattices) | |
| P, _ = stabilizer(P, S, on_lattices) |
Perhaps it would be faster to go via the discriminant groups?
How do these compare in terms of speed?
| Given a lattice ``L`` and a finite group of isometries ``G`` of ``L`` with | ||
| definite coinvariant sublattice``S`` , return the saturation of ``G`` in the | ||
| orthogonal group ``O(L)`` of ``L``, that is the pointwize stabilizer in ``O(L)`` | ||
| of its invariant sublattice. | ||
|
|
||
| If `ambient_representation` is set to `true`, the group ``G`` is considered as | ||
| a group of $\mathbb{Q}$-linear automorphisms on the ambient space of ``L``. | ||
|
|
||
| If `check` is set to `true`, the function tests whether the group ``G`` is | ||
| finite, whether it defines a group of isometries of the lattice ``L`` and | ||
| whether the coinvariant lattice ``S`` is definite. | ||
|
|
||
| If `special` is set to `true`, the function returns the saturation of ``G`` | ||
| in the special orthogonal group ``SO(L)`` of ``L``. Note that this requires | ||
| ``G`` to consist also of special isometries. If `check` is set to `true`, the | ||
| function tests whether all isometries in ``G`` have determinant `. | ||
|
|
||
| If `stable` is set to `true`, the function returns the saturation of ``G`` | ||
| in the stable orthogonal group ``O^\#(L)`` of ``L``. Note that this requires | ||
| ``G`` to consist also of stable isometries. If `check` is set to `true`, the | ||
| function tests whether all isometries in ``G`` act trivially on the | ||
| discriminant group of ``L``. | ||
|
|
||
| The keyword arguments in `kwargs` are optional arguments for the computation | ||
| of isometry group of definite lattices (see [`isometry_group(::ZZLat)`](@ref)). |
There was a problem hiding this comment.
Here and in other places did you try the following style? At least the headline #Arguments should be there I think.:
| Given a lattice ``L`` and a finite group of isometries ``G`` of ``L`` with | |
| definite coinvariant sublattice``S`` , return the saturation of ``G`` in the | |
| orthogonal group ``O(L)`` of ``L``, that is the pointwize stabilizer in ``O(L)`` | |
| of its invariant sublattice. | |
| If `ambient_representation` is set to `true`, the group ``G`` is considered as | |
| a group of $\mathbb{Q}$-linear automorphisms on the ambient space of ``L``. | |
| If `check` is set to `true`, the function tests whether the group ``G`` is | |
| finite, whether it defines a group of isometries of the lattice ``L`` and | |
| whether the coinvariant lattice ``S`` is definite. | |
| If `special` is set to `true`, the function returns the saturation of ``G`` | |
| in the special orthogonal group ``SO(L)`` of ``L``. Note that this requires | |
| ``G`` to consist also of special isometries. If `check` is set to `true`, the | |
| function tests whether all isometries in ``G`` have determinant `. | |
| If `stable` is set to `true`, the function returns the saturation of ``G`` | |
| in the stable orthogonal group ``O^\#(L)`` of ``L``. Note that this requires | |
| ``G`` to consist also of stable isometries. If `check` is set to `true`, the | |
| function tests whether all isometries in ``G`` act trivially on the | |
| discriminant group of ``L``. | |
| The keyword arguments in `kwargs` are optional arguments for the computation | |
| of isometry group of definite lattices (see [`isometry_group(::ZZLat)`](@ref)). | |
| Given a lattice ``L`` and a finite group of isometries ``G`` of ``L`` with | |
| definite coinvariant sublattice``S`` , return the saturation of ``G`` in the | |
| orthogonal group ``O(L)`` of ``L``, that is the pointwize stabilizer in ``O(L)`` | |
| of its invariant sublattice. | |
| # Arguments | |
| - If `ambient_representation` is set to `true`, the group ``G`` is considered as | |
| a group of $\mathbb{Q}$-linear automorphisms on the ambient space of ``L``. | |
| - If `check` is set to `true`, the function tests whether the group ``G`` is | |
| finite, whether it defines a group of isometries of the lattice ``L`` and | |
| whether the coinvariant lattice ``S`` is definite. | |
| - If `special` is set to `true`, the function returns the saturation of ``G`` | |
| in the special orthogonal group ``SO(L)`` of ``L``. Note that this requires | |
| ``G`` to consist also of special isometries. If `check` is set to `true`, the | |
| function tests whether all isometries in ``G`` have determinant `. | |
| - If `stable` is set to `true`, the function returns the saturation of ``G`` | |
| in the stable orthogonal group ``O^\#(L)`` of ``L``. Note that this requires | |
| ``G`` to consist also of stable isometries. If `check` is set to `true`, the | |
| function tests whether all isometries in ``G`` act trivially on the | |
| discriminant group of ``L``. | |
| - The keyword arguments in `kwargs` are optional arguments for the computation | |
| of isometry group of definite lattices (see [`isometry_group(::ZZLat)`](@ref)). |
ZZLatZZLat
Introduce new features for (finite) groups of isometries of
ZZLat.List of new features:
is_*_isometry_*methods;List of changes:
invariant_coinvariant_pair(::ZZLat, ...)to take as input a single matrix, or a list of matrices;discriminant_representation, give the option not to compute the full codomain (i.e. orthogonal group of the discriminant group) but just the image of the map (via the new keyword argumentfull).FinGenAbGroupHomorTorQuadModuleMapin the internal function_orthogonal_group(::TorQuadModule, ::Vector)(previously the second output only allowed forZZMatrix)To be discussed:
The "stabilizer" methods currently assume that all lattices are even (to use discriminant group). They could technically be upgraded for all integral lattices (and also, to some extent, to all lattices).In lines 410 and 665 of the filefinite_group_actions.jl, we usestabilizer(..., on_lattices)which can be sometimes slow. One way to bypass that would be, in the integral case, to look at the stabilizer of some discriminant subgroups or of some gluing. It is not clear yet which option is the best.To be done:
on_latticescalls by stabilizers of discriminant subgroups and gluings.@simonbrandhorst