-Schur Functions#
- class sage.combinat.sf.new_kschur.KBoundedSubspace(Sym, k, t='t')#
Bases:
sage.structure.unique_representation.UniqueRepresentation,sage.structure.parent.ParentThis 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
- K_kschur()#
Return 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
- khomogeneous()#
The homogeneous basis of this algebra.
See also
EXAMPLES:
sage: kh3 = SymmetricFunctions(QQ).kBoundedSubspace(3,1).khomogeneous() sage: TestSuite(kh3).run()
- kschur()#
The
-Schur basis of this algebra.See also
EXAMPLES:
sage: ks3 = SymmetricFunctions(QQ).kBoundedSubspace(3,1).kschur() sage: TestSuite(ks3).run()
- ksplit()#
The
-split basis of this algebra.See also
EXAMPLES:
sage: ksp3 = SymmetricFunctions(QQ).kBoundedSubspace(3,1).ksplit() sage: TestSuite(ksp3).run()
- realizations()#
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, 3-bounded Symmetric Functions over Rational Field with t=1 in the 3-split basis, 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, 3-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 3-split basis]
- retract(sym)#
Return the retract of
symfrom the ring of symmetric functions toself.INPUT:
sym– a symmetric function
OUTPUT:
the analogue of the symmetric function in the
-bounded subspace (if possible)
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
- class sage.combinat.sf.new_kschur.KBoundedSubspaceBases(base, t='t')#
Bases:
sage.categories.realizations.Category_realization_of_parentThe category of bases for the
-bounded subspace of symmetric functions.- class ElementMethods#
Bases:
object- expand(*args, **kwargs)#
Return the monomial expansion of
selfin variables.INPUT:
n– positive integer
OUTPUT: monomial expansion of
selfin variablesEXAMPLES:
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
- hl_creation_operator(nu, t=None)#
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 bys(nu).See also
Proposition 5 in [SZ2001].
INPUT:
nu– a partition or a list of integerst– (default:None, in which casetis used) an element of the base ring
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]
- is_schur_positive(*args, **kwargs)#
Return whether
selfis 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
- omega()#
Return the
operator onself.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
- omega_t_inverse()#
Return the map
composed with onself.Unlike the map
omega(), the result ofomega_t_inverse()lives in the -bounded subspace and hence will return an element even for generic . For ,omega()andomega_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]
- scalar(x, zee=None)#
Return standard scalar product between
selfandx.INPUT:
x– element of the ring of symmetric functions over the same base ring asselfzee– an optional function on partitions giving the value for the scalar product between and (default is to use the standardzee()function)
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
- class ParentMethods#
Bases:
object- an_element()#
Return an element of
self.EXAMPLES:
sage: SymmetricFunctions(QQ['t']).kschur(3).an_element() 2*ks3[] + 2*ks3[1] + 3*ks3[2]
- antipode(element)#
Return the antipode on
selfby lifting to the space of symmetric functions, computing the antipode, and then converting toself.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:
element– an element in a basis of the ring of symmetric functions
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]
- coproduct(element)#
Return the coproduct operation on
element.The coproduct is first computed on the homogeneous basis if
and on the Hall-LittlewoodQpbasis otherwise. The result is computed then converted to the tensor squared ofself.parent().INPUT:
element– an element in a basis of the ring of symmetric functions
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[]
- counit(element)#
Return the counit of
element.The counit is the constant term of
element.INPUT:
element– an element in a basis of the ring of symmetric functions
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
- degree_on_basis(b)#
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
- one_basis()#
Return the basis element indexing
1.EXAMPLES:
sage: ks3 = SymmetricFunctions(QQ).kschur(3,1) sage: ks3.one() # indirect doctest ks3[]
- transition_matrix(other, n)#
Return the degree
ntransition matrix betweenselfandother.INPUT:
other– a basis in the ring of symmetric functionsn– a positive integer
The entry in the
row and column is the coefficient obtained by writing the element of the basis ofselfin terms of the basisother, 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]
- super_categories()#
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 coalgebras with basis over Univariate Polynomial Ring in t over Rational Field and Category of subobjects of filtered modules with basis over Univariate Polynomial Ring in t over Rational Field]
- class sage.combinat.sf.new_kschur.K_kSchur(kBoundedRing)#
Bases:
sage.combinat.free_module.CombinatorialFreeModuleThis 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.
- K_k_Schur_non_commutative_variables(la)#
Return the K-
-Schur function, as embedded inside the affine zero Hecke algebra.INPUT:
la– A -bounded Partition
OUTPUT:
An element of the affine zero Hecke algebra.
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
- homogeneous_basis_noncommutative_variables_zero_Hecke(la)#
Return 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:
la– A -bounded partition
OUTPUT:
An element of the affine zero Hecke algebra.
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
- lift(x)#
Return the lift of a
-bounded symmetric function.INPUT:
x– An expression in the K- -Schur basis. Equivalently,xcan be a -bounded partition (thenxcorresponds to the basis element indexed byx)
OUTPUT:
A symmetric function.
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)
- product(x, y)#
Return the product of the two K-
-Schur functions.INPUT:
x,y– elements of the -bounded subspace, in the K- -Schur basis.
OUTPUT:
An element of the
-bounded subspace, in the K- -Schur basis
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]
- retract(x)#
Return the retract of a symmetric function.
INPUT:
x– A symmetric function.
OUTPUT:
A
-bounded symmetric function in the K- -Schur basis.
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[]
- class sage.combinat.sf.new_kschur.kHomogeneous(kBoundedRing)#
Bases:
sage.combinat.free_module.CombinatorialFreeModuleSpace 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]
- class sage.combinat.sf.new_kschur.kSchur(kBoundedRing)#
Bases:
sage.combinat.free_module.CombinatorialFreeModuleSpace 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 parent(s) for ^: '2-bounded Symmetric Functions over Univariate Polynomial Ring in t over Rational Field in the 2-Schur basis' and 'Integer Ring'
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 atsage: 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 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]
- product_on_basis(left, right)#
Take the product of two
-Schur functions.If
, then take the product by lifting to the Schur functions and then retracting back into the -bounded subspace (if possible).If
, then the product calls_product_on_basis_via_rectangles().INPUT:
left,right– partitions
OUTPUT:
an element of the
-Schur functions
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]
- class sage.combinat.sf.new_kschur.kSplit(kBoundedRing)#
Bases:
sage.combinat.free_module.CombinatorialFreeModuleThe
-split basis of the space of -bounded-symmetric functionsFix
ka positive integer andtan element of the base ring.The
-split functions are a basis for the space of -bounded symmetric functions that also have the baseswhere
are the Hall-Littlewood symmetric functions (using the notation of [MAC]) and are the -Schur functions. If is not a root of unity, thenis also a basis of this space.
The
-split basis has the property that expands positively in the -split basis and the -split basis conjecturally expands positively in the -Schur functions. See [LLMSSZ] p. 81.The
-split basis is defined recursively using the Hall-Littlewood creation operator defined in [SZ2001]. If a partitionlais the concatenation (as lists) of a partitionmuandnuwheremuhas maximal hook length equal tokthenksp(la) = ksp(nu).hl_creation_operator(mu). If the hook length oflais less than or equal tok, thenksp(la)is equal to the Schur function indexed byla.EXAMPLES:
sage: Symt = SymmetricFunctions(QQ['t'].fraction_field()) sage: kBS3 = Symt.kBoundedSubspace(3) sage: ks3 = kBS3.kschur() sage: ksp3 = kBS3.ksplit() sage: ks3(ksp3[2,1,1]) ks3[2, 1, 1] + t*ks3[2, 2] sage: ksp3(ks3[2,1,1]) ksp3[2, 1, 1] - t*ksp3[2, 2] sage: ksp3[2,1]*ksp3[1] s[2, 1, 1] + s[2, 2] + s[3, 1] sage: ksp3[2,1].hl_creation_operator([1]) t*ksp3[2, 1, 1] + (-t^2+t)*ksp3[2, 2] sage: Qp = Symt.hall_littlewood().Qp() sage: ksp3(Qp[3,2,1]) ksp3[3, 2, 1] + t*ksp3[3, 3] sage: kBS4 = Symt.kBoundedSubspace(4) sage: ksp4 = kBS4.ksplit() sage: ksp4(ksp3([3,2,1])) ksp4[3, 2, 1] - t*ksp4[3, 3] + t*ksp4[4, 1, 1] sage: ks4 = kBS4.kschur() sage: ks4(ksp4[3,2,2,1]) ks4[3, 2, 2, 1] + t*ks4[3, 3, 1, 1] + t*ks4[3, 3, 2]