### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Combinatorial Algebras »

# Schubert Polynomials

`sage.combinat.schubert_polynomial.``SchubertPolynomialRing`(R)

  Returns the Schubert polynomial ring over R on the X basis.

  EXAMPLES:

      sage: X = SchubertPolynomialRing(ZZ); X
      Schubert polynomial ring with X basis over Integer Ring
      sage: X(1)
      X[1]
      sage: X([1,2,3])*X([2,1,3])
      X[2, 1]
      sage: X([2,1,3])*X([2,1,3])
      X[3, 1, 2]
      sage: X([2,1,3])+X([3,1,2,4])
      X[2, 1] + X[3, 1, 2]
      sage: a = X([2,1,3])+X([3,1,2,4])
      sage: a^2
      X[3, 1, 2] + 2*X[4, 1, 2, 3] + X[5, 1, 2, 3, 4]

class `sage.combinat.schubert_polynomial.``SchubertPolynomialRing_xbasis`(R)

  Bases: `sage.combinat.combinatorial_algebra.CombinatorialAlgebra`

  EXAMPLES:

      sage: X = SchubertPolynomialRing(QQ)
      sage: X == loads(dumps(X))
      True

  `Element`

    alias of `SchubertPolynomial_class`

class `sage.combinat.schubert_polynomial.``SchubertPolynomial_class`(M, x)

  Bases: `sage.combinat.free_module.CombinatorialFreeModuleElement`

  Create a combinatorial module element. This should never be called directly, but only through the parent combinatorial free module’s `__call__()` method.

  TESTS:

      sage: F = CombinatorialFreeModule(QQ, ['a','b','c'])
      sage: B = F.basis()
      sage: f = B['a'] + 3*B['c']; f
      B['a'] + 3*B['c']
      sage: f == loads(dumps(f))
      True

  `divided_difference`(i)

    EXAMPLES:

        sage: X = SchubertPolynomialRing(ZZ)
        sage: a = X([3,2,1])
        sage: a.divided_difference(1)
        X[2, 3, 1]
        sage: a.divided_difference([3,2,1])
        X[1]

  `expand`()

    EXAMPLES:

        sage: X = SchubertPolynomialRing(ZZ)
        sage: X([2,1,3]).expand()
        x0
        sage: map(lambda x: x.expand(), [X(p) for p in Permutations(3)])
        [1, x0 + x1, x0, x0*x1, x0^2, x0^2*x1]

    TESTS: Calling .expand() should always return an element of an MPolynomialRing

        sage: X = SchubertPolynomialRing(ZZ)
        sage: f = X([1]); f
        X[1]
        sage: type(f.expand())
        <type 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular'>
        sage: f.expand()
        1
        sage: f = X([1,2])
        sage: type(f.expand())
        <type 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular'>
        sage: f = X([1,3,2,4])
        sage: type(f.expand())
        <type 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular'>

  `multiply_variable`(i)

    Returns the Schubert polynomial obtained by multiplying self by the variable \(x_i\).

    EXAMPLES:

        sage: X = SchubertPolynomialRing(ZZ)
        sage: a = X([3,2,4,1])
        sage: a.multiply_variable(0)
        X[4, 2, 3, 1]
        sage: a.multiply_variable(1)
        X[3, 4, 2, 1]
        sage: a.multiply_variable(2)
        X[3, 2, 5, 1, 4] - X[3, 4, 2, 1] - X[4, 2, 3, 1]
        sage: a.multiply_variable(3)
        X[3, 2, 4, 5, 1]

  `scalar_product`(x)

    Returns the standard scalar product of self and x.

    EXAMPLES:

        sage: X = SchubertPolynomialRing(ZZ)
        sage: a = X([3,2,4,1])
        sage: a.scalar_product(a)
        0
        sage: b = X([4,3,2,1])
        sage: b.scalar_product(a)
        X[1, 3, 4, 6, 2, 5]
        sage: Permutation([1, 3, 4, 6, 2, 5, 7]).to_lehmer_code()
        [0, 1, 1, 2, 0, 0, 0]
        sage: s = SymmetricFunctions(ZZ).schur()
        sage: c = s([2,1,1])
        sage: b.scalar_product(a).expand()
        x0^2*x1*x2 + x0*x1^2*x2 + x0*x1*x2^2 + x0^2*x1*x3 + x0*x1^2*x3 + x0^2*x2*x3 + 3*x0*x1*x2*x3 + x1^2*x2*x3 + x0*x2^2*x3 + x1*x2^2*x3 + x0*x1*x3^2 + x0*x2*x3^2 + x1*x2*x3^2
        sage: c.expand(4)
        x0^2*x1*x2 + x0*x1^2*x2 + x0*x1*x2^2 + x0^2*x1*x3 + x0*x1^2*x3 + x0^2*x2*x3 + 3*x0*x1*x2*x3 + x1^2*x2*x3 + x0*x2^2*x3 + x1*x2^2*x3 + x0*x1*x3^2 + x0*x2*x3^2 + x1*x2*x3^2

`sage.combinat.schubert_polynomial.``is_SchubertPolynomial`(x)

  Returns True if x is a Schubert polynomial and False otherwise.

  EXAMPLES:

      sage: from sage.combinat.schubert_polynomial import is_SchubertPolynomial
      sage: X = SchubertPolynomialRing(ZZ)
      sage: a = 1
      sage: is_SchubertPolynomial(a)
      False
      sage: b = X(1)
      sage: is_SchubertPolynomial(b)
      True
      sage: c = X([2,1,3])
      sage: is_SchubertPolynomial(c)
      True

### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Combinatorial Algebras »