schubmult.sage_integration

 1from sage.all import *
 2
 3from ._fast_schubert_polynomial_ring import (
 4    FastSchubertPolynomialRing,
 5    FastSchubertPolynomial,
 6    FastSchubertPolynomialRing_base,
 7    FastQuantumSchubertPolynomialRing,
 8)
 9from ._fast_double_schubert_polynomial_ring import (
10    FastDoubleSchubertPolynomialRing,
11    FastDoubleSchubertPolynomial,
12    FastDoubleSchubertPolynomialRing_base,
13    FastQuantumDoubleSchubertPolynomialRing,    
14)
15
16__all__ = [
17    "FastSchubertPolynomialRing",
18    "FastSchubertPolynomial",
19    "FastSchubertPolynomialRing_base",
20    "FastDoubleSchubertPolynomialRing",
21    "FastDoubleSchubertPolynomial",
22    "FastDoubleSchubertPolynomialRing_base",
23    "FastQuantumSchubertPolynomialRing",
24    "FastQuantumDoubleSchubertPolynomialRing",    
25]
def FastSchubertPolynomialRing( R, num_vars, varname, *, code_index=False, q_varname='q', quantum=False, indices=(1,)):
29def FastSchubertPolynomialRing(
30    R,
31    num_vars,
32    varname,
33    *,
34    code_index=False,
35    q_varname="q",
36    quantum=False,
37    indices=tuple([1]),
38):
39    if quantum:
40        QR = PolynomialRing(R, num_vars, q_varname)
41    else:
42        QR = R
43    return FastSchubertPolynomialRing_xbasis(
44        R, num_vars, varname, q_varname, code_index, indices, quantum, QR
45    )
FastSchubertPolynomial = <class 'schubmult.sage_integration._fast_schubert_polynomial_ring.FastSchubertPolynomial_class'>
FastSchubertPolynomialRing_base = <class 'schubmult.sage_integration._fast_schubert_polynomial_ring.FastSchubertPolynomialRing_xbasis'>
def FastDoubleSchubertPolynomialRing( R, num_vars, base_variable_name, coeff_variable_names, *, indices=(1,), code_index=False, q_varname='q', quantum=False):
32def FastDoubleSchubertPolynomialRing(
33    R,
34    num_vars,
35    base_variable_name,
36    coeff_variable_names,
37    *,
38    indices=tuple([1]),
39    code_index=False,
40    q_varname="q",
41    quantum=False,
42):
43    """Wrapper function to return a double Schubert polynomial Ring
44
45    Calls the _xbasis class to return a double or quantum double Schubert
46    polynomial ring with the indicated base ring, number of variables,
47    variable names (base variable, and then one or more sets of coefficient)
48    variables, coproduct indices, code_index representation option, q-ring
49    variable name, and whether the ring is quantum.
50
51    Example call:
52
53```python
54X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
55X([2, 4, 3, 1])
56```
57
58    Args:
59        R (sage ring): The base ring
60        num_vars (int): Cardinality of the sets of variables
61        base_variable_name (str): Base variable name
62        coeff_variable_names (str | tuple[str]): Coefficient variable name(s)
63        indices (tuple[int], optional): Indicies of the variables to split on for the coproduct.
64        code_index (bool, optional): Whether to display the indices as the Lehmer code. Defaults to False.
65        q_varname (str, optional): Variable name of the q-ring. Defaults to "q".
66        quantum (bool, optional): Whether or not the ring is quantum. Default the FAlse.
67
68    Returns:
69        FastDoubleSchubertPolynomialRing_xbasis: Basis element generator of the ring
70    """
71    QR = None
72    if quantum:
73        QR = PolynomialRing(R, num_vars, q_varname)
74    return FastDoubleSchubertPolynomialRing_xbasis(
75        R,
76        num_vars,
77        base_variable_name,
78        coeff_variable_names,
79        q_varname,
80        code_index,
81        indices,
82        quantum,
83        QR,
84    )

Wrapper function to return a double Schubert polynomial Ring

Calls the _xbasis class to return a double or quantum double Schubert
polynomial ring with the indicated base ring, number of variables,
variable names (base variable, and then one or more sets of coefficient)
variables, coproduct indices, code_index representation option, q-ring
variable name, and whether the ring is quantum.

Example call:
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
X([2, 4, 3, 1])
Args:
    R (sage ring): The base ring
    num_vars (int): Cardinality of the sets of variables
    base_variable_name (str): Base variable name
    coeff_variable_names (str | tuple[str]): Coefficient variable name(s)
    indices (tuple[int], optional): Indicies of the variables to split on for the coproduct.
    code_index (bool, optional): Whether to display the indices as the Lehmer code. Defaults to False.
    q_varname (str, optional): Variable name of the q-ring. Defaults to "q".
    quantum (bool, optional): Whether or not the ring is quantum. Default the FAlse.

Returns:
    FastDoubleSchubertPolynomialRing_xbasis: Basis element generator of the ring
FastDoubleSchubertPolynomial = <class 'schubmult.sage_integration._fast_double_schubert_polynomial_ring.FastDoubleSchubertPolynomial_class'>
FastDoubleSchubertPolynomialRing_base = <class 'schubmult.sage_integration._fast_double_schubert_polynomial_ring.FastDoubleSchubertPolynomialRing_xbasis'>
def FastQuantumSchubertPolynomialRing(R, num_vars, varname, *, code_index=False, q_varname='q'):
48def FastQuantumSchubertPolynomialRing(
49    R, num_vars, varname, *, code_index=False, q_varname="q"
50):
51    return FastSchubertPolynomialRing(
52        R, num_vars, varname, q_varname=q_varname, code_index=code_index, quantum=True
53    )
def FastQuantumDoubleSchubertPolynomialRing( R, num_vars, base_variable_name, coeff_variable_names, *, code_index=False, q_varname='q'):
 87def FastQuantumDoubleSchubertPolynomialRing(
 88    R,
 89    num_vars,
 90    base_variable_name,
 91    coeff_variable_names,
 92    *,
 93    code_index=False,
 94    q_varname="q",
 95):
 96    """Quantum double Schubert ring generator
 97
 98    Wraps FastDoubleSchubertPolynomialRing(), omitting indices and setting
 99    quantum to True.
100    
101    Args:
102        R (sage ring): The base ring
103        num_vars (int): Cardinality of the sets of variables
104        base_variable_name (str): Base variable name
105        coeff_variable_names (str | tuple[str]): Coefficient variable name(s)
106        code_index (bool, optional): Whether to display the indices as the Lehmer code. Defaults to False.
107        q_varname (str, optional): Variable name of the q-ring. Defaults to "q".
108
109    Returns:
110        FastDoubleSchubertPolynomialRing_xbasis: Basis element generator of the quantum ring
111    """
112    return FastDoubleSchubertPolynomialRing(
113        R,
114        num_vars,
115        base_variable_name,
116        coeff_variable_names,
117        code_index=code_index,
118        indices=tuple([1]),
119        quantum=True,
120        q_varname=q_varname,
121    )

Quantum double Schubert ring generator

Wraps FastDoubleSchubertPolynomialRing(), omitting indices and setting quantum to True.

Arguments:
  • R (sage ring): The base ring
  • num_vars (int): Cardinality of the sets of variables
  • base_variable_name (str): Base variable name
  • coeff_variable_names (str | tuple[str]): Coefficient variable name(s)
  • code_index (bool, optional): Whether to display the indices as the Lehmer code. Defaults to False.
  • q_varname (str, optional): Variable name of the q-ring. Defaults to "q".
Returns:

FastDoubleSchubertPolynomialRing_xbasis: Basis element generator of the quantum ring