Skip to content

Commit 78bdda4

Browse files
author
Release Manager
committed
gh-36748: Implement Specht modules in the tabloid basis <!-- ^^^^^ 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
2 parents 821d8da + 95a8ed3 commit 78bdda4

File tree

9 files changed

+1028
-119
lines changed

9 files changed

+1028
-119
lines changed

src/sage/combinat/algebraic_combinatorics.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
----------------------------------------
1313
1414
- :ref:`sage.combinat.catalog_partitions`
15-
- :class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPattern`, :class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPatterns`
15+
- :class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPattern`,
16+
:class:`~sage.combinat.gelfand_tsetlin_patterns.GelfandTsetlinPatterns`
1617
- :class:`~sage.combinat.knutson_tao_puzzles.KnutsonTaoPuzzleSolver`
1718
1819
Groups and Algebras
@@ -39,7 +40,7 @@
3940
- :ref:`sage.combinat.cluster_algebra_quiver.all`
4041
- :class:`~sage.combinat.kazhdan_lusztig.KazhdanLusztigPolynomial`
4142
- :class:`~sage.combinat.symmetric_group_representations.SymmetricGroupRepresentation`
42-
- :class:`~sage.combinat.specht_module.SpechtModule`
43+
- :ref:`sage.combinat.specht_module`
4344
- :ref:`sage.combinat.yang_baxter_graph`
4445
- :ref:`sage.combinat.hall_polynomial`
4546
- :ref:`sage.combinat.key_polynomial`

src/sage/combinat/catalog_partitions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- :ref:`sage.combinat.skew_partition`
99
- :ref:`sage.combinat.partition_tuple`
1010
- :ref:`sage.combinat.superpartition`
11+
- :ref:`sage.combinat.tableau`
1112
- :ref:`sage.combinat.tableau_tuple`
1213
- :ref:`sage.combinat.skew_tableau`
1314
- :ref:`sage.combinat.ribbon`

src/sage/combinat/composition.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
from sage.combinat.combinatorial_map import combinatorial_map
4646
from sage.misc.persist import register_unpickle_override
4747

48+
from sage.misc.lazy_import import lazy_import
49+
lazy_import("sage.combinat.partition", "Partition")
50+
4851

4952
class Composition(CombinatorialElement):
5053
r"""
@@ -1186,7 +1189,6 @@ def to_partition(self):
11861189
sage: Composition([]).to_partition() # needs sage.combinat
11871190
[]
11881191
"""
1189-
from sage.combinat.partition import Partition
11901192
return Partition(sorted(self, reverse=True))
11911193

11921194
def to_skew_partition(self, overlap=1):
@@ -1753,8 +1755,10 @@ def _element_constructor_(self, lst) -> Composition:
17531755
sage: P = Compositions()
17541756
sage: P([3,3,1]) # indirect doctest
17551757
[3, 3, 1]
1758+
sage: P(Partition([5,2,1]))
1759+
[5, 2, 1]
17561760
"""
1757-
if isinstance(lst, Composition):
1761+
if isinstance(lst, (Composition, Partition)):
17581762
lst = list(lst)
17591763
elt = self.element_class(self, lst)
17601764
if elt not in self:
@@ -1774,7 +1778,7 @@ def __contains__(self, x) -> bool:
17741778
sage: [0,0] in Compositions()
17751779
True
17761780
"""
1777-
if isinstance(x, Composition):
1781+
if isinstance(x, (Composition, Partition)):
17781782
return True
17791783
elif isinstance(x, list):
17801784
for i in x:

src/sage/combinat/partition.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5495,9 +5495,8 @@ def specht_module(self, base_ring=None):
54955495
EXAMPLES::
54965496
54975497
sage: SM = Partition([2,2,1]).specht_module(QQ); SM
5498-
Specht module of [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)] over Rational Field
5499-
sage: s = SymmetricFunctions(QQ).s()
5500-
sage: s(SM.frobenius_image()) # needs sage.modules
5498+
Specht module of [2, 2, 1] over Rational Field
5499+
sage: SM.frobenius_image() # needs sage.modules
55015500
s[2, 2, 1]
55025501
"""
55035502
from sage.combinat.specht_module import SpechtModule
@@ -5570,6 +5569,24 @@ def simple_module_dimension(self, base_ring=None):
55705569
from sage.combinat.specht_module import simple_module_rank
55715570
return simple_module_rank(self, base_ring)
55725571

5572+
def tabloid_module(self, base_ring=None):
5573+
r"""
5574+
Return the tabloid module corresponding to ``self``.
5575+
5576+
EXAMPLES::
5577+
5578+
sage: TM = Partition([2,2,1]).tabloid_module(QQ); TM
5579+
Tabloid module of [2, 2, 1] over Rational Field
5580+
sage: TM.frobenius_image()
5581+
s[2, 2, 1] + s[3, 1, 1] + 2*s[3, 2] + 2*s[4, 1] + s[5]
5582+
"""
5583+
from sage.combinat.specht_module import TabloidModule
5584+
from sage.combinat.symmetric_group_algebra import SymmetricGroupAlgebra
5585+
if base_ring is None:
5586+
from sage.rings.rational_field import QQ
5587+
base_ring = QQ
5588+
R = SymmetricGroupAlgebra(base_ring, sum(self))
5589+
return TabloidModule(R, self)
55735590

55745591
##############
55755592
# Partitions #

src/sage/combinat/permutation.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1263,7 +1263,7 @@ def __mul__(self, rp):
12631263
sage: p213 * SGA.an_element()
12641264
3*[1, 2, 3] + [1, 3, 2] + [2, 1, 3] + 2*[3, 1, 2]
12651265
sage: p213 * SM.an_element()
1266-
2*B[0] - 4*B[1]
1266+
2*S[[1, 2], [3]] - 4*S[[1, 3], [2]]
12671267
"""
12681268
if not isinstance(rp, Permutation) and isinstance(rp, Element):
12691269
return get_coercion_model().bin_op(self, rp, operator.mul)
@@ -7342,6 +7342,19 @@ def cardinality(self):
73427342
"""
73437343
return factorial(self.n)
73447344

7345+
@cached_method
7346+
def gens(self) -> tuple:
7347+
r"""
7348+
Return a set of generators for ``self`` as a group.
7349+
7350+
EXAMPLES::
7351+
7352+
sage: P4 = Permutations(4)
7353+
sage: P4.gens()
7354+
([2, 1, 3, 4], [1, 3, 2, 4], [1, 2, 4, 3])
7355+
"""
7356+
return tuple(self.group_generators())
7357+
73457358
def degree(self):
73467359
"""
73477360
Return the degree of ``self``.

src/sage/combinat/skew_tableau.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
- Mike Hansen: Initial version
77
- Travis Scrimshaw, Arthur Lubovsky (2013-02-11):
88
Factored out ``CombinatorialClass``
9-
- Trevor K. Karn (2022-08-03): added `backward_slide`
9+
- Trevor K. Karn (2022-08-03): added ``backward_slide``
1010
"""
1111
# ****************************************************************************
1212
# Copyright (C) 2007 Mike Hansen <[email protected]>,
13-
# Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
13+
# Copyright (C) 2013 Travis Scrimshaw <tcscrims at gmail.com>
1414
# Copyright (C) 2013 Arthur Lubovsky
1515
#
1616
# Distributed under the terms of the GNU General Public License (GPL)

0 commit comments

Comments
 (0)