Skip to content

schubmult.rings.schubert.parabolic_quantum_double_schubert_ring

Parabolic quantum double Schubert polynomial ring: the QPDSx interface.

ParabolicQuantumDoubleSchubertRing models the quantum cohomology of a partial flag variety with block sizes index_comp. Basis permutations must be parabolic (increasing within each block). Products are computed in the full flag quantum ring and projected down via the Peterson-Woodward comparison (schubmult.mult.quantum_double.apply_peterson_woodward, through process_coeff_dict). The parabolic quantum elementary symmetric functions acquire a q-correction at each block boundary.

ParabolicQuantumDoubleSchubertElement Objects

class ParabolicQuantumDoubleSchubertElement(BaseSchubertElement)

An element of a ParabolicQuantumDoubleSchubertRing.

index_comp

@property
def index_comp()

The ring's block-size composition.

kill_ideal

def kill_ideal()

Drop basis permutations longer than sum(index_comp) (those lie in the ideal cut out by the parabolic).

ParabolicQuantumDoubleSchubertRing Objects

class ParabolicQuantumDoubleSchubertRing(BaseSchubertRing)

Quantum double Schubert polynomials for the partial flag variety with block sizes index_comp. Construct via QPDSx(*index_comp)([perm]) or make_parabolic_quantum_basis.

__init__

def __init__(genset, coeff_genset, index_comp)

Arguments:

  • genset - Primary x alphabet.
  • coeff_genset - Coefficient y alphabet.
  • index_comp - Composition of block sizes; sum(index_comp) is the ambient n.

symbol_elem_func

@property
def symbol_elem_func()

Symbolic elementary symmetric function e_p_k combined with complete symmetric corrections in -y.

elem_sym_subs

def elem_sym_subs(kk)

Substitution dict {e_p_k: elem_sym(p, k, x, 0)} for all 1 <= p <= k <= kk.

parabolic_index

@property
def parabolic_index()

1-indexed positions of the simple reflections inside the parabolic subgroup (within-block positions).

quantum_basis

@property
def quantum_basis()

The full-flag QuantumDoubleSchubertRing over the same alphabets.

classical_basis

@property
def classical_basis()

The classical DoubleSchubertRing over the same alphabets.

elem_sym

def elem_sym(p, k, varl1, varl2)

Parabolic quantum double elementary symmetric polynomial E_p(x_1..x_k; y): classical below the first block boundary, with a q_j-correction at each block boundary N_j.

index_comp

@property
def index_comp()

The block-size composition.

process_coeff_dict

def process_coeff_dict(coeff_dict)

Project a full-flag quantum coefficient dict onto this parabolic ring via Peterson-Woodward, extending the parabolic index if any permutation exceeds the ambient n.

cached_product

@cache
def cached_product(u, v, basis2)

Full-flag quantum double product (generic alphabets, substituted) then projected via process_coeff_dict.

in_quantum_basis

def in_quantum_basis(elem)

Expand into the full-flag quantum double Schubert basis via quantum_elem_func.

in_classical_basis

def in_classical_basis(elem)

Expand into the classical double Schubert basis via quantum_as_classical_schubpoly.

classical_in_basis

@cache
def classical_in_basis(k)

Express the classical S_k in this parabolic quantum basis, by iteratively subtracting off lower-order corrections until the polynomials agree.

classical_elem_func

@property
def classical_elem_func()

Parabolic quantum elementary symmetric function valued in the classical DoubleSchubertRing.

quantum_elem_func

@property
def quantum_elem_func()

Parabolic quantum elementary symmetric function valued in the full-flag QuantumDoubleSchubertRing.

printing_term

def printing_term(k)

The PQDSchubPoly display symbol for basis element k.

quantum_as_classical_schubpoly

@cache
def quantum_as_classical_schubpoly(perm)

S^{q,P}_perm expanded in the classical double Schubert basis, against the appropriate longest element.

cached_schubpoly

@cache
def cached_schubpoly(k)

The explicit parabolic quantum double Schubert polynomial for k.

cached_positive_product

@cache
def cached_positive_product(u, v, basis2)

Positive variant of cached_product via schubmult_q_generic_partial_posify.

double_mul

@property
def double_mul()

schubmult_q_double_fast followed by process_coeff_dict.

single_mul

@property
def single_mul()

schubmult_q_fast followed by process_coeff_dict.

mult_poly_single

@property
def mult_poly_single()

schubmult.mult.quantum.mult_poly_q.

mult_poly_double

@property
def mult_poly_double()

schubmult.mult.quantum_double.mult_poly_q_double.

from_expr

def from_expr(expr)

Convert a polynomial to this basis by peeling off leading monomials; raises ValueError if expr lacks the within-block symmetry the parabolic ring requires.

mul_expr

def mul_expr(elem, x)

Multiply by an expression by first converting it into this basis.

__call__

def __call__(x)

Build an element from a parabolic permutation/Lehmer list or an expression; raises ValueError if the permutation is not parabolic for this ring's blocks.

make_parabolic_quantum_basis

def make_parabolic_quantum_basis(index_comp, coeff_genset)

The ParabolicQuantumDoubleSchubertRing in x for block sizes index_comp and coefficient alphabet coeff_genset.

QPDSx_index

def QPDSx_index(*args)

Return a constructor f(x, coeff_genset="y") building parabolic quantum double elements for block sizes args.

QPDSx

@cache
def QPDSx(*args)

Cached constructor for block sizes args; e.g. QPDSx(2, 1)([2, 1, 3]).