# Symplectic Symmetric Functions#

AUTHORS:

• Travis Scrimshaw (2013-11-10): Initial version

class sage.combinat.sf.symplectic.SymmetricFunctionAlgebra_symplectic(Sym)[source]#

The symplectic symmetric function basis (or symplectic basis, to be short).

The symplectic basis $$\{ sp_{\lambda} \}$$ where $$\lambda$$ is taken over all partitions is defined by the following change of basis with the Schur functions:

$s_{\lambda} = \sum_{\mu} \left( \sum_{\nu \in V} c^{\lambda}_{\mu\nu} \right) sp_{\mu}$

where $$V$$ is the set of all partitions with even-height columns and $$c^{\lambda}_{\mu\nu}$$ is the usual Littlewood-Richardson (LR) coefficients. By the properties of LR coefficients, this can be shown to be a upper unitriangular change of basis.

Note

This is only a filtered basis, not a $$\ZZ$$-graded basis. However this does respect the induced $$(\ZZ/2\ZZ)$$-grading.

INPUT:

• Sym – an instance of the ring of the symmetric functions

REFERENCES:

[ChariKleber2000]

Vyjayanthi Chari and Michael Kleber. Symmetric functions and representations of quantum affine algebras. arXiv math/0011161v1

K. Koike, I. Terada, Young-diagrammatic methods for the representation theory of the classical groups of type Bn, Cn, Dn. J. Algebra 107 (1987), no. 2, 466-511.

[ShimozonoZabrocki2006]

Mark Shimozono and Mike Zabrocki. Deformed universal characters for classical and affine algebras. Journal of Algebra, 299 (2006). arXiv math/0404288.

EXAMPLES:

Here are the first few symplectic symmetric functions, in various bases:

sage: Sym = SymmetricFunctions(QQ)
sage: sp = Sym.sp()
sage: e = Sym.e()
sage: h = Sym.h()
sage: p = Sym.p()
sage: s = Sym.s()
sage: m = Sym.m()

sage: p(sp([1]))
p[1]
sage: m(sp([1]))
m[1]
sage: e(sp([1]))
e[1]
sage: h(sp([1]))
h[1]
sage: s(sp([1]))
s[1]

sage: p(sp([2]))
1/2*p[1, 1] + 1/2*p[2]
sage: m(sp([2]))
m[1, 1] + m[2]
sage: e(sp([2]))
e[1, 1] - e[2]
sage: h(sp([2]))
h[2]
sage: s(sp([2]))
s[2]

sage: p(sp([3]))
1/6*p[1, 1, 1] + 1/2*p[2, 1] + 1/3*p[3]
sage: m(sp([3]))
m[1, 1, 1] + m[2, 1] + m[3]
sage: e(sp([3]))
e[1, 1, 1] - 2*e[2, 1] + e[3]
sage: h(sp([3]))
h[3]
sage: s(sp([3]))
s[3]

sage: Sym = SymmetricFunctions(ZZ)
sage: sp = Sym.sp()
sage: e = Sym.e()
sage: h = Sym.h()
sage: s = Sym.s()
sage: m = Sym.m()
sage: p = Sym.p()
sage: m(sp([4]))
m[1, 1, 1, 1] + m[2, 1, 1] + m[2, 2] + m[3, 1] + m[4]
sage: e(sp([4]))
e[1, 1, 1, 1] - 3*e[2, 1, 1] + e[2, 2] + 2*e[3, 1] - e[4]
sage: h(sp([4]))
h[4]
sage: s(sp([4]))
s[4]

>>> from sage.all import *
>>> Sym = SymmetricFunctions(QQ)
>>> sp = Sym.sp()
>>> e = Sym.e()
>>> h = Sym.h()
>>> p = Sym.p()
>>> s = Sym.s()
>>> m = Sym.m()

>>> p(sp([Integer(1)]))
p[1]
>>> m(sp([Integer(1)]))
m[1]
>>> e(sp([Integer(1)]))
e[1]
>>> h(sp([Integer(1)]))
h[1]
>>> s(sp([Integer(1)]))
s[1]

>>> p(sp([Integer(2)]))
1/2*p[1, 1] + 1/2*p[2]
>>> m(sp([Integer(2)]))
m[1, 1] + m[2]
>>> e(sp([Integer(2)]))
e[1, 1] - e[2]
>>> h(sp([Integer(2)]))
h[2]
>>> s(sp([Integer(2)]))
s[2]

>>> p(sp([Integer(3)]))
1/6*p[1, 1, 1] + 1/2*p[2, 1] + 1/3*p[3]
>>> m(sp([Integer(3)]))
m[1, 1, 1] + m[2, 1] + m[3]
>>> e(sp([Integer(3)]))
e[1, 1, 1] - 2*e[2, 1] + e[3]
>>> h(sp([Integer(3)]))
h[3]
>>> s(sp([Integer(3)]))
s[3]

>>> Sym = SymmetricFunctions(ZZ)
>>> sp = Sym.sp()
>>> e = Sym.e()
>>> h = Sym.h()
>>> s = Sym.s()
>>> m = Sym.m()
>>> p = Sym.p()
>>> m(sp([Integer(4)]))
m[1, 1, 1, 1] + m[2, 1, 1] + m[2, 2] + m[3, 1] + m[4]
>>> e(sp([Integer(4)]))
e[1, 1, 1, 1] - 3*e[2, 1, 1] + e[2, 2] + 2*e[3, 1] - e[4]
>>> h(sp([Integer(4)]))
h[4]
>>> s(sp([Integer(4)]))
s[4]


Some examples of conversions the other way:

sage: sp(h[3])
sp[3]
sage: sp(e[3])
sp[1] + sp[1, 1, 1]
sage: sp(m[2,1])
-sp[1] - 2*sp[1, 1, 1] + sp[2, 1]
sage: sp(p[3])
sp[1, 1, 1] - sp[2, 1] + sp[3]

>>> from sage.all import *
>>> sp(h[Integer(3)])
sp[3]
>>> sp(e[Integer(3)])
sp[1] + sp[1, 1, 1]
>>> sp(m[Integer(2),Integer(1)])
-sp[1] - 2*sp[1, 1, 1] + sp[2, 1]
>>> sp(p[Integer(3)])
sp[1, 1, 1] - sp[2, 1] + sp[3]


Some multiplication:

sage: sp([2]) * sp([1,1])
sp[1, 1] + sp[2] + sp[2, 1, 1] + sp[3, 1]
sage: sp([2,1,1]) * sp([2])
sp[1, 1] + sp[1, 1, 1, 1] + 2*sp[2, 1, 1] + sp[2, 2] + sp[2, 2, 1, 1]
+ sp[3, 1] + sp[3, 1, 1, 1] + sp[3, 2, 1] + sp[4, 1, 1]
sage: sp([1,1]) * sp([2,1])
sp[1] + sp[1, 1, 1] + 2*sp[2, 1] + sp[2, 1, 1, 1] + sp[2, 2, 1]
+ sp[3] + sp[3, 1, 1] + sp[3, 2]

>>> from sage.all import *
>>> sp([Integer(2)]) * sp([Integer(1),Integer(1)])
sp[1, 1] + sp[2] + sp[2, 1, 1] + sp[3, 1]
>>> sp([Integer(2),Integer(1),Integer(1)]) * sp([Integer(2)])
sp[1, 1] + sp[1, 1, 1, 1] + 2*sp[2, 1, 1] + sp[2, 2] + sp[2, 2, 1, 1]
+ sp[3, 1] + sp[3, 1, 1, 1] + sp[3, 2, 1] + sp[4, 1, 1]
>>> sp([Integer(1),Integer(1)]) * sp([Integer(2),Integer(1)])
sp[1] + sp[1, 1, 1] + 2*sp[2, 1] + sp[2, 1, 1, 1] + sp[2, 2, 1]
+ sp[3] + sp[3, 1, 1] + sp[3, 2]


Examples of the Hopf algebra structure:

sage: sp([1]).antipode()
-sp[1]
sage: sp([2]).antipode()
sp[] + sp[1, 1]
sage: sp([1]).coproduct()
sp[] # sp[1] + sp[1] # sp[]
sage: sp([2]).coproduct()
sp[] # sp[2] + sp[1] # sp[1] + sp[2] # sp[]
sage: sp([1]).counit()
0
sage: sp.one().counit()
1

>>> from sage.all import *
>>> sp([Integer(1)]).antipode()
-sp[1]
>>> sp([Integer(2)]).antipode()
sp[] + sp[1, 1]
>>> sp([Integer(1)]).coproduct()
sp[] # sp[1] + sp[1] # sp[]
>>> sp([Integer(2)]).coproduct()
sp[] # sp[2] + sp[1] # sp[1] + sp[2] # sp[]
>>> sp([Integer(1)]).counit()
0
>>> sp.one().counit()
1