# Specht Modules#

AUTHORS:

• Travis Scrimshaw (2023-1-22): initial version

class sage.combinat.specht_module.SpechtModule(SGA, D)#

A Specht module.

Let $$S_n$$ be the symmetric group on $$n$$ letters and $$R$$ be a commutative ring. The Specht module $$S^D$$ for a diagram $$D$$ is an $$S_n$$-module defined as follows. Let

$R(D) := \sum_{w \in R_D} w, \qquad\qquad C(D) := \sum_{w \in C_D} (-1)^w w,$

where $$R_D$$ (resp. $$C_D$$) is the row (resp. column) stabilizer of $$D$$. Then, we construct the Specht module $$S^D$$ as the left ideal

$S^D = R[S_n] C(D) R(D),$

where $$R[S_n]$$ is the group algebra of $$S_n$$ over $$R$$.

INPUT:

• SGA – a symmetric group algebra

• D – a diagram

EXAMPLES:

We begin by constructing all irreducible Specht modules for the symmetric group $$S_4$$ and show that they give a full set of irreducible representations both by having distinct Frobenius characters and the sum of the square of their dimensions is equal to $$4!$$:

sage: SP = [la.specht_module(QQ) for la in Partitions(4)]
sage: s = SymmetricFunctions(QQ).s()
sage: [s(S.frobenius_image()) for S in SP]
[s, s[3, 1], s[2, 2], s[2, 1, 1], s[1, 1, 1, 1]]
sage: sum(S.dimension()^2 for S in SP)
24


Next, we compute the Specht module for a more general diagram for $$S_5$$ and compute its irreducible decomposition by using its Frobenius character:

sage: D = [(0,0), (0,1), (1,1), (1,2), (0,3)]
sage: SGA = SymmetricGroupAlgebra(QQ, 5)
sage: SM = SGA.specht_module(D)
sage: SM.dimension()
9
sage: s(SM.frobenius_image())
s[3, 2] + s[4, 1]


This carries a natural (left) action of the symmetric group (algebra):

sage: S5 = SGA.group()
sage: v = SM.an_element(); v
2*B + 2*B + 3*B
sage: S5([2,1,5,3,4]) * v
3*B + 2*B + 2*B
sage: x = SGA.an_element(); x
[1, 2, 3, 4, 5] + 2*[1, 2, 3, 5, 4] + 3*[1, 2, 4, 3, 5] + [5, 1, 2, 3, 4]
sage: x * v
15*B + 14*B + 16*B - 7*B + 2*B + 2*B


SpechtRepresentation for an implementation of the representation by matrices.

class Element#
frobenius_image()#

Return the Frobenius image of self.

The Frobenius map is defined as the map to symmetric functions

$F(\chi) = \frac{1}{n!} \sum_{w \in S_n} \chi(w) p_{\rho(w)},$

where $$\chi$$ is the character of the $$S_n$$-module self, $$p_{\lambda}$$ is the powersum symmetric function basis element indexed by $$\lambda$$, and $$\rho(w)$$ is partition of the cycle type of $$w$$. Specifically, this map takes irreducible representations indexed by $$\lambda$$ to the Schur function $$s_{\lambda}$$.

EXAMPLES:

sage: s = SymmetricFunctions(QQ).s()
sage: SM = Partition([2,2,1]).specht_module(QQ)
sage: s(SM.frobenius_image())
s[2, 2, 1]
sage: SM = Partition([4,1]).specht_module(CyclotomicField(5))
sage: s(SM.frobenius_image())
s[4, 1]


We verify the regular representation:

sage: from sage.combinat.diagram import Diagram
sage: D = Diagram([(0,0), (1,1), (2,2), (3,3), (4,4)])
sage: F = s(D.specht_module(QQ).frobenius_image()); F
s[1, 1, 1, 1, 1] + 4*s[2, 1, 1, 1] + 5*s[2, 2, 1]
+ 6*s[3, 1, 1] + 5*s[3, 2] + 4*s[4, 1] + s
sage: F == sum(StandardTableaux(la).cardinality() * s[la]
....:          for la in Partitions(5))
True
sage: all(s[la] == s(la.specht_module(QQ).frobenius_image())
....:     for n in range(1, 5) for la in Partitions(n))
True

sage: D = Diagram([(0,0), (1,1), (1,2), (2,3), (2,4)])
sage: SM = D.specht_module(QQ)
sage: s(SM.frobenius_image())
s[2, 2, 1] + s[3, 1, 1] + 2*s[3, 2] + 2*s[4, 1] + s

representation_matrix(elt)#

Return the matrix corresponding to the left action of the symmetric group (algebra) element elt on self.

EXAMPLES:

sage: SM = Partition([3,1,1]).specht_module(QQ)
sage: SM.representation_matrix(Permutation([2,1,3,5,4]))
[-1  0  0  1 -1  0]
[ 0  0  1  0 -1  1]
[ 0  1  0 -1  0  1]
[ 0  0  0  0 -1  0]
[ 0  0  0 -1  0  0]
[ 0  0  0  0  0 -1]
sage: SGA = SymmetricGroupAlgebra(QQ, 5)
sage: SM.representation_matrix(SGA([3,1,5,2,4]))
[ 0 -1  0  1  0 -1]
[ 0  0  0  0  0 -1]
[ 0  0  0 -1  0  0]
[ 0  0 -1  0  1 -1]
[ 1  0  0 -1  1  0]
[ 0  0  0  0  1  0]

sage.combinat.specht_module.specht_module_rank(D, base_ring=None)#

Return the rank of the Specht module of diagram D.

EXAMPLES:

sage: from sage.combinat.specht_module import specht_module_rank
sage: specht_module_rank([(0,0), (1,1), (2,2)])
6

sage.combinat.specht_module.specht_module_spanning_set(D, SGA=None)#

Return a spanning set of the Specht module of diagram D.

INPUT:

• D – a list of cells (r,c) for row r and column c

• SGA – optional; a symmetric group algebra

EXAMPLES:

sage: from sage.combinat.specht_module import specht_module_spanning_set
sage: specht_module_spanning_set([(0,0), (1,1), (2,2)])
([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1])
sage: specht_module_spanning_set([(0,0), (1,1), (2,1)])
([1, 2, 3] - [1, 3, 2], -[1, 2, 3] + [1, 3, 2], [2, 1, 3] - [3, 1, 2],
[2, 3, 1] - [3, 2, 1], -[2, 1, 3] + [3, 1, 2], -[2, 3, 1] + [3, 2, 1])

sage: SGA = SymmetricGroup(3).algebra(QQ)
sage: specht_module_spanning_set([(0,0), (1,1), (2,1)], SGA)
(() - (2,3), -(1,2) + (1,3,2), (1,2,3) - (1,3),
-() + (2,3), -(1,2,3) + (1,3), (1,2) - (1,3,2))