-
Notifications
You must be signed in to change notification settings - Fork 123
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
Changes from all commits
Commits
Show all changes
101 commits
Select commit
Hold shift + click to select a range
937e806
first step
StevellM f5daccd
Merge branch 'main' into sm/latwithisom
StevellM 5ca1905
first step
StevellM fb6378b
some more
StevellM 6ad3819
temporary
StevellM 7ef9b9c
temporary
StevellM 8429334
Merge branch 'main' into sm/latwithisom
StevellM 2e9fc2c
temporary
StevellM 3cd873f
Merge branch 'main' into sm/latwithisom
StevellM a1e8e71
some more
StevellM ff1f675
Merge branch 'main' into sm/latwithisom
StevellM b5aa4d6
some more
StevellM 0af1aab
some more
StevellM fea9c7d
Merge branch 'main' into sm/latwithisom
StevellM 16b1bf4
ambient isometry and orthogrp deg tqm
StevellM bdffe41
minor change
StevellM ff544f4
some more
StevellM fb74736
Merge branch 'main' into sm/latwithisom
StevellM f60ad77
more
StevellM 35aebfd
Merge branch 'main' into sm/latwithisom
StevellM 71155d8
more
StevellM 392df67
more
StevellM 3df68ee
Merge branch 'main' into sm/latwithisom
StevellM 1b1bda0
.
StevellM ae0a13e
a bit more
StevellM 276c165
apply recent changes
StevellM 80a4060
more
StevellM 5a96d57
Merge branch 'main' into sm/latwithisom
StevellM 6a5f5c9
more
StevellM e034dd1
Merge branch 'main' into sm/latwithisom
StevellM 0937073
more changes
StevellM fe61962
more
StevellM 5f77537
Merge branch 'main' into sm/latwithisom
StevellM ca9d68b
close to be done
StevellM 7f8e924
Merge branch 'main' into sm/latwithisom
StevellM c103466
minor fixes
StevellM 45cab5f
add embeddings
StevellM 7e50102
Merge branch 'main' into sm/latwithisom
StevellM 70ecc86
fixes
StevellM 7c62b25
extra fix
StevellM aa68278
some changes and starting of hermitian miranda-morrison
StevellM 63c4499
more
StevellM b9ed9be
more
StevellM 35bd82a
prepare for breaking changes
StevellM d09c7d8
merge main
StevellM 58a7214
more on hmm
StevellM 89b5fc4
herm mir-mor + more features+docs
StevellM 09298e6
Merge branch 'main' into sm/latwithisom
StevellM b28da18
move to experimental
StevellM c3f5f83
Merge branch 'main' into sm/latwithisom
StevellM 7b2e6a1
begin tests
StevellM 1434685
more changes on trace equivalence
StevellM 0971ffa
merge
StevellM 43e629f
some fixes
StevellM 262aa6e
more on hermitian miranda-morrsion
StevellM 49ad9d7
little fix
StevellM e0c0dc8
Merge branch 'main' into sm/latwithisom
StevellM cce29f8
more
StevellM 2fdfcab
Merge branch 'main' into sm/latwithisom
StevellM 509ac02
some fixes
StevellM 8abf285
more improvements
StevellM 5b8a359
Merge branch 'main' into sm/latwithisom
StevellM f5e9b18
more improvments
StevellM b17d7a9
fix hmm
StevellM b8fb430
adapt to new exp struct and further new codes
StevellM a76f82e
Merge branch 'main' into sm/latwithisom
StevellM 94c3632
change format
StevellM 840d99d
Merge branch 'main' into sm/latwithisom
StevellM c6ea270
bug fix and new functionalities
StevellM 4d61637
final state
StevellM 0c08b06
temp
StevellM 8aa3d84
fix
StevellM 9356a81
add README
StevellM 00f7714
start docs
StevellM aa48466
more improvements + renaming + better printing + first step of docume…
StevellM 4f7117a
delete
StevellM 304bb6a
more stuff
StevellM d4e2ca3
Merge branch 'main' into sm/latwithisom
StevellM 0b35d98
bla
StevellM fe5ed84
bla
StevellM b966aae
add spaces with isom and fix stabilizer
StevellM 69e382c
change names + finish doc + some fixes
StevellM bc103ba
add _overlattices methods and refactor big algo + power of quadspace/…
StevellM d751b9d
few minor changes
StevellM 4837cab
Merge branch 'main' into sm/latwithisom
StevellM 569a6a7
update Hecke
StevellM bbc14f6
minor fixes + more tests
StevellM 33d87f5
more adjustments
StevellM b37362f
Merge branch 'main' into sm/latwithisom
StevellM 60250e1
adapt to recent chanegs
StevellM 7c5d12a
Merge branch 'main' into sm/latwithisom
StevellM 9755913
last polish before first draft PR
StevellM dfb5922
fixes for tests to pass
StevellM e297bb9
more tests and few fixes
StevellM 8914f09
Update runtests.jl
StevellM c027c77
fix html docs
StevellM cd1ba5b
Merge remote-tracking branch 'local/sm/latwithisom' into sm/latwithisom
StevellM e37629f
apply suggestions and update project.toml and shorten few tests
StevellM 00987b8
another round of suggestions
StevellM a8f4712
fix properly primitive embeddings
StevellM e0515e5
fix hmm + try to reduce a bit more the tests...
StevellM File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
] | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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). |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.