Skip to content

Commit

Permalink
gh-36748: Implement Specht modules in the tabloid 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 #1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

This provides an implementation of the Specht modules over arbitrary
fields in the standard tableaux basis. To do so, we also implement the
tabloid module, where the tabloids are implemented as
`OrderedSetsPartitions`. Using this, we can construct the maximal
submodule and simple submodule from a Specht module.

We also implement a method to compute the Brauer character of the
representations.

<!-- 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.
- [x] 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: ...
-->

- #36724: Trivial conflict with working on the same files.
- #36985: So the 0 dimensional tests will pass.

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: #36748
Reported by: Travis Scrimshaw
Reviewer(s): Darij Grinberg, Frédéric Chapoton, Martin Rubey, Travis Scrimshaw
  • Loading branch information
Release Manager committed Mar 21, 2024
2 parents 821d8da + 95a8ed3 commit 78bdda4
Show file tree
Hide file tree
Showing 9 changed files with 1,028 additions and 119 deletions.
5 changes: 3 additions & 2 deletions src/sage/combinat/algebraic_combinatorics.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
----------------------------------------
- :ref:`sage.combinat.catalog_partitions`
- :class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPattern`, :class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPatterns`
- :class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPattern`,
:class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPatterns`
- :class:`~sage.combinat.knutson_tao_puzzles.KnutsonTaoPuzzleSolver`
Groups and Algebras
Expand All @@ -39,7 +40,7 @@
- :ref:`sage.combinat.cluster_algebra_quiver.all`
- :class:`~sage.combinat.kazhdan_lusztig.KazhdanLusztigPolynomial`
- :class:`~sage.combinat.symmetric_group_representations.SymmetricGroupRepresentation`
- :class:`~sage.combinat.specht_module.SpechtModule`
- :ref:`sage.combinat.specht_module`
- :ref:`sage.combinat.yang_baxter_graph`
- :ref:`sage.combinat.hall_polynomial`
- :ref:`sage.combinat.key_polynomial`
Expand Down
1 change: 1 addition & 0 deletions src/sage/combinat/catalog_partitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- :ref:`sage.combinat.skew_partition`
- :ref:`sage.combinat.partition_tuple`
- :ref:`sage.combinat.superpartition`
- :ref:`sage.combinat.tableau`
- :ref:`sage.combinat.tableau_tuple`
- :ref:`sage.combinat.skew_tableau`
- :ref:`sage.combinat.ribbon`
Expand Down
10 changes: 7 additions & 3 deletions src/sage/combinat/composition.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
from sage.combinat.combinatorial_map import combinatorial_map
from sage.misc.persist import register_unpickle_override

from sage.misc.lazy_import import lazy_import
lazy_import("sage.combinat.partition", "Partition")


class Composition(CombinatorialElement):
r"""
Expand Down Expand Up @@ -1186,7 +1189,6 @@ def to_partition(self):
sage: Composition([]).to_partition() # needs sage.combinat
[]
"""
from sage.combinat.partition import Partition
return Partition(sorted(self, reverse=True))

def to_skew_partition(self, overlap=1):
Expand Down Expand Up @@ -1753,8 +1755,10 @@ def _element_constructor_(self, lst) -> Composition:
sage: P = Compositions()
sage: P([3,3,1]) # indirect doctest
[3, 3, 1]
sage: P(Partition([5,2,1]))
[5, 2, 1]
"""
if isinstance(lst, Composition):
if isinstance(lst, (Composition, Partition)):
lst = list(lst)
elt = self.element_class(self, lst)
if elt not in self:
Expand All @@ -1774,7 +1778,7 @@ def __contains__(self, x) -> bool:
sage: [0,0] in Compositions()
True
"""
if isinstance(x, Composition):
if isinstance(x, (Composition, Partition)):
return True
elif isinstance(x, list):
for i in x:
Expand Down
23 changes: 20 additions & 3 deletions src/sage/combinat/partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -5495,9 +5495,8 @@ def specht_module(self, base_ring=None):
EXAMPLES::
sage: SM = Partition([2,2,1]).specht_module(QQ); SM
Specht module of [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)] over Rational Field
sage: s = SymmetricFunctions(QQ).s()
sage: s(SM.frobenius_image()) # needs sage.modules
Specht module of [2, 2, 1] over Rational Field
sage: SM.frobenius_image() # needs sage.modules
s[2, 2, 1]
"""
from sage.combinat.specht_module import SpechtModule
Expand Down Expand Up @@ -5570,6 +5569,24 @@ def simple_module_dimension(self, base_ring=None):
from sage.combinat.specht_module import simple_module_rank
return simple_module_rank(self, base_ring)

def tabloid_module(self, base_ring=None):
r"""
Return the tabloid module corresponding to ``self``.
EXAMPLES::
sage: TM = Partition([2,2,1]).tabloid_module(QQ); TM
Tabloid module of [2, 2, 1] over Rational Field
sage: TM.frobenius_image()
s[2, 2, 1] + s[3, 1, 1] + 2*s[3, 2] + 2*s[4, 1] + s[5]
"""
from sage.combinat.specht_module import TabloidModule
from sage.combinat.symmetric_group_algebra import SymmetricGroupAlgebra
if base_ring is None:
from sage.rings.rational_field import QQ
base_ring = QQ
R = SymmetricGroupAlgebra(base_ring, sum(self))
return TabloidModule(R, self)

##############
# Partitions #
Expand Down
15 changes: 14 additions & 1 deletion src/sage/combinat/permutation.py
Original file line number Diff line number Diff line change
Expand Up @@ -1263,7 +1263,7 @@ def __mul__(self, rp):
sage: p213 * SGA.an_element()
3*[1, 2, 3] + [1, 3, 2] + [2, 1, 3] + 2*[3, 1, 2]
sage: p213 * SM.an_element()
2*B[0] - 4*B[1]
2*S[[1, 2], [3]] - 4*S[[1, 3], [2]]
"""
if not isinstance(rp, Permutation) and isinstance(rp, Element):
return get_coercion_model().bin_op(self, rp, operator.mul)
Expand Down Expand Up @@ -7342,6 +7342,19 @@ def cardinality(self):
"""
return factorial(self.n)

@cached_method
def gens(self) -> tuple:
r"""
Return a set of generators for ``self`` as a group.
EXAMPLES::
sage: P4 = Permutations(4)
sage: P4.gens()
([2, 1, 3, 4], [1, 3, 2, 4], [1, 2, 4, 3])
"""
return tuple(self.group_generators())

def degree(self):
"""
Return the degree of ``self``.
Expand Down
4 changes: 2 additions & 2 deletions src/sage/combinat/skew_tableau.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
- Mike Hansen: Initial version
- Travis Scrimshaw, Arthur Lubovsky (2013-02-11):
Factored out ``CombinatorialClass``
- Trevor K. Karn (2022-08-03): added `backward_slide`
- Trevor K. Karn (2022-08-03): added ``backward_slide``
"""
# ****************************************************************************
# Copyright (C) 2007 Mike Hansen <[email protected]>,
# Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
# Copyright (C) 2013 Travis Scrimshaw <tcscrims at gmail.com>
# Copyright (C) 2013 Arthur Lubovsky
#
# Distributed under the terms of the GNU General Public License (GPL)
Expand Down
Loading

0 comments on commit 78bdda4

Please sign in to comment.