Schur functions

Schur functions can be defined via Jacobi-Trudi (special case of Weyl character) formula

(1)

where is a Young diagram and are complete homogeneous symmetric functions. Then in power sum basis for all such that are given as

Sym = SymmetricFunctions(QQ)
s = Sym.s()
p = Sym.p()

diagrams = [
    lam
    for n in range(1, 4)
    for lam in Partitions(n).list()
]
arr = [[lam, p(s[lam])]
       for lam in diagrams];
table(arr, frame=True)
(2)

Notation conventions

In this notes conventions may be not so standard, though I did my best to make them as close to standard as possible. Schur function in power sum basis is denoted as . On occasion when power sum basis is specialized like that I write . Examples: for the corresponding Schur function is , for — . For the matrix argument I write and mean by that evaluated at power sum basis .

Properties

  • Schur functions are characters of in a literal sense that , where is an irreducible representation of indexed by Young diagram .
  • Schur functions are connected with characters of symmetric group via Frobenius characteristic map.

Sage machinery

One may sometimes need to differentiate Schur polynomials with respect to individual variables. For instance, the following derivative

(3)

can be quickly computed as

N = 5
SF = SymmetricFunctions(QQ)
s = SF.schur()
R = PolynomialRing(QQ, N, 'x')
pol = R(s([2,1]).expand(N))
pol.derivative(R.gen(2))
x0^2 + 2*x0*x1 + x1^2 + 2*x0*x2 + 2*x1*x2 + 2*x0*x3 + 2*x1*x3 + 2*x2*x3 + x3^2 + 2*x0*x4 + 2*x1*x4 + 2*x2*x4 + 2*x3*x4 + x4^2

or, in a more sleek way,

R.inject_variables()
x = list(R.gens())

diff(pol, x[2])
Defining x0, x1, x2, x3, x4
x0^2 + 2*x0*x1 + x1^2 + 2*x0*x2 + 2*x1*x2 + 2*x0*x3 + 2*x1*x3 + 2*x2*x3 + x3^2 + 2*x0*x4 + 2*x1*x4 + 2*x2*x4 + 2*x3*x4 + x4^2