Elementary symmetric functions

class sage.combinat.sf.elementary.SymmetricFunctionAlgebra_elementary(Sym)

Bases: sage.combinat.sf.multiplicative.SymmetricFunctionAlgebra_multiplicative

A class for methods for the elementary basis of the symmetric functions.

INPUT:

  • self – an elementary basis of the symmetric functions
  • Sym – an instance of the ring of symmetric functions

TESTS:

sage: e = SymmetricFunctions(QQ).e()
sage: e == loads(dumps(e))
True
sage: TestSuite(e).run(skip=['_test_associativity', '_test_distributivity', '_test_prod'])
sage: TestSuite(e).run(elements = [e[1,1]+e[2], e[1]+2*e[1,1]])
class Element(M, x)

Bases: sage.combinat.sf.classical.SymmetricFunctionAlgebra_classical.Element

Create a combinatorial module element. This should never be called directly, but only through the parent combinatorial free module’s __call__() method.

TESTS:

sage: F = CombinatorialFreeModule(QQ, ['a','b','c'])
sage: B = F.basis()
sage: f = B['a'] + 3*B['c']; f
B['a'] + 3*B['c']
sage: f == loads(dumps(f))
True
expand(n, alphabet='x')

Expands the symmetric function as a symmetric polynomial in \(n\) variables.

INPUT:

  • self – an element of the elementary basis of the symmetric functions
  • n – a positive integer
  • alphabet – a variable for the expansion (default: \(x\))

OUTPUT:

  • a monomial expansion of an instance of self in \(n\) variables

EXAMPLES:

sage: e = SymmetricFunctions(QQ).e()
sage: e([2,1]).expand(3)
x0^2*x1 + x0*x1^2 + x0^2*x2 + 3*x0*x1*x2 + x1^2*x2 + x0*x2^2 + x1*x2^2
sage: e([1,1,1]).expand(2)
x0^3 + 3*x0^2*x1 + 3*x0*x1^2 + x1^3
sage: e([3]).expand(2)
0
sage: e([2]).expand(3)
x0*x1 + x0*x2 + x1*x2
sage: e([3]).expand(4,alphabet='x,y,z,t')
x*y*z + x*y*t + x*z*t + y*z*t
sage: e([3]).expand(4,alphabet='y')
y0*y1*y2 + y0*y1*y3 + y0*y2*y3 + y1*y2*y3
sage: e([]).expand(2)
1
omega()

Return the image of self under the omega automorphism.

The omega automorphism is defined to be the unique algebra endomorphism \(\omega\) of the ring of symmetric functions that satisfies \(\omega(e_k) = h_k\) for all positive integers \(k\) (where \(e_k\) stands for the \(k\)-th elementary symmetric function, and \(h_k\) stands for the \(k\)-th complete homogeneous symmetric function). It furthermore is a Hopf algebra endomorphism, and sends the power-sum symmetric function \(p_k\) to \((-1)^{k-1} p_k\) for every positive integer \(k\).

The default implementation converts to the Schurs, then performs the automorphism and changes back.

EXAMPLES:

sage: e = SymmetricFunctions(QQ).e()
sage: a = e([2,1]); a
e[2, 1]
sage: a.omega()
e[1, 1, 1] - e[2, 1]
sage: h = SymmetricFunctions(QQ).h()
sage: h(e([2,1]).omega())
h[2, 1]
verschiebung(n)

Return the image of the symmetric function self under the \(n\)-th Verschiebung operator.

The \(n\)-th Verschiebung operator \(\mathbf{V}_n\) is defined to be the unique algebra endomorphism \(V\) of the ring of symmetric functions that satisfies \(V(h_r) = h_{r/n}\) for every positive integer \(r\) divisible by \(n\), and satisfies \(V(h_r) = 0\) for every positive integer \(r\) not divisible by \(n\). This operator \(\mathbf{V}_n\) is a Hopf algebra endomorphism. For every nonnegative integer \(r\) with \(n \mid r\), it satisfies

\[\mathbf{V}_n(h_r) = h_{r/n}, \quad \mathbf{V}_n(p_r) = n p_{r/n}, \quad \mathbf{V}_n(e_r) = (-1)^{r - r/n} e_{r/n}\]

(where \(h\) is the complete homogeneous basis, \(p\) is the powersum basis, and \(e\) is the elementary basis). For every nonnegative integer \(r\) with \(n \nmid r\), it satisfes

\[\mathbf{V}_n(h_r) = \mathbf{V}_n(p_r) = \mathbf{V}_n(e_r) = 0.\]

The \(n\)-th Verschiebung operator is also called the \(n\)-th Verschiebung endomorphism. Its name derives from the Verschiebung (German for “shift”) endomorphism of the Witt vectors.

The \(n\)-th Verschiebung operator is adjoint to the \(n\)-th Frobenius operator (see frobenius() for its definition) with respect to the Hall scalar product (scalar()).

The action of the \(n\)-th Verschiebung operator on the Schur basis can also be computed explicitly. The following (probably clumsier than necessary) description can be obtained by solving exercise 7.61 in Stanley [STA].

Let \(\lambda\) be a partition. Let \(n\) be a positive integer. If the \(n\)-core of \(\lambda\) is nonempty, then \(\mathbf{V}_n(s_\lambda) = 0\). Otherwise, the following method computes \(\mathbf{V}_n(s_\lambda)\): Write the partition \(\lambda\) in the form \((\lambda_1, \lambda_2, ..., \lambda_{ns})\) for some nonnegative integer \(s\). (If \(n\) does not divide the length of \(\lambda\), then this is achieved by adding trailing zeroes to \(\lambda\).) Set \(\beta_i = \lambda_i + ns - i\) for every \(s \in \{ 1, 2, \ldots, ns \}\). Then, \((\beta_1, \beta_2, ..., \beta_{ns})\) is a strictly decreasing sequence of nonnegative integers. Stably sort the list \((1, 2, \ldots, ns)\) in order of (weakly) increasing remainder of \(-1 - \beta_i\) modulo \(n\). Let \(\xi\) be the sign of the permutation that is used for this sorting. Let \(\psi\) be the sign of the permutation that is used to stably sort the list \((1, 2, \ldots, ns)\) in order of (weakly) increasing remainder of \(i - 1\) modulo \(n\). (Notice that \(\psi = (-1)^{n(n-1)s(s-1)/4}\).) Then, \(\mathbf{V}_n(s_\lambda) = \xi \psi \prod_{i=0}^{n-1} s_{\lambda^{(i)}}\), where \((\lambda^{(0)}, \lambda^{(1)}, \ldots, \lambda^{(n - 1)})\) is the \(n\)-quotient of \(\lambda\).

INPUT:

  • n – a positive integer

OUTPUT:

The result of applying the \(n\)-th Verschiebung operator (on the ring of symmetric functions) to self.

EXAMPLES:

sage: Sym = SymmetricFunctions(ZZ)
sage: e = Sym.e()
sage: e[3].verschiebung(2)
0
sage: e[4].verschiebung(4)
-e[1]

The Verschiebung endomorphisms are multiplicative:

sage: all( all( e(lam).verschiebung(2) * e(mu).verschiebung(2)
....:           == (e(lam) * e(mu)).verschiebung(2)
....:           for mu in Partitions(4) )
....:      for lam in Partitions(4) )
True

TESTS:

Let us check that this method on the elementary basis gives the same result as the implementation in :module`sage.combinat.sf.sfa` on the complete homogeneous basis:

sage: Sym = SymmetricFunctions(QQ)
sage: e = Sym.e(); h = Sym.h()
sage: all( h(e(lam)).verschiebung(3) == h(e(lam).verschiebung(3))
....:      for lam in Partitions(6) )
True
sage: all( e(h(lam)).verschiebung(2) == e(h(lam).verschiebung(2))
....:      for lam in Partitions(4) )
True
SymmetricFunctionAlgebra_elementary.coproduct_on_generators(i)

Returns the coproduct on self[i].

INPUT:

  • self – an elementary basis of the symmetric functions
  • i – a nonnegative integer

OUTPUT:

  • returns the coproduct on the elementary generator \(e(i)\)

EXAMPLES:

sage: Sym = SymmetricFunctions(QQ)
sage: e = Sym.elementary()
sage: e.coproduct_on_generators(2)
e[] # e[2] + e[1] # e[1] + e[2] # e[]
sage: e.coproduct_on_generators(0)
e[] # e[]

Previous topic

Multiplicative symmetric functions

Next topic

Homogeneous symmetric functions

This Page