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- Primaryxalphabet.coeff_genset- Coefficientyalphabet.index_comp- Composition of block sizes;sum(index_comp)is the ambientn.
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]).