Generic dual bases symmetric functions

class sage.combinat.sf.dual.SymmetricFunctionAlgebraElement_dual(A, dictionary=None, dual=None)
__init__(A, dictionary=None, dual=None)

Create an element of a dual basis.

INPUT: At least one of the following must be specified. The one (if any) which is not provided will be computed.

  • dictionary - an internal dictionary for the monomials and coefficients of self
  • dual - self as an element of the dual basis.

TESTS:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee, prefix='h')
sage: a = h([2])
sage: ec = h._element_class
sage: ec(h, dual=m([2]))
-h[1, 1] + 2*h[2]
sage: h(m([2]))
-h[1, 1] + 2*h[2]
sage: h([2])
h[2]
sage: h([2])._dual
m[1, 1] + m[2]
sage: m(h([2]))
m[1, 1] + m[2]
__invert__()

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)            
sage: a = h(2); a
2*d_m[]
sage: ~a
1/2*d_m[]
_add_(y)

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)
sage: a = h([2,1])+h([3]); a # indirect doctest
d_m[2, 1] + d_m[3]
sage: a.dual()
4*m[1, 1, 1] + 3*m[2, 1] + 2*m[3]
_div_(y)

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)
sage: a = h([2,1])+h([3])
sage: a/2 # indirect doctest
1/2*d_m[2, 1] + 1/2*d_m[3]
_neg_()

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)
sage: a = h([2,1])+h([3])
sage: -h([2,1]) # indirect doctest
-d_m[2, 1]
_sub_(y)

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)
sage: a = h([2,1])+h([3])
sage: h([2,1])-h([3]) # indirect doctest
d_m[2, 1] - d_m[3]
dual()

Returns self in the dual basis.

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee)
sage: a = h([2,1])
sage: a.dual()
3*m[1, 1, 1] + 2*m[2, 1] + m[3]
expand(n, alphabet='x')

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)
sage: a = h([2,1])+h([3])
sage: a.expand(2)
2*x0^3 + 3*x0^2*x1 + 3*x0*x1^2 + 2*x1^3
sage: a.dual().expand(2)
2*x0^3 + 3*x0^2*x1 + 3*x0*x1^2 + 2*x1^3
sage: a.expand(2,alphabet='y')
2*y0^3 + 3*y0^2*y1 + 3*y0*y1^2 + 2*y1^3
sage: a.expand(2,alphabet='x,y')
2*x^3 + 3*x^2*y + 3*x*y^2 + 2*y^3
omega()

Returns the image of self under the Frobenius / omega automorphism.

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(zee)
sage: hh = SFAHomogeneous(QQ)
sage: hh([2,1]).omega()
h[1, 1, 1] - h[2, 1]
sage: h([2,1]).omega()
d_m[1, 1, 1] - d_m[2, 1]
scalar(x)

Returns the standard scalar product of self and x.

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee)
sage: a = h([2,1])
sage: a.scalar(a)
2
scalar_hl(x)

Returns the Hall-Littlewood scalar product of self and x.

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee)
sage: a = h([2,1])
sage: a.scalar_hl(a)
(t + 2)/(-t^4 + 2*t^3 - 2*t + 1)
class sage.combinat.sf.dual.SymmetricFunctionAlgebra_dual(dual_basis, scalar, scalar_name='', prefix=None)
__call__(x)

Coerce things into self. We do this by coercing things into self’s dual basis, and then converting that to self.

EXAMPLES:

sage: s = SFASchur(QQ['t'].fraction_field())
sage: t = QQ['t'].fraction_field().gen()
sage: zee_hl = lambda x: x.centralizer_size(t=t)
sage: S = s.dual_basis(zee_hl)
sage: S(s([2,1]))
(-t/(t^5-2*t^4+t^3-t^2+2*t-1))*d_s[1, 1, 1] + ((-t^2-1)/(t^5-2*t^4+t^3-t^2+2*t-1))*d_s[2, 1] + (-t/(t^5-2*t^4+t^3-t^2+2*t-1))*d_s[3]
__init__(dual_basis, scalar, scalar_name='', prefix=None)

TESTS:

sage: e = SFAElementary(QQ)
sage: f = e.dual_basis()
sage: f == loads(dumps(f))
True
__repr__()

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee); h #indirect doctests
Dual basis to Symmetric Function Algebra over Rational Field, Monomial symmetric functions as basis
sage: h = m.dual_basis(scalar=zee, scalar_name='Hall scalar product'); h #indirect doctest
Dual basis to Symmetric Function Algebra over Rational Field, Monomial symmetric functions as basis with respect to the Hall scalar product
_multiply(left, right)

Multiplication is done by performing the multiplication in self’s dual basis and then converting back to self.

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee)
sage: a = h([2])
sage: b = a*a; b # indirect doctest
d_m[2, 2]
sage: b.dual()
6*m[1, 1, 1, 1] + 4*m[2, 1, 1] + 3*m[2, 2] + 2*m[3, 1] + m[4]
_precompute(n)

Computes the transition matrix between self and its dual basis for the homogenous component of size n.

EXAMPLES:

sage: e = SFAElementary(QQ)
sage: f = e.dual_basis()
sage: f._precompute(2)
sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())]
sage: l(f._to_self_cache)
[([1, 1], [([1, 1], 2), ([2], 1)]), ([2], [([1, 1], 1), ([2], 1)])]
sage: l(f._from_self_cache)
[([1, 1], [([1, 1], 1), ([2], -1)]), ([2], [([1, 1], -1), ([2], 2)])]
sage: f._transition_matrices[2]
[1 1]
[1 2]
sage: f._inverse_transition_matrices[2]
[ 2 -1]
[-1  1]
dual_basis(scalar=None, scalar_name='', prefix=None)

Return the dual basis to self. If a the scalar option is not passed, then it returns the dual basis with respect to the scalar product used to define self.

EXAMPLES:

sage: m = SFAMonomial(QQ)
sage: zee = sage.combinat.sf.sfa.zee
sage: h = m.dual_basis(scalar=zee)
sage: h.dual_basis()
Symmetric Function Algebra over Rational Field, Monomial symmetric functions as basis
sage: m2 = h.dual_basis(zee, prefix='m2')
sage: m([2])^2
2*m[2, 2] + m[4]
sage: m2([2])^2
2*m2[2, 2] + m2[4]
transition_matrix(basis, n)

Returns the transition matrix between the n^{th} homogeneous component of self and basis.

EXAMPLES:

sage: s = SFASchur(QQ)
sage: e = SFAElementary(QQ)
sage: f = e.dual_basis()
sage: f.transition_matrix(s, 5)
[ 1 -1  0  1  0 -1  1]
[-2  1  1 -1 -1  1  0]
[-2  2 -1 -1  1  0  0]
[ 3 -1 -1  1  0  0  0]
[ 3 -2  1  0  0  0  0]
[-4  1  0  0  0  0  0]
[ 1  0  0  0  0  0  0]
sage: e.transition_matrix(s, 5).inverse().transpose()
[ 1 -1  0  1  0 -1  1]
[-2  1  1 -1 -1  1  0]
[-2  2 -1 -1  1  0  0]
[ 3 -1 -1  1  0  0  0]
[ 3 -2  1  0  0  0  0]
[-4  1  0  0  0  0  0]
[ 1  0  0  0  0  0  0]

Previous topic

Power-sum symmetric functions

Next topic

Symmetric functions defined by orthogonality and triangularity.

This Page