### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Symmetric Functions in Non-Commuting Variables »

# Dual Symmetric Functions in Non-Commuting Variables

AUTHORS:

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

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

  Bases: `sage.structure.unique_representation.UniqueRepresentation`, `sage.structure.parent.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: `sage.combinat.ncsym.bases.NCSymBasis_abstract`

    The 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`(M, x)

      Bases: `sage.combinat.free_module.CombinatorialFreeModuleElement`

      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]

        TESTS:

            sage: w = SymmetricFunctionsNonCommutingVariables(QQ).dual().w()
            sage: w(0).to_symmetric_function()
            0
            sage: w([]).to_symmetric_function()
            h[]
            sage: (2*w([])).to_symmetric_function()
            2*h[]

    `SymmetricFunctionsNonCommutingVariablesDual.w.``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

    `SymmetricFunctionsNonCommutingVariablesDual.w.``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{}

    `SymmetricFunctionsNonCommutingVariablesDual.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

    `SymmetricFunctionsNonCommutingVariablesDual.w.``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

    `SymmetricFunctionsNonCommutingVariablesDual.w.``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}}

    `SymmetricFunctionsNonCommutingVariablesDual.w.``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}}

    `SymmetricFunctionsNonCommutingVariablesDual.w.``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

### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Symmetric Functions in Non-Commuting Variables »