schubmult.rings.schubert.separated_descents¶
Separated-descents ring: Schubert polynomials graded by an explicit number of variables.
SeparatedDescentsRing wraps a Schubert-family ring and indexes basis elements by
(perm, num_vars) with num_vars >= max_descent(perm). The product of
(u, p) and (v, q) places u in the first p variables and v in the
next q, so descents of the two factors are separated. _sep_desc_mul computes
this (Samuel) as a twisted ordinary Schubert product by a dominant permutation. Also
carries experimental Pieri/coproduct routines (pieri_formula, coproduct_test).
Not to be confused with schubmult.mult.separated_descents, which implements the
Fan-Guo-Xiong pipe-puzzle rule for double Grothendieck polynomials.
complete_sym_positional_perms_down¶
def complete_sym_positional_perms_down(orig_perm, p, *k, hack_off=None)
Descent-side analogue of complete_sym_positional_perms: all (perm, degree, sign) reachable
from orig_perm by up to p Bruhat descents swapping a fixed position in k (1-indexed)
with a still-untouched position. hack_off bounds the positions considered.
SeparatedDescentsRing Objects¶
class SeparatedDescentsRing(BaseSchubertRing)
Ring with basis (perm, num_vars); construct with SeparatedDescentsRing(Sx.ring) and call
as ring(perm, num_vars). See the module docstring.
schub_ring¶
@property
def schub_ring()
The underlying Schubert-family ring used for products.
pieri_formula¶
def pieri_formula(p, elem)
Multiply elem by the single-row element (uncode([p]), 1) (adds one variable), via
complete_sym_positional_perms_down.
__init__¶
def __init__(ring)
Wrap the Schubert-family ring (inherits its alphabets).
coproduct_test¶
def coproduct_test(key)
Experimental coproduct of the basis element key = (perm, num_vars), computed by
triangular peeling of the leading code entry via pieri_formula/_single_coprod_test.
mul¶
def mul(elem1, elem2)
Ring product: scalars scale; otherwise each pair of basis elements multiplies via _sep_desc_mul
and lands in degree deg1 + deg2 (terms whose descents exceed that are dropped).
printing_term¶
def printing_term(k)
The SepDescSchubPoly display symbol for k = (perm, num_vars).
new¶
def new(perm, deg=0)
Build (perm, deg) with deg raised to at least perm's last descent; a non-permutation
perm is expanded in the underlying ring and each term given its minimal degree.
SeparatedDescentsRingElement Objects¶
class SeparatedDescentsRingElement(BaseSchubertElement)
An element of a SeparatedDescentsRing: {(perm, num_vars): coeff}.
coproduct_test¶
def coproduct_test()
Experimental coproduct; see SeparatedDescentsRing.coproduct_test.
as_ordered_terms¶
def as_ordered_terms(*_, **__)
Terms sorted by permutation length, permutation, then num_vars (sympy printing hook).