Skip to content

Methods for group actions on ZZLat#5339

Merged
simonbrandhorst merged 20 commits intooscar-system:masterfrom
StevellM:sm/fingrp_action_zzlat
Oct 1, 2025
Merged

Methods for group actions on ZZLat#5339
simonbrandhorst merged 20 commits intooscar-system:masterfrom
StevellM:sm/fingrp_action_zzlat

Conversation

@StevellM
Copy link
Copy Markdown
Member

@StevellM StevellM commented Sep 17, 2025

Introduce new features for (finite) groups of isometries of ZZLat.

List of new features:

  • Extra sanity checks via the new is_*_isometry_* methods;
  • Convenient methods to change matrix representation of isometries of lattices;
  • Constructors for the stable orthogonal group and special orthogonal group of definite lattices;
  • Constructors for the stable/special subgroup of a finite group of isometries;
  • Methods for computing:
    • joint stabilizers of a finite set of vectors in the orthogonal group of a lattice;
    • pointwize stabilizer of a lattice with definite complement;
    • stabilizer of a definite sublattice with definite complement;
  • Saturation of group of isometries with definite coinvariant sublattice.

List of changes:

  • Allow invariant_coinvariant_pair(::ZZLat, ...) to take as input a single matrix, or a list of matrices;
  • In 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 argument full).
  • Add the possibility to give a list of FinGenAbGroupHom or TorQuadModuleMap in the internal function _orthogonal_group(::TorQuadModule, ::Vector) (previously the second output only allowed for ZZMatrix)

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 file finite_group_actions.jl, we use stabilizer(..., 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:

  • Add tests for the new features.
  • ~ Discuss whether we extend the "stabilizer" functionalities to all (integral) lattices.~
  • Discuss whether we replace the on_lattices calls by stabilizers of discriminant subgroups and gluings.
  • Related to the previous point: discuss whether we want to add general functionalities related to stabilizers of discriminant subgroups and gluings.

@simonbrandhorst

@StevellM StevellM added enhancement New feature or request topic: number theory WIP NOT ready for merging release notes: to be added PRs introducing changes that should be (but have not yet been) mentioned in the release notes needs tests labels Sep 17, 2025
Copy link
Copy Markdown
Collaborator

@simonbrandhorst simonbrandhorst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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".

Comment thread docs/src/NumberTheory/QuadFormAndIsom/fingrpact.md Outdated
Comment thread docs/src/NumberTheory/QuadFormAndIsom/fingrpact.md Outdated
Comment thread docs/src/NumberTheory/QuadFormAndIsom/fingrpact.md Outdated
Comment thread docs/src/NumberTheory/QuadFormAndIsom/fingrpact.md Outdated
Comment thread docs/src/NumberTheory/QuadFormAndIsom/fingrpact.md
Comment on lines +551 to +553
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``.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should not insist on finiteness. I have usecases where OS is infinite (coming from Borcherds method)

Comment on lines +592 to +593
set of vectors given as rows in a matrix with rational entries, return the
stabilizer of ``S`` in the orthogonal group of ``L``.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Best define precisely the action and what is stabilized precisely here.

end

@doc raw"""
stabilizer_sublattice_in_orthogonal_group(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
stabilizer_sublattice_in_orthogonal_group(
setwise_stabilizer_in_orthogonal_group(

?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good suggestion, thank you!


P = _maximal_extension(L, Ssat, OSsat; kwargs...)
if !is_sat
P, _ = stabilizer(P, S, on_lattices)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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?

Comment on lines +775 to +799
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)).
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here and in other places did you try the following style? At least the headline #Arguments should be there I think.:

Suggested change
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)).

@lgoettgens lgoettgens marked this pull request as draft September 18, 2025 17:04
@StevellM StevellM added release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes and removed WIP NOT ready for merging release notes: to be added PRs introducing changes that should be (but have not yet been) mentioned in the release notes needs tests labels Sep 25, 2025
@StevellM StevellM changed the title Methods for finite group actions on ZZLat Methods for group actions on ZZLat Sep 25, 2025
@StevellM StevellM marked this pull request as ready for review September 25, 2025 10:05
Comment thread docs/src/NumberTheory/QuadFormAndIsom/fingrpact.md Outdated
Comment thread src/NumberTheory/QuadFormAndIsom/lattices_with_isometry.jl Outdated
Comment thread src/NumberTheory/QuadFormAndIsom/lattices_with_isometry.jl Outdated
Comment thread src/NumberTheory/QuadFormAndIsom/lattices_with_isometry.jl Outdated
@simonbrandhorst simonbrandhorst merged commit acfa811 into oscar-system:master Oct 1, 2025
30 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes topic: number theory

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants