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

Vinbergs Algorithm #4152

Merged
merged 28 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
288cbaf
Add Vinberg's algorithm
ElMerkel Aug 19, 2024
0ff56ac
First fixes
ElMerkel Aug 19, 2024
1ecbb88
Update docs/doc.main
ElMerkel Aug 28, 2024
6e1cd94
Update docs/oscar_references.bib
ElMerkel Aug 28, 2024
78075f0
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Aug 28, 2024
d39ea51
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Aug 28, 2024
c8d1d26
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Aug 28, 2024
0260dcd
Update src/NumberTheory/vinberg.jl
ElMerkel Aug 28, 2024
6b16836
Update src/NumberTheory/vinberg.jl
ElMerkel Aug 28, 2024
23ca034
Merge branch 'master' into em/vinberg_algo
lgoettgens Sep 9, 2024
1dcc589
Test
ElMerkel Sep 10, 2024
5626123
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Sep 10, 2024
7ddc4fe
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Sep 10, 2024
e62bb66
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Sep 10, 2024
5cdcf86
Update docs/src/LinearAlgebra/vinberg.md
ElMerkel Sep 10, 2024
5e6acd6
Update src/NumberTheory/vinberg.jl
ElMerkel Sep 10, 2024
e501403
Test 2
ElMerkel Sep 11, 2024
5c775b1
First fixes regarding feedback of fingolfin and simonbrandhorst
ElMerkel Sep 11, 2024
50d327a
Further fixes regarding feedback of fingolfin and simonbrandhorst
ElMerkel Sep 17, 2024
687c43d
Turkalj's paper
ElMerkel Sep 21, 2024
e33e208
Bug Fixes
ElMerkel Sep 21, 2024
111d8ad
Update src/NumberTheory/vinberg.jl
simonbrandhorst Sep 25, 2024
9742b9e
Merge branch 'master' into em/vinberg_algo
simonbrandhorst Sep 26, 2024
59015e1
move docs to number theory
simonbrandhorst Sep 26, 2024
1512e0e
fix the search for v0, non-allocating variants in the hot loop
simonbrandhorst Sep 26, 2024
ec1a632
bibtool
simonbrandhorst Sep 26, 2024
bf290b9
clean up the documentation
simonbrandhorst Sep 26, 2024
20eff62
discard imprimitive vectors
simonbrandhorst Sep 26, 2024
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
3 changes: 2 additions & 1 deletion docs/doc.main
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@
"Hecke/manual/quad_forms/genusherm.md",
"Hecke/manual/quad_forms/integer_lattices.md",
"Hecke/manual/quad_forms/Zgenera.md",
"Hecke/manual/quad_forms/discriminant_group.md"
"Hecke/manual/quad_forms/discriminant_group.md",
"NumberTheory/vinberg.md",
],
],

Expand Down
21 changes: 21 additions & 0 deletions docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2305,6 +2305,16 @@ @Article{Tra04
doi = {10.1016/j.cagd.2004.07.001}
}

@Article{Tur18,
author = {Turkalj, I.},
title = {Reflective Lorentzian lattices of signature (5, 1)},
journal = {Journal of Algebra},
volume = {513},
pages = {516--544},
year = {2018},
doi = {10.1016/j.algebra.2018.06.013}
}

@Misc{VE22,
author = {Vaughan-Lee, Michael and Eick, Bettina},
title = {SglPPow, Database of groups of prime-power order for some prime-powers, Version 2.3},
Expand All @@ -2314,6 +2324,17 @@ @Misc{VE22
url = {https://gap-packages.github.io/sglppow/}
}

@InCollection{Vin75,
author = {Vinberg, E. B.},
title = {Some arithmetical discrete groups in Lobacevsky spaces},
booktitle = {Discrete subgroups of Lie groups and applications to moduli (Internat. Colloq., Bombay, 1973)},
series = {Tata Inst. Fundam. Res. Stud. Math.},
volume = {No. 7},
publisher = {Published for the Tata Institute of Fundamental Research, Bombay by Oxford University Press, Bombay},
pages = {323--348},
year = {1975}
}

@MastersThesis{Vol23,
author = {Volz, Sebastian},
title = {Design and implementation of efficient algorithms for operations on partitions of sets},
Expand Down
52 changes: 52 additions & 0 deletions docs/src/NumberTheory/vinberg.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
```@meta
CurrentModule = Oscar
DocTestSetup = Oscar.doctestsetup()
```

# Vinberg's algorithm

A $\textit{Lorentzian lattice} L$ is an integral $\Z$-lattice of signature $(s_+, s_-)$ with $s_+=1$ and $s_->0$.
A $\textit{root}$ of $r \in L$ is a primitive vector s.t. reflection in the hyperplane $r^\perp$ maps $L$ to itself.
$L$ is called $\textit{reflective} if the set of fundamental roots $\~{R}(L)$ is finite.

See for example [Tur18](@cite) for the theory of Arithmetic Reflection Groups and Reflective Lorentzian Lattices.

## Description
The algorithm constructs a fundamental polyhedron $P$ for a Lorentzian lattice $L$ by computing its $\textit{fundamental roots} $r$, i.e. the roots $r$ which are perpendicular to the faces of $P$ and which have inner product at least 0 with the elements of $P$.
Choose $v_0$ in $L$ primitive with $v_0^2 > 0$ as a point that $P$ should contain.

Let $Q$ be the corresponding Gram matrix of $L$ with standard basis. A vector $r$ is a fundamental root, if
- the vector $r$ is primitive,
- reflection by $r$ preserves the lattice, i.e. $\frac{2}{r^2}*r*Q$ is an integer matrix,
- the pair $(r, v_0)$ is positive oriented, i.e. $(r, v_0) > 0$,
- the product $(r, \~{r}) \geq \ 0$ for all roots $\~{r}$ already found.
This implies that $r^2$ divides $2*i$ for $i$ being the level of $Q$, i.e. the last invariant of the Smith normal form of $Q$.

$P$ can be constructed by solving $(r, v_0) = n$ and $r^2 = k$ by increasing order of the value $\frac{n^2}{k}$ and $r$ satisfying the above conditions.

If $v_0$ lies on a root hyperplane, then $P$ is not uniquely determined.
In that case we need a direction vector $v_1$ which satisfies $(\~{v}, v_1) \neq 0$
for all possible roots $\~{v}$ with $(v_0, \~{v}) = 0$

With $v_0$ and $v_1$ fixed $P$ is uniquely determined for any choice of root lengths and maximal distance $(v_0, r)$.
We choose the first roots $r$ by increasing order of the value $\frac{(\~{r}, v_1)}{r^2}$ for all possible roots $\~{v}$ with $(v_0, \~{v}) = 0$.
For any other root length we continue as stated above.

For proofs of the statements above and further explanations see [Vin75](@cite).

## Function

```@docs
vinberg_algorithm(Q::ZZMatrix, upper_bound::ZZRingElem)
```


## 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).
* [Stevell Muller](https://www.math.uni-sb.de/ag/brandhorst/index.php?option=com_content&view=article&id=30:muller&catid=10&lang=de&Itemid=104),

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

Alternatively, you can [raise an issue on github](https://www.oscar-system.org/community/#how-to-report-issues).
Loading
Loading