Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent
This class implements the subspace of the ring of symmetric functions spanned by
over the base ring
. When
, this space is in fact a subring of
the ring of symmetric functions generated by the complete homogeneous symmetric functions
for
.
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: KB = Sym.kBoundedSubspace(3,1); KB
3-bounded Symmetric Functions over Rational Field with t=1
sage: Sym = SymmetricFunctions(QQ['t'])
sage: KB = Sym.kBoundedSubspace(3); KB
3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field
The -Schur function basis can be constructed as follows:
sage: ks = KB.kschur(); ks
3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 3-Schur basis
Returns the -bounded basis called the K-
-Schur basis. See [Morse11] and
[LamSchillingShimozono10].
REFERENCES:
[Morse11] | J. Morse, Combinatorics of the K-theory of affine Grassmannians, Adv. in Math., Volume 229, Issue 5, pp. 2950–2984. |
[LamSchillingShimozono10] | T. Lam, A. Schilling, M.Shimozono, K-theory Schubert calculus of the affine Grassmannian, Compositio Math. 146 (2010), 811-852. |
EXAMPLES:
sage: kB = SymmetricFunctions(QQ).kBoundedSubspace(3,1)
sage: g = kB.K_kschur()
sage: g
3-bounded Symmetric Functions over Rational Field with t=1 in the K-3-Schur basis
sage: kB = SymmetricFunctions(QQ['t']).kBoundedSubspace(3)
sage: g = kB.K_kschur()
Traceback (most recent call last):
...
ValueError: This basis only exists for t=1
The homogeneous basis of this algebra.
See also
EXAMPLES:
sage: kh3 = SymmetricFunctions(QQ).kBoundedSubspace(3,1).khomogeneous()
sage: TestSuite(kh3).run()
The -Schur basis of this algebra.
See also
EXAMPLES:
sage: ks3 = SymmetricFunctions(QQ).kBoundedSubspace(3,1).kschur()
sage: TestSuite(ks3).run()
A list of realizations of this algebra.
EXAMPLES:
sage: SymmetricFunctions(QQ).kBoundedSubspace(3,1).realizations()
[3-bounded Symmetric Functions over Rational Field with t=1 in the 3-Schur basis also with t=1, 3-bounded Symmetric Functions over Rational Field with t=1 in the 3-bounded homogeneous basis, 3-bounded Symmetric Functions over Rational Field with t=1 in the K-3-Schur basis]
sage: SymmetricFunctions(QQ['t']).kBoundedSubspace(3).realizations()
[3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 3-Schur basis]
Return the retract of sym from the ring of symmetric functions to self.
INPUT:
OUTPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: s = Sym.schur()
sage: KB = Sym.kBoundedSubspace(3,1); KB
3-bounded Symmetric Functions over Rational Field with t=1
sage: KB.retract(s[2]+s[3])
ks3[2] + ks3[3]
sage: KB.retract(s[2,1,1])
Traceback (most recent call last):
...
ValueError: s[2, 1, 1] is not in the image
Bases: sage.categories.realizations.Category_realization_of_parent
The category of bases for the -bounded subspace of symmetric functions.
Returns the monomial expansion of self in variables.
INPUT:
OUTPUT: monomial expansion of self in variables
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: ks = Sym.kschur(3,1)
sage: ks[3,1].expand(2)
x0^4 + 2*x0^3*x1 + 2*x0^2*x1^2 + 2*x0*x1^3 + x1^4
sage: s = Sym.schur()
sage: ks[3,1].expand(2) == s(ks[3,1]).expand(2)
True
sage: Sym = SymmetricFunctions(QQ['t'])
sage: ks = Sym.kschur(3)
sage: f = ks[3,2]-ks[1]
sage: f.expand(2)
t^2*x0^5 + (t^2 + t)*x0^4*x1 + (t^2 + t + 1)*x0^3*x1^2 + (t^2 + t + 1)*x0^2*x1^3 + (t^2 + t)*x0*x1^4 + t^2*x1^5 - x0 - x1
This is the vertex operator that generalizes Jing’s operator.
It is a linear operator that raises the degree by
. This creation operator is a t-analogue of
multiplication by s(nu) .
See also
Proposition 5 in [SZ.2001].
INPUT:
REFERENCES:
[SZ.2001] | M. Shimozono, M. Zabrocki, Hall-Littlewood vertex operators and generalized Kostka polynomials. Adv. Math. 158 (2001), no. 1, 66-85. |
EXAMPLES:
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
sage: ks = Sym.kschur(4)
sage: s = Sym.schur()
sage: s(ks([3,1,1]).hl_creation_operator([1]))
(t-1)*s[2, 2, 1, 1] + t^2*s[3, 1, 1, 1] + (t^3+t^2-t)*s[3, 2, 1] + (t^3-t^2)*s[3, 3] + (t^4+t^3)*s[4, 1, 1] + t^4*s[4, 2] + t^5*s[5, 1]
sage: ks([3,1,1]).hl_creation_operator([1])
(t-1)*ks4[2, 2, 1, 1] + t^2*ks4[3, 1, 1, 1] + t^3*ks4[3, 2, 1] + (t^3-t^2)*ks4[3, 3] + t^4*ks4[4, 1, 1]
sage: Sym = SymmetricFunctions(QQ)
sage: ks = Sym.kschur(4,t=1)
sage: ks([3,1,1]).hl_creation_operator([1])
ks4[3, 1, 1, 1] + ks4[3, 2, 1] + ks4[4, 1, 1]
Returns whether self is Schur positive.
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: ks = Sym.kschur(3,1)
sage: f = ks[3,2]+ks[1]
sage: f.is_schur_positive()
True
sage: f = ks[3,2]-ks[1]
sage: f.is_schur_positive()
False
sage: Sym = SymmetricFunctions(QQ['t'])
sage: ks = Sym.kschur(3)
sage: f = ks[3,2]+ks[1]
sage: f.is_schur_positive()
True
sage: f = ks[3,2]-ks[1]
sage: f.is_schur_positive()
False
Returns the operator on self.
At ,
maps the
-Schur function
to
, where
is the
-conjugate of the partition
.
See also
For generic ,
sends
to
,
where
is the size of the core of
minus the size of
. Most of the time,
this result is not in the
-bounded subspace.
See also
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: ks = Sym.kschur(3,1)
sage: ks[2,2,1,1].omega()
ks3[2, 2, 2]
sage: kh = Sym.khomogeneous(3)
sage: kh[3].omega()
h3[1, 1, 1] - 2*h3[2, 1] + h3[3]
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
sage: ks = Sym.kschur(3)
sage: ks[3,1,1].omega()
Traceback (most recent call last):
...
ValueError: t*s[2, 1, 1, 1] + s[3, 1, 1] is not in the image
Returns the map composed with
on self.
Unlike the map omega(), the result of omega_t_inverse() lives in
the -bounded subspace and hence will return an element even for generic
. For
, omega() and omega_t_inverse() return the same
result.
EXAMPLES:
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
sage: ks = Sym.kschur(3)
sage: ks[3,1,1].omega_t_inverse()
1/t*ks3[2, 1, 1, 1]
sage: ks[3,2].omega_t_inverse()
1/t^2*ks3[1, 1, 1, 1, 1]
Return standard scalar product between self and x.
INPUT:
See also
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ['t'])
sage: ks3 = Sym.kschur(3)
sage: ks3[3,2,1].scalar( ks3[2,2,2] )
t^3 + t
sage: dks3 = Sym.kBoundedQuotient(3).dks()
sage: [ks3[3,2,1].scalar(dks3(la)) for la in Partitions(6, max_part=3)]
[0, 1, 0, 0, 0, 0, 0]
sage: dks3 = Sym.kBoundedQuotient(3,t=1).dks()
sage: [ks3[2,2,2].scalar(dks3(la)) for la in Partitions(6, max_part=3)]
[0, t - 1, 0, 1, 0, 0, 0]
sage: ks3 = Sym.kschur(3,t=1)
sage: [ks3[2,2,2].scalar(dks3(la)) for la in Partitions(6, max_part=3)]
[0, 0, 0, 1, 0, 0, 0]
sage: kH = Sym.khomogeneous(4)
sage: kH([2,2,1]).scalar(ks3[2,2,1])
3
TESTS:
sage: Sym = SymmetricFunctions(QQ)
sage: ks3 = Sym.kschur(3,1)
sage: ks3(1).scalar(ks3([]))
1
Return an element of self.
EXAMPLES:
sage: SymmetricFunctions(QQ['t']).kschur(3).an_element()
2*ks3[] + 2*ks3[1] + 3*ks3[2]
Return the antipode on self by lifting to the space of
symmetric functions, computing the antipode, and then converting
to self.parent(). This is only the antipode for and
for other values of
the result may not be in the space where
the
-Schur functions live.
INPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: ks3 = Sym.kschur(3,1)
sage: ks3[3,2].antipode()
-ks3[1, 1, 1, 1, 1]
sage: ks3.antipode(ks3[3,2])
-ks3[1, 1, 1, 1, 1]
Return the coproduct operation on element.
The coproduct is first computed on the homogeneous basis if
and on the Hall-Littlewood Qp basis otherwise. The result is
computed then converted to the tensor squared of self.parent().
INPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: ks3 = Sym.kschur(3,1)
sage: ks3[2,1].coproduct()
ks3[] # ks3[2, 1] + ks3[1] # ks3[1, 1] + ks3[1] # ks3[2] + ks3[1, 1] # ks3[1] + ks3[2] # ks3[1] + ks3[2, 1] # ks3[]
sage: h3 = Sym.khomogeneous(3)
sage: h3[2,1].coproduct()
h3[] # h3[2, 1] + h3[1] # h3[1, 1] + h3[1] # h3[2] + h3[1, 1] # h3[1] + h3[2] # h3[1] + h3[2, 1] # h3[]
sage: ks3t = SymmetricFunctions(FractionField(QQ['t'])).kschur(3)
sage: ks3t[2,1].coproduct()
ks3[] # ks3[2, 1] + ks3[1] # ks3[1, 1] + ks3[1] # ks3[2] + ks3[1, 1] # ks3[1] + ks3[2] # ks3[1] + ks3[2, 1] # ks3[]
sage: ks3t[3,1].coproduct()
ks3[] # ks3[3, 1] + ks3[1] # ks3[2, 1] + (t+1)*ks3[1] # ks3[3] + ks3[1, 1] # ks3[2] + ks3[2] # ks3[1, 1]
+ (t+1)*ks3[2] # ks3[2] + ks3[2, 1] # ks3[1] + (t+1)*ks3[3] # ks3[1] + ks3[3, 1] # ks3[]
sage: h3.coproduct(h3[2,1])
h3[] # h3[2, 1] + h3[1] # h3[1, 1] + h3[1] # h3[2] + h3[1, 1] # h3[1] + h3[2] # h3[1] + h3[2, 1] # h3[]
Return the counit of element.
The counit is the constant term of element.
INPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: ks3 = Sym.kschur(3,1)
sage: f = 2*ks3[2,1] + 3*ks3[[]]
sage: f.counit()
3
sage: ks3.counit(f)
3
Return the degree of the basis element indexed by .
INPUT: - b – a partition
EXAMPLES:
sage: ks3 = SymmetricFunctions(QQ).kschur(3,1)
sage: ks3.degree_on_basis(Partition([3,2]))
5
Return the basis element indexing 1.
EXAMPLES:
sage: ks3 = SymmetricFunctions(QQ).kschur(3,1)
sage: ks3.one() # indirect doctest
ks3[]
Return the degree n transition matrix between self and other.
INPUT:
The entry in the row and
column is the
coefficient obtained by writing the
element of the
basis of self in terms of the basis other, and extracting the
coefficient.
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ); s = Sym.schur()
sage: ks3 = Sym.kschur(3,1)
sage: ks3.transition_matrix(s,5)
[1 1 1 0 0 0 0]
[0 1 0 1 0 0 0]
[0 0 1 0 1 0 0]
[0 0 0 1 0 1 0]
[0 0 0 0 1 1 1]
sage: Sym = SymmetricFunctions(QQ['t'])
sage: s = Sym.schur()
sage: ks = Sym.kschur(3)
sage: ks.transition_matrix(s,5)
[t^2 t 1 0 0 0 0]
[ 0 t 0 1 0 0 0]
[ 0 0 t 0 1 0 0]
[ 0 0 0 t 0 1 0]
[ 0 0 0 0 t^2 t 1]
The super categories of self.
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ['t'])
sage: from sage.combinat.sf.new_kschur import KBoundedSubspaceBases
sage: KB = Sym.kBoundedSubspace(3)
sage: KBB = KBoundedSubspaceBases(KB); KBB
Category of k bounded subspace bases of 3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field
sage: KBB.super_categories()
[Category of realizations of 3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field,
Join of Category of graded modules with basis over Univariate Polynomial Ring in t over Rational Field
and Category of coalgebras with basis over Univariate Polynomial Ring in t over Rational Field
and Category of subobjects of sets]
Bases: sage.combinat.free_module.CombinatorialFreeModule
This class implements the basis of the -bounded subspace called the K-
-Schur
basis. See [Morse2011], [LamSchillingShimozono2010].
REFERENCES:
[Morse2011] | J. Morse, Combinatorics of the K-theory of affine Grassmannians, Adv. in Math., Volume 229, Issue 5, pp. 2950–2984. |
[LamSchillingShimozono2010] | T. Lam, A. Schilling, M.Shimozono, K-theory Schubert calculus of the affine Grassmannian, Compositio Math. 146 (2010), 811-852. |
Returns the K--Schur function, as embedded inside the affine zero Hecke algebra.
INPUT:
OUTPUT:
EXAMPLES:
sage: g = SymmetricFunctions(QQ).kBoundedSubspace(3,1).K_kschur()
sage: g.K_k_Schur_non_commutative_variables([2,1])
T[3,1,0] + T[1,2,0] + T[3,2,0] + T[0,1,0] + T[2,0,1] + T[0,3,0] + T[2,0,3] + T[0,3,1] + T[2,3,2] + T[2,3,1] + T[3,1,2] + T[1,2,1] - T[2,0] - T[3,1]
sage: g.K_k_Schur_non_commutative_variables([])
1
sage: g.K_k_Schur_non_commutative_variables([4,1])
Traceback (most recent call last):
...
ValueError: Partition should be 3-bounded
Returns the homogeneous basis element indexed by la, viewed as an element inside the affine zero Hecke algebra. For the code, see method _homogeneous_basis.
INPUT:
OUTPUT:
EXAMPLES:
sage: g = SymmetricFunctions(QQ).kBoundedSubspace(3,1).K_kschur()
sage: g.homogeneous_basis_noncommutative_variables_zero_Hecke([2,1])
T[2,1,0] + T[3,1,0] + T[1,2,0] + T[3,2,0] + T[0,1,0] + T[2,0,1] + T[1,0,3] + T[0,3,0] + T[2,0,3] + T[0,3,2] + T[0,3,1] + T[2,3,2] + T[3,2,1] + T[2,3,1] + T[3,1,2] + T[1,2,1] - T[1,0] - 2*T[2,0] - T[0,3] - T[3,2] - 2*T[3,1] - T[2,1]
sage: g.homogeneous_basis_noncommutative_variables_zero_Hecke([])
1
Returns the lift of a -bounded symmetric function.
INPUT:
-bounded partition (then x corresponds to the basis element indexed by x)
OUTPUT:
EXAMPLES:
sage: g = SymmetricFunctions(QQ).kBoundedSubspace(3,1).K_kschur()
sage: g.lift([2,1])
h[2] + h[2, 1] - h[3]
sage: g.lift([])
h[]
sage: g.lift([4,1])
Traceback (most recent call last):
...
TypeError: do not know how to make x (= [4, 1]) an element of self (=3-bounded Symmetric Functions over Rational Field with t=1 in the K-3-Schur basis)
Returns the product of the two K--Schur functions.
INPUT:
OUTPUT:
EXAMPLES:
sage: g = SymmetricFunctions(QQ).kBoundedSubspace(3,1).K_kschur()
sage: g.product(g([2,1]), g[1])
-2*Kks3[2, 1] + Kks3[2, 1, 1] + Kks3[2, 2]
sage: g.product(g([2,1]), g([]))
Kks3[2, 1]
Returns the retract of a symmetric function.
INPUT:
OUTPUT:
EXAMPLES:
sage: g = SymmetricFunctions(QQ).kBoundedSubspace(3,1).K_kschur()
sage: m = SymmetricFunctions(QQ).m()
sage: g.retract(m[2,1])
-2*Kks3[1] + 4*Kks3[1, 1] - 2*Kks3[1, 1, 1] - Kks3[2] + Kks3[2, 1]
sage: g.retract(m([]))
Kks3[]
Bases: sage.combinat.free_module.CombinatorialFreeModule
Space of -bounded homogeneous symmetric functions.
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ)
sage: kH = Sym.khomogeneous(3)
sage: kH[2]
h3[2]
sage: kH[2].lift()
h[2]
Bases: sage.combinat.free_module.CombinatorialFreeModule
Space of -Schur functions.
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ['t'])
sage: KB = Sym.kBoundedSubspace(3); KB
3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field
The -Schur function basis can be constructed as follows:
sage: ks3 = KB.kschur(); ks3
3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 3-Schur basis
We can convert to any basis of the ring of symmetric functions and, whenever it makes sense, also the other way round:
sage: s = Sym.schur()
sage: s(ks3([3,2,1]))
s[3, 2, 1] + t*s[4, 1, 1] + t*s[4, 2] + t^2*s[5, 1]
sage: t = Sym.base_ring().gen()
sage: ks3(s([3, 2, 1]) + t*s([4, 1, 1]) + t*s([4, 2]) + t^2*s([5, 1]))
ks3[3, 2, 1]
sage: s(ks3[2, 1, 1])
s[2, 1, 1] + t*s[3, 1]
sage: ks3(s[2, 1, 1] + t*s[3, 1])
ks3[2, 1, 1]
-Schur functions are indexed by partitions with first part
. Constructing a
-Schur function for a larger partition raises an error:
sage: ks3([4,3,2,1]) #
Traceback (most recent call last):
...
TypeError: do not know how to make x (= [4, 3, 2, 1]) an element of self (=3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 3-Schur basis)
Similarly, attempting to convert a function that is not in the
linear span of the -Schur functions raises an error:
sage: ks3(s([4]))
Traceback (most recent call last):
...
ValueError: s[4] is not in the image
Note that the product of -Schur functions is not guaranteed to be in the
space spanned by the
-Schurs. In general, we only have that a
-Schur times a
-Schur function is in the
-bounded subspace. The
multiplication of two
-Schur functions thus generally returns the product of
the lift of the functions to the ambient symmetric function space. If the result
happens to lie in the
-bounded subspace, then the result is cast into the
-Schur basis:
sage: ks2 = Sym.kBoundedSubspace(2).kschur()
sage: ks2[1] * ks2[1]
ks2[1, 1] + ks2[2]
sage: ks2[1] * ks2[2]
s[2, 1] + s[3]
Because the target space of the product of a -Schur and a
-Schur has several
possibilities, the product of a
-Schur and
-Schur function is not
implemented for distinct
and
. Let us show how to get around
this ‘manually’:
sage: ks3 = Sym.kBoundedSubspace(3).kschur()
sage: ks2([2,1]) * ks3([3,1])
Traceback (most recent call last):
...
TypeError: unsupported operand parent(s) for '*': '2-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 2-Schur basis' and '3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 3-Schur basis'
The workaround:
sage: f = s(ks2([2,1])) * s(ks3([3,1])); f # Convert to Schur functions first and multiply there.
s[3, 2, 1, 1] + s[3, 2, 2] + (t+1)*s[3, 3, 1] + s[4, 1, 1, 1]
+ (2*t+2)*s[4, 2, 1] + (t^2+t+1)*s[4, 3] + (2*t+1)*s[5, 1, 1]
+ (t^2+2*t+1)*s[5, 2] + (t^2+2*t)*s[6, 1] + t^2*s[7]
or:
sage: f = ks2[2,1].lift() * ks3[3,1].lift()
sage: ks5 = Sym.kBoundedSubspace(5).kschur()
sage: ks5(f) # The product of a 'ks2' with a 'ks3' is a 'ks5'.
ks5[3, 2, 1, 1] + ks5[3, 2, 2] + (t+1)*ks5[3, 3, 1] + ks5[4, 1, 1, 1]
+ (t+2)*ks5[4, 2, 1] + (t^2+t+1)*ks5[4, 3] + (t+1)*ks5[5, 1, 1] + ks5[5, 2]
For other technical reasons, taking powers of -Schur functions
is not implemented, even when the answer is still in the
-bounded
subspace:
sage: ks2([1])^2
Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for ** or pow(): 'kSchur_with_category.element_class' and 'int'
Todo
Get rid of said technical “reasons”.
However, at , the product of
-Schur functions is in the span of the
-Schur functions always. Below are some examples at
sage: ks3 = Sym.kBoundedSubspace(3, t=1).kschur(); ks3
3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field with t=1 in the 3-Schur basis also with t=1
sage: s = SymmetricFunctions(ks3.base_ring()).schur()
sage: ks3(s([3]))
ks3[3]
sage: s(ks3([3,2,1]))
s[3, 2, 1] + s[4, 1, 1] + s[4, 2] + s[5, 1]
sage: ks3([2,1])^2 # taking powers works for t=1
ks3[2, 2, 1, 1] + ks3[2, 2, 2] + ks3[3, 1, 1, 1]
TESTS:
Check that trac ticket #13743 is fixed:
sage: ks3 = SymmetricFunctions(QQ).kschur(3, 1)
sage: f = ks3[2,1]
sage: f.coefficient(f.support()[0])
1
Take the product of two -Schur functions.
If , then take the product by lifting to the Schur functions and then
retracting back into the the
-bounded subspace (if possible).
If , then the product is done using
_product_from_combinatorial_algebra_multiply()
and this method calls _multiply_basis().
INPUT:
OUTPUT:
EXAMPLES:
sage: Sym = SymmetricFunctions(QQ['t'])
sage: ks3 = Sym.kschur(3,1)
sage: kH = Sym.khomogeneous(3)
sage: ks3(kH[2,1,1])
ks3[2, 1, 1] + ks3[2, 2] + ks3[3, 1]
sage: ks3([])*kH[2,1,1]
ks3[2, 1, 1] + ks3[2, 2] + ks3[3, 1]
sage: ks3([3,3,3,2,2,1,1,1])^2
ks3[3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1]
sage: ks3([3,3,3,2,2,1,1,1])*ks3([2,2,2,2,2,1,1,1,1])
ks3[3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1]
sage: ks3([2,2,1,1,1,1])*ks3([2,2,2,1,1,1,1])
ks3[2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1] + ks3[2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1]
sage: ks3[2,1]^2
ks3[2, 2, 1, 1] + ks3[2, 2, 2] + ks3[3, 1, 1, 1]
sage: ks3 = Sym.kschur(3)
sage: ks3[2,1]*ks3[2,1]
s[2, 2, 1, 1] + s[2, 2, 2] + s[3, 1, 1, 1] + 2*s[3, 2, 1] + s[3, 3] + s[4, 1, 1] + s[4, 2]
TESTS:
sage: Sym = SymmetricFunctions(QQ['t'])
sage: ks3 = Sym.kschur(3,1)
sage: kH = Sym.khomogeneous(3)
sage: ks3.product( ks3([]), ks3([]) )
ks3[]
sage: ks3.product( ks3([]), kH([]) )
ks3[]
sage: ks3 = Sym.kschur(3)
sage: ks3.product( ks3([]), ks3([]) )
ks3[]