Dual Symmetric Functions in Non-Commuting Variables#

AUTHORS:

  • Travis Scrimshaw (08-04-2013): Initial version

class sage.combinat.ncsym.dual.SymmetricFunctionsNonCommutingVariablesDual(R)#

Bases: UniqueRepresentation, Parent

The Hopf dual to the symmetric functions in non-commuting variables.

See Section 2.3 of [BZ05] for a study.

a_realization()#

Return the realization of the \(\mathbf{w}\) basis of self.

EXAMPLES:

sage: SymmetricFunctionsNonCommutingVariables(QQ).dual().a_realization()
Dual symmetric functions in non-commuting variables over the Rational Field in the w basis
dual()#

Return the dual Hopf algebra of the dual symmetric functions in non-commuting variables.

EXAMPLES:

sage: NCSymD = SymmetricFunctionsNonCommutingVariables(QQ).dual()
sage: NCSymD.dual()
Symmetric functions in non-commuting variables over the Rational Field
class w(NCSymD)#

Bases: NCSymBasis_abstract

The dual Hopf algebra of symmetric functions in non-commuting variables in the \(\mathbf{w}\) basis.

EXAMPLES:

sage: NCSymD = SymmetricFunctionsNonCommutingVariables(QQ).dual()
sage: w = NCSymD.w()

We have the embedding \(\chi^*\) of \(Sym\) into \(NCSym^*\) available as a coercion:

sage: h = SymmetricFunctions(QQ).h()
sage: w(h[2,1])
w{{1}, {2, 3}} + w{{1, 2}, {3}} + w{{1, 3}, {2}}

Similarly we can pull back when we are in the image of \(\chi^*\):

sage: elt = 3*(w[[1],[2,3]] + w[[1,2],[3]] + w[[1,3],[2]])
sage: h(elt)
3*h[2, 1]
class Element#

Bases: IndexedFreeModuleElement

An element in the \(\mathbf{w}\) basis.

expand(n, letter='x')#

Expand self written in the \(\mathbf{w}\) basis in \(n^2\) commuting variables which satisfy the relation \(x_{ij} x_{ik} = 0\) for all \(i\), \(j\), and \(k\).

The expansion of an element of the \(\mathbf{w}\) basis is given by equations (26) and (55) in [HNT06].

INPUT:

  • n – an integer

  • letter – (default: 'x') a string

OUTPUT:

  • The symmetric function of self expressed in the n*n non-commuting variables described by letter.

REFERENCES:

[HNT06]

F. Hivert, J.-C. Novelli, J.-Y. Thibon. Commutative combinatorial Hopf algebras. (2006). arXiv 0605262v1.

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: w[[1,3],[2]].expand(4)
x02*x11*x20 + x03*x11*x30 + x03*x22*x30 + x13*x22*x31

One can use a different set of variable by using the optional argument letter:

sage: w[[1,3],[2]].expand(3, letter='y')
y02*y11*y20
is_symmetric()#

Determine if a \(NCSym^*\) function, expressed in the \(\mathbf{w}\) basis, is symmetric.

A function \(f\) in the \(\mathbf{w}\) basis is a symmetric function if it is in the image of \(\chi^*\). That is to say we have

\[f = \sum_{\lambda} c_{\lambda} \prod_i m_i(\lambda)! \sum_{\lambda(A) = \lambda} \mathbf{w}_A\]

where the second sum is over all set partitions \(A\) whose shape \(\lambda(A)\) is equal to \(\lambda\) and \(m_i(\mu)\) is the multiplicity of \(i\) in the partition \(\mu\).

OUTPUT:

  • True if \(\lambda(A)=\lambda(B)\) implies the coefficients of \(\mathbf{w}_A\) and \(\mathbf{w}_B\) are equal, False otherwise

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: elt = w.sum_of_partitions([2,1,1])
sage: elt.is_symmetric()
True
sage: elt -= 3*w.sum_of_partitions([1,1])
sage: elt.is_symmetric()
True
sage: w = SymmetricFunctionsNonCommutingVariables(ZZ).dual().w()
sage: elt = w.sum_of_partitions([2,1,1]) / 2
sage: elt.is_symmetric()
False
sage: elt = w[[1,3],[2]]
sage: elt.is_symmetric()
False
sage: elt = w[[1],[2,3]] + w[[1,2],[3]] + 2*w[[1,3],[2]]
sage: elt.is_symmetric()
False
to_symmetric_function()#

Take a function in the \(\mathbf{w}\) basis, and return its symmetric realization, when possible, expressed in the homogeneous basis of symmetric functions.

OUTPUT:

  • If self is a symmetric function, then the expansion in the homogeneous basis of the symmetric functions is returned. Otherwise an error is raised.

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: elt = w[[1],[2,3]] + w[[1,2],[3]] + w[[1,3],[2]]
sage: elt.to_symmetric_function()
h[2, 1]
sage: elt = w.sum_of_partitions([2,1,1]) / 2
sage: elt.to_symmetric_function()
1/2*h[2, 1, 1]
antipode_on_basis(A)#

Return the antipode applied to the basis element indexed by A.

INPUT:

  • A – a set partition

OUTPUT:

  • an element in the basis self

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: w.antipode_on_basis(SetPartition([[1],[2,3]]))
-3*w{{1}, {2}, {3}} + w{{1, 2}, {3}} + w{{1, 3}, {2}}
sage: F = w[[1,3],[5],[2,4]].coproduct()
sage: F.apply_multilinear_morphism(lambda x,y: x.antipode()*y)
0
coproduct_on_basis(A)#

Return the coproduct of a \(\mathbf{w}\) basis element.

The coproduct on the basis element \(\mathbf{w}_A\) is the sum over tensor product terms \(\mathbf{w}_B \otimes \mathbf{w}_C\) where \(B\) is the restriction of \(A\) to \(\{1,2,\ldots,k\}\) and \(C\) is the restriction of \(A\) to \(\{k+1, k+2, \ldots, n\}\).

INPUT:

  • A – a set partition

OUTPUT:

  • The coproduct applied to the \(\mathbf{w}\) dual symmetric function in non-commuting variables indexed by A expressed in the \(\mathbf{w}\) basis.

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: w[[1], [2,3]].coproduct()
w{} # w{{1}, {2, 3}} + w{{1}} # w{{1, 2}}
 + w{{1}, {2}} # w{{1}} + w{{1}, {2, 3}} # w{}
sage: w.coproduct_on_basis(SetPartition([]))
w{} # w{}
dual_basis()#

Return the dual basis to the \(\mathbf{w}\) basis.

The dual basis to the \(\mathbf{w}\) basis is the monomial basis of the symmetric functions in non-commuting variables.

OUTPUT:

  • the monomial basis of the symmetric functions in non-commuting variables

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: w.dual_basis()
Symmetric functions in non-commuting variables over the Rational Field in the monomial basis
duality_pairing(x, y)#

Compute the pairing between an element of self and an element of the dual.

INPUT:

  • x – an element of the dual of symmetric functions in non-commuting variables

  • y – an element of the symmetric functions in non-commuting variables

OUTPUT:

  • an element of the base ring of self

EXAMPLES:

sage: DNCSym = SymmetricFunctionsNonCommutingVariablesDual(QQ)
sage: w = DNCSym.w()
sage: m = w.dual_basis()
sage: matrix([[w(A).duality_pairing(m(B)) for A in SetPartitions(3)] for B in SetPartitions(3)])
[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
sage: (w[[1,2],[3]] + 3*w[[1,3],[2]]).duality_pairing(2*m[[1,3],[2]] + m[[1,2,3]] + 2*m[[1,2],[3]])
8
sage: h = SymmetricFunctionsNonCommutingVariables(QQ).h()
sage: matrix([[w(A).duality_pairing(h(B)) for A in SetPartitions(3)] for B in SetPartitions(3)])
[6 2 2 2 1]
[2 2 1 1 1]
[2 1 2 1 1]
[2 1 1 2 1]
[1 1 1 1 1]
sage: (2*w[[1,3],[2]] + w[[1,2,3]] + 2*w[[1,2],[3]]).duality_pairing(h[[1,2],[3]] + 3*h[[1,3],[2]])
32
product_on_basis(A, B)#

The product on \(\mathbf{w}\) basis elements.

The product on the \(\mathbf{w}\) is the dual to the coproduct on the \(\mathbf{m}\) basis. On the basis \(\mathbf{w}\) it is defined as

\[\mathbf{w}_A \mathbf{w}_B = \sum_{S \subseteq [n]} \mathbf{w}_{A\uparrow_S \cup B\uparrow_{S^c}}\]

where the sum is over all possible subsets \(S\) of \([n]\) such that \(|S| = |A|\) with a term indexed the union of \(A \uparrow_S\) and \(B \uparrow_{S^c}\). The notation \(A \uparrow_S\) represents the unique set partition of the set \(S\) such that the standardization is \(A\). This product is commutative.

INPUT:

  • A, B – set partitions

OUTPUT:

  • an element of the \(\mathbf{w}\) basis

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: A = SetPartition([[1], [2,3]])
sage: B = SetPartition([[1, 2, 3]])
sage: w.product_on_basis(A, B)
w{{1}, {2, 3}, {4, 5, 6}} + w{{1}, {2, 3, 4}, {5, 6}}
 + w{{1}, {2, 3, 5}, {4, 6}} + w{{1}, {2, 3, 6}, {4, 5}}
 + w{{1}, {2, 4}, {3, 5, 6}} + w{{1}, {2, 4, 5}, {3, 6}}
 + w{{1}, {2, 4, 6}, {3, 5}} + w{{1}, {2, 5}, {3, 4, 6}}
 + w{{1}, {2, 5, 6}, {3, 4}} + w{{1}, {2, 6}, {3, 4, 5}}
 + w{{1, 2, 3}, {4}, {5, 6}} + w{{1, 2, 4}, {3}, {5, 6}}
 + w{{1, 2, 5}, {3}, {4, 6}} + w{{1, 2, 6}, {3}, {4, 5}}
 + w{{1, 3, 4}, {2}, {5, 6}} + w{{1, 3, 5}, {2}, {4, 6}}
 + w{{1, 3, 6}, {2}, {4, 5}} + w{{1, 4, 5}, {2}, {3, 6}}
 + w{{1, 4, 6}, {2}, {3, 5}} + w{{1, 5, 6}, {2}, {3, 4}}
sage: B = SetPartition([[1], [2]])
sage: w.product_on_basis(A, B)
3*w{{1}, {2}, {3}, {4, 5}} + 2*w{{1}, {2}, {3, 4}, {5}}
 + 2*w{{1}, {2}, {3, 5}, {4}} + w{{1}, {2, 3}, {4}, {5}}
 + w{{1}, {2, 4}, {3}, {5}} + w{{1}, {2, 5}, {3}, {4}}
sage: w.product_on_basis(A, SetPartition([]))
w{{1}, {2, 3}}
sum_of_partitions(la)#

Return the sum over all sets partitions whose shape is la, scaled by \(\prod_i m_i!\) where \(m_i\) is the multiplicity of \(i\) in la.

INPUT:

  • la – an integer partition

OUTPUT:

  • an element of self

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: w.sum_of_partitions([2,1,1])
2*w{{1}, {2}, {3, 4}} + 2*w{{1}, {2, 3}, {4}} + 2*w{{1}, {2, 4}, {3}}
 + 2*w{{1, 2}, {3}, {4}} + 2*w{{1, 3}, {2}, {4}} + 2*w{{1, 4}, {2}, {3}}
to_symmetric_function()#

The preimage of \(\chi^*\) in the \(\mathbf{w}\) basis.

EXAMPLES:

sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
sage: w.to_symmetric_function
Generic morphism:
  From: Dual symmetric functions in non-commuting variables over the Rational Field in the w basis
  To:   Symmetric Functions over Rational Field in the homogeneous basis