schubmult 5.2.0b2__tar.gz → 5.2.0b3__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.
Files changed (471) hide show
  1. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/CHANGELOG.md +22 -0
  2. {schubmult-5.2.0b2/src/schubmult.egg-info → schubmult-5.2.0b3}/PKG-INFO +1 -1
  3. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_version.py +3 -3
  4. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/positivity.py +21 -6
  5. {schubmult-5.2.0b2 → schubmult-5.2.0b3/src/schubmult.egg-info}/PKG-INFO +1 -1
  6. schubmult-5.2.0b3/src/schubmult.egg-info/scm_version.json +8 -0
  7. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_positivity.py +34 -0
  8. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_quantum_double.py +34 -1
  9. schubmult-5.2.0b2/src/schubmult.egg-info/scm_version.json +0 -8
  10. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/LICENSE +0 -0
  11. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/MANIFEST.in +0 -0
  12. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/README.md +0 -0
  13. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/benchmark_equivcalc.py +0 -0
  14. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/benchmark_qk_kato.py +0 -0
  15. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/benchmark_schubmult.py +0 -0
  16. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/Makefile +0 -0
  17. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/compare.py +0 -0
  18. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/expr.h +0 -0
  19. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/kernel_double.h +0 -0
  20. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/kernel_double_alt.h +0 -0
  21. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/kernel_q.h +0 -0
  22. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/kernel_q_double.h +0 -0
  23. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/kernel_single.h +0 -0
  24. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/kernel_transition.h +0 -0
  25. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/positivity.h +0 -0
  26. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schub_common.h +0 -0
  27. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schub_quantum.h +0 -0
  28. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schub_symbolic.h +0 -0
  29. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schubmult_api.h +0 -0
  30. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schubmult_core.cpp +0 -0
  31. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schubmult_double_core.cpp +0 -0
  32. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schubmult_module.cpp +0 -0
  33. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schubmult_q_core.cpp +0 -0
  34. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/cpp/schubmult_q_double_core.cpp +0 -0
  35. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/API.md +0 -0
  36. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/README.md +0 -0
  37. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/generate_docs.py +0 -0
  38. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/index.md +0 -0
  39. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/README.md +0 -0
  40. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/grothmult_double.md +0 -0
  41. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/grothmult_py.md +0 -0
  42. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/grothmult_q.md +0 -0
  43. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/grothmult_q_double.md +0 -0
  44. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/index.md +0 -0
  45. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/schubmult_double.md +0 -0
  46. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/schubmult_py.md +0 -0
  47. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/schubmult_q.md +0 -0
  48. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/_scripts/schubmult_q_double.md +0 -0
  49. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/abc.md +0 -0
  50. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/anti_rc_graph.md +0 -0
  51. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/bpd.md +0 -0
  52. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/chute_move_element.md +0 -0
  53. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/crystal_graph.md +0 -0
  54. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/double_forest.md +0 -0
  55. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/hecke_plactic.md +0 -0
  56. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/hpd.md +0 -0
  57. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/increasing_tableau.md +0 -0
  58. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/index.md +0 -0
  59. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/indexed_forests.md +0 -0
  60. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/inversions_tableau.md +0 -0
  61. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/mbpd.md +0 -0
  62. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/nilplactic.md +0 -0
  63. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/permutation.md +0 -0
  64. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/pipe_dream.md +0 -0
  65. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/plactic.md +0 -0
  66. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/planar_history.md +0 -0
  67. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/quasi_crystal_graph.md +0 -0
  68. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/rc_graph.md +0 -0
  69. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/root_tableau.md +0 -0
  70. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/schub_poly.md +0 -0
  71. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/schubert_monomial_graph.md +0 -0
  72. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/set_valued_tableau.md +0 -0
  73. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/set_word.md +0 -0
  74. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/combinatorics/wc_graph.md +0 -0
  75. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/index.md +0 -0
  76. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/_accel.md +0 -0
  77. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/double.md +0 -0
  78. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/groth.md +0 -0
  79. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/groth_double.md +0 -0
  80. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/groth_quantum.md +0 -0
  81. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/groth_quantum_double.md +0 -0
  82. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/index.md +0 -0
  83. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/positivity.md +0 -0
  84. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/quantum.md +0 -0
  85. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/quantum_double.md +0 -0
  86. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/separated_descents.md +0 -0
  87. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/mult/single.md +0 -0
  88. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/base_ring.md +0 -0
  89. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/alt_rc_graph_ring.md +0 -0
  90. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/bounded_rc_factor_algebra.md +0 -0
  91. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/bounded_rc_forest_factor_algebra.md +0 -0
  92. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/bounded_wc_factor_algebra.md +0 -0
  93. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/bpd_ring.md +0 -0
  94. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/chute_move_ring.md +0 -0
  95. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/crystal_graph_ring.md +0 -0
  96. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/dual_rc_graph_ring.md +0 -0
  97. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/eg_plactic_ring.md +0 -0
  98. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/eg_ring.md +0 -0
  99. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/forest_invariant_rc_ring.md +0 -0
  100. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/forest_rc_ring.md +0 -0
  101. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/grass_tensor_algebra.md +0 -0
  102. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/grove_wc_ring.md +0 -0
  103. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/hw_rc_ring.md +0 -0
  104. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/index.md +0 -0
  105. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/key_rc_ring.md +0 -0
  106. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/plactic_algebra.md +0 -0
  107. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/qy_rc_graph_ring.md +0 -0
  108. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/rc_graph_ring.md +0 -0
  109. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/rc_schubert_ring.md +0 -0
  110. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/schubert_monomial_ring.md +0 -0
  111. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/schubert_rc_ring.md +0 -0
  112. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/slide_rc_ring.md +0 -0
  113. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/combinatorial/wc_graph_ring.md +0 -0
  114. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/direct_product_ring.md +0 -0
  115. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/_core.md +0 -0
  116. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/composition_schubert_basis.md +0 -0
  117. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/elementary_basis.md +0 -0
  118. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/forest_basis.md +0 -0
  119. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/free_algebra_basis.md +0 -0
  120. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/fundamental_slide_basis.md +0 -0
  121. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/glide_basis.md +0 -0
  122. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/grothendieck_basis.md +0 -0
  123. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/grove_basis.md +0 -0
  124. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/index.md +0 -0
  125. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/j_basis.md +0 -0
  126. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/jt_basis.md +0 -0
  127. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/key_basis.md +0 -0
  128. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/lascoux_basis.md +0 -0
  129. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/monomial_slide_basis.md +0 -0
  130. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/nelementary_basis.md +0 -0
  131. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/schubert_basis.md +0 -0
  132. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/schubert_schur_basis.md +0 -0
  133. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/schur_elementary_basis.md +0 -0
  134. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/separated_descents_basis.md +0 -0
  135. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/word_basis.md +0 -0
  136. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/free_algebra/z_basis.md +0 -0
  137. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/index.md +0 -0
  138. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/nsym.md +0 -0
  139. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/_core.md +0 -0
  140. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/anti_schubert_poly_basis.md +0 -0
  141. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/base_polynomial_basis.md +0 -0
  142. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/composition_schubert_poly_basis.md +0 -0
  143. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/double_forest_poly_basis.md +0 -0
  144. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/elem_sym_poly_basis.md +0 -0
  145. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/forest_poly_basis.md +0 -0
  146. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/fundamental_slide_poly_basis.md +0 -0
  147. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/glide_poly_basis.md +0 -0
  148. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/grothendieck_poly_basis.md +0 -0
  149. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/grove_poly_basis.md +0 -0
  150. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/index.md +0 -0
  151. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/key_poly_basis.md +0 -0
  152. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/lascoux_poly_basis.md +0 -0
  153. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/monomial_basis.md +0 -0
  154. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/monomial_slide_poly_basis.md +0 -0
  155. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/polynomial_basis.md +0 -0
  156. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/schubert_poly_basis.md +0 -0
  157. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/polynomial_algebra/sepdesc_poly_basis.md +0 -0
  158. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/printing.md +0 -0
  159. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/product_ring.md +0 -0
  160. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/quasisymmetric_functions.md +0 -0
  161. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/base_schubert_ring.md +0 -0
  162. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/beta_coxeter.md +0 -0
  163. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/chevalley.md +0 -0
  164. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/double_grothendieck_ring.md +0 -0
  165. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/double_schubert_ring.md +0 -0
  166. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/grothendieck_ring.md +0 -0
  167. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/index.md +0 -0
  168. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/nil_hecke.md +0 -0
  169. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/parabolic_quantum_double_schubert_ring.md +0 -0
  170. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/parabolic_quantum_schubert_ring.md +0 -0
  171. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/quantum_double_schubert_ring.md +0 -0
  172. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/quantum_schubert_ring.md +0 -0
  173. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/schubert_ring.md +0 -0
  174. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/schubert/separated_descents.md +0 -0
  175. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/tensor_ring.md +0 -0
  176. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/rings/thompson_algebra.md +0 -0
  177. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/_common.md +0 -0
  178. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/_convert.md +0 -0
  179. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/double_schubert.md +0 -0
  180. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/grothendieck.md +0 -0
  181. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/index.md +0 -0
  182. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/polynomial_algebra.md +0 -0
  183. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/sage/quantum_schubert.md +0 -0
  184. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/common_polys.md +0 -0
  185. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/domain.md +0 -0
  186. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/functions.md +0 -0
  187. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/index.md +0 -0
  188. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/poly/index.md +0 -0
  189. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/poly/schub_poly.md +0 -0
  190. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/poly/variables.md +0 -0
  191. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/symmetric_polynomials/complete_sym.md +0 -0
  192. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/symmetric_polynomials/elem_sym.md +0 -0
  193. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/symmetric_polynomials/functions.md +0 -0
  194. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/symmetric_polynomials/index.md +0 -0
  195. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/symbolic/symmetric_polynomials/qelem_sym.md +0 -0
  196. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/_grid_print.md +0 -0
  197. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/_lazy.md +0 -0
  198. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/_mul_utils.md +0 -0
  199. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/_printable.md +0 -0
  200. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/argparse.md +0 -0
  201. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/index.md +0 -0
  202. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/logging.md +0 -0
  203. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/parsing.md +0 -0
  204. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/perm_utils.md +0 -0
  205. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/schub_lib.md +0 -0
  206. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/test_utils.md +0 -0
  207. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/utils/tuple_utils.md +0 -0
  208. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/docs/modules/schubmult/visualization.md +0 -0
  209. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/images/algostick.png +0 -0
  210. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/images/figure.png +0 -0
  211. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/mkdocs.yml +0 -0
  212. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/pyproject.toml +0 -0
  213. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/requirements.txt +0 -0
  214. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/setup.cfg +0 -0
  215. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/setup.py +0 -0
  216. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/requirements.txt +0 -0
  217. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/__init__.py +0 -0
  218. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/__init__.py +0 -0
  219. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/grothmult_double.py +0 -0
  220. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/grothmult_py.py +0 -0
  221. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/grothmult_q.py +0 -0
  222. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/grothmult_q_double.py +0 -0
  223. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/schubmult_double.py +0 -0
  224. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/schubmult_py.py +0 -0
  225. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/schubmult_q.py +0 -0
  226. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_scripts/schubmult_q_double.py +0 -0
  227. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/_typing.py +0 -0
  228. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/abc.py +0 -0
  229. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/__init__.py +0 -0
  230. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/anti_rc_graph.py +0 -0
  231. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/bpd.py +0 -0
  232. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/chute_move_element.py +0 -0
  233. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/crystal_graph.py +0 -0
  234. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/double_forest.py +0 -0
  235. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/hecke_plactic.py +0 -0
  236. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/hpd.py +0 -0
  237. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/increasing_tableau.py +0 -0
  238. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/indexed_forests.py +0 -0
  239. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/inversions_tableau.py +0 -0
  240. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/mbpd.py +0 -0
  241. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/nilplactic.py +0 -0
  242. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/permutation.py +0 -0
  243. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/pipe_dream.py +0 -0
  244. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/plactic.py +0 -0
  245. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/planar_history.py +0 -0
  246. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/quasi_crystal_graph.py +0 -0
  247. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/rc_graph.py +0 -0
  248. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/root_tableau.py +0 -0
  249. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/schub_poly.py +0 -0
  250. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/schubert_monomial_graph.py +0 -0
  251. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/set_valued_tableau.py +0 -0
  252. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/set_word.py +0 -0
  253. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/combinatorics/wc_graph.py +0 -0
  254. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/__init__.py +0 -0
  255. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/_accel.py +0 -0
  256. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/_shadow.py +0 -0
  257. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/double.py +0 -0
  258. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/groth.py +0 -0
  259. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/groth_double.py +0 -0
  260. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/groth_quantum.py +0 -0
  261. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/groth_quantum_double.py +0 -0
  262. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/quantum.py +0 -0
  263. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/quantum_double.py +0 -0
  264. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/separated_descents.py +0 -0
  265. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/single.py +0 -0
  266. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/mult/transition.py +0 -0
  267. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/__init__.py +0 -0
  268. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/base_ring.py +0 -0
  269. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/__init__.py +0 -0
  270. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/alt_rc_graph_ring.py +0 -0
  271. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/bounded_rc_factor_algebra.py +0 -0
  272. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/bounded_rc_forest_factor_algebra.py +0 -0
  273. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/bounded_wc_factor_algebra.py +0 -0
  274. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/bpd_ring.py +0 -0
  275. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/chute_move_ring.py +0 -0
  276. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/crystal_graph_ring.py +0 -0
  277. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/dual_rc_graph_ring.py +0 -0
  278. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/eg_plactic_ring.py +0 -0
  279. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/eg_ring.py +0 -0
  280. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/forest_invariant_rc_ring.py +0 -0
  281. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/forest_rc_ring.py +0 -0
  282. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/grass_tensor_algebra.py +0 -0
  283. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/grove_wc_ring.py +0 -0
  284. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/hw_rc_ring.py +0 -0
  285. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/key_rc_ring.py +0 -0
  286. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/plactic_algebra.py +0 -0
  287. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/qy_rc_graph_ring.py +0 -0
  288. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/rc_graph_ring.py +0 -0
  289. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/rc_schubert_ring.py +0 -0
  290. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/schubert_monomial_ring.py +0 -0
  291. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/schubert_rc_ring.py +0 -0
  292. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/slide_rc_ring.py +0 -0
  293. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/combinatorial/wc_graph_ring.py +0 -0
  294. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/direct_product_ring.py +0 -0
  295. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/__init__.py +0 -0
  296. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/_core.py +0 -0
  297. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/composition_schubert_basis.py +0 -0
  298. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/elementary_basis.py +0 -0
  299. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/forest_basis.py +0 -0
  300. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/free_algebra_basis.py +0 -0
  301. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/fundamental_slide_basis.py +0 -0
  302. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/glide_basis.py +0 -0
  303. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/grothendieck_basis.py +0 -0
  304. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/grove_basis.py +0 -0
  305. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/j_basis.py +0 -0
  306. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/jt_basis.py +0 -0
  307. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/key_basis.py +0 -0
  308. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/lascoux_basis.py +0 -0
  309. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/monomial_slide_basis.py +0 -0
  310. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/nelementary_basis.py +0 -0
  311. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/schubert_basis.py +0 -0
  312. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/schubert_schur_basis.py +0 -0
  313. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/schur_elementary_basis.py +0 -0
  314. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/separated_descents_basis.py +0 -0
  315. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/word_basis.py +0 -0
  316. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/free_algebra/z_basis.py +0 -0
  317. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/nsym.py +0 -0
  318. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/__init__.py +0 -0
  319. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/_core.py +0 -0
  320. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/anti_schubert_poly_basis.py +0 -0
  321. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/base_polynomial_basis.py +0 -0
  322. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/composition_schubert_poly_basis.py +0 -0
  323. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/double_forest_poly_basis.py +0 -0
  324. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/elem_sym_poly_basis.py +0 -0
  325. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/forest_poly_basis.py +0 -0
  326. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/fundamental_slide_poly_basis.py +0 -0
  327. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/glide_poly_basis.py +0 -0
  328. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/grothendieck_poly_basis.py +0 -0
  329. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/grove_poly_basis.py +0 -0
  330. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/key_poly_basis.py +0 -0
  331. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/lascoux_poly_basis.py +0 -0
  332. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/monomial_basis.py +0 -0
  333. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/monomial_slide_poly_basis.py +0 -0
  334. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/polynomial_basis.py +0 -0
  335. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/schubert_poly_basis.py +0 -0
  336. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/polynomial_algebra/sepdesc_poly_basis.py +0 -0
  337. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/printing.py +0 -0
  338. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/product_ring.py +0 -0
  339. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/quasisymmetric_functions.py +0 -0
  340. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/__init__.py +0 -0
  341. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/base_schubert_ring.py +0 -0
  342. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/beta_coxeter.py +0 -0
  343. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/chevalley.py +0 -0
  344. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/double_grothendieck_ring.py +0 -0
  345. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/double_schubert_ring.py +0 -0
  346. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/grothendieck_ring.py +0 -0
  347. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/nil_hecke.py +0 -0
  348. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/parabolic_quantum_double_schubert_ring.py +0 -0
  349. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/parabolic_quantum_schubert_ring.py +0 -0
  350. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/quantum_double_schubert_ring.py +0 -0
  351. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/quantum_schubert_ring.py +0 -0
  352. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/schubert_ring.py +0 -0
  353. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/schubert/separated_descents.py +0 -0
  354. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/tensor_ring.py +0 -0
  355. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/rings/thompson_algebra.py +0 -0
  356. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/__init__.py +0 -0
  357. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/_common.py +0 -0
  358. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/_convert.py +0 -0
  359. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/double_schubert.py +0 -0
  360. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/grothendieck.py +0 -0
  361. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/polynomial_algebra.py +0 -0
  362. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/quantum_schubert.py +0 -0
  363. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/sage/symengine_ring.py +0 -0
  364. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/__init__.py +0 -0
  365. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/common_polys.py +0 -0
  366. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/domain.py +0 -0
  367. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/functions.py +0 -0
  368. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/poly/__init__.py +0 -0
  369. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/poly/schub_poly.py +0 -0
  370. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/poly/variables.py +0 -0
  371. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/symmetric_polynomials/__init__.py +0 -0
  372. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/symmetric_polynomials/complete_sym.py +0 -0
  373. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/symmetric_polynomials/elem_sym.py +0 -0
  374. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/symmetric_polynomials/functions.py +0 -0
  375. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/symbolic/symmetric_polynomials/qelem_sym.py +0 -0
  376. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/__init__.py +0 -0
  377. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/_grid_print.py +0 -0
  378. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/_lazy.py +0 -0
  379. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/_mul_utils.py +0 -0
  380. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/_printable.py +0 -0
  381. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/argparse.py +0 -0
  382. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/logging.py +0 -0
  383. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/parsing.py +0 -0
  384. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/perm_utils.py +0 -0
  385. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/schub_lib.py +0 -0
  386. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/test_utils.py +0 -0
  387. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/utils/tuple_utils.py +0 -0
  388. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult/visualization.py +0 -0
  389. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult.egg-info/SOURCES.txt +0 -0
  390. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult.egg-info/dependency_links.txt +0 -0
  391. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult.egg-info/entry_points.txt +0 -0
  392. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult.egg-info/requires.txt +0 -0
  393. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult.egg-info/scm_file_list.json +0 -0
  394. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/src/schubmult.egg-info/top_level.txt +0 -0
  395. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_anti_rc_graph.py +0 -0
  396. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_bpd.py +0 -0
  397. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_indexed_forests.py +0 -0
  398. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_inversions_tableau.py +0 -0
  399. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_mbpd.py +0 -0
  400. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_nilplactic.py +0 -0
  401. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_permutation_order.py +0 -0
  402. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_pipe_dream.py +0 -0
  403. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_rc_graph.py +0 -0
  404. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/combinatorics/test_wc_graph.py +0 -0
  405. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_accel.py +0 -0
  406. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_double.py +0 -0
  407. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_groth.py +0 -0
  408. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_groth_double.py +0 -0
  409. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_groth_quantum.py +0 -0
  410. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_groth_quantum_double.py +0 -0
  411. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_probabilistic.py +0 -0
  412. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_quantum.py +0 -0
  413. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_separated_descents.py +0 -0
  414. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_single.py +0 -0
  415. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/mult/test_transition.py +0 -0
  416. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_combinatorial.py +0 -0
  417. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_duality.py +0 -0
  418. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_forest_rc_ring.py +0 -0
  419. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_free_algebra.py +0 -0
  420. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_parabolic_quantum_ring.py +0 -0
  421. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_polynomial_algebra.py +0 -0
  422. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_public_imports.py +0 -0
  423. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/rings/test_schubert_rings.py +0 -0
  424. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/sage/test_polynomial_algebra.py +0 -0
  425. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/sage/test_sage_rings.py +0 -0
  426. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/_cmd_line_json.py +0 -0
  427. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_double/grothmult_double_1_3_2T2_1_3_mixed-var.json +0 -0
  428. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_double/grothmult_double_1_3_2T2_1_3_mixed-var_display-positive.json +0 -0
  429. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_double/grothmult_double_2_1_3T2_1_3.json +0 -0
  430. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_double/grothmult_double_code_1_1T0_1T1.json +0 -0
  431. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_double/grothmult_double_code_2_0_1T1_1_mixed-var.json +0 -0
  432. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_double/grothmult_double_display-mode_raw_2_1_4_3T1_3_2_mixed-var.json +0 -0
  433. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_py/grothmult_py_1_3_2T1_3_2T2_1_3.json +0 -0
  434. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_py/grothmult_py_2_1_4_3T1_3_2.json +0 -0
  435. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_py/grothmult_py_3_1_2T2_1_3.json +0 -0
  436. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_py/grothmult_py_code_1_0_1T0_1.json +0 -0
  437. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_py/grothmult_py_display-mode_raw_3_1_2T1_3_2.json +0 -0
  438. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q/grothmult_q_1_3_2T1_3_2T2_1_3.json +0 -0
  439. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q/grothmult_q_2_1T2_1.json +0 -0
  440. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q/grothmult_q_2_3_1T3_1_2.json +0 -0
  441. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q/grothmult_q_code_0_2T1_1.json +0 -0
  442. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q/grothmult_q_code_1_1T2_0.json +0 -0
  443. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q/grothmult_q_display-mode_raw_3_1_2T1_3_2.json +0 -0
  444. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q_double/grothmult_q_double_1_3_2T2_1_3_mixed-var.json +0 -0
  445. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q_double/grothmult_q_double_2_1T2_1.json +0 -0
  446. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q_double/grothmult_q_double_2_1T2_1_mixed-var.json +0 -0
  447. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q_double/grothmult_q_double_code_1_0T1_0T1_0.json +0 -0
  448. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q_double/grothmult_q_double_code_1_1T0_1_mixed-var.json +0 -0
  449. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/grothmult_q_double/grothmult_q_double_display-mode_raw_2_3_1T1_3_2_mixed-var.json +0 -0
  450. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/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
  451. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_double/schubmult_double_code_3_0_3T2_1_0_2_display-positive.json +0 -0
  452. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_double/schubmult_double_code_coprod_5_0_1_2T2_3_display-positive.json +0 -0
  453. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_double/schubmult_double_coprod_3_6_1_5_2_4T2_4_display-positive_mixed-var.json +0 -0
  454. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_double/schubmult_double_mixed-var_display-positive_coprod_code_1_0_2_0_1T2_4.json +0 -0
  455. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_py/schubmult_py_code_5_0_3_1_2T1_0_3_2_0_5.json +0 -0
  456. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_q/schubmult_q_code_2_0_5T3_0_2.json +0 -0
  457. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_q/schubmult_q_parabolic_2_3_code_1_2T1_3.json +0 -0
  458. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_q_double/schubmult_q_double_code_1_0_3T2_0_2_mixed-var_display-positive.json +0 -0
  459. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_q_double/schubmult_q_double_code_2_0_5T3_0_2.json +0 -0
  460. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_q_double/schubmult_q_double_code_2_0_5T3_0_2_display-positive.json +0 -0
  461. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/data/schubmult_q_double/schubmult_q_double_parabolic_2_3_code_1_2T1_3_display-positive.json +0 -0
  462. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_grothmult_double.py +0 -0
  463. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_grothmult_py.py +0 -0
  464. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_grothmult_q.py +0 -0
  465. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_grothmult_q_double.py +0 -0
  466. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_schubmult_double.py +0 -0
  467. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_schubmult_py.py +0 -0
  468. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_schubmult_q.py +0 -0
  469. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/scripts/test_schubmult_q_double.py +0 -0
  470. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/test_api_surface.py +0 -0
  471. {schubmult-5.2.0b2 → schubmult-5.2.0b3}/tests/web/test_download_limits.py +0 -0
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.2.0b3
4
+
5
+ Pre-release of 5.2.0; identical to 5.2.0b2 apart from one bug fix in the manifestly positive
6
+ display of double Schubert structure constants. Pre-releases install with
7
+ `pip install --pre schubmult`; `pip install schubmult` keeps giving 5.1.1 until 5.2.0 is final.
8
+
9
+ ### Fixed
10
+
11
+ - **`posify` / `q_posify` crashed or returned a wrong expression in the one-dominates recursion**
12
+ (`schubmult_q_double --mixed-var --display-positive`, `schubmult.mult.positivity.posify`). When
13
+ $u$ one-dominates $w$, `posify` strips the first row and recurses on $(\phi_1 u, v', \phi_1 w)$
14
+ over the shifted alphabet $y_2, y_3, \ldots$, passed as a plain tuple. Two bugs met there: the
15
+ reduced coefficient was still computed in the unshifted alphabet, so any recursion that bottomed
16
+ out in the integer program returned $c(y_1, y_2, \ldots)$ instead of $c(y_2, y_3, \ldots)$; and
17
+ `compute_positive_rep` used `tuple.index`, which raises on the $z$ variables where
18
+ `GeneratingSet.index` returns `-1`. Hit for instance by $u=2431$, $v=1432$, $w=34512$, where
19
+ `schubmult_q_double 2 4 3 1 - 1 4 3 2 --mixed-var --display-positive` died with a bare
20
+ `Exception`. The reduced coefficient is now computed in the shifted alphabet and
21
+ `compute_positive_rep` accepts plain sequences. `posify` and `q_posify` now reconstruct every
22
+ structure constant on all of $S_4$ (5,558 classical and 11,422 quantum coefficients), and both
23
+ are covered by direct unit tests.
24
+
3
25
  ## 5.2.0b2
4
26
 
5
27
  Pre-release of 5.2.0: SageMath integration (`schubmult.sage`), a correctness fix for parabolic
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: schubmult
3
- Version: 5.2.0b2
3
+ Version: 5.2.0b3
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>
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '5.2.0b2'
22
- __version_tuple__ = version_tuple = (5, 2, 0, 'b2')
21
+ __version__ = version = '5.2.0b3'
22
+ __version_tuple__ = version_tuple = (5, 2, 0, 'b3')
23
23
 
24
- __commit_id__ = commit_id = 'g0e9592688'
24
+ __commit_id__ = commit_id = 'gb2213fbec'
@@ -51,6 +51,18 @@ from .double import schubmult_double, schubmult_double_pair, schubmult_double_pa
51
51
  logger = get_logger(__name__)
52
52
 
53
53
 
54
+ def _var_index(varlist, sym):
55
+ """Position of ``sym`` in ``varlist`` or ``-1``.
56
+
57
+ ``posify`` recurses with ``var2[1:]``, which turns a ``GeneratingSet`` into a plain tuple
58
+ whose ``.index`` raises instead of returning ``-1`` for foreign symbols.
59
+ """
60
+ try:
61
+ return varlist.index(sym)
62
+ except ValueError:
63
+ return -1
64
+
65
+
54
66
  def cbc_solver(msg=False):
55
67
  """PuLP ``COIN_CMD`` using the CBC binary bundled by ``pulp[cbc]``, falling back to ``cbc`` on PATH."""
56
68
  import pulp as pu
@@ -96,10 +108,10 @@ def compute_positive_rep(val, var2=None, var3=None, msg=False):
96
108
 
97
109
  frees = val.free_symbols
98
110
 
99
- varsimp2 = [m for m in frees if var2.index(m) != -1]
100
- varsimp3 = [m for m in frees if var3.index(m) != -1]
101
- varsimp2.sort(key=lambda k: var2.index(k))
102
- varsimp3.sort(key=lambda k: var3.index(k))
111
+ varsimp2 = [m for m in frees if _var_index(var2, m) != -1]
112
+ varsimp3 = [m for m in frees if _var_index(var3, m) != -1]
113
+ varsimp2.sort(key=lambda k: _var_index(var2, k))
114
+ varsimp3.sort(key=lambda k: _var_index(var3, k))
103
115
 
104
116
  var22 = tuple(varsimp2)
105
117
  var33 = tuple(varsimp3)
@@ -426,11 +438,14 @@ def posify(
426
438
  for arr, v3 in vp:
427
439
  tomul = prod([var2[1] - var3[arr[i]] for i in range(len(arr))])
428
440
 
429
- val2 = schubmult_double_pair(u3, v3, var2, var3).get(
441
+ # the reduced coefficient lives in the shifted alphabet var2[1:],
442
+ # matching the alphabet handed to the recursive posify call below
443
+ shifted_var2 = var2[1:]
444
+ val2 = schubmult_double_pair(u3, v3, shifted_var2, var3).get(
430
445
  w3,
431
446
  0,
432
447
  )
433
- val2 = posify(val2, u3, v3, w3, var2[1:], var3, msg, optimize=optimize)
448
+ val2 = posify(val2, u3, v3, w3, shifted_var2, var3, msg, optimize=optimize)
434
449
  val += tomul * val2
435
450
 
436
451
  return val
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: schubmult
3
- Version: 5.2.0b2
3
+ Version: 5.2.0b3
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>
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "5.2.0b3",
3
+ "distance": 0,
4
+ "node": "gb2213fbec9918447dad4e7b71e35066a35ccce25",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-12"
8
+ }
@@ -57,3 +57,37 @@ def test_forwardcoeff_matches_raw_value_when_formula_applies():
57
57
  found += 1
58
58
  assert expand(sp(forwardcoeff(u, v, w, y, z)) - sp(val)) == 0, (u, v, w)
59
59
  assert found > 0
60
+
61
+
62
+ def _manifestly_positive(expr):
63
+ # a minus sign is only allowed directly in front of a z-variable term
64
+ import re
65
+
66
+ return re.search(r"-\s*(\d+\*)?[y(]", str(expr)) is None
67
+
68
+
69
+ def test_posify_one_dominates_recursion_uses_shifted_alphabet():
70
+ # Regression: u one-dominates w, so posify recurses on (phi1(u), v3, phi1(w)) over the
71
+ # shifted alphabet var2[1:] (a plain tuple). Previously the reduced coefficient was computed
72
+ # in the unshifted alphabet and compute_positive_rep crashed on tuple.index.
73
+ u, v, w = Permutation([2, 4, 3, 1]), Permutation([1, 4, 3, 2]), Permutation([3, 4, 5, 1, 2])
74
+ val = schubmult_double({u: 1}, v, y, z)[w]
75
+ positive = posify(val, u, v, w, y, z)
76
+ assert expand(sp(positive) - sp(val)) == 0
77
+ assert _manifestly_positive(positive)
78
+
79
+
80
+ def test_compute_positive_rep_accepts_plain_tuple_alphabets():
81
+ val = (y[2] - z[1]) + 2 * (y[3] - z[2])
82
+ rep = compute_positive_rep(val, tuple(y[1:5]), tuple(z[1:5]))
83
+ assert expand(sp(rep) - sp(val)) == 0
84
+
85
+
86
+ def test_posify_reconstructs_raw_value_for_s4():
87
+ S4 = [Permutation(list(p)) for p in itertools.permutations(range(1, 5))]
88
+ for u in S4:
89
+ for v in S4:
90
+ for w, val in schubmult_double({u: 1}, v, y, z).items():
91
+ positive = posify(val, u, v, w, y, z)
92
+ assert expand(sp(positive) - sp(val)) == 0, (u, v, w)
93
+ assert _manifestly_positive(positive), (u, v, w, positive)
@@ -8,7 +8,7 @@ from schubmult import Permutation
8
8
  from schubmult.abc import x, y, z
9
9
  from schubmult.mult.double import schubmult_double
10
10
  from schubmult.mult.quantum import schubmult_q
11
- from schubmult.mult.quantum_double import factor_out_q, mult_poly_q_double, schubmult_q_double, schubmult_q_double_fast, schubpoly_quantum, single_variable
11
+ from schubmult.mult.quantum_double import factor_out_q, mult_poly_q_double, q_posify, schubmult_q_double, schubmult_q_double_fast, schubpoly_quantum, single_variable
12
12
  from schubmult.symbolic import S, sympify_sympy
13
13
  from schubmult.symbolic.poly.schub_poly import _vars
14
14
  from schubmult.symbolic.poly.variables import ZeroGeneratingSet
@@ -87,3 +87,36 @@ def test_factor_out_q_roundtrip():
87
87
  q_dict = factor_out_q(poly)
88
88
  total = sum((sp(k) * sp(v) for k, v in q_dict.items()), sympy.Integer(0))
89
89
  assert sympy.expand(total - sp(poly)) == 0
90
+
91
+
92
+ def _manifestly_positive(expr):
93
+ # a minus sign is only allowed directly in front of a z-variable term
94
+ import re
95
+
96
+ return re.search(r"-\s*(\d+\*)?[y(]", str(expr)) is None
97
+
98
+
99
+ def test_q_posify_regression_one_dominates_cases():
100
+ # These triples route through posify's one-dominates recursion (shifted alphabet) and
101
+ # previously either raised or produced an expression not equal to the raw coefficient.
102
+ cases = [
103
+ ([2, 4, 3, 1], [1, 4, 3, 2], [3, 4, 5, 1, 2]),
104
+ ([2, 4, 3, 1], [3, 1, 4, 2], [3, 5, 2, 1, 4]),
105
+ ([4, 2, 3, 1], [4, 1, 3, 2], [3, 4, 5, 1, 2]),
106
+ ]
107
+ for u, v, w in cases:
108
+ u, v, w = Permutation(u), Permutation(v), Permutation(w)
109
+ val = schubmult_q_double_fast({u: S.One}, v, y, z)[w]
110
+ positive = q_posify(u, v, w, val, y, z, q, False)
111
+ assert sympy.expand(sp(positive) - sp(val)) == 0, (u, v, w)
112
+ assert _manifestly_positive(positive), (u, v, w, positive)
113
+
114
+
115
+ def test_q_posify_reconstructs_raw_value_for_s4():
116
+ S4 = [Permutation(list(p)) for p in itertools.permutations(range(1, 5))]
117
+ for u in S4:
118
+ for v in S4:
119
+ for w, val in schubmult_q_double_fast({u: S.One}, v, y, z).items():
120
+ positive = q_posify(u, v, w, val, y, z, q, False)
121
+ assert sympy.expand(sp(positive) - sp(val)) == 0, (u, v, w)
122
+ assert _manifestly_positive(positive), (u, v, w, positive)
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "5.2.0b2",
3
- "distance": 0,
4
- "node": "g0e9592688b62d79fb76f04743ab306272b810431",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-10-09"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes