Skip to content

Commit 4553735

Browse files
author
Release Manager
committed
gh-36122: Added hash function to elements of the fundamental group of an extended affine Weyl group This change allows users to compute the python `hash` function for elements of the (Borovoi) fundamental group of an extended affine Weyl group, and subsequently for elements of the extended Weyl group itself if using the `FW` realization. This, in turn, allows to use these mathematical objects as keys in dictionaries. <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> Fixes #36121 . It adds a `__hash__` function to the class `FundamentalGroupElement` associated with `FundamentalGroupOfExtendedAffineWeylGroup`. SAGE already associates to each element of the fundamental group an integer, accessible as its `value()` or `_value`. This integer is unique among other elements of the same fundamental group and thus suitable as a hash for hashmap applications (e.g. Python dictionaries). We return the `hash` of that integer, which is the integer itself for current python implementations. ``` W = ExtendedAffineWeylGroup('A4') fun = W.fundamental_group().an_element() w = W.FW().an_element() hash(fun), {w: 0} ``` yields the following result: ``` (4, {pi[4] * S0*S1*S2*S3*S4: 0}) ``` <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes #12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - #12345: short description why this is a dependency - #34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: #36122 Reported by: 65537 Reviewer(s): 65537, Travis Scrimshaw
2 parents 5b9137c + 9012397 commit 4553735

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/sage/combinat/root_system/fundamental_group.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,21 @@ def act_on_affine_lattice(self, wt):
325325
"""
326326
return wt.map_support(self.parent().action(self.value()))
327327

328+
def __hash__(self):
329+
r"""
330+
Return the hash of ``self``.
331+
332+
TESTS:
333+
334+
Check that :issue:`36121` is fixed::
335+
336+
sage: W = ExtendedAffineWeylGroup('A4')
337+
sage: fun = W.fundamental_group().an_element()
338+
sage: hash(fun) == hash(fun.value())
339+
True
340+
"""
341+
return hash(self.value())
342+
328343

329344
class FundamentalGroupOfExtendedAffineWeylGroup_Class(UniqueRepresentation,
330345
Parent):

0 commit comments

Comments
 (0)