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

LieAlgebras: Change WeylGroup action to a right action #4374

Merged
merged 3 commits into from
Dec 4, 2024

Conversation

lgoettgens
Copy link
Member

After some discussion with @fingolfin we came to the conclusion, that Weyl groups should not have the special role they have right now, but should follow the Oscar rule that all group actions are from the right, out of consistency.
Other mathematical areas have swallowed the pill as well.

pinging all people that could be affected by this change: @felix-roehrich @janikapeters @gfourier @joschmitt @antonydellavecchia @flenzen

@lgoettgens lgoettgens added topic: LieTheory experimental Only changes experimental parts of the code labels Dec 2, 2024
Copy link

codecov bot commented Dec 2, 2024

Codecov Report

Attention: Patch coverage is 87.50000% with 2 lines in your changes missing coverage. Please review.

Project coverage is 84.41%. Comparing base (13a2cd0) to head (4f29652).
Report is 7 commits behind head on master.

Files with missing lines Patch % Lines
experimental/LieAlgebras/src/WeylGroup.jl 50.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4374      +/-   ##
==========================================
+ Coverage   84.34%   84.41%   +0.07%     
==========================================
  Files         651      656       +5     
  Lines       86749    87720     +971     
==========================================
+ Hits        73168    74050     +882     
- Misses      13581    13670      +89     
Files with missing lines Coverage Δ
...imental/BasisLieHighestWeight/src/MainAlgorithm.jl 97.76% <100.00%> (ø)
...imental/BasisLieHighestWeight/src/UserFunctions.jl 92.30% <ø> (ø)
experimental/LieAlgebras/src/LieAlgebraModule.jl 88.71% <ø> (ø)
experimental/LieAlgebras/src/RootSystem.jl 93.18% <100.00%> (ø)
experimental/LieAlgebras/src/WeightLattice.jl 87.56% <100.00%> (ø)
...rimental/LieAlgebras/test/LieAlgebraModule-test.jl 100.00% <ø> (ø)
experimental/LieAlgebras/test/RootSystem-test.jl 97.16% <100.00%> (ø)
...xperimental/LieAlgebras/test/WeightLattice-test.jl 100.00% <100.00%> (+7.69%) ⬆️
experimental/LieAlgebras/test/WeylGroup-test.jl 97.87% <100.00%> (+0.09%) ⬆️
experimental/LieAlgebras/src/WeylGroup.jl 91.01% <50.00%> (+0.75%) ⬆️

... and 12 files with indirect coverage changes

Copy link
Member Author

@lgoettgens lgoettgens left a comment

Choose a reason for hiding this comment

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

For the two places in the code, where this PR just adds a very stupid (but computationally expensive) workaround (see the two comments below), @felix-roehrich and I just talked and have the following path forward:

  1. Merge this PR (it works, and it is better to have the large breaking change in as early as possible)
  2. Change the internally used normal form for Weyl group element words (from short revlex to short lex), including basic operations like *.
  3. Adapt the more complex functionality to the new normal form, get rid of the two workarounds added here.

@@ -362,7 +360,7 @@ function conjugate_dominant_weight_with_elem!(w::WeightLatticeElem)

# reversing word means it is in short revlex normal form
# and it is the element taking original w to new w
return w, weyl_group(root_system(w))(reverse!(word); normalize=false)
return w, weyl_group(root_system(w))(word; normalize=true) # TODO: is normalize=true necessary?
Copy link
Member Author

Choose a reason for hiding this comment

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

here

# return state, state
# TODO: change internals of iterator to return (wt, x) with wt*x == iter.weight instead of the hack below
wt, x = state
return (wt, inv(x)), state
Copy link
Member Author

Choose a reason for hiding this comment

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

and here

@lgoettgens lgoettgens requested a review from fingolfin December 2, 2024 15:09
@lgoettgens lgoettgens marked this pull request as ready for review December 2, 2024 15:09
@lgoettgens lgoettgens force-pushed the lg/weyl-action branch 2 times, most recently from 6f1df3b to 4f29652 Compare December 2, 2024 17:08
@lgoettgens
Copy link
Member Author

  1. Change the internally used normal form for Weyl group element words (from short revlex to short lex), including basic operations like *.
  2. Adapt the more complex functionality to the new normal form, get rid of the two workarounds added here.

This was a lot easier to do than I anticipated: it is already finished in #4375.
But since this PR works on its own, and both have to adapt a non-trivial number of functions, I would like to keep the two PRs separate.

This one here is good to go from my POV. #4375 will get rebased as soon as this one here is merged.

@fingolfin
Copy link
Member

Fine by me but perhaps let's wait till triage with merging this just in case there is more feedback?

@lgoettgens
Copy link
Member Author

Re-running CI to verify that this does not break #4260 that was merged in the meantime.

@lgoettgens lgoettgens closed this Dec 4, 2024
@lgoettgens lgoettgens reopened this Dec 4, 2024
@fingolfin fingolfin removed the triage label Dec 4, 2024
@lgoettgens
Copy link
Member Author

Triage had no objections. Will merge later this afternoon

@lgoettgens lgoettgens merged commit 0c5350a into oscar-system:master Dec 4, 2024
58 checks passed
@lgoettgens lgoettgens deleted the lg/weyl-action branch December 4, 2024 12:48
fingolfin pushed a commit that referenced this pull request Dec 5, 2024
#4375)

* Change WeylGroupElem normal form to short lex
* Needed test changes
* Clean up `conjugate_dominant_weight_with_elem`
* Add `is_in_normal_form` test for Weyl group isomorphisms
* Adapt AlgebraicShifting tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
experimental Only changes experimental parts of the code topic: LieTheory
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants