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

Adv/algebraic shifting #4260

Merged
merged 173 commits into from
Dec 3, 2024
Merged

Adv/algebraic shifting #4260

merged 173 commits into from
Dec 3, 2024

Conversation

antonydellavecchia
Copy link
Collaborator

Algebraic shifting first merge into Oscar.

@flenzen @micjoswig

Copy link
Member

@fingolfin fingolfin left a comment

Choose a reason for hiding this comment

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

Since you asked for feedback...

Project.toml Show resolved Hide resolved
experimental/AlgebraicShifting/src/AlgebraicShifting.jl Outdated Show resolved Hide resolved
experimental/AlgebraicShifting/src/AlgebraicShifting.jl Outdated Show resolved Hide resolved
experimental/AlgebraicShifting/src/AlgebraicShifting.jl Outdated Show resolved Hide resolved
"""
function rothe_matrix(F::Field, w::WeylGroupElem)
W = parent(w)
phi = isomorphism(PermGroup, W)
Copy link
Member

Choose a reason for hiding this comment

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

Do we guarantee somewhere that this is a specific isomorphism? (@lgoettgens will know)? Otherwise this code here strikes me as potentially problematic.

Copy link
Member

Choose a reason for hiding this comment

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

No, at the moment we don't. This particular function doesn't even have a docstring yet. When in the future I add a docstring, I either add this guarantee there, or I'll move the current implementation to a different function that will then have this guarantee. Also, as soon as this PR is merged, we will notice things like this in CI

Copy link
Collaborator

Choose a reason for hiding this comment

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

Did we add the specific isomorphism only for the fp group version?

Copy link
Member

Choose a reason for hiding this comment

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

Yes, exactly. The iso to FPGroup has some guarantees (number of gens with coxeter relations). The iso to PermGroup is atm only implemented for type A_n with standard ordering and has no guarantees

Copy link
Member

Choose a reason for hiding this comment

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

OK we can sort it out later, this is code in experimental after all -- I'll look into providing a better / more general isomorphism(PermGroup, ::WeylGroup) method, but perhaps also another function which allows choosing specific permutation representations.

Copy link
Member

Choose a reason for hiding this comment

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

Thanks for looking into this @fingolfin!

experimental/AlgebraicShifting/src/PartialShiftGraph.jl Outdated Show resolved Hide resolved
experimental/AlgebraicShifting/src/UniformHypergraph.jl Outdated Show resolved Hide resolved
src/Combinatorics/Graphs/functions.jl Outdated Show resolved Hide resolved
src/Combinatorics/SimplicialComplexes.jl Outdated Show resolved Hide resolved
@antonydellavecchia antonydellavecchia enabled auto-merge (squash) December 3, 2024 21:38
@antonydellavecchia antonydellavecchia merged commit 18af71a into master Dec 3, 2024
29 of 31 checks passed
@antonydellavecchia antonydellavecchia deleted the adv/algebraic-shifting branch December 3, 2024 23:03
Comment on lines +219 to +229
if show_progress
edge_labels = reduce((d1, d2) -> mergewith!(vcat, d1, d2),
@showprogress map_function(
Ks -> multi_edges(F, phi.(W), Ks, complex_labels),
Iterators.partition(enumerate(complexes), task_size)))
else
edge_labels = reduce((d1, d2) -> mergewith!(vcat, d1, d2),
map_function(
Ks -> multi_edges(F, phi.(W), Ks, complex_labels),
Iterators.partition(enumerate(complexes), task_size)))
end
Copy link
Member

Choose a reason for hiding this comment

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

You could merge these two cases by instead using

edge_labels = reduce((d1, d2) -> mergewith!(vcat, d1, d2),
                           @showprogress enabled=show_progress map_function(
                             Ks -> multi_edges(F, phi.(W), Ks, complex_labels),
                             Iterators.partition(enumerate(complexes), task_size)))

since the progress meter has a kwarg to dis/enable it

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

thanks, added to #4381

antonydellavecchia added a commit that referenced this pull request Dec 6, 2024
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants