Symmetric functions defined by orthogonality and triangularity¶
One characterization of Schur functions is that they are upper triangularly related to the monomial symmetric functions and orthogonal with respect to the Hall scalar product. We can use the class SymmetricFunctionAlgebra_orthotriang to obtain the Schur functions from this definition.
sage: from sage.combinat.sf.sfa import zee
sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
sage: Sym = SymmetricFunctions(QQ)
sage: m = Sym.m()
sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
sage: s([2,1])^2
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]
>>> from sage.all import *
>>> from sage.combinat.sf.sfa import zee
>>> from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
>>> Sym = SymmetricFunctions(QQ)
>>> m = Sym.m()
>>> s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
>>> s([Integer(2),Integer(1)])**Integer(2)
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]
sage: s2 = SymmetricFunctions(QQ).s()
sage: s2([2,1])^2
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]
>>> from sage.all import *
>>> s2 = SymmetricFunctions(QQ).s()
>>> s2([Integer(2),Integer(1)])**Integer(2)
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.orthotriang.OrthotriangBasisFunctor(basis)[source]¶
Bases:
SymmetricFunctionsFunctor
A constructor for algebras of symmetric functions constructed by orthogonality and triangularity.
EXAMPLES:
sage: from sage.combinat.sf.sfa import zee sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang sage: Sym = SymmetricFunctions(QQ) sage: m = Sym.m() sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur') sage: s.construction() (SymmetricFunctionsFunctor[Schur], Rational Field)
>>> from sage.all import * >>> from sage.combinat.sf.sfa import zee >>> from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang >>> Sym = SymmetricFunctions(QQ) >>> m = Sym.m() >>> s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur') >>> s.construction() (SymmetricFunctionsFunctor[Schur], Rational Field)
- class sage.combinat.sf.orthotriang.SymmetricFunctionAlgebra_orthotriang(Sym, base, scalar, prefix, basis_name, leading_coeff)[source]¶
Bases:
SymmetricFunctionAlgebra_generic
Initialization of the symmetric function algebra defined via orthotriangular rules.
INPUT:
self
– a basis determined by an orthotriangular definitionSym
– ring of symmetric functionsbase
– an instance of a basis of the ring of symmetric functions (e.g. the Schur functions)scalar
– a functionzee
on partitions. The functionzee
determines the scalar product on the power sum basis with normalization \(\langle p_{\mu}, p_{\mu} \rangle = \mathrm{zee}(\mu)\).prefix
– the prefix used to display the basisbasis_name
– the name used for the basis
Note
The base ring is required to be a \(\QQ\)-algebra for this method to be usable, since the scalar product is defined by its values on the power sum basis.
EXAMPLES:
sage: from sage.combinat.sf.sfa import zee sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang sage: Sym = SymmetricFunctions(QQ) sage: m = Sym.m() sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur'); s Symmetric Functions over Rational Field in the Schur basis
>>> from sage.all import * >>> from sage.combinat.sf.sfa import zee >>> from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang >>> Sym = SymmetricFunctions(QQ) >>> m = Sym.m() >>> s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur'); s Symmetric Functions over Rational Field in the Schur basis
- construction()[source]¶
Return a pair
(F, R)
, whereF
is aSymmetricFunctionsFunctor
and \(R\) is a ring, such thatF(R)
returnsself
.EXAMPLES:
sage: from sage.combinat.sf.sfa import zee sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang sage: Sym = SymmetricFunctions(QQ) sage: m = Sym.m() sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur') sage: s.construction() (SymmetricFunctionsFunctor[Schur], Rational Field)
>>> from sage.all import * >>> from sage.combinat.sf.sfa import zee >>> from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang >>> Sym = SymmetricFunctions(QQ) >>> m = Sym.m() >>> s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur') >>> s.construction() (SymmetricFunctionsFunctor[Schur], Rational Field)
- product(left, right)[source]¶
Return
left
*right
by converting both to the base and then converting back toself
.INPUT:
self
– a basis determined by an orthotriangular definitionleft
,right
– elements inself
OUTPUT: the expansion of the product of
left
andright
in the basisself
EXAMPLES:
sage: from sage.combinat.sf.sfa import zee sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang sage: Sym = SymmetricFunctions(QQ) sage: m = Sym.m() sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions') sage: s([1])*s([2,1]) #indirect doctest s[2, 1, 1] + s[2, 2] + s[3, 1]
>>> from sage.all import * >>> from sage.combinat.sf.sfa import zee >>> from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang >>> Sym = SymmetricFunctions(QQ) >>> m = Sym.m() >>> s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions') >>> s([Integer(1)])*s([Integer(2),Integer(1)]) #indirect doctest s[2, 1, 1] + s[2, 2] + s[3, 1]