Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quadratic forms and isometries - an Oscar (experimental) project #2563

Merged
merged 101 commits into from
Jul 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
937e806
first step
StevellM Aug 12, 2022
f5daccd
Merge branch 'main' into sm/latwithisom
StevellM Aug 26, 2022
5ca1905
first step
StevellM Aug 26, 2022
fb6378b
some more
StevellM Aug 30, 2022
6ad3819
temporary
StevellM Oct 11, 2022
7ef9b9c
temporary
StevellM Oct 17, 2022
8429334
Merge branch 'main' into sm/latwithisom
StevellM Oct 17, 2022
2e9fc2c
temporary
StevellM Oct 18, 2022
3cd873f
Merge branch 'main' into sm/latwithisom
StevellM Oct 18, 2022
a1e8e71
some more
StevellM Oct 19, 2022
ff1f675
Merge branch 'main' into sm/latwithisom
StevellM Oct 23, 2022
b5aa4d6
some more
StevellM Oct 24, 2022
0af1aab
some more
StevellM Oct 25, 2022
fea9c7d
Merge branch 'main' into sm/latwithisom
StevellM Oct 28, 2022
16b1bf4
ambient isometry and orthogrp deg tqm
StevellM Oct 29, 2022
bdffe41
minor change
StevellM Oct 31, 2022
ff544f4
some more
StevellM Nov 2, 2022
fb74736
Merge branch 'main' into sm/latwithisom
StevellM Nov 7, 2022
f60ad77
more
StevellM Nov 11, 2022
35aebfd
Merge branch 'main' into sm/latwithisom
StevellM Nov 11, 2022
71155d8
more
StevellM Nov 14, 2022
392df67
more
StevellM Nov 23, 2022
3df68ee
Merge branch 'main' into sm/latwithisom
StevellM Nov 23, 2022
1b1bda0
.
StevellM Nov 23, 2022
ae0a13e
a bit more
StevellM Dec 12, 2022
276c165
apply recent changes
StevellM Dec 14, 2022
80a4060
more
StevellM Dec 16, 2022
5a96d57
Merge branch 'main' into sm/latwithisom
StevellM Dec 19, 2022
6a5f5c9
more
StevellM Dec 20, 2022
e034dd1
Merge branch 'main' into sm/latwithisom
StevellM Jan 9, 2023
0937073
more changes
StevellM Jan 11, 2023
fe61962
more
StevellM Jan 19, 2023
5f77537
Merge branch 'main' into sm/latwithisom
StevellM Jan 20, 2023
ca9d68b
close to be done
StevellM Jan 20, 2023
7f8e924
Merge branch 'main' into sm/latwithisom
StevellM Jan 24, 2023
c103466
minor fixes
StevellM Jan 25, 2023
45cab5f
add embeddings
StevellM Feb 2, 2023
7e50102
Merge branch 'main' into sm/latwithisom
StevellM Feb 2, 2023
70ecc86
fixes
StevellM Feb 3, 2023
7c62b25
extra fix
StevellM Feb 3, 2023
aa68278
some changes and starting of hermitian miranda-morrison
StevellM Feb 10, 2023
63c4499
more
StevellM Feb 15, 2023
b9ed9be
more
StevellM Feb 20, 2023
35bd82a
prepare for breaking changes
StevellM Feb 24, 2023
d09c7d8
merge main
StevellM Feb 27, 2023
58a7214
more on hmm
StevellM Feb 27, 2023
89b5fc4
herm mir-mor + more features+docs
StevellM Mar 6, 2023
09298e6
Merge branch 'main' into sm/latwithisom
StevellM Mar 6, 2023
b28da18
move to experimental
StevellM Mar 7, 2023
c3f5f83
Merge branch 'main' into sm/latwithisom
StevellM Mar 7, 2023
7b2e6a1
begin tests
StevellM Mar 8, 2023
1434685
more changes on trace equivalence
StevellM Mar 14, 2023
0971ffa
merge
StevellM Mar 15, 2023
43e629f
some fixes
StevellM Mar 16, 2023
262aa6e
more on hermitian miranda-morrsion
StevellM Mar 22, 2023
49ad9d7
little fix
StevellM Mar 23, 2023
e0c0dc8
Merge branch 'main' into sm/latwithisom
StevellM Mar 23, 2023
cce29f8
more
StevellM Mar 27, 2023
2fdfcab
Merge branch 'main' into sm/latwithisom
StevellM Mar 28, 2023
509ac02
some fixes
StevellM Mar 29, 2023
8abf285
more improvements
StevellM Apr 5, 2023
5b8a359
Merge branch 'main' into sm/latwithisom
StevellM Apr 5, 2023
f5e9b18
more improvments
StevellM Apr 8, 2023
b17d7a9
fix hmm
StevellM Apr 13, 2023
b8fb430
adapt to new exp struct and further new codes
StevellM Apr 14, 2023
a76f82e
Merge branch 'main' into sm/latwithisom
StevellM Apr 17, 2023
94c3632
change format
StevellM May 1, 2023
840d99d
Merge branch 'main' into sm/latwithisom
StevellM May 1, 2023
c6ea270
bug fix and new functionalities
StevellM May 3, 2023
4d61637
final state
StevellM May 8, 2023
0c08b06
temp
StevellM May 12, 2023
8aa3d84
fix
StevellM May 13, 2023
9356a81
add README
StevellM May 18, 2023
00f7714
start docs
StevellM May 21, 2023
aa48466
more improvements + renaming + better printing + first step of docume…
StevellM May 27, 2023
4f7117a
delete
StevellM May 27, 2023
304bb6a
more stuff
StevellM May 30, 2023
d4e2ca3
Merge branch 'main' into sm/latwithisom
StevellM May 30, 2023
0b35d98
bla
StevellM Jun 4, 2023
fe5ed84
bla
StevellM Jun 4, 2023
b966aae
add spaces with isom and fix stabilizer
StevellM Jun 12, 2023
69e382c
change names + finish doc + some fixes
StevellM Jun 26, 2023
bc103ba
add _overlattices methods and refactor big algo + power of quadspace/…
StevellM Jun 26, 2023
d751b9d
few minor changes
StevellM Jun 29, 2023
4837cab
Merge branch 'main' into sm/latwithisom
StevellM Jul 6, 2023
569a6a7
update Hecke
StevellM Jul 6, 2023
bbc14f6
minor fixes + more tests
StevellM Jul 10, 2023
33d87f5
more adjustments
StevellM Jul 12, 2023
b37362f
Merge branch 'main' into sm/latwithisom
StevellM Jul 12, 2023
60250e1
adapt to recent chanegs
StevellM Jul 13, 2023
7c5d12a
Merge branch 'main' into sm/latwithisom
StevellM Jul 14, 2023
9755913
last polish before first draft PR
StevellM Jul 14, 2023
dfb5922
fixes for tests to pass
StevellM Jul 18, 2023
e297bb9
more tests and few fixes
StevellM Jul 18, 2023
8914f09
Update runtests.jl
StevellM Jul 18, 2023
c027c77
fix html docs
StevellM Jul 19, 2023
cd1ba5b
Merge remote-tracking branch 'local/sm/latwithisom' into sm/latwithisom
StevellM Jul 19, 2023
e37629f
apply suggestions and update project.toml and shorten few tests
StevellM Jul 19, 2023
00987b8
another round of suggestions
StevellM Jul 20, 2023
a8f4712
fix properly primitive embeddings
StevellM Jul 20, 2023
e0515e5
fix hmm + try to reduce a bit more the tests...
StevellM Jul 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ AbstractAlgebra = "0.31.0"
AlgebraicSolving = "0.3.3"
DocStringExtensions = "0.8, 0.9"
GAP = "0.9.4"
Hecke = "0.19.2"
Hecke = "0.19.7"
JSON = "^0.20, ^0.21"
Nemo = "0.35.1"
Polymake = "0.11.1"
Expand Down
11 changes: 11 additions & 0 deletions docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,17 @@ @Book{BH09
year = {2009}
}

@Article{BH23,
author = {Brandhorst, Simon and Hofmann, Tommy},
title = {Finite subgroups of automorphisms of K3 surfaces},
journal = {Forum of Mathematics, Sigma},
volume = {11},
publisher = {Cambridge University Press, Cambridge},
pages = {e54 1--57},
year = {2023},
doi = {10.1017/fms.2023.50}
}

@Misc{BHMPW20,
author = {Braden, Tom and Huh, June and Matherne, Jacob P. and Proudfoot, Nicholas and Wang, Botong},
title = {A semi-small decomposition of the Chow ring of a matroid},
Expand Down
75 changes: 75 additions & 0 deletions experimental/QuadFormAndIsom/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Quadratic forms and isometries

This project is a complement to the code about *hermitian lattices* available
in Hecke. We aim here to connect Hecke and GAP to handle some algorithmic
methods regarding quadratic forms with their isometries. In particular,
the integration of this code within Oscar is necessary to benefit from all the
performance of GAP with respect to computations with groups and automorphisms in
general.

For now, the project covers methods regarding rational and integral quadratic
forms.

## Content

We introduce two new structures
* `QuadSpaceWithIsom`
* `ZZLatWithIsom`
The former parametrizes pairs $(V, f)$ where $V$ is a rational quadratic form
and $f$ is an isometry of $V$. The latter parametrizes pairs $(L, f)$ where
$L$ is an integral quadratic form, also known as $\mathbb Z$-lattice and $f$
is an isometry of $L$. One of the main features of this project is the
enumeration of isomorphism classes of pairs $(L, f)$, where $f$ is an isometry
of finite order with at most two prime divisors. The methods we resort to
for this purpose are developed in the paper [BH23](@cite).

We also provide some algorithms computing isomorphism classes of primitive
embeddings of even lattices following Nikulin's theory. More precisely, the two
functions `primitive_embeddings_in_primary_lattice` and
`primitive_embeddings_of_primary_lattice` offer, under certain conditions,
the possibility to compute representatives of primitive embeddings and classify
them in different ways. Note nonetheless that these functions are not efficient
in the case were the discriminant groups have a large number of subgroups.

## Status

This project has been slightly tested on simple and known examples. It is
currently being tested on a larger scale to test its reliability. Moreover,
there are still computational bottlenecks due to non-optimized algorithms.

Among the possible improvements and extensions:
* Implement extra methods for lattices with isometries of infinite order;
* Extend the methods for classification of primitive embeddings to the more
general case (knowing that we lose efficiency for large discriminant groups);
* Extend existing methods for equivariant primitive embeddings/extensions.

## Currently application of this project

The project was initiated by S. Brandhorst and T. Hofmann for classifying
finite subgroups of automorphisms of K3 surfaces. Our current goal is to use
this code, and further extensions of it, to classify finite subgroups of
bimeromorphic self-maps of *hyperkaehler manifolds*, which are a higher
dimensional analogues of K3 surface.

## Notice to the user

Since this project is still under development, feel free to try any feature and
report all the bugs you may have found. Any suggestions for improvements or
extensions are more than welcome. Refer to the next section to know who you
should contact and how. Do not hesitate either to ask for new features - we
will be glad to add anything you may need for your research.

One may expect many things to vary within the next months: name of the
functions, available features, performance. This is due to the fact that the
current version of the code is still at an experimental stage.

## Contact

Please direct questions about this part of OSCAR to the following people:
* [Simon Brandhorst](https://www.math.uni-sb.de/ag/brandhorst/index.php?lang=en),
* [Tommy Hofmann](https://www.thofma.com/)
* [Stevell Muller](https://www.math.uni-sb.de/ag/brandhorst/index.php?option=com_content&view=article&id=26:muller-en-1&catid=18&lang=en&Itemid=114).

You can ask questions in the [OSCAR Slack](https://www.oscar-system.org/community/#slack).

Alternatively, you can [raise an issue on GitHub](https://github.com/oscar-system/Oscar.jl).
9 changes: 9 additions & 0 deletions experimental/QuadFormAndIsom/docs/doc.main
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[
"Quadratic forms and isometries" => [
"introduction.md",
"spacewithisom.md",
"latwithisom.md",
"enumeration.md",
"primembed.md"
]
]
89 changes: 89 additions & 0 deletions experimental/QuadFormAndIsom/docs/src/enumeration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
```@meta
CurrentModule = Oscar
```

# Enumeration of isometries

One of the main features of this project is the enumeration of lattices with
isometry of finite order with at most two prime divisors. This is the content
of [BH23](@cite) which has been implemented. We guide the user here to the global
aspects of the available theory, and we refer to the paper [BH23](@cite) for further
reference.

## Admissible triples

Roughly speaking, for a prime number $p$, a *$p$-admissible triple* `(A, B, C)`
is a triple of integer lattices such that, in certain cases, `C` can be obtained
as a primitive extension $A \perp B \to C$ where one can glue along
$p$-elementary subgroups of the respective discriminant groups of `A` and `B`.
Note that not all admissible triples satisfy this extension property.

For instance, if $f$ is an isometry of an integer lattice `C` of prime order
`p`, then for $A := \ker \Phi_1(f)$ and $B := \ker \Phi_p(f)$, one has that
`(A, B, C)` is $p$-admissible (see Lemma 4.15. in [BH23](@cite)).

We say that a triple `(AA, BB, CC)` of genus symbols for integer lattices is
*$p$-admissible* if there are some lattices $A \in AA$, $B \in BB$ and
$C \in CC$ such that $(A, B, C)$ is $p$-admissible.

We use Definition 4.13. and Algorithm 1 of [BH23](@cite) to implement the necessary
tools for working with admissible triples. Most of the computations consists of
local genus symbol manipulations and combinatorics. The code also relies on
enumeration of integer genera with given signatures, determinant and bounded
scale valuations for the Jordan components at all the relevant primes (see
[`integer_genera`](@ref)).

```@docs
admissible_triples(::ZZGenus, p::Integer)
is_admissible_triple(::ZZGenus, ::ZZGenus, ::ZZGenus, ::Integer)
```

Note that admissible triples are mainly used for enumerating lattices with
isometry of a given order and in a given genus.

## Enumeration functions

We give an overview of the functions implemented for the enumeration of the
isometries of integral integer lattices. For more details such as the proof of
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
isometries of integral integer lattices. For more details such as the proof of
isometries of integral integer lattices. For more details such as the proof of

the algorithms and the theory behind them, we refer to the reference paper
[BH23](@cite).

### Global function

As we will see later, the algorithms from [BH23](@cite) are specialized on the
requirement for the input and regular users might not be able to choose between
the functions available. We therefore provide a general function which
allows one to enumerate lattices with isometry of a given order and in a given
genus. The only requirements are to provide a genus symbol, or a lattice from
this genus, and the order wanted (as long as the number of distinct prime
divisors is at most 2).

```@docs
enumerate_classes_of_lattices_with_isometry(::ZZLat, ::IntegerUnion)
```

As a remark: if $n = p^dq^e$ is the chosen order, with $p < q$ prime numbers,
the previous function computes first iteratively representatives for all classes
with isometry in the given genus of order $q^e$. Then, the function increases
iteratively the order up to $p^dq^e$.

### Underlying machinery

Here is a list of the algorithmic machinery provided by [BH23](@cite) used
previously to enumerate lattices with isometry:

```@docs
representatives_of_hermitian_type(::ZZLatWithIsom, ::Int)
splitting_of_hermitian_prime_power(::ZZLatWithIsom, ::Int)
splitting_of_prime_power(::ZZLatWithIsom, ::Int, ::Int)
splitting_of_pure_mixed_prime_power(::ZZLatWithIsom, ::Int)
splitting_of_mixed_prime_power(::ZZLatWithIsom, ::Int, ::Int)
```

Note that an important feature from the theory in [BH23](@cite) is the notion of
*admissible gluings* and equivariant primitive embeddings for admissible triples.
In the next chapter, we present the methods regarding Nikulins's theory on primitive
embeddings and their equivariant version. We use this basis to introduce the
method `admissible_equivariant_primitive_extension` (Algorithm 2 in
[BH23](@cite)) which is the major tool making the previous enumeration
possible and fast, from an algorithmic point of view.
116 changes: 116 additions & 0 deletions experimental/QuadFormAndIsom/docs/src/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# Quadratic forms and isometries

This project is a complement to the code about *hermitian lattices* available
in Hecke. We aim here to connect Hecke and GAP to handle some algorithmic
methods regarding quadratic forms with their isometries. In particular,
the integration of this code within Oscar is necessary to benefit from all the
performance of GAP with respect to computations with groups and automorphisms in
general.

For now, the project covers methods regarding rational and integral quadratic
forms.

## Content

We introduce two new structures
* [`QuadSpaceWithIsom`](@ref)
* [`ZZLatWithIsom`](@ref)
The former parametrizes pairs $(V, f)$ where $V$ is a rational quadratic form
and $f$ is an isometry of $V$. The latter parametrizes pairs $(L, f)$ where
$L$ is an integral quadratic form, also known as $\mathbb Z$-lattice and $f$
is an isometry of $L$. One of the main features of this project is the
enumeration of isomorphism classes of pairs $(L, f)$, where $f$ is an isometry
of finite order with at most two prime divisors. The methods we resort to
for this purpose are developed in the paper [BH23].

We also provide some algorithms computing isomorphism classes of primitive
embeddings of even lattices following Nikulin's theory. More precisely, the two
functions `primitive_embeddings_in_primary_lattice` and
`primitive_embeddings_of_primary_lattice` offer, under certain conditions,
the possibility to compute representatives of primitive embeddings and classify
them in different ways. Note nonetheless that these functions are not efficient
in the case were the discriminant groups have a large number of subgroups.

## Status

This project has been slightly tested on simple and known examples. It is
currently being tested on a larger scale to test its reliability. Moreover,
there are still computational bottlenecks due to non-optimized algorithms.

Among the possible improvements and extensions:
* Implement extra methods for lattices with isometries of infinite order;
* Extend the methods for classification of primitive embeddings to the more
general case (knowing that we lose efficiency for large discriminant groups);
* Extend existing methods for equivariant primitive embeddings/extensions.

## Currently application of this project

The project was initiated by S. Brandhorst and T. Hofmann for classifying
finite subgroups of automorphisms of K3 surfaces. Our current goal is to use
this code, and further extensions of it, to classify finite subgroups of
bimeromorphic self-maps of *hyperkaehler manifolds*, which are a higher
dimensional analogues of K3 surface.

## Tutorials

No tutorials available at the moment.

## Examples

No examples available at the moment.

## Notice to the user

### Disclaimer

Since this project is still under development, feel free to try any feature and
report all the bugs you may have found. Any suggestions for improvements or
extensions are more than welcome. Refer to the next section to know who you
should contact and how. Do not hesitate either to ask for new features - we
will be glad to add anything you may need for your research.

One may expect many things to vary within the next months: name of the
functions, available features, performance. This is due to the fact that the
current version of the code is still at an experimental stage.

### Report an issue

If you are working with some objects of type `QuadSpaceWithIsom` or `ZZLatWithIsom`
and you need to report an issue, you can produce directly some lines of codes
helping to reconstruct your example. This can help the reviewers to understand
your issue and assist you. We have implemented a method `to_oscar` which
prints few lines of codes for reconstructing your example.

```@repl 2
using Oscar # hide
V = quadratic_space(QQ, 2);
Vf = quadratic_space_with_isometry(V, neg = true)
Oscar.to_oscar(Vf)

Lf = lattice(Vf)
Oscar.to_oscar(Lf)
```

## Make the code more talkative

Within the code, there are more hidden messages and testing which are disabled
by default. If you plan to experiment with the codes with your favourite
examples, you may want to be able to detect some issues to be reported, as well
as knowing what the code is doing. Indeed, some functions might take time in
term of compilation but also computations. For this, you can enable these extra
tests and printings by setting:

```julia
Oscar.set_lwi_level(2)
```

## Contact

Please direct questions about this part of OSCAR to the following people:
* [Simon Brandhorst](https://www.math.uni-sb.de/ag/brandhorst/index.php?lang=en),
* [Tommy Hofmann](https://www.thofma.com/)
* [Stevell Muller](https://www.math.uni-sb.de/ag/brandhorst/index.php?option=com_content&view=article&id=26:muller-en-1&catid=18&lang=en&Itemid=114).

You can ask questions in the [OSCAR Slack](https://www.oscar-system.org/community/#slack).

Alternatively, you can [raise an issue on GitHub](https://github.com/oscar-system/Oscar.jl).
Loading
Loading