Bases: sage.combinat.sf.multiplicative.SymmetricFunctionAlgebra_multiplicative
A class for methods associated to the power sum basis of the symmetric functions
INPUT:
TESTS:
sage: p = SymmetricFunctions(QQ).p()
sage: p == loads(dumps(p))
True
sage: TestSuite(p).run(skip=['_test_associativity', '_test_distributivity', '_test_prod'])
sage: TestSuite(p).run(elements = [p[1,1]+p[2], p[1]+2*p[1,1]])
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
Return the image of the symmetric function self under the
-th Frobenius operator.
The -th Frobenius operator
is defined to be the
map from the ring of symmetric functions to itself that sends
every symmetric function
to
. This operator
is a Hopf algebra endomorphism, and satisfies
for every partition
(where
means the monomial basis). Moreover,
for every positive integer
(where
denotes the
-th powersum symmetric function).
The -th Frobenius operator is also called the
-th
Frobenius endomorphism. It is not related to the Frobenius map
which connects the ring of symmetric functions with the
representation theory of the symmetric group.
The -th Frobenius operator is also the
-th Adams operator
of the
-ring of symmetric functions over the integers.
The -th Frobenius operator can also be described via plethysm:
Every symmetric function
satisfies
,
where
is the
-th powersum symmetric function, and
denotes (outer) plethysm.
INPUT:
OUTPUT:
The result of applying the -th Frobenius operator (on the ring
of symmetric functions) to self.
EXAMPLES:
sage: Sym = SymmetricFunctions(ZZ)
sage: p = Sym.p()
sage: p[3].frobenius(2)
p[6]
sage: p[4,2,1].frobenius(3)
p[12, 6, 3]
sage: p([]).frobenius(4)
p[]
sage: p[3].frobenius(1)
p[3]
sage: (p([3]) - p([2]) + p([])).frobenius(3)
p[] - p[6] + p[9]
TESTS:
Let us check that this method on the powersum basis gives the same result as the implementation in sage.combinat.sf.sfa on the complete homogeneous basis:
sage: Sym = SymmetricFunctions(QQ)
sage: p = Sym.p(); h = Sym.h()
sage: all( h(p(lam)).frobenius(3) == h(p(lam).frobenius(3))
....: for lam in Partitions(3) )
True
sage: all( p(h(lam)).frobenius(2) == p(h(lam).frobenius(2))
....: for lam in Partitions(4) )
True
See also
Expand the symmetric function as a symmetric polynomial
in variables.
INPUT:
OUTPUT:
EXAMPLES:
sage: p = SymmetricFunctions(QQ).p()
sage: a = p([2])
sage: a.expand(2)
x0^2 + x1^2
sage: a.expand(3, alphabet=['a','b','c'])
a^2 + b^2 + c^2
sage: p([2,1,1]).expand(2)
x0^4 + 2*x0^3*x1 + 2*x0^2*x1^2 + 2*x0*x1^3 + x1^4
sage: p([7]).expand(4)
x0^7 + x1^7 + x2^7 + x3^7
sage: p([7]).expand(4,alphabet='t')
t0^7 + t1^7 + t2^7 + t3^7
sage: p([7]).expand(4,alphabet='x,y,z,t')
x^7 + y^7 + z^7 + t^7
sage: p(1).expand(4)
1
sage: p(0).expand(4)
0
sage: (p([]) + 2*p([1])).expand(3)
2*x0 + 2*x1 + 2*x2 + 1
Return the image of the symmetric function self under the
-th Frobenius operator.
The -th Frobenius operator
is defined to be the
map from the ring of symmetric functions to itself that sends
every symmetric function
to
. This operator
is a Hopf algebra endomorphism, and satisfies
for every partition
(where
means the monomial basis). Moreover,
for every positive integer
(where
denotes the
-th powersum symmetric function).
The -th Frobenius operator is also called the
-th
Frobenius endomorphism. It is not related to the Frobenius map
which connects the ring of symmetric functions with the
representation theory of the symmetric group.
The -th Frobenius operator is also the
-th Adams operator
of the
-ring of symmetric functions over the integers.
The -th Frobenius operator can also be described via plethysm:
Every symmetric function
satisfies
,
where
is the
-th powersum symmetric function, and
denotes (outer) plethysm.
INPUT:
OUTPUT:
The result of applying the -th Frobenius operator (on the ring
of symmetric functions) to self.
EXAMPLES:
sage: Sym = SymmetricFunctions(ZZ)
sage: p = Sym.p()
sage: p[3].frobenius(2)
p[6]
sage: p[4,2,1].frobenius(3)
p[12, 6, 3]
sage: p([]).frobenius(4)
p[]
sage: p[3].frobenius(1)
p[3]
sage: (p([3]) - p([2]) + p([])).frobenius(3)
p[] - p[6] + p[9]
TESTS:
Let us check that this method on the powersum basis gives the same result as the implementation in sage.combinat.sf.sfa on the complete homogeneous basis:
sage: Sym = SymmetricFunctions(QQ)
sage: p = Sym.p(); h = Sym.h()
sage: all( h(p(lam)).frobenius(3) == h(p(lam).frobenius(3))
....: for lam in Partitions(3) )
True
sage: all( p(h(lam)).frobenius(2) == p(h(lam).frobenius(2))
....: for lam in Partitions(4) )
True
See also
Return the image of self under the omega automorphism.
The omega automorphism is defined to be the unique algebra
endomorphism of the ring of symmetric functions that
satisfies
for all positive integers
(where
stands for the
-th elementary symmetric
function, and
stands for the
-th complete homogeneous
symmetric function). It furthermore is a Hopf algebra
endomorphism, and sends the power-sum symmetric function
to
for every positive integer
.
The default implementation converts to the Schurs, then performs the automorphism and changes back.
OUTPUT:
EXAMPLES:
sage: p = SymmetricFunctions(QQ).p()
sage: a = p([2,1]); a
p[2, 1]
sage: a.omega()
-p[2, 1]
sage: p([]).omega()
p[]
sage: p(0).omega()
0
sage: p = SymmetricFunctions(ZZ).p()
sage: (p([3,1,1]) - 2 * p([2,1])).omega()
2*p[2, 1] + p[3, 1, 1]
Return the standard scalar product of self and x.
INPUT:
Note that the power-sum symmetric functions are orthogonal under
this scalar product. With the default value of zee, the value
of is given by the
size of the centralizer in
of a permutation of cycle
type
.
OUTPUT:
EXAMPLES:
sage: p = SymmetricFunctions(QQ).p()
sage: p4 = Partitions(4)
sage: matrix([ [p(a).scalar(p(b)) for a in p4] for b in p4])
[ 4 0 0 0 0]
[ 0 3 0 0 0]
[ 0 0 8 0 0]
[ 0 0 0 4 0]
[ 0 0 0 0 24]
sage: p(0).scalar(p(1))
0
sage: p(1).scalar(p(2))
2
sage: zee = lambda x : 1
sage: matrix( [[p[la].scalar(p[mu], zee) for la in Partitions(3)] for mu in Partitions(3)])
[1 0 0]
[0 1 0]
[0 0 1]
Return the image of the symmetric function self under the
-th Verschiebung operator.
The -th Verschiebung operator
is defined to be
the unique algebra endomorphism
of the ring of symmetric
functions that satisfies
for every positive
integer
divisible by
, and satisfies
for
every positive integer
not divisible by
. This operator
is a Hopf algebra endomorphism. For every
nonnegative integer
with
, it satisfies
(where is the complete homogeneous basis,
is the
powersum basis, and
is the elementary basis). For every
nonnegative integer
with
, it satisfes
The -th Verschiebung operator is also called the
-th
Verschiebung endomorphism. Its name derives from the Verschiebung
(German for “shift”) endomorphism of the Witt vectors.
The -th Verschiebung operator is adjoint to the
-th
Frobenius operator (see frobenius() for its definition)
with respect to the Hall scalar product (scalar()).
The action of the -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’s [STA].
Let be a partition. Let
be a positive integer. If
the
-core of
is nonempty, then
. Otherwise, the following method
computes
: Write the partition
in the form
for some
nonnegative integer
. (If
does not divide the length of
, then this is achieved by adding trailing zeroes to
.) Set
for every
. Then,
is a strictly decreasing
sequence of nonnegative integers. Stably sort the list
in order of (weakly) increasing remainder of
modulo
. Let
be the sign of the
permutation that is used for this sorting. Let
be the sign
of the permutation that is used to stably sort the list
in order of (weakly) increasing remainder of
modulo
. (Notice that
.)
Then,
, where
is the
-quotient of
.
INPUT:
OUTPUT:
The result of applying the -th Verschiebung operator (on the
ring of symmetric functions) to self.
EXAMPLES:
sage: Sym = SymmetricFunctions(ZZ)
sage: p = Sym.p()
sage: p[3].verschiebung(2)
0
sage: p[4].verschiebung(4)
4*p[1]
The Verschiebung endomorphisms are multiplicative:
sage: all( all( p(lam).verschiebung(2) * p(mu).verschiebung(2)
....: == (p(lam) * p(mu)).verschiebung(2)
....: for mu in Partitions(4) )
....: for lam in Partitions(4) )
True
Testing the adjointness between the Frobenius operators
and the Verschiebung operators
:
sage: Sym = SymmetricFunctions(QQ)
sage: p = Sym.p()
sage: all( all( p(lam).verschiebung(2).scalar(p(mu))
....: == p(lam).scalar(p(mu).frobenius(2))
....: for mu in Partitions(2) )
....: for lam in Partitions(4) )
True
TESTS:
Let us check that this method on the powersum basis gives the same result as the implementation in sage.combinat.sf.sfa on the monomial basis:
sage: Sym = SymmetricFunctions(QQ)
sage: p = Sym.p(); m = Sym.m()
sage: all( m(p(lam)).verschiebung(3) == m(p(lam).verschiebung(3))
....: for lam in Partitions(6) )
True
sage: all( p(m(lam)).verschiebung(2) == p(m(lam).verschiebung(2))
....: for lam in Partitions(4) )
True
Returns the antipode of self[partition].
The antipode on the generator is
and the
antipode on
is
.
INPUT:
OUTPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: p = Sym.p()
sage: p.antipode_on_basis([2])
-p[2]
sage: p.antipode_on_basis([3])
-p[3]
sage: p.antipode_on_basis([2,2])
p[2, 2]
sage: p.antipode_on_basis([])
p[]
Returns coproduct on generators for power sums .
The elements
are primitive elements.
INPUT:
OUTPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: p = Sym.powersum()
sage: p.coproduct_on_generators(2)
p[] # p[2] + p[2] # p[]