Specht Modules#
AUTHORS:
Travis Scrimshaw (2023-1-22): initial version
- class sage.combinat.specht_module.SpechtModule(SGA, D)#
Bases:
SubmoduleWithBasis
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 algebraD
– 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[4], 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[0] + 2*B[1] + 3*B[2] sage: S5([2,1,5,3,4]) * v 3*B[0] + 2*B[1] + 2*B[2] 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[0] + 14*B[1] + 16*B[2] - 7*B[5] + 2*B[6] + 2*B[7]
See also
SpechtRepresentation
for an implementation of the representation by matrices.- class Element#
Bases:
IndexedFreeModuleElement
- 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[5] 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[5]
- representation_matrix(elt)#
Return the matrix corresponding to the left action of the symmetric group (algebra) element
elt
onself
.See also
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 rowr
and columnc
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))