Schur polynomials $s_\lambda$(or Schur functions) for a partition $\lambda$ is given by the bialternant formula of Jacobi, which is a ratio of two Vandermonde determinants: $$s_\lambda (x_1,x_2,\cdots,x_n)= \frac{a_{\lambda_1+n-1, \lambda_2+n-2, \cdots, \lambda_n +0)}(x_1,x_2,\cdots,x_n)}{a_{(n-1,n-2,\cdots,0)}(x_1,x_2,\cdots,x_n)}$$ where the Vandermonde determinant is given by $$a_{n-1,n-2,\cdots,0}(x_1,x_2,\cdots,x_n)=\prod_{1\leq j<k \leq n} (x_j-x_k)$$

This definition allows $\lambda$ to contain zeros. For exmaple, we have $$s_{(1,0)}=x_1+x_2.$$

This seems incompatible with the package SymmetricFunctions() in Sage. (https://doc.sagemath.org/html/en/reference/combinat/sage/combinat/sf/sfa.html) They seem to be unable to 'detect' zero. For example, $s[{1}]=s[{1,0}]$ in Sage, where $s[\lambda]$ is the Schur polynomial for partition $\lambda$.

I would like to use some commands in Sage, but I also need to work with partitions including zeros, like $(2,1,0)$. Is there a way to work this out in Sage, or is this the limitation coming from the difference of the definitions between, say, Wikipedia and Sage?


2 Answers 2


The implementation in Sage is for symmetric functions, rather than symmetric polynomials. A symmetric function is a formal power series in a countable number of variables.

Symmetric functions are indexed by partitions, but the length of these partitions is not bounded. Consequently, ending zeros are ignored. For instance, $$s_{(1,0,0,...)} = s_{(1)} = x_1 + x_2 + x_3 + \cdots.$$ In Sage, this is s[1].

If you want to work exclusively with polynomials in, say, $n$ variables, you could work with symmetric functions and ignore any $s_\lambda$ indexed by a partition of length greater or equal to $n$ (the length being the number of nonzero entries of the partition). Alternatively, one can see the explicit polynomial with the command f.expand(n). For example,

S = SymmetricFunctions(QQ)
s = S.s()



You can get the Schur polynomials with the R package jack:

> library(jack)
> SchurPol(n = 3, lambda = c(1,0))
gmpoly object algebraically equal to
x^(0,0,1) + x^(0,1,0) + x^(1,0,0)


Also with Julia: https://github.com/stla/JackPolynomials.jl


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .