5. Idempotents
We want to compute the idempotent \(E_{\lambda} \in \mathbb{C}[\mathfrak{S}_k]\) associated to the summand \(W_{\lambda}(V)\) in the decomposition
An explicit combinatorial formula for these idempotents was proven by Garsia and Reutenauer [GR89, Theorem 3.2]. It has been implemented in SageMath, see here:
[1]:
def higher_lie_idempotent(la):
return DescentAlgebra(QQ, la.size()).I().idempotent(la).to_symmetric_group_algebra()
Here are the idempotents for the case \(k=3\), see Example 5.1:
[2]:
k=3
for la in Partitions(k):
print(la)
print(higher_lie_idempotent(la))
[3]
1/3*[1, 2, 3] - 1/6*[1, 3, 2] - 1/6*[2, 1, 3] - 1/6*[2, 3, 1] - 1/6*[3, 1, 2] + 1/3*[3, 2, 1]
[2, 1]
1/2*[1, 2, 3] - 1/2*[3, 2, 1]
[1, 1, 1]
1/6*[1, 2, 3] + 1/6*[1, 3, 2] + 1/6*[2, 1, 3] + 1/6*[2, 3, 1] + 1/6*[3, 1, 2] + 1/6*[3, 2, 1]
We now compare the Thrall decomposition with the decomposition of \(V^{\otimes k}\) into isotypic components.
The function \(\texttt{common_refinement}\) computes the idempotents associated to the coarsest common refinement of the isotypic decomposition and the Thrall decomposition, i.e. to the modules \(W_{\lambda}(V)\cap \mathbb{S}_{\mu}(V)^{\oplus m_{\mu}}\). See Example 5.1.
[3]:
def isotypic_idempotent(mu):
return SymmetricGroupAlgebra(QQ,mu.size()).central_orthogonal_idempotent(mu)
def common_refinement(k,verbose=True):
ans={}
s=SymmetricFunctions(QQ).schur()
for la in Partitions(k):
thrallCoefficients=s.gessel_reutenauer(la).monomial_coefficients()
E=higher_lie_idempotent(la)
if verbose:
print("The Thrall module " + str(la)+":")
for mu in thrallCoefficients:
f=E*isotypic_idempotent(mu)
ans[(la,mu)]=f
if verbose:
print("Contains " + str(thrallCoefficients[mu]) + " copies of the Schur module "+str(mu)+". The idempotent is given by")
print(f)
if verbose:
print()
return ans
[4]:
common_refinement(3);
The Thrall module [3]:
Contains 1 copies of the Schur module [2, 1]. The idempotent is given by
1/3*[1, 2, 3] - 1/6*[1, 3, 2] - 1/6*[2, 1, 3] - 1/6*[2, 3, 1] - 1/6*[3, 1, 2] + 1/3*[3, 2, 1]
The Thrall module [2, 1]:
Contains 1 copies of the Schur module [1, 1, 1]. The idempotent is given by
1/6*[1, 2, 3] - 1/6*[1, 3, 2] - 1/6*[2, 1, 3] + 1/6*[2, 3, 1] + 1/6*[3, 1, 2] - 1/6*[3, 2, 1]
Contains 1 copies of the Schur module [2, 1]. The idempotent is given by
1/3*[1, 2, 3] + 1/6*[1, 3, 2] + 1/6*[2, 1, 3] - 1/6*[2, 3, 1] - 1/6*[3, 1, 2] - 1/3*[3, 2, 1]
The Thrall module [1, 1, 1]:
Contains 1 copies of the Schur module [3]. The idempotent is given by
1/6*[1, 2, 3] + 1/6*[1, 3, 2] + 1/6*[2, 1, 3] + 1/6*[2, 3, 1] + 1/6*[3, 1, 2] + 1/6*[3, 2, 1]
Finally, we compare the Thrall decomposition with the (noncanonical) decomposition of \(V^{\otimes k}\) given by the Young symmetrizers \(c_\tau \in \mathbb{C}[\mathfrak{S}_k]\), and with the decomposition given by the twisted Young symmetrizers \(\tilde{c}_\tau \in \mathbb{C}[\mathfrak{S}_k]\) introduced in Example 5.1.
[5]:
from sage.combinat.symmetric_group_algebra import a,b, kappa
from sage.combinat.tableau import from_shape_and_word
def young_symmetrizer(T):
return a(T)*b(T)/kappa(T.shape())
def twisted_young_symmetrizer(T):
return b(T)*a(T)/kappa(T.shape())
def compare_with_Young_symmetrizers(k,verbose=False):
commonRefinement=common_refinement(k,verbose=verbose)
for (la,mu) in commonRefinement:
print("The Thrall module " + str(la) + " contains a copy of the Schur module " + str(mu) +",")
E=commonRefinement[(la,mu)]
for p in Permutations(k):
found=False
T=from_shape_and_word(mu,p,convention="English")
symmetrizer=young_symmetrizer(T)
if E*symmetrizer==symmetrizer:
print("given by the Young symmetrizer " + str(T) + ".")
found = True
break
twistedSymmetrizer=twisted_young_symmetrizer(T)
if E*twistedSymmetrizer==twistedSymmetrizer:
print("given by the twisted Young symmetrizer " + str(T) + ".")
found = True
break
if not found:
print("not given by any Young symmetrizer.")
[6]:
compare_with_Young_symmetrizers(3)
The Thrall module [3] contains a copy of the Schur module [2, 1],
given by the Young symmetrizer [[1, 3], [2]].
The Thrall module [2, 1] contains a copy of the Schur module [1, 1, 1],
given by the Young symmetrizer [[1], [2], [3]].
The Thrall module [2, 1] contains a copy of the Schur module [2, 1],
given by the twisted Young symmetrizer [[1, 2], [3]].
The Thrall module [1, 1, 1] contains a copy of the Schur module [3],
given by the Young symmetrizer [[1, 2, 3]].
[7]:
compare_with_Young_symmetrizers(4)
The Thrall module [4] contains a copy of the Schur module [2, 1, 1],
not given by any Young symmetrizer.
The Thrall module [4] contains a copy of the Schur module [3, 1],
not given by any Young symmetrizer.
The Thrall module [3, 1] contains a copy of the Schur module [2, 1, 1],
not given by any Young symmetrizer.
The Thrall module [3, 1] contains a copy of the Schur module [3, 1],
not given by any Young symmetrizer.
The Thrall module [3, 1] contains a copy of the Schur module [2, 2],
given by the Young symmetrizer [[1, 3], [2, 4]].
The Thrall module [2, 2] contains a copy of the Schur module [1, 1, 1, 1],
given by the Young symmetrizer [[1], [2], [3], [4]].
The Thrall module [2, 2] contains a copy of the Schur module [2, 2],
given by the twisted Young symmetrizer [[1, 3], [2, 4]].
The Thrall module [2, 1, 1] contains a copy of the Schur module [2, 1, 1],
not given by any Young symmetrizer.
The Thrall module [2, 1, 1] contains a copy of the Schur module [3, 1],
given by the twisted Young symmetrizer [[1, 2, 3], [4]].
The Thrall module [1, 1, 1, 1] contains a copy of the Schur module [4],
given by the Young symmetrizer [[1, 2, 3, 4]].
Bibliography
[GR89] A. M. Garsia C. Reutenauer. A decomposition of Solomon’s descent algebra, Adv. Math., 77(2):189–262, 1989.