Macaulay2 » Documentation
Packages » SchurFunctors :: SchurFunctors
next | previous | forward | backward | up | index | toc

SchurFunctors -- Schur and Weyl functors from partitions and Young tableaux

Description

A Schur functor $S_\lambda$ is a polynomial functor on the category of free modules, indexed by a partition $\lambda = (\lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_r)$. Classical special cases include

  • $S_{(d)}(E) = \mathrm{Sym}^d(E)$, the $d$-th symmetric power
  • $S_{(1^d)}(E) = \wedge^d(E)$, the $d$-th exterior power
  • $S_{(d,\dots,d)}(E) = (\det E)^{\otimes k}$ on a rank-$d$ factor (repeated $k$ times)
  • $S_{(2,1)}(E) \subseteq E \otimes \wedge^2 E$, the first genuinely mixed case

The Weyl functor $W_\lambda$ is the divided-power analogue: in characteristic zero $W_\lambda(E) \cong S_\lambda(E)$, but over $\mathbb{Z}$ or in positive characteristic they are genuinely different functors. They are related by duality and appear symmetrically in Schur-Weyl duality and in the definition of Weyl modules of the general linear group.

Construction. Both functors are presented by Garnir / straightening relations. For $S_\lambda$ one has the presentation $$\textstyle\bigotimes_{i \ge 1}\wedge^{\lambda'_i}(E) \;\twoheadrightarrow\; S_\lambda(E),$$ where $\lambda'$ is the conjugate (transpose) partition: $S_\lambda(E)$ is the quotient of this tensor product of exterior powers by the Garnir relations across adjacent columns. Dually, $W_\lambda$ is a quotient of a tensor product of divided powers, $$\textstyle\bigotimes_{i \ge 1} D^{\lambda_i}(E) \;\twoheadrightarrow\; W_\lambda(E),$$ by (divided-power) Garnir relations across adjacent rows.

Tableaux and the semistandard basis. A filling of a Young diagram of shape $\lambda$ by integers $\{0,\dots,n-1\}$ (representing a basis of $E = R^n$) is semistandard if its entries weakly increase along rows and strictly increase down columns. Over $\mathbb{Z}$ the semistandard fillings index a free basis of $S_\lambda(E)$ and of $W_\lambda(E)$. Arbitrary fillings are reduced to combinations of semistandard ones by the straightening algorithm; see straighten and weylStraighten.

In this package Schur tableaux are stored column-wise as objects of type Filling, while Weyl tableaux are stored row-wise as objects of type WeylFilling. Conjugation of partitions swaps the two conventions; see conjugate(Filling).

Representation theory. Over a field of characteristic zero the Schur functors $S_\lambda(V)$, as $\lambda$ ranges over partitions with at most $\dim V$ parts, give all the polynomial irreducible representations of $GL(V)$. The character of $S_\lambda(V)$ is the Schur function $s_\lambda$ in the eigenvalues of the diagonal torus; computing and decomposing characters is handled by character, weylCharacter, splitCharacter, characterRep, and decomposeRep.

Package layout. The two worlds (Schur / Weyl) expose parallel sets of functions:

A first example. Take the smallest non-hook, non-trivial shape $(2,1)$:

i1 : E = QQ^3;
i2 : M = schurModule({2,1}, E)

       8
o2 = QQ

o2 : QQ-module, free
i3 : rank M

o3 = 8
i4 : W = weylModule({2,1}, E)

       8
o4 = QQ

o4 : QQ-module, free
i5 : rank W

o5 = 8

Both have rank 8, which is $\dim S_{(2,1)}(\mathbb{Q}^3) = 8$ by the Weyl character formula. They are canonically isomorphic in characteristic 0, but are presented as quotients of different ambients: $\wedge^2(E)\otimes E \twoheadrightarrow \mathrm{schurModule}((2,1), \mathbb{Q}^3)$ while $D^2(E)\otimes D^1(E) \twoheadrightarrow \mathrm{weylModule}((2,1), \mathbb{Q}^3)$.

References. For the Schur side see W. Fulton, Young Tableaux, LMS Student Texts 35 (1997), Chapter 8. For the Weyl-module / divided-power construction see K. Akin, D. Buchsbaum, and J. Weyman, Schur functors and Schur complexes, Adv. Math. 44 (1982), 207-278; and the book J. Weyman, Cohomology of Vector Bundles and Syzygies, Cambridge Tracts 149 (2003).

See also

Authors

Version

This documentation describes version 1.0 of SchurFunctors, released April 18, 2026.

Citation

If you have used this package in your research, please cite it as follows:

@misc{SchurFunctorsSource,
  title = {{SchurFunctors: Schur modules and maps between them. Version~1.0}},
  author = {Michael E. Stillman and Anton Leykin and Mauricio Velasco and Keller VandeBogert},
  howpublished = {A \emph{Macaulay2} package available at
    \url{https://github.com/Macaulay2/M2/tree/stable/M2/Macaulay2/packages}}
}

Exports

  • Types
    • Filling -- a Young tableau stored column-wise
    • WeylFilling -- a Young tableau stored row-wise for the Weyl-module basis
  • Functions and commands
    • augmentFilling -- append an entry to a column of a Filling
    • augmentWeylFilling -- append an entry to a row of a WeylFilling
    • character -- the character of a composition of Schur functors on GL(V)
    • characterRep -- extract the character of a polynomial GL-representation from its matrix
    • decomposeRep -- decompose a polynomial GL-representation into irreducible subspaces
    • dividedPower -- divided-power functor on free modules and matrices
    • divComult -- see divMult -- multiplication and comultiplication of divided powers
    • divMult -- multiplication and comultiplication of divided powers
    • isStandard -- test whether a Filling is semistandard
    • isWeylStandard -- test whether a WeylFilling is Weyl-semistandard
    • maxWeylFilling -- the lex-largest Weyl-standard tableau of given shape
    • normalize -- sort each column of a Filling, with Koszul sign
    • printSchurModuleElement -- display a Schur-module element as a linear combination of tableaux
    • printWeylModuleElement -- display a Weyl-module element as a linear combination of tableaux
    • schur -- the Schur functor applied to a matrix
    • schurModule -- Schur module of a partition applied to a free module
    • schurModulesMap -- build a map between Schur modules from its action on tableaux
    • splitCharacter -- decompose a symmetric polynomial into Schur functions
    • standardTableaux -- all semistandard Young tableaux of a given shape
    • standardWeylTableaux -- all Weyl-semistandard tableaux of a given shape
    • straighten -- straighten a filling into a linear combination of semistandard tableaux
    • towardWeylStandard -- a single Garnir-style straightening step for Weyl fillings
    • weyl -- construct a WeylFilling or apply the Weyl functor to a map
    • weylCharacter -- the character of a composition of Weyl functors on GL(V)
    • weylModule -- Weyl module of a partition applied to a free module
    • weylModulesMap -- build a map between Weyl modules from its action on tableaux
    • weylNormalize -- sort each row of a WeylFilling into weakly-increasing order
    • weylStraighten -- straighten a Weyl filling into a linear combination of Weyl-semistandard tableaux
  • Methods
    • augmentFilling(Filling,ZZ,ZZ) -- see augmentFilling -- append an entry to a column of a Filling
    • augmentWeylFilling(WeylFilling,ZZ,ZZ) -- see augmentWeylFilling -- append an entry to a row of a WeylFilling
    • character(List,ZZ) -- see character -- the character of a composition of Schur functors on GL(V)
    • characterRep(Matrix) -- see characterRep -- extract the character of a polynomial GL-representation from its matrix
    • conjugate(Filling) -- transpose of a Young tableau
    • conjugate(WeylFilling) -- transpose of a Weyl-stored Young tableau
    • decomposeRep(Matrix) -- see decomposeRep -- decompose a polynomial GL-representation into irreducible subspaces
    • dividedPower(List,Matrix) -- see dividedPower -- divided-power functor on free modules and matrices
    • dividedPower(List,Module) -- see dividedPower -- divided-power functor on free modules and matrices
    • dividedPower(ZZ,Matrix) -- see dividedPower -- divided-power functor on free modules and matrices
    • dividedPower(ZZ,Module) -- see dividedPower -- divided-power functor on free modules and matrices
    • divComult(List,ZZ) -- see divMult -- multiplication and comultiplication of divided powers
    • divComult(List,ZZ,ZZ) -- see divMult -- multiplication and comultiplication of divided powers
    • divComult(Sequence,ZZ) -- see divMult -- multiplication and comultiplication of divided powers
    • divMult(List,List) -- see divMult -- multiplication and comultiplication of divided powers
    • divMult(List,List,ZZ) -- see divMult -- multiplication and comultiplication of divided powers
    • divMult(Sequence,Sequence) -- see divMult -- multiplication and comultiplication of divided powers
    • Filling ? Filling -- see Filling -- a Young tableau stored column-wise
    • Filling _ List -- see Filling -- a Young tableau stored column-wise
    • net(Filling) -- see Filling -- a Young tableau stored column-wise
    • isStandard(Filling) -- see isStandard -- test whether a Filling is semistandard
    • isWeylStandard(WeylFilling) -- see isWeylStandard -- test whether a WeylFilling is Weyl-semistandard
    • maxWeylFilling(List,ZZ) -- see maxWeylFilling -- the lex-largest Weyl-standard tableau of given shape
    • normalize(Filling) -- see normalize -- sort each column of a Filling, with Koszul sign
    • printSchurModuleElement(Vector,Module) -- see printSchurModuleElement -- display a Schur-module element as a linear combination of tableaux
    • printWeylModuleElement(Vector,Module) -- see printWeylModuleElement -- display a Weyl-module element as a linear combination of tableaux
    • schur(List,Matrix) -- see schur -- the Schur functor applied to a matrix
    • schurModule(List,Module) -- see schurModule -- Schur module of a partition applied to a free module
    • schurModulesMap(Module,Module,Function) -- see schurModulesMap -- build a map between Schur modules from its action on tableaux
    • splitCharacter(RingElement) -- see splitCharacter -- decompose a symmetric polynomial into Schur functions
    • standardTableaux(ZZ,List) -- see standardTableaux -- all semistandard Young tableaux of a given shape
    • standardWeylTableaux(ZZ,List) -- see standardWeylTableaux -- all Weyl-semistandard tableaux of a given shape
    • straighten(Filling) -- see straighten -- straighten a filling into a linear combination of semistandard tableaux
    • straighten(Filling,Module) -- see straighten -- straighten a filling into a linear combination of semistandard tableaux
    • straighten(HashTable) -- see straighten -- straighten a filling into a linear combination of semistandard tableaux
    • straighten(HashTable,Module) -- see straighten -- straighten a filling into a linear combination of semistandard tableaux
    • weyl(List) -- see weyl -- construct a WeylFilling or apply the Weyl functor to a map
    • weyl(List,Matrix) -- see weyl -- construct a WeylFilling or apply the Weyl functor to a map
    • weylCharacter(List,ZZ) -- see weylCharacter -- the character of a composition of Weyl functors on GL(V)
    • net(WeylFilling) -- see WeylFilling -- a Young tableau stored row-wise for the Weyl-module basis
    • WeylFilling == WeylFilling -- see WeylFilling -- a Young tableau stored row-wise for the Weyl-module basis
    • WeylFilling ? WeylFilling -- see WeylFilling -- a Young tableau stored row-wise for the Weyl-module basis
    • WeylFilling _ List -- see WeylFilling -- a Young tableau stored row-wise for the Weyl-module basis
    • WeylFilling _ ZZ -- see WeylFilling -- a Young tableau stored row-wise for the Weyl-module basis
    • weylModule(List,Module) -- see weylModule -- Weyl module of a partition applied to a free module
    • weylModulesMap(Module,Module,Function) -- see weylModulesMap -- build a map between Weyl modules from its action on tableaux
    • weylNormalize(WeylFilling) -- see weylNormalize -- sort each row of a WeylFilling into weakly-increasing order
    • weylStraighten(HashTable) -- see weylStraighten -- straighten a Weyl filling into a linear combination of Weyl-semistandard tableaux
    • weylStraighten(HashTable,Module) -- see weylStraighten -- straighten a Weyl filling into a linear combination of Weyl-semistandard tableaux
    • weylStraighten(WeylFilling) -- see weylStraighten -- straighten a Weyl filling into a linear combination of Weyl-semistandard tableaux
    • weylStraighten(WeylFilling,Module) -- see weylStraighten -- straighten a Weyl filling into a linear combination of Weyl-semistandard tableaux

For the programmer

The object SchurFunctors is a package, defined in SchurFunctors.m2, with auxiliary files in SchurFunctors/.


The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/SchurFunctors.m2:1261:0.