schubmult 5.3.0__tar.gz → 5.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {schubmult-5.3.0 → schubmult-5.4.0}/CHANGELOG.md +74 -0
- schubmult-5.4.0/CITATION.cff +30 -0
- {schubmult-5.3.0/src/schubmult.egg-info → schubmult-5.4.0}/PKG-INFO +147 -4
- {schubmult-5.3.0 → schubmult-5.4.0}/README.md +145 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/API.md +2871 -2859
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/index.md +14 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/README.md +7 -6
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/grothmult_double.md +2 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/grothmult_q_double.md +5 -1
- {schubmult-5.3.0/docs/modules/schubmult/combinatorics → schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental}/chute_move_element.md +10 -10
- {schubmult-5.3.0/docs/modules/schubmult/combinatorics → schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental}/hecke_plactic.md +9 -9
- {schubmult-5.3.0/docs/modules/schubmult/combinatorics → schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental}/hpd.md +77 -67
- schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental/index.md +8 -0
- {schubmult-5.3.0/docs/modules/schubmult/combinatorics → schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental}/inversions_tableau.md +22 -22
- {schubmult-5.3.0/docs/modules/schubmult/combinatorics → schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental}/quasi_crystal_graph.md +18 -18
- {schubmult-5.3.0/docs/modules/schubmult/combinatorics → schubmult-5.4.0/docs/modules/schubmult/combinatorics/experimental}/root_tableau.md +41 -41
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/index.md +4 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/rc_graph.md +6 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/chute_move_ring.md +2 -2
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/quantum_double_schubert_ring.md +13 -7
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/quantum_schubert_ring.md +5 -1
- schubmult-5.4.0/examples/duan_khlaif_zou_qk.py +303 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/pyproject.toml +1 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/__init__.py +8 -6
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/grothmult_double.py +24 -11
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/grothmult_py.py +1 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/grothmult_q.py +7 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/grothmult_q_double.py +19 -12
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_version.py +3 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/__init__.py +4 -1
- schubmult-5.4.0/src/schubmult/combinatorics/experimental/__init__.py +32 -0
- {schubmult-5.3.0/src/schubmult/combinatorics → schubmult-5.4.0/src/schubmult/combinatorics/experimental}/chute_move_element.py +1 -1
- {schubmult-5.3.0/src/schubmult/combinatorics → schubmult-5.4.0/src/schubmult/combinatorics/experimental}/hecke_plactic.py +3 -4
- {schubmult-5.3.0/src/schubmult/combinatorics → schubmult-5.4.0/src/schubmult/combinatorics/experimental}/hpd.py +3 -3
- {schubmult-5.3.0/src/schubmult/combinatorics → schubmult-5.4.0/src/schubmult/combinatorics/experimental}/inversions_tableau.py +4 -4
- {schubmult-5.3.0/src/schubmult/combinatorics → schubmult-5.4.0/src/schubmult/combinatorics/experimental}/quasi_crystal_graph.py +2 -2
- {schubmult-5.3.0/src/schubmult/combinatorics → schubmult-5.4.0/src/schubmult/combinatorics/experimental}/root_tableau.py +6 -6
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/rc_graph.py +6 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/positivity.py +3 -4
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/quantum_double.py +3 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/alt_rc_graph_ring.py +2 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/chute_move_ring.py +3 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/elementary_basis.py +1 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/schur_elementary_basis.py +1 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/elem_sym_poly_basis.py +4 -4
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/fundamental_slide_poly_basis.py +1 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/monomial_slide_poly_basis.py +1 -1
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/schubert_poly_basis.py +2 -2
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/printing.py +14 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/__init__.py +7 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/double_schubert_ring.py +5 -5
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/parabolic_quantum_double_schubert_ring.py +1 -1
- schubmult-5.4.0/src/schubmult/rings/schubert/quantum_double_grothendieck_ring.py +173 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/quantum_double_schubert_ring.py +44 -26
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/quantum_schubert_ring.py +11 -12
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/poly/schub_poly.py +3 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/poly/variables.py +189 -39
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/symmetric_polynomials/complete_sym.py +3 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/symmetric_polynomials/elem_sym.py +3 -3
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/symmetric_polynomials/qelem_sym.py +16 -6
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/argparse.py +36 -0
- {schubmult-5.3.0 → schubmult-5.4.0/src/schubmult.egg-info}/PKG-INFO +147 -4
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult.egg-info/SOURCES.txt +24 -12
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult.egg-info/scm_file_list.json +26 -12
- schubmult-5.4.0/src/schubmult.egg-info/scm_version.json +8 -0
- schubmult-5.4.0/tests/combinatorics/test_experimental_namespace.py +83 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_inversions_tableau.py +1 -1
- schubmult-5.4.0/tests/rings/test_quantum_double_grothendieck_ring.py +219 -0
- schubmult-5.4.0/tests/rings/test_quantum_schubert_ring.py +119 -0
- schubmult-5.4.0/tests/scripts/test_grothmult_beta.py +124 -0
- schubmult-5.4.0/tests/scripts/test_multiplicative_variables.py +113 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/test_api_surface.py +5 -4
- schubmult-5.4.0/tests/test_duan_khlaif_zou_examples.py +198 -0
- schubmult-5.4.0/tests/utils/test_variables.py +172 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/web/test_download_limits.py +76 -0
- schubmult-5.3.0/src/schubmult.egg-info/scm_version.json +0 -8
- {schubmult-5.3.0 → schubmult-5.4.0}/LICENSE +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/MANIFEST.in +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/benchmark_equivcalc.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/benchmark_qk_kato.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/benchmark_schubmult.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/Makefile +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/compare.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/expr.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/kernel_double.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/kernel_double_alt.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/kernel_q.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/kernel_q_double.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/kernel_single.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/kernel_transition.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/positivity.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schub_common.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schub_quantum.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schub_symbolic.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schubmult_api.h +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schubmult_core.cpp +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schubmult_double_core.cpp +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schubmult_module.cpp +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schubmult_q_core.cpp +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/cpp/schubmult_q_double_core.cpp +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/README.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/generate_docs.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/grothmult_py.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/grothmult_q.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/schubmult_double.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/schubmult_py.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/schubmult_q.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/_scripts/schubmult_q_double.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/abc.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/anti_rc_graph.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/bpd.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/crystal_graph.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/double_forest.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/increasing_tableau.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/indexed_forests.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/mbpd.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/nilplactic.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/permutation.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/pipe_dream.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/plactic.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/planar_history.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/schub_poly.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/schubert_monomial_graph.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/set_valued_tableau.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/set_word.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/combinatorics/wc_graph.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/_accel.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/double.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/groth.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/groth_double.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/groth_quantum.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/groth_quantum_double.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/positivity.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/quantum.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/quantum_double.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/separated_descents.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/mult/single.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/base_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/alt_rc_graph_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/bounded_rc_factor_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/bounded_rc_forest_factor_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/bounded_wc_factor_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/bpd_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/crystal_graph_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/dual_rc_graph_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/eg_plactic_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/eg_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/forest_invariant_rc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/forest_rc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/grass_tensor_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/grove_wc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/hw_rc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/key_rc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/plactic_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/qy_rc_graph_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/rc_graph_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/rc_schubert_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/schubert_monomial_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/schubert_rc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/slide_rc_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/combinatorial/wc_graph_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/direct_product_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/_core.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/composition_schubert_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/elementary_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/forest_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/free_algebra_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/fundamental_slide_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/glide_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/grothendieck_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/grove_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/j_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/jt_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/key_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/lascoux_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/monomial_slide_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/nelementary_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/schubert_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/schubert_schur_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/schur_elementary_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/separated_descents_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/word_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/free_algebra/z_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/nsym.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/_core.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/anti_schubert_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/base_polynomial_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/composition_schubert_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/double_forest_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/elem_sym_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/forest_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/fundamental_slide_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/glide_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/grothendieck_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/grove_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/key_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/lascoux_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/monomial_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/monomial_slide_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/polynomial_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/schubert_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/polynomial_algebra/sepdesc_poly_basis.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/printing.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/product_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/quasisymmetric_functions.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/base_schubert_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/beta_coxeter.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/chevalley.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/double_grothendieck_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/double_schubert_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/grothendieck_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/nil_hecke.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/parabolic_quantum_double_schubert_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/parabolic_quantum_schubert_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/schubert_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/schubert/separated_descents.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/tensor_ring.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/rings/thompson_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/_common.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/_convert.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/double_schubert.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/grothendieck.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/polynomial_algebra.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/sage/quantum_schubert.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/common_polys.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/domain.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/functions.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/poly/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/poly/schub_poly.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/poly/variables.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/symmetric_polynomials/complete_sym.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/symmetric_polynomials/elem_sym.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/symmetric_polynomials/functions.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/symmetric_polynomials/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/symbolic/symmetric_polynomials/qelem_sym.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/_grid_print.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/_lazy.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/_mul_utils.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/_printable.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/argparse.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/index.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/logging.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/parsing.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/perm_utils.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/schub_lib.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/test_utils.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/utils/tuple_utils.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/docs/modules/schubmult/visualization.md +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/images/algostick.png +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/images/figure.png +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/mkdocs.yml +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/requirements.txt +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/setup.cfg +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/setup.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/requirements.txt +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/schubmult_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/schubmult_py.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/schubmult_q.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_scripts/schubmult_q_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/_typing.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/abc.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/anti_rc_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/bpd.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/crystal_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/double_forest.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/increasing_tableau.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/indexed_forests.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/mbpd.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/nilplactic.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/permutation.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/pipe_dream.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/plactic.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/planar_history.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/schub_poly.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/schubert_monomial_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/set_valued_tableau.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/set_word.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/combinatorics/wc_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/_accel.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/_shadow.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/groth.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/groth_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/groth_quantum.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/groth_quantum_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/quantum.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/separated_descents.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/single.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/mult/transition.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/base_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/bounded_rc_factor_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/bounded_rc_forest_factor_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/bounded_wc_factor_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/bpd_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/crystal_graph_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/dual_rc_graph_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/eg_plactic_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/eg_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/forest_invariant_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/forest_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/grass_tensor_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/grove_wc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/hw_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/key_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/plactic_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/qy_rc_graph_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/rc_graph_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/rc_schubert_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/schubert_monomial_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/schubert_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/slide_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/combinatorial/wc_graph_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/direct_product_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/_core.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/composition_schubert_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/forest_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/free_algebra_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/fundamental_slide_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/glide_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/grothendieck_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/grove_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/j_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/jt_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/key_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/lascoux_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/monomial_slide_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/nelementary_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/schubert_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/schubert_schur_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/separated_descents_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/word_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/free_algebra/z_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/nsym.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/_core.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/anti_schubert_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/base_polynomial_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/composition_schubert_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/double_forest_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/forest_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/glide_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/grothendieck_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/grove_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/key_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/lascoux_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/monomial_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/polynomial_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/polynomial_algebra/sepdesc_poly_basis.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/product_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/quasisymmetric_functions.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/base_schubert_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/beta_coxeter.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/chevalley.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/double_grothendieck_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/grothendieck_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/nil_hecke.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/parabolic_quantum_schubert_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/schubert_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/schubert/separated_descents.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/tensor_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/rings/thompson_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/_common.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/_convert.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/double_schubert.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/grothendieck.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/polynomial_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/quantum_schubert.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/sage/symengine_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/common_polys.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/domain.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/functions.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/poly/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/symmetric_polynomials/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/symbolic/symmetric_polynomials/functions.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/__init__.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/_grid_print.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/_lazy.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/_mul_utils.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/_printable.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/logging.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/parsing.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/perm_utils.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/schub_lib.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/test_utils.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/utils/tuple_utils.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult/visualization.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult.egg-info/dependency_links.txt +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult.egg-info/entry_points.txt +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult.egg-info/requires.txt +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/src/schubmult.egg-info/top_level.txt +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_anti_rc_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_bpd.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_indexed_forests.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_mbpd.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_nilplactic.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_permutation_order.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_pipe_dream.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_rc_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/combinatorics/test_wc_graph.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_accel.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_groth.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_groth_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_groth_quantum.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_groth_quantum_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_positivity.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_probabilistic.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_quantum.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_quantum_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_separated_descents.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_single.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/mult/test_transition.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_combinatorial.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_duality.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_forest_rc_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_free_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_parabolic_quantum_ring.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_polynomial_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_public_imports.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/rings/test_schubert_rings.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/sage/test_polynomial_algebra.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/sage/test_sage_rings.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/_cmd_line_json.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_double/grothmult_double_1_3_2T2_1_3_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_double/grothmult_double_1_3_2T2_1_3_mixed-var_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_double/grothmult_double_2_1_3T2_1_3.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_double/grothmult_double_code_1_1T0_1T1.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_double/grothmult_double_code_2_0_1T1_1_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_double/grothmult_double_display-mode_raw_2_1_4_3T1_3_2_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_py/grothmult_py_1_3_2T1_3_2T2_1_3.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_py/grothmult_py_2_1_4_3T1_3_2.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_py/grothmult_py_3_1_2T2_1_3.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_py/grothmult_py_code_1_0_1T0_1.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_py/grothmult_py_display-mode_raw_3_1_2T1_3_2.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q/grothmult_q_1_3_2T1_3_2T2_1_3.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q/grothmult_q_2_1T2_1.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q/grothmult_q_2_3_1T3_1_2.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q/grothmult_q_code_0_2T1_1.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q/grothmult_q_code_1_1T2_0.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q/grothmult_q_display-mode_raw_3_1_2T1_3_2.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q_double/grothmult_q_double_1_3_2T2_1_3_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q_double/grothmult_q_double_2_1T2_1.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q_double/grothmult_q_double_2_1T2_1_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q_double/grothmult_q_double_code_1_0T1_0T1_0.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q_double/grothmult_q_double_code_1_1T0_1_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/grothmult_q_double/grothmult_q_double_display-mode_raw_2_3_1T1_3_2_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_double/schubmult_double_3_6_1_5_2_4T2_3_5_4_1_6_mixed-var_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_double/schubmult_double_code_3_0_3T2_1_0_2_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_double/schubmult_double_code_coprod_5_0_1_2T2_3_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_double/schubmult_double_coprod_3_6_1_5_2_4T2_4_display-positive_mixed-var.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_double/schubmult_double_mixed-var_display-positive_coprod_code_1_0_2_0_1T2_4.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_py/schubmult_py_code_5_0_3_1_2T1_0_3_2_0_5.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_q/schubmult_q_code_2_0_5T3_0_2.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_q/schubmult_q_parabolic_2_3_code_1_2T1_3.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_q_double/schubmult_q_double_code_1_0_3T2_0_2_mixed-var_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_q_double/schubmult_q_double_code_2_0_5T3_0_2.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_q_double/schubmult_q_double_code_2_0_5T3_0_2_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/data/schubmult_q_double/schubmult_q_double_parabolic_2_3_code_1_2T1_3_display-positive.json +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_grothmult_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_grothmult_py.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_grothmult_q.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_grothmult_q_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_schubmult_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_schubmult_py.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_schubmult_q.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/scripts/test_schubmult_q_double.py +0 -0
- {schubmult-5.3.0 → schubmult-5.4.0}/tests/utils/test_perm_utils.py +0 -0
|
@@ -1,5 +1,79 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.4.0
|
|
4
|
+
|
|
5
|
+
New quantum double Grothendieck and change-of-variables APIs, custom quantum alphabets,
|
|
6
|
+
multiplicative equivariant variables, on-demand generating-set growth, and Python 3.15 wheel support.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- **Change of variables** (#45). `ChangeOfVariables(source, target, rule)` provides lazy indexed
|
|
11
|
+
images of a generating set, with labels inherited from the target alphabet.
|
|
12
|
+
For example, `ChangeOfVariables(x, t, lambda i, target: 1 - 1 / target[i])` represents
|
|
13
|
+
$x_i \mapsto 1 - 1/t_i$. Indexing computes individual images on demand, and `.subs(expr)`
|
|
14
|
+
substitutes source variables in an expression. Exported from `schubmult`.
|
|
15
|
+
- **Quantum double Grothendieck ring** (#44). `QDGx` and `QuantumDoubleGrothendieckRing`
|
|
16
|
+
provide stable elements supporting linear combinations, multiplication through the conjectural
|
|
17
|
+
equivariant quantum K-Pieri kernel, coefficient simplification, and explicit Lenart--Maeno
|
|
18
|
+
quantum polynomial expansion. Beta is symbolic by default; `QDGx(w, beta=-1)` specializes it,
|
|
19
|
+
mixed coefficient alphabets are supported, and `QDGx(w, "0")` uses the zero alphabet.
|
|
20
|
+
Arbitrary x-polynomial conversion and coproducts are not implemented. Products retain
|
|
21
|
+
permutations outside any chosen finite symmetric group; finite-flag comparisons must handle
|
|
22
|
+
those separately.
|
|
23
|
+
- **`--beta EXPR` on all four `grothmult_*` commands** (#44). Accepts a sympified expression,
|
|
24
|
+
such as `--beta=-1`, `--beta 0`, or `--beta "1/2"`; omitting it keeps beta symbolic.
|
|
25
|
+
`grothmult_double --mixed-var --display-positive` constructs the positive representation with
|
|
26
|
+
symbolic beta before specialization. For the quantum commands, `--parabolic --beta 0` defers
|
|
27
|
+
specialization until after Kato projection so inverse powers of beta can cancel.
|
|
28
|
+
- **Custom quantum alphabets** (#52). `QuantumDoubleSchubertRing`, `QuantumSingleSchubertRing`,
|
|
29
|
+
and `QDSx(w, genset, q_var=...)` accept a `q_var` generating set in place of the default
|
|
30
|
+
`GeneratingSet("q")`, including a finite `CustomGeneratingSet` with entries such as `t[i]**2`.
|
|
31
|
+
Products, positive products, quantum elementary and factorial elementary symmetric functions, and
|
|
32
|
+
polynomial expansion use the ring's quantum alphabet. Rings with different quantum alphabets
|
|
33
|
+
compare and hash as distinct, so their products are cached separately.
|
|
34
|
+
- **`--multiplicative-variables` for `grothmult_double` and `grothmult_q_double`** (#51).
|
|
35
|
+
Calculates at `beta=-1` with coefficient coordinates `1-1/y_i` (also `1-1/z_i` with
|
|
36
|
+
`--mixed-var`) through `ChangeOfVariables`, matching the multiplicative equivariant-character
|
|
37
|
+
convention. An explicit `--beta=-1` is allowed; other beta values and `--display-positive`
|
|
38
|
+
are rejected. Combine with `--simplify` to cancel the resulting rational coefficients. Quantum
|
|
39
|
+
parameters are unchanged, and the quantum command supports `--parabolic`.
|
|
40
|
+
- **Multiplicative variables in the web widget** (#51). A *Multiplicative variables* checkbox
|
|
41
|
+
(`"multiplicative_variables"` in the JSON API) is available for the double Grothendieck
|
|
42
|
+
flavors, including mixed variables, simplification, parabolic projection, and downloads.
|
|
43
|
+
Non-boolean values are rejected, and the option is ignored for other flavors.
|
|
44
|
+
- **Duan--Khlaif--Zou equivariant quantum K-theory examples** (#51).
|
|
45
|
+
`examples/duan_khlaif_zou_qk.py` computes 156 distinct explicit products listed in
|
|
46
|
+
[arXiv:2606.15261v2](https://arxiv.org/abs/2606.15261v2), with page references, `--list`,
|
|
47
|
+
`--example`, and `--section` selection, and optional standalone TeX output (`--tex`). It
|
|
48
|
+
computes new answers rather than automatically checking the paper's right-hand sides. Regression
|
|
49
|
+
tests cover the inventory, finite-flag projections, and selected coefficient identities.
|
|
50
|
+
- **Citation metadata** (#53). `CITATION.cff` enables GitHub's *Cite this repository*, and the
|
|
51
|
+
README and documentation explain how to cite `schubmult`, including the version or commit used.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **Generating sets grow on demand** (#46). `GeneratingSet` starts with 10 cached symbols and
|
|
56
|
+
grows geometrically for nonnegative indexing and explicitly bounded slices, removing the
|
|
57
|
+
previous fixed index limit. `len()`, iteration, negative indexing, and open-ended slices
|
|
58
|
+
describe only the currently cached prefix; use explicit slice bounds when a computation needs
|
|
59
|
+
a particular number of variables. Masked sets and polynomial consumers follow the growing
|
|
60
|
+
alphabet. `CustomGeneratingSet` remains finite.
|
|
61
|
+
- **Experimental combinatorics modules moved** (#54). The `chute_move_element`, `hecke_plactic`,
|
|
62
|
+
`hpd`, `inversions_tableau`, `quasi_crystal_graph`, and `root_tableau` modules now live in
|
|
63
|
+
`schubmult.combinatorics.experimental`. Their former module paths and top-level `schubmult`
|
|
64
|
+
exports are no longer available. Pickles referencing the former module paths will not load
|
|
65
|
+
without migration.
|
|
66
|
+
- **CPython 3.15 wheels** (#49). The release workflow upgrades cibuildwheel to v4.3.4 and targets
|
|
67
|
+
CPython 3.10-3.15 on Linux (x86_64 and aarch64), macOS (Intel and Apple Silicon), and Windows
|
|
68
|
+
(x86_64). Package metadata also lists Python 3.15. Pull requests changing the wheel workflow
|
|
69
|
+
build and smoke-test wheels; publishing remains restricted to release tags.
|
|
70
|
+
|
|
71
|
+
## 5.3.0
|
|
72
|
+
|
|
73
|
+
The `5.3.0` and `5.2.0` tags have identical source trees. Their published source distributions
|
|
74
|
+
contain the same code, with only generated version and commit metadata differing. Features
|
|
75
|
+
previously listed as 5.3.0 are included in 5.4.0 above.
|
|
76
|
+
|
|
3
77
|
## 5.2.0
|
|
4
78
|
|
|
5
79
|
Final release of 5.2.0, including the changes in 5.2.0b2 and 5.2.0b3.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use schubmult in your research, please cite it as below and include the version or Git commit you used."
|
|
3
|
+
title: schubmult
|
|
4
|
+
abstract: "Fast Schubert calculus in Python: Littlewood-Richardson coefficients, Schubert/Grothendieck rings, and the combinatorics behind them."
|
|
5
|
+
type: software
|
|
6
|
+
authors:
|
|
7
|
+
- family-names: Samuel
|
|
8
|
+
given-names: Matt
|
|
9
|
+
repository-code: "https://github.com/matthematics/schubmult"
|
|
10
|
+
url: "https://matthematics.github.io/schubmult/"
|
|
11
|
+
license: GPL-3.0-or-later
|
|
12
|
+
keywords:
|
|
13
|
+
- Schubert calculus
|
|
14
|
+
- Schubert polynomials
|
|
15
|
+
- Grothendieck polynomials
|
|
16
|
+
- Littlewood-Richardson coefficients
|
|
17
|
+
- algebraic combinatorics
|
|
18
|
+
|
|
19
|
+
# arXiv preprint template: replace every XXXX.XXXXX, <PAPER_TITLE>, and <YEAR>, then uncomment.
|
|
20
|
+
# GitHub's "Cite this repository" button will then show the preprint as the preferred citation.
|
|
21
|
+
# preferred-citation:
|
|
22
|
+
# type: article
|
|
23
|
+
# authors:
|
|
24
|
+
# - family-names: Samuel
|
|
25
|
+
# given-names: Matt
|
|
26
|
+
# title: "<PAPER_TITLE>"
|
|
27
|
+
# year: <YEAR>
|
|
28
|
+
# journal: "arXiv preprint arXiv:XXXX.XXXXX"
|
|
29
|
+
# doi: 10.48550/arXiv.XXXX.XXXXX
|
|
30
|
+
# url: "https://arxiv.org/abs/XXXX.XXXXX"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: schubmult
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.4.0
|
|
4
4
|
Summary: Package for algebraic computation with single, double, and quantum Schubert polynomials
|
|
5
5
|
Author-email: Matt Samuel <schubmult@gmail.com>
|
|
6
6
|
Maintainer-email: Matt Samuel <schubmult@gmail.com>
|
|
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
18
19
|
Classifier: Programming Language :: C++
|
|
19
20
|
Classifier: Operating System :: OS Independent
|
|
20
21
|
Requires-Python: >=3.10
|
|
@@ -53,6 +54,8 @@ Dynamic: license-file
|
|
|
53
54
|
|
|
54
55
|
**Documentation:** <https://matthematics.github.io/schubmult/>
|
|
55
56
|
|
|
57
|
+
**Citation:** [How to cite](#how-to-cite)
|
|
58
|
+
|
|
56
59
|
---
|
|
57
60
|
|
|
58
61
|
## Installation
|
|
@@ -74,7 +77,7 @@ Requires Python 3.10+. To build the documentation locally, install the `docs` ex
|
|
|
74
77
|
### Python
|
|
75
78
|
|
|
76
79
|
```python
|
|
77
|
-
from schubmult import Sx, DSx, QSx, QDSx, Gx, DGx, Permutation
|
|
80
|
+
from schubmult import Sx, DSx, QSx, QDSx, Gx, DGx, QDGx, Permutation
|
|
78
81
|
from schubmult.abc import x, y, z
|
|
79
82
|
|
|
80
83
|
# Ordinary Schubert polynomials: S_312 * S_132 = S_321 + S_4123
|
|
@@ -111,6 +114,13 @@ Gx([2, 1, 3]) * Gx([2, 1, 3]) # 𝔊_(3, 1, 2)(x)
|
|
|
111
114
|
# -------------------------- + -----------------------------
|
|
112
115
|
# y_2*β + 1 y_2*β + 1
|
|
113
116
|
|
|
117
|
+
# Quantum double Grothendieck polynomials (conjectural equivariant quantum K-Pieri rule)
|
|
118
|
+
g = QDGx([1, 3, 2], beta=-1)
|
|
119
|
+
h = QDGx([2, 1, 3], beta=-1)
|
|
120
|
+
product = (g * h).simplify() # multiplication uses the combinatorial kernel
|
|
121
|
+
product.expand() # explicit Lenart--Maeno quantum polynomials
|
|
122
|
+
g * QDGx([2, 1, 3], "z", beta=-1) # mixed coefficient alphabets
|
|
123
|
+
|
|
114
124
|
# Permutations use one-line notation; Lehmer codes are available too
|
|
115
125
|
w = Permutation([3, 1, 4, 2])
|
|
116
126
|
w.code, w.inv, w.descents() # ([2, 0, 1], 3, {0, 2})
|
|
@@ -118,6 +128,55 @@ w.code, w.inv, w.descents() # ([2, 0, 1], 3, {0, 2})
|
|
|
118
128
|
|
|
119
129
|
Ring objects: `Sx` (single), `DSx` (double), `QSx`/`QDSx` (quantum, quantum double), `QPSx`/`QPDSx` (parabolic quantum), `Gx`/`DGx` (single/double Grothendieck). Elements are dictionaries `{Permutation: coefficient}` with `*`, `+`, `.expand()`, `.coproduct()`, and change of basis between them. The underlying multiplication kernels live in `schubmult.mult` (`single`, `double`, `quantum`, `quantum_double`, `groth`, `groth_double`).
|
|
120
130
|
|
|
131
|
+
`QDGx` constructs stable quantum double Grothendieck elements, with symbolic beta by default.
|
|
132
|
+
It supports linear combinations, kernel multiplication, coefficient simplification, and explicit
|
|
133
|
+
polynomial expansion; `QDGx(w, "0")` uses the zero coefficient alphabet. The ring class is
|
|
134
|
+
`QuantumDoubleGrothendieckRing(x_alphabet, y_alphabet, beta=None)`. Arbitrary x-polynomial
|
|
135
|
+
conversion and coproducts are not implemented. Products retain permutations outside any chosen
|
|
136
|
+
finite symmetric group; a finite-flag comparison must handle those separately.
|
|
137
|
+
|
|
138
|
+
### Paper examples: equivariant quantum K-theory
|
|
139
|
+
|
|
140
|
+
[examples/duan_khlaif_zou_qk.py](examples/duan_khlaif_zou_qk.py) computes all 156 distinct
|
|
141
|
+
explicit equivariant Schubert-class products in [Duan--Khlaif--Zou, arXiv:2606.15261v2](https://arxiv.org/abs/2606.15261v2):
|
|
142
|
+
Table 3.2 (Fl(3)), Appendix A.1 (Fl(4)), Appendix A.2 (Fl(1,3;4)), and Appendix A.3 (Fl(1,2;4)).
|
|
143
|
+
The script records printed page references and notes the repeated product in A.2 and the
|
|
144
|
+
omitted equivariant square in A.3. It generates new answers, rather than automatically comparing
|
|
145
|
+
against the paper's printed right-hand sides.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --list
|
|
149
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --example fl4-04
|
|
150
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --section fl134
|
|
151
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --tex --output products.tex
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
It uses `QuantumDoubleGrothendieckRing` at `beta=-1` with `ChangeOfVariables` implementing
|
|
155
|
+
`z_i -> 1-1/y_i`, the paper's multiplicative equivariant-character convention. Finite-flag
|
|
156
|
+
projection removes stable terms outside `S_n`; partial flags additionally use the existing
|
|
157
|
+
Kato projection, with consecutive quantum-parameter indices. TeX output is a standalone
|
|
158
|
+
document using `\widetilde{\mathfrak{G}}_w(x;y)`. Add `--non-equivariant` to specialize the
|
|
159
|
+
selected products at `y_i=1`. The underlying equivariant quantum K-Pieri multiplication
|
|
160
|
+
rule remains conjectural.
|
|
161
|
+
|
|
162
|
+
### Generating sets
|
|
163
|
+
|
|
164
|
+
`GeneratingSet("x")` supports any nonnegative index, including indices above 100.
|
|
165
|
+
It starts with 10 cached symbols and grows geometrically on demand. Bounded slices
|
|
166
|
+
such as `x[1:151]` also generate the requested variables. `len(x)`, iteration,
|
|
167
|
+
negative indexing, and open-ended slices describe only the currently cached prefix;
|
|
168
|
+
use explicit slice bounds when a computation needs a particular number of variables.
|
|
169
|
+
`CustomGeneratingSet` remains a finite sequence.
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
from schubmult import ChangeOfVariables, GeneratingSet
|
|
173
|
+
|
|
174
|
+
x, t = GeneratingSet("x"), GeneratingSet("t")
|
|
175
|
+
change = ChangeOfVariables(x, t, lambda i, target: 1 - 1 / target[i])
|
|
176
|
+
change[150] # 1 - 1/t_150
|
|
177
|
+
change.subs(x[150] + x[1]**2) # simultaneous substitution of source variables
|
|
178
|
+
```
|
|
179
|
+
|
|
121
180
|
### Command line
|
|
122
181
|
|
|
123
182
|
Each ring has a CLI. Permutations are space-separated, factors are separated by `-`:
|
|
@@ -132,10 +191,22 @@ grothmult_py 2 1 3 - 2 1 3 # Grothendieck
|
|
|
132
191
|
grothmult_double 2 1 3 - 2 1 3 # double Grothendieck (coefficients in y and β)
|
|
133
192
|
grothmult_q 2 1 - 2 1 # quantum Grothendieck (conjectural quantum K-Pieri rule; coefficients in q and β)
|
|
134
193
|
grothmult_q_double 2 1 - 2 1 --mixed-var # quantum double Grothendieck (coefficients in y, z, q and β)
|
|
194
|
+
grothmult_q_double 2 1 - 2 1 --multiplicative-variables --simplify # beta=-1, coordinates 1-1/y_i
|
|
135
195
|
```
|
|
136
196
|
|
|
197
|
+
Both `grothmult_double` and `grothmult_q_double` support
|
|
198
|
+
`--multiplicative-variables`: this uses `ChangeOfVariables` to calculate with
|
|
199
|
+
`1-1/y_i` coefficient coordinates and fixes `beta=-1`. With `--mixed-var`, the
|
|
200
|
+
second coefficient alphabet is also changed to `1-1/z_i`. Explicit
|
|
201
|
+
`--beta=-1` is allowed; other beta values and `--display-positive` conflict
|
|
202
|
+
with this mode and are rejected. Add `--simplify` to cancel the rational
|
|
203
|
+
coefficients. Without the flag, the existing conventions are unchanged.
|
|
204
|
+
|
|
137
205
|
`--display-positive` writes double and quantum double coefficients as manifestly positive expressions in the differences `y_i - z_j` (Graham positivity), using integer programming to find a positive representative. Run any script with `--help` for the full option list.
|
|
138
206
|
|
|
207
|
+
All four `grothmult_*` scripts accept `--beta EXPR` to use a sympified expression as beta in the multiplication, for example `--beta=-1`, `--beta 0`, or `--beta "1/2"`. Without this option, beta remains symbolic.
|
|
208
|
+
For `--display-positive`, the positive expression is constructed with symbolic beta before specialization. With `--parabolic --beta 0`, specialization is deferred until after Kato projection so inverse powers of beta can cancel.
|
|
209
|
+
|
|
139
210
|
## Combinatorics
|
|
140
211
|
|
|
141
212
|
The `schubmult.combinatorics` package provides the objects that index Schubert calculus, with conversions between them:
|
|
@@ -143,8 +214,8 @@ The `schubmult.combinatorics` package provides the objects that index Schubert c
|
|
|
143
214
|
- **`Permutation`** -- one-line notation, Lehmer codes (`uncode`), reduced words, Bruhat order, descents, dominant/Grassmannian tests.
|
|
144
215
|
- **`RCGraph`** -- reduced compatible sequences / pipe dreams, with enumeration (`RCGraph.all_rc_graphs(w, n)`), Kashiwara crystal operators (`raising_operator(i)`, `lowering_operator(i)`), Edelman-Greene insertion, and the crystal products used in the transition formulas.
|
|
145
216
|
- **`BPD`** -- bumpless pipe dreams with droop moves, the Gao-Huang bijection to RC graphs (`BPD.from_rc_graph`, `.to_rc_graph()`), and marked/unreduced variants for Grothendieck polynomials.
|
|
146
|
-
- **`WCGraph`**, **`PipeDream
|
|
147
|
-
- **Tableaux** -- `Plactic` (semistandard, jeu de taquin), `NilPlactic` (Edelman-Greene), `
|
|
217
|
+
- **`WCGraph`**, **`PipeDream`** -- K-theoretic pipe dream models.
|
|
218
|
+
- **Tableaux** -- `Plactic` (semistandard, jeu de taquin), `NilPlactic` (Edelman-Greene), `IncreasingTableau`, and `SetValuedTableau`.
|
|
148
219
|
- **Forests** -- indexed forests and the Thompson monoid factorization behind the forest and grove bases.
|
|
149
220
|
|
|
150
221
|
```python
|
|
@@ -160,6 +231,33 @@ bpd = BPD.from_rc_graph(rc) # Gao-Huang bijection
|
|
|
160
231
|
assert bpd.to_rc_graph() == rc
|
|
161
232
|
```
|
|
162
233
|
|
|
234
|
+
### Experimental combinatorics
|
|
235
|
+
|
|
236
|
+
The `schubmult.combinatorics.experimental` namespace contains exploratory
|
|
237
|
+
implementations that may be incomplete or incorrect:
|
|
238
|
+
|
|
239
|
+
| Module | Main objects |
|
|
240
|
+
| --- | --- |
|
|
241
|
+
| `chute_move_element` | `ChuteMoveElement` |
|
|
242
|
+
| `hecke_plactic` | `HeckePlactic` |
|
|
243
|
+
| `hpd` | `HPD`, `HPDTile` |
|
|
244
|
+
| `inversions_tableau` | `InversionsTableau` |
|
|
245
|
+
| `quasi_crystal_graph` | `QuasiCrystalGraph`, `QuasiCrystalGraphTensor` |
|
|
246
|
+
| `root_tableau` | `RootTableau` |
|
|
247
|
+
|
|
248
|
+
These objects can be imported from the experimental namespace or their
|
|
249
|
+
individual modules:
|
|
250
|
+
|
|
251
|
+
```python
|
|
252
|
+
from schubmult.combinatorics.experimental import HPD
|
|
253
|
+
from schubmult.combinatorics.experimental.root_tableau import RootTableau
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
The former `schubmult.combinatorics.<module>` paths and top-level
|
|
257
|
+
`schubmult` exports for these objects are no longer provided.
|
|
258
|
+
Pickles referencing the former module paths will not load without migration.
|
|
259
|
+
`ChuteMoveRing` remains available, but its basis uses `ChuteMoveElement`.
|
|
260
|
+
|
|
163
261
|
## Rings and algebras
|
|
164
262
|
|
|
165
263
|
Beyond the Schubert rings, `schubmult.rings` includes:
|
|
@@ -229,6 +327,51 @@ pytest
|
|
|
229
327
|
|
|
230
328
|
Tests live in `tests/`; the script tests compare CLI output against stored JSON cases in `tests/scripts/data`. `ruff check src/schubmult` should pass.
|
|
231
329
|
|
|
330
|
+
## How to cite
|
|
331
|
+
|
|
332
|
+
If you use `schubmult` in your research, please cite the software and, once available,
|
|
333
|
+
the accompanying preprint. Include the version number (or Git commit hash for a
|
|
334
|
+
development checkout) used for your computations.
|
|
335
|
+
|
|
336
|
+
On GitHub, the **Cite this repository** button in the repository sidebar gives
|
|
337
|
+
APA and BibTeX citations generated from [CITATION.cff](CITATION.cff).
|
|
338
|
+
|
|
339
|
+
### Software
|
|
340
|
+
|
|
341
|
+
Use this BibTeX template, replacing `<YEAR>` with the year of the cited release or
|
|
342
|
+
commit and `<VERSION_OR_COMMIT>` with the version number or commit hash you used:
|
|
343
|
+
|
|
344
|
+
```bibtex
|
|
345
|
+
@misc{schubmult,
|
|
346
|
+
author = {Samuel, Matt},
|
|
347
|
+
title = {{schubmult}},
|
|
348
|
+
year = {<YEAR>},
|
|
349
|
+
url = {https://github.com/matthematics/schubmult},
|
|
350
|
+
note = {Version <VERSION_OR_COMMIT>}
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Preprint (template)
|
|
355
|
+
|
|
356
|
+
**arXiv link:** `<ARXIV_URL>`
|
|
357
|
+
|
|
358
|
+
The preprint citation is not yet filled in. Replace the placeholders below with
|
|
359
|
+
the paper's authors, title, year, arXiv identifier, and URL before citing it, or
|
|
360
|
+
paste the BibTeX entry exported by arXiv. Also fill in and uncomment the
|
|
361
|
+
`preferred-citation` block in [CITATION.cff](CITATION.cff). The software citation
|
|
362
|
+
above can be used in the meantime.
|
|
363
|
+
|
|
364
|
+
```bibtex
|
|
365
|
+
@misc{schubmult_paper,
|
|
366
|
+
author = {<AUTHORS>},
|
|
367
|
+
title = {<PAPER_TITLE>},
|
|
368
|
+
year = {<YEAR>},
|
|
369
|
+
eprint = {<ARXIV_ID>},
|
|
370
|
+
archivePrefix = {arXiv},
|
|
371
|
+
url = {<ARXIV_URL>}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
232
375
|
## License
|
|
233
376
|
|
|
234
377
|
GPL-3.0-or-later. See [LICENSE](LICENSE).
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
**Documentation:** <https://matthematics.github.io/schubmult/>
|
|
12
12
|
|
|
13
|
+
**Citation:** [How to cite](#how-to-cite)
|
|
14
|
+
|
|
13
15
|
---
|
|
14
16
|
|
|
15
17
|
## Installation
|
|
@@ -31,7 +33,7 @@ Requires Python 3.10+. To build the documentation locally, install the `docs` ex
|
|
|
31
33
|
### Python
|
|
32
34
|
|
|
33
35
|
```python
|
|
34
|
-
from schubmult import Sx, DSx, QSx, QDSx, Gx, DGx, Permutation
|
|
36
|
+
from schubmult import Sx, DSx, QSx, QDSx, Gx, DGx, QDGx, Permutation
|
|
35
37
|
from schubmult.abc import x, y, z
|
|
36
38
|
|
|
37
39
|
# Ordinary Schubert polynomials: S_312 * S_132 = S_321 + S_4123
|
|
@@ -68,6 +70,13 @@ Gx([2, 1, 3]) * Gx([2, 1, 3]) # 𝔊_(3, 1, 2)(x)
|
|
|
68
70
|
# -------------------------- + -----------------------------
|
|
69
71
|
# y_2*β + 1 y_2*β + 1
|
|
70
72
|
|
|
73
|
+
# Quantum double Grothendieck polynomials (conjectural equivariant quantum K-Pieri rule)
|
|
74
|
+
g = QDGx([1, 3, 2], beta=-1)
|
|
75
|
+
h = QDGx([2, 1, 3], beta=-1)
|
|
76
|
+
product = (g * h).simplify() # multiplication uses the combinatorial kernel
|
|
77
|
+
product.expand() # explicit Lenart--Maeno quantum polynomials
|
|
78
|
+
g * QDGx([2, 1, 3], "z", beta=-1) # mixed coefficient alphabets
|
|
79
|
+
|
|
71
80
|
# Permutations use one-line notation; Lehmer codes are available too
|
|
72
81
|
w = Permutation([3, 1, 4, 2])
|
|
73
82
|
w.code, w.inv, w.descents() # ([2, 0, 1], 3, {0, 2})
|
|
@@ -75,6 +84,55 @@ w.code, w.inv, w.descents() # ([2, 0, 1], 3, {0, 2})
|
|
|
75
84
|
|
|
76
85
|
Ring objects: `Sx` (single), `DSx` (double), `QSx`/`QDSx` (quantum, quantum double), `QPSx`/`QPDSx` (parabolic quantum), `Gx`/`DGx` (single/double Grothendieck). Elements are dictionaries `{Permutation: coefficient}` with `*`, `+`, `.expand()`, `.coproduct()`, and change of basis between them. The underlying multiplication kernels live in `schubmult.mult` (`single`, `double`, `quantum`, `quantum_double`, `groth`, `groth_double`).
|
|
77
86
|
|
|
87
|
+
`QDGx` constructs stable quantum double Grothendieck elements, with symbolic beta by default.
|
|
88
|
+
It supports linear combinations, kernel multiplication, coefficient simplification, and explicit
|
|
89
|
+
polynomial expansion; `QDGx(w, "0")` uses the zero coefficient alphabet. The ring class is
|
|
90
|
+
`QuantumDoubleGrothendieckRing(x_alphabet, y_alphabet, beta=None)`. Arbitrary x-polynomial
|
|
91
|
+
conversion and coproducts are not implemented. Products retain permutations outside any chosen
|
|
92
|
+
finite symmetric group; a finite-flag comparison must handle those separately.
|
|
93
|
+
|
|
94
|
+
### Paper examples: equivariant quantum K-theory
|
|
95
|
+
|
|
96
|
+
[examples/duan_khlaif_zou_qk.py](examples/duan_khlaif_zou_qk.py) computes all 156 distinct
|
|
97
|
+
explicit equivariant Schubert-class products in [Duan--Khlaif--Zou, arXiv:2606.15261v2](https://arxiv.org/abs/2606.15261v2):
|
|
98
|
+
Table 3.2 (Fl(3)), Appendix A.1 (Fl(4)), Appendix A.2 (Fl(1,3;4)), and Appendix A.3 (Fl(1,2;4)).
|
|
99
|
+
The script records printed page references and notes the repeated product in A.2 and the
|
|
100
|
+
omitted equivariant square in A.3. It generates new answers, rather than automatically comparing
|
|
101
|
+
against the paper's printed right-hand sides.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --list
|
|
105
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --example fl4-04
|
|
106
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --section fl134
|
|
107
|
+
PYTHONPATH=src python examples/duan_khlaif_zou_qk.py --tex --output products.tex
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
It uses `QuantumDoubleGrothendieckRing` at `beta=-1` with `ChangeOfVariables` implementing
|
|
111
|
+
`z_i -> 1-1/y_i`, the paper's multiplicative equivariant-character convention. Finite-flag
|
|
112
|
+
projection removes stable terms outside `S_n`; partial flags additionally use the existing
|
|
113
|
+
Kato projection, with consecutive quantum-parameter indices. TeX output is a standalone
|
|
114
|
+
document using `\widetilde{\mathfrak{G}}_w(x;y)`. Add `--non-equivariant` to specialize the
|
|
115
|
+
selected products at `y_i=1`. The underlying equivariant quantum K-Pieri multiplication
|
|
116
|
+
rule remains conjectural.
|
|
117
|
+
|
|
118
|
+
### Generating sets
|
|
119
|
+
|
|
120
|
+
`GeneratingSet("x")` supports any nonnegative index, including indices above 100.
|
|
121
|
+
It starts with 10 cached symbols and grows geometrically on demand. Bounded slices
|
|
122
|
+
such as `x[1:151]` also generate the requested variables. `len(x)`, iteration,
|
|
123
|
+
negative indexing, and open-ended slices describe only the currently cached prefix;
|
|
124
|
+
use explicit slice bounds when a computation needs a particular number of variables.
|
|
125
|
+
`CustomGeneratingSet` remains a finite sequence.
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
from schubmult import ChangeOfVariables, GeneratingSet
|
|
129
|
+
|
|
130
|
+
x, t = GeneratingSet("x"), GeneratingSet("t")
|
|
131
|
+
change = ChangeOfVariables(x, t, lambda i, target: 1 - 1 / target[i])
|
|
132
|
+
change[150] # 1 - 1/t_150
|
|
133
|
+
change.subs(x[150] + x[1]**2) # simultaneous substitution of source variables
|
|
134
|
+
```
|
|
135
|
+
|
|
78
136
|
### Command line
|
|
79
137
|
|
|
80
138
|
Each ring has a CLI. Permutations are space-separated, factors are separated by `-`:
|
|
@@ -89,10 +147,22 @@ grothmult_py 2 1 3 - 2 1 3 # Grothendieck
|
|
|
89
147
|
grothmult_double 2 1 3 - 2 1 3 # double Grothendieck (coefficients in y and β)
|
|
90
148
|
grothmult_q 2 1 - 2 1 # quantum Grothendieck (conjectural quantum K-Pieri rule; coefficients in q and β)
|
|
91
149
|
grothmult_q_double 2 1 - 2 1 --mixed-var # quantum double Grothendieck (coefficients in y, z, q and β)
|
|
150
|
+
grothmult_q_double 2 1 - 2 1 --multiplicative-variables --simplify # beta=-1, coordinates 1-1/y_i
|
|
92
151
|
```
|
|
93
152
|
|
|
153
|
+
Both `grothmult_double` and `grothmult_q_double` support
|
|
154
|
+
`--multiplicative-variables`: this uses `ChangeOfVariables` to calculate with
|
|
155
|
+
`1-1/y_i` coefficient coordinates and fixes `beta=-1`. With `--mixed-var`, the
|
|
156
|
+
second coefficient alphabet is also changed to `1-1/z_i`. Explicit
|
|
157
|
+
`--beta=-1` is allowed; other beta values and `--display-positive` conflict
|
|
158
|
+
with this mode and are rejected. Add `--simplify` to cancel the rational
|
|
159
|
+
coefficients. Without the flag, the existing conventions are unchanged.
|
|
160
|
+
|
|
94
161
|
`--display-positive` writes double and quantum double coefficients as manifestly positive expressions in the differences `y_i - z_j` (Graham positivity), using integer programming to find a positive representative. Run any script with `--help` for the full option list.
|
|
95
162
|
|
|
163
|
+
All four `grothmult_*` scripts accept `--beta EXPR` to use a sympified expression as beta in the multiplication, for example `--beta=-1`, `--beta 0`, or `--beta "1/2"`. Without this option, beta remains symbolic.
|
|
164
|
+
For `--display-positive`, the positive expression is constructed with symbolic beta before specialization. With `--parabolic --beta 0`, specialization is deferred until after Kato projection so inverse powers of beta can cancel.
|
|
165
|
+
|
|
96
166
|
## Combinatorics
|
|
97
167
|
|
|
98
168
|
The `schubmult.combinatorics` package provides the objects that index Schubert calculus, with conversions between them:
|
|
@@ -100,8 +170,8 @@ The `schubmult.combinatorics` package provides the objects that index Schubert c
|
|
|
100
170
|
- **`Permutation`** -- one-line notation, Lehmer codes (`uncode`), reduced words, Bruhat order, descents, dominant/Grassmannian tests.
|
|
101
171
|
- **`RCGraph`** -- reduced compatible sequences / pipe dreams, with enumeration (`RCGraph.all_rc_graphs(w, n)`), Kashiwara crystal operators (`raising_operator(i)`, `lowering_operator(i)`), Edelman-Greene insertion, and the crystal products used in the transition formulas.
|
|
102
172
|
- **`BPD`** -- bumpless pipe dreams with droop moves, the Gao-Huang bijection to RC graphs (`BPD.from_rc_graph`, `.to_rc_graph()`), and marked/unreduced variants for Grothendieck polynomials.
|
|
103
|
-
- **`WCGraph`**, **`PipeDream
|
|
104
|
-
- **Tableaux** -- `Plactic` (semistandard, jeu de taquin), `NilPlactic` (Edelman-Greene), `
|
|
173
|
+
- **`WCGraph`**, **`PipeDream`** -- K-theoretic pipe dream models.
|
|
174
|
+
- **Tableaux** -- `Plactic` (semistandard, jeu de taquin), `NilPlactic` (Edelman-Greene), `IncreasingTableau`, and `SetValuedTableau`.
|
|
105
175
|
- **Forests** -- indexed forests and the Thompson monoid factorization behind the forest and grove bases.
|
|
106
176
|
|
|
107
177
|
```python
|
|
@@ -117,6 +187,33 @@ bpd = BPD.from_rc_graph(rc) # Gao-Huang bijection
|
|
|
117
187
|
assert bpd.to_rc_graph() == rc
|
|
118
188
|
```
|
|
119
189
|
|
|
190
|
+
### Experimental combinatorics
|
|
191
|
+
|
|
192
|
+
The `schubmult.combinatorics.experimental` namespace contains exploratory
|
|
193
|
+
implementations that may be incomplete or incorrect:
|
|
194
|
+
|
|
195
|
+
| Module | Main objects |
|
|
196
|
+
| --- | --- |
|
|
197
|
+
| `chute_move_element` | `ChuteMoveElement` |
|
|
198
|
+
| `hecke_plactic` | `HeckePlactic` |
|
|
199
|
+
| `hpd` | `HPD`, `HPDTile` |
|
|
200
|
+
| `inversions_tableau` | `InversionsTableau` |
|
|
201
|
+
| `quasi_crystal_graph` | `QuasiCrystalGraph`, `QuasiCrystalGraphTensor` |
|
|
202
|
+
| `root_tableau` | `RootTableau` |
|
|
203
|
+
|
|
204
|
+
These objects can be imported from the experimental namespace or their
|
|
205
|
+
individual modules:
|
|
206
|
+
|
|
207
|
+
```python
|
|
208
|
+
from schubmult.combinatorics.experimental import HPD
|
|
209
|
+
from schubmult.combinatorics.experimental.root_tableau import RootTableau
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
The former `schubmult.combinatorics.<module>` paths and top-level
|
|
213
|
+
`schubmult` exports for these objects are no longer provided.
|
|
214
|
+
Pickles referencing the former module paths will not load without migration.
|
|
215
|
+
`ChuteMoveRing` remains available, but its basis uses `ChuteMoveElement`.
|
|
216
|
+
|
|
120
217
|
## Rings and algebras
|
|
121
218
|
|
|
122
219
|
Beyond the Schubert rings, `schubmult.rings` includes:
|
|
@@ -186,6 +283,51 @@ pytest
|
|
|
186
283
|
|
|
187
284
|
Tests live in `tests/`; the script tests compare CLI output against stored JSON cases in `tests/scripts/data`. `ruff check src/schubmult` should pass.
|
|
188
285
|
|
|
286
|
+
## How to cite
|
|
287
|
+
|
|
288
|
+
If you use `schubmult` in your research, please cite the software and, once available,
|
|
289
|
+
the accompanying preprint. Include the version number (or Git commit hash for a
|
|
290
|
+
development checkout) used for your computations.
|
|
291
|
+
|
|
292
|
+
On GitHub, the **Cite this repository** button in the repository sidebar gives
|
|
293
|
+
APA and BibTeX citations generated from [CITATION.cff](CITATION.cff).
|
|
294
|
+
|
|
295
|
+
### Software
|
|
296
|
+
|
|
297
|
+
Use this BibTeX template, replacing `<YEAR>` with the year of the cited release or
|
|
298
|
+
commit and `<VERSION_OR_COMMIT>` with the version number or commit hash you used:
|
|
299
|
+
|
|
300
|
+
```bibtex
|
|
301
|
+
@misc{schubmult,
|
|
302
|
+
author = {Samuel, Matt},
|
|
303
|
+
title = {{schubmult}},
|
|
304
|
+
year = {<YEAR>},
|
|
305
|
+
url = {https://github.com/matthematics/schubmult},
|
|
306
|
+
note = {Version <VERSION_OR_COMMIT>}
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Preprint (template)
|
|
311
|
+
|
|
312
|
+
**arXiv link:** `<ARXIV_URL>`
|
|
313
|
+
|
|
314
|
+
The preprint citation is not yet filled in. Replace the placeholders below with
|
|
315
|
+
the paper's authors, title, year, arXiv identifier, and URL before citing it, or
|
|
316
|
+
paste the BibTeX entry exported by arXiv. Also fill in and uncomment the
|
|
317
|
+
`preferred-citation` block in [CITATION.cff](CITATION.cff). The software citation
|
|
318
|
+
above can be used in the meantime.
|
|
319
|
+
|
|
320
|
+
```bibtex
|
|
321
|
+
@misc{schubmult_paper,
|
|
322
|
+
author = {<AUTHORS>},
|
|
323
|
+
title = {<PAPER_TITLE>},
|
|
324
|
+
year = {<YEAR>},
|
|
325
|
+
eprint = {<ARXIV_ID>},
|
|
326
|
+
archivePrefix = {arXiv},
|
|
327
|
+
url = {<ARXIV_URL>}
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
189
331
|
## License
|
|
190
332
|
|
|
191
333
|
GPL-3.0-or-later. See [LICENSE](LICENSE).
|