Skip to content

Commit

Permalink
sagemathgh-36790: Combinat/sga murphy basis
Browse files Browse the repository at this point in the history
    
<!-- ^^^^^
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 sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

We implement the Murphy basis of the symmetric group algebra (as defined
by Dipper-James-Mathas) and make this the default cellular basis over
positive characteristic since it is (significantly) faster to compute
the change of basis necessary.

<!-- 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 sagemath#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.
- [x] I have updated the documentation accordingly.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->

- sagemath#36718 Uses the KL basis implementation

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36790
Reported by: Travis Scrimshaw
Reviewer(s): Frédéric Chapoton
  • Loading branch information
Release Manager committed Dec 21, 2023
2 parents 5b3e255 + e1f1a46 commit 9231c2c
Show file tree
Hide file tree
Showing 3 changed files with 340 additions and 40 deletions.
4 changes: 4 additions & 0 deletions src/doc/en/reference/references/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4520,6 +4520,10 @@ REFERENCES:
.. [Mat2002] Jiří Matousek, "Lectures on Discrete Geometry", Springer,
2002
.. [Mathas2004] Andrew Mathas.
*Matrix units and generic degrees for the Ariki-Koike algebras*.
J. Algebra. **281** (2004) pp. 695-730.
.. [Mas1995] Mason, Geoffrey. *The quantum double of a finite group and its role
in conformal field theory*. Groups '93 Galway/St. Andrews, Vol. 2,
405-417, London Math. Soc. Lecture Note Ser., 212, Cambridge, 1995.
Expand Down
21 changes: 13 additions & 8 deletions src/sage/algebras/cellular_basis.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ class CellularBasis(CombinatorialFreeModule):
- C([2, 1], [[1, 3], [2]], [[1, 3], [2]])
+ C([3], [[1, 2, 3]], [[1, 2, 3]])
"""
def __init__(self, A):
def __init__(self, A, to_algebra=None, from_algebra=None, **kwargs):
r"""
Initialize ``self``.
Expand All @@ -181,21 +181,26 @@ def __init__(self, A):

# TODO: Use instead A.category().Realizations() so
# operations are defined by coercion?
prefix = kwargs.pop('prefix', 'C')
cat = Algebras(A.category().base_ring()).FiniteDimensional().WithBasis().Cellular()
CombinatorialFreeModule.__init__(self, A.base_ring(), I,
prefix='C', bracket=False,
category=cat)
prefix=prefix, bracket=False,
category=cat, **kwargs)

# Register coercions
if A._to_cellular_element is not NotImplemented:
to_cellular = A.module_morphism(A._to_cellular_element, codomain=self,
if from_algebra is None:
from_algebra = A._to_cellular_element
if to_algebra is None:
to_algebra = A._from_cellular_index
if from_algebra is not NotImplemented:
to_cellular = A.module_morphism(from_algebra, codomain=self,
category=cat)
if A._from_cellular_index is NotImplemented:
if to_algebra is NotImplemented:
from_cellular = ~to_cellular
else:
from_cellular = self.module_morphism(A._from_cellular_index, codomain=A,
from_cellular = self.module_morphism(to_algebra, codomain=A,
category=cat)
if A._to_cellular_element is NotImplemented:
if from_algebra is NotImplemented:
to_cellular = ~from_cellular
to_cellular.register_as_coercion()
from_cellular.register_as_coercion()
Expand Down
Loading

0 comments on commit 9231c2c

Please sign in to comment.