-
Notifications
You must be signed in to change notification settings - Fork 134
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
Root system documentation #4297
Merged
Merged
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
a5654bb
Collect docstrings in markdown files
lgoettgens 0bf853f
Fix some typos
lgoettgens 61530e5
Allow scalar multiplication from the right
lgoettgens 5b21b34
Refactor cartan matrix docstrings
lgoettgens ee26007
Reorder some functions
lgoettgens 4b6825e
Add `conjugate_dominant_weight_with_*_elem` for both action directions
lgoettgens 2f104a6
Refactor root system docstrings
lgoettgens cd766e5
Refactor Weyl group docstrings
lgoettgens 443c80f
Some markdown changes
lgoettgens e44ac48
Some cleanup
lgoettgens da36bda
Make build without warnings
lgoettgens 4dee79a
Add docstring for `reduced_expressions`
lgoettgens e1353a3
Adapt `contact` section
lgoettgens 3c86e7a
Add more headings
lgoettgens f457ed6
Add docstrings for types
lgoettgens 5883fc1
Add more mutating arithmetics and tests
lgoettgens fbea0f2
Add warning for affine root systems
lgoettgens 3f66e22
Address comments
lgoettgens 3b2fd6a
Apply suggestions from code review
lgoettgens f5ca39c
Move `is_fundamental_weight` from BLHW
lgoettgens 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 |
---|---|---|
|
@@ -7,5 +7,7 @@ | |
"modules.md", | ||
"module_homs.md", | ||
"cartan_matrix.md", | ||
"root_systems.md", | ||
"weyl_groups.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
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,223 @@ | ||
```@meta | ||
CurrentModule = Oscar | ||
DocTestSetup = Oscar.doctestsetup() | ||
``` | ||
|
||
# Root systems | ||
|
||
Root systems in this module are meant to be abstract root systems, i.e. they are represented by a set of roots (vectors in an euclidean space). | ||
|
||
The relevant types around root systems are: | ||
- `RootSystem` for the root system itself, | ||
- `RootSpaceElem` for elements in the root space, i.e. roots and linear combinations thereof, | ||
- `DualRootSpaceElem` for elements in the dual root space, i.e. coroots and linear combinations thereof, | ||
- `WeightLatticeElem` for elements in the weight lattice, i.e. weights and linear combinations thereof. | ||
|
||
!!! warning | ||
Most functionality around root systems is currently only intended to be used with root systems of finite type. | ||
For root systems of affine type, some documentation may be ill-phrased or incorrect, and some functions may not work as intended. | ||
|
||
## Table of contents | ||
|
||
```@contents | ||
Pages = ["root_systems.md"] | ||
Depth = 2:5 | ||
``` | ||
|
||
## Constructing root systems | ||
|
||
```@docs | ||
root_system(::ZZMatrix) | ||
root_system(::Symbol, ::Int64) | ||
root_system(::Vector{Tuple{Symbol, Int64}}) | ||
``` | ||
|
||
|
||
## Properties of root systems | ||
|
||
```@docs | ||
is_simple(::RootSystem) | ||
rank(::RootSystem) | ||
``` | ||
|
||
|
||
### Cartan matrix and Weyl group | ||
```@docs | ||
cartan_matrix(::RootSystem) | ||
``` | ||
```@docs; canonical=false | ||
weyl_group(::RootSystem) | ||
``` | ||
|
||
|
||
### Root system type | ||
```@docs | ||
has_root_system_type(::RootSystem) | ||
root_system_type(::RootSystem) | ||
root_system_type_with_ordering(::RootSystem) | ||
``` | ||
|
||
|
||
### Root getters | ||
```@docs | ||
number_of_roots(::RootSystem) | ||
number_of_positive_roots(::RootSystem) | ||
number_of_simple_roots(::RootSystem) | ||
``` | ||
|
||
The following functions return roots, see [Root space elements](@ref) for more information. | ||
```@docs | ||
root(::RootSystem, ::Int64) | ||
roots(::RootSystem) | ||
simple_root(::RootSystem, ::Int64) | ||
simple_roots(::RootSystem) | ||
positive_root(::RootSystem, ::Int64) | ||
positive_roots(::RootSystem) | ||
negative_root(::RootSystem, ::Int64) | ||
negative_roots(::RootSystem) | ||
``` | ||
|
||
|
||
### Coroot getters | ||
The following functions return coroots, see [Dual root space elements](@ref) for more information. | ||
```@docs | ||
coroot(::RootSystem, ::Int64) | ||
coroots(::RootSystem) | ||
simple_coroot(::RootSystem, ::Int64) | ||
simple_coroots(::RootSystem) | ||
positive_coroot(::RootSystem, ::Int64) | ||
positive_coroots(::RootSystem) | ||
negative_coroot(::RootSystem, ::Int64) | ||
negative_coroots(::RootSystem) | ||
``` | ||
|
||
|
||
### Weight getters | ||
The following functions return weights, see [Weight lattice elements](@ref) for more information. | ||
```@docs | ||
fundamental_weight(::RootSystem, ::Int64) | ||
fundamental_weights(::RootSystem) | ||
weyl_vector(::RootSystem) | ||
``` | ||
|
||
|
||
## Root space elements | ||
|
||
```@docs | ||
RootSpaceElem(::RootSystem, ::Vector{<:RationalUnion}) | ||
RootSpaceElem(::RootSystem, ::QQMatrix) | ||
RootSpaceElem(::WeightLatticeElem) | ||
zero(::Type{RootSpaceElem}, ::RootSystem) | ||
``` | ||
|
||
```@docs | ||
root_system(::RootSpaceElem) | ||
``` | ||
|
||
Basic arithmetic operations like `zero`, `+`, `-`, `*` (with rational scalars), and `==` are supported. | ||
|
||
```@docs | ||
coeff(::RootSpaceElem, ::Int) | ||
coefficients(::RootSpaceElem) | ||
``` | ||
|
||
```@docs | ||
height(::RootSpaceElem) | ||
iszero(::RootSpaceElem) | ||
``` | ||
|
||
### Root testing | ||
```@docs | ||
is_root(::RootSpaceElem) | ||
is_root_with_index(::RootSpaceElem) | ||
is_simple_root(::RootSpaceElem) | ||
is_simple_root_with_index(::RootSpaceElem) | ||
is_positive_root(::RootSpaceElem) | ||
is_positive_root_with_index(::RootSpaceElem) | ||
is_negative_root(::RootSpaceElem) | ||
is_negative_root_with_index(::RootSpaceElem) | ||
``` | ||
|
||
### Reflections | ||
```@docs | ||
reflect(::RootSpaceElem, ::Int) | ||
reflect!(::RootSpaceElem, ::Int) | ||
``` | ||
|
||
|
||
## Dual root space elements | ||
|
||
```@docs | ||
DualRootSpaceElem(::RootSystem, ::Vector{<:RationalUnion}) | ||
DualRootSpaceElem(::RootSystem, ::QQMatrix) | ||
zero(::Type{DualRootSpaceElem}, ::RootSystem) | ||
``` | ||
|
||
```@docs | ||
root_system(::DualRootSpaceElem) | ||
``` | ||
|
||
Basic arithmetic operations like `zero`, `+`, `-`, `*` (with rational scalars), and `==` are supported. | ||
|
||
```@docs | ||
coeff(::DualRootSpaceElem, ::Int) | ||
coefficients(::DualRootSpaceElem) | ||
``` | ||
|
||
```@docs | ||
height(::DualRootSpaceElem) | ||
iszero(::DualRootSpaceElem) | ||
``` | ||
|
||
### Coroot testing | ||
```@docs | ||
is_coroot(::DualRootSpaceElem) | ||
is_coroot_with_index(::DualRootSpaceElem) | ||
is_simple_coroot(::DualRootSpaceElem) | ||
is_simple_coroot_with_index(::DualRootSpaceElem) | ||
is_positive_coroot(::DualRootSpaceElem) | ||
is_positive_coroot_with_index(::DualRootSpaceElem) | ||
is_negative_coroot(::DualRootSpaceElem) | ||
is_negative_coroot_with_index(::DualRootSpaceElem) | ||
``` | ||
|
||
|
||
## Weight lattice elements | ||
|
||
```@docs | ||
WeightLatticeElem(::RootSystem, ::Vector{<:IntegerUnion}) | ||
WeightLatticeElem(::RootSystem, ::ZZMatrix) | ||
WeightLatticeElem(::RootSpaceElem) | ||
zero(::Type{WeightLatticeElem}, ::RootSystem) | ||
``` | ||
|
||
```@docs | ||
root_system(::WeightLatticeElem) | ||
``` | ||
|
||
Basic arithmetic operations like `zero`, `+`, `-`, `*` (with integer scalars), and `==` are supported. | ||
|
||
```@docs | ||
coeff(::WeightLatticeElem, ::Int) | ||
coefficients(::WeightLatticeElem) | ||
``` | ||
|
||
```@docs | ||
iszero(::WeightLatticeElem) | ||
is_dominant(::WeightLatticeElem) | ||
is_fundamental_weight(::WeightLatticeElem) | ||
is_fundamental_weight_with_index(::WeightLatticeElem) | ||
``` | ||
|
||
### Reflections | ||
```@docs | ||
reflect(::WeightLatticeElem, ::Int) | ||
reflect!(::WeightLatticeElem, ::Int) | ||
``` | ||
|
||
### Conjugate dominant weight | ||
```@docs | ||
conjugate_dominant_weight(::WeightLatticeElem) | ||
conjugate_dominant_weight_with_left_elem(::WeightLatticeElem) | ||
conjugate_dominant_weight_with_right_elem(::WeightLatticeElem) | ||
``` |
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.
While looking through the existing documentation, I noticed that this contact section is a bit outdated.
Is it fine for you (@felix-roehrich) to be listed here (and then similarly after moving things to src in the contact section there)?
In the
src/
documentation, I would find it beneficial to have someone more permanent than Felix and me there, and would additionally put @fingolfin (if that's fine for you).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.
Fine by me