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