passagemath-combinat 10.6.42__cp314-cp314-musllinux_1_2_x86_64.whl

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 (400) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
  3. passagemath_combinat-10.6.42.dist-info/RECORD +400 -0
  4. passagemath_combinat-10.6.42.dist-info/WHEEL +5 -0
  5. passagemath_combinat-10.6.42.dist-info/top_level.txt +3 -0
  6. passagemath_combinat.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  7. passagemath_combinat.libs/libsymmetrica-81fe8739.so.3.0.0 +0 -0
  8. sage/algebras/affine_nil_temperley_lieb.py +263 -0
  9. sage/algebras/all.py +24 -0
  10. sage/algebras/all__sagemath_combinat.py +35 -0
  11. sage/algebras/askey_wilson.py +935 -0
  12. sage/algebras/associated_graded.py +345 -0
  13. sage/algebras/cellular_basis.py +350 -0
  14. sage/algebras/cluster_algebra.py +2766 -0
  15. sage/algebras/down_up_algebra.py +860 -0
  16. sage/algebras/free_algebra.py +1698 -0
  17. sage/algebras/free_algebra_element.py +345 -0
  18. sage/algebras/free_algebra_quotient.py +405 -0
  19. sage/algebras/free_algebra_quotient_element.py +295 -0
  20. sage/algebras/free_zinbiel_algebra.py +885 -0
  21. sage/algebras/hall_algebra.py +783 -0
  22. sage/algebras/hecke_algebras/all.py +4 -0
  23. sage/algebras/hecke_algebras/ariki_koike_algebra.py +1796 -0
  24. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +475 -0
  25. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +3520 -0
  26. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1473 -0
  27. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +1079 -0
  28. sage/algebras/iwahori_hecke_algebra.py +3095 -0
  29. sage/algebras/jordan_algebra.py +1773 -0
  30. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +113 -0
  31. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +156 -0
  32. sage/algebras/lie_conformal_algebras/all.py +18 -0
  33. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +134 -0
  34. sage/algebras/lie_conformal_algebras/examples.py +43 -0
  35. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +131 -0
  36. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +139 -0
  37. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +174 -0
  38. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +167 -0
  39. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +107 -0
  40. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +135 -0
  41. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +353 -0
  42. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +236 -0
  43. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +78 -0
  44. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +328 -0
  45. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +117 -0
  46. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +86 -0
  47. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +82 -0
  48. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +205 -0
  49. sage/algebras/nil_coxeter_algebra.py +191 -0
  50. sage/algebras/q_commuting_polynomials.py +673 -0
  51. sage/algebras/q_system.py +608 -0
  52. sage/algebras/quantum_clifford.py +959 -0
  53. sage/algebras/quantum_groups/ace_quantum_onsager.py +693 -0
  54. sage/algebras/quantum_groups/all.py +9 -0
  55. sage/algebras/quantum_groups/fock_space.py +2219 -0
  56. sage/algebras/quantum_groups/q_numbers.py +207 -0
  57. sage/algebras/quantum_groups/quantum_group_gap.py +2695 -0
  58. sage/algebras/quantum_groups/representations.py +591 -0
  59. sage/algebras/quantum_matrix_coordinate_algebra.py +1006 -0
  60. sage/algebras/quantum_oscillator.py +623 -0
  61. sage/algebras/quaternion_algebra.py +20 -0
  62. sage/algebras/quaternion_algebra_element.py +55 -0
  63. sage/algebras/rational_cherednik_algebra.py +525 -0
  64. sage/algebras/schur_algebra.py +670 -0
  65. sage/algebras/shuffle_algebra.py +1011 -0
  66. sage/algebras/splitting_algebra.py +779 -0
  67. sage/algebras/tensor_algebra.py +709 -0
  68. sage/algebras/yangian.py +1082 -0
  69. sage/algebras/yokonuma_hecke_algebra.py +1018 -0
  70. sage/all__sagemath_combinat.py +35 -0
  71. sage/combinat/SJT.py +255 -0
  72. sage/combinat/affine_permutation.py +2405 -0
  73. sage/combinat/algebraic_combinatorics.py +55 -0
  74. sage/combinat/all.py +53 -0
  75. sage/combinat/all__sagemath_combinat.py +195 -0
  76. sage/combinat/alternating_sign_matrix.py +2063 -0
  77. sage/combinat/baxter_permutations.py +346 -0
  78. sage/combinat/bijectionist.py +3220 -0
  79. sage/combinat/binary_recurrence_sequences.py +1180 -0
  80. sage/combinat/blob_algebra.py +685 -0
  81. sage/combinat/catalog_partitions.py +27 -0
  82. sage/combinat/chas/all.py +23 -0
  83. sage/combinat/chas/fsym.py +1180 -0
  84. sage/combinat/chas/wqsym.py +2601 -0
  85. sage/combinat/cluster_complex.py +326 -0
  86. sage/combinat/colored_permutations.py +2039 -0
  87. sage/combinat/colored_permutations_representations.py +964 -0
  88. sage/combinat/composition_signed.py +142 -0
  89. sage/combinat/composition_tableau.py +855 -0
  90. sage/combinat/constellation.py +1729 -0
  91. sage/combinat/core.py +751 -0
  92. sage/combinat/counting.py +12 -0
  93. sage/combinat/crystals/affine.py +742 -0
  94. sage/combinat/crystals/affine_factorization.py +518 -0
  95. sage/combinat/crystals/affinization.py +331 -0
  96. sage/combinat/crystals/alcove_path.py +2013 -0
  97. sage/combinat/crystals/all.py +22 -0
  98. sage/combinat/crystals/bkk_crystals.py +141 -0
  99. sage/combinat/crystals/catalog.py +115 -0
  100. sage/combinat/crystals/catalog_elementary_crystals.py +18 -0
  101. sage/combinat/crystals/catalog_infinity_crystals.py +33 -0
  102. sage/combinat/crystals/catalog_kirillov_reshetikhin.py +18 -0
  103. sage/combinat/crystals/crystals.py +257 -0
  104. sage/combinat/crystals/direct_sum.py +260 -0
  105. sage/combinat/crystals/elementary_crystals.py +1251 -0
  106. sage/combinat/crystals/fast_crystals.py +441 -0
  107. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +1205 -0
  108. sage/combinat/crystals/generalized_young_walls.py +1076 -0
  109. sage/combinat/crystals/highest_weight_crystals.py +436 -0
  110. sage/combinat/crystals/induced_structure.py +695 -0
  111. sage/combinat/crystals/infinity_crystals.py +730 -0
  112. sage/combinat/crystals/kac_modules.py +863 -0
  113. sage/combinat/crystals/kirillov_reshetikhin.py +4196 -0
  114. sage/combinat/crystals/kyoto_path_model.py +497 -0
  115. sage/combinat/crystals/letters.cpython-314-x86_64-linux-musl.so +0 -0
  116. sage/combinat/crystals/letters.pxd +79 -0
  117. sage/combinat/crystals/letters.pyx +3056 -0
  118. sage/combinat/crystals/littelmann_path.py +1518 -0
  119. sage/combinat/crystals/monomial_crystals.py +1262 -0
  120. sage/combinat/crystals/multisegments.py +462 -0
  121. sage/combinat/crystals/mv_polytopes.py +467 -0
  122. sage/combinat/crystals/pbw_crystal.py +511 -0
  123. sage/combinat/crystals/pbw_datum.cpython-314-x86_64-linux-musl.so +0 -0
  124. sage/combinat/crystals/pbw_datum.pxd +4 -0
  125. sage/combinat/crystals/pbw_datum.pyx +487 -0
  126. sage/combinat/crystals/polyhedral_realization.py +372 -0
  127. sage/combinat/crystals/spins.cpython-314-x86_64-linux-musl.so +0 -0
  128. sage/combinat/crystals/spins.pxd +21 -0
  129. sage/combinat/crystals/spins.pyx +756 -0
  130. sage/combinat/crystals/star_crystal.py +290 -0
  131. sage/combinat/crystals/subcrystal.py +464 -0
  132. sage/combinat/crystals/tensor_product.py +1177 -0
  133. sage/combinat/crystals/tensor_product_element.cpython-314-x86_64-linux-musl.so +0 -0
  134. sage/combinat/crystals/tensor_product_element.pxd +35 -0
  135. sage/combinat/crystals/tensor_product_element.pyx +1870 -0
  136. sage/combinat/crystals/virtual_crystal.py +420 -0
  137. sage/combinat/cyclic_sieving_phenomenon.py +204 -0
  138. sage/combinat/debruijn_sequence.cpython-314-x86_64-linux-musl.so +0 -0
  139. sage/combinat/debruijn_sequence.pyx +355 -0
  140. sage/combinat/decorated_permutation.py +270 -0
  141. sage/combinat/degree_sequences.cpython-314-x86_64-linux-musl.so +0 -0
  142. sage/combinat/degree_sequences.pyx +588 -0
  143. sage/combinat/derangements.py +527 -0
  144. sage/combinat/descent_algebra.py +1008 -0
  145. sage/combinat/diagram.py +1551 -0
  146. sage/combinat/diagram_algebras.py +5886 -0
  147. sage/combinat/dyck_word.py +4349 -0
  148. sage/combinat/e_one_star.py +1623 -0
  149. sage/combinat/enumerated_sets.py +123 -0
  150. sage/combinat/expnums.cpython-314-x86_64-linux-musl.so +0 -0
  151. sage/combinat/expnums.pyx +148 -0
  152. sage/combinat/fast_vector_partitions.cpython-314-x86_64-linux-musl.so +0 -0
  153. sage/combinat/fast_vector_partitions.pyx +346 -0
  154. sage/combinat/fqsym.py +1977 -0
  155. sage/combinat/free_dendriform_algebra.py +954 -0
  156. sage/combinat/free_prelie_algebra.py +1141 -0
  157. sage/combinat/fully_commutative_elements.py +1077 -0
  158. sage/combinat/fully_packed_loop.py +1523 -0
  159. sage/combinat/gelfand_tsetlin_patterns.py +1409 -0
  160. sage/combinat/gray_codes.py +311 -0
  161. sage/combinat/grossman_larson_algebras.py +667 -0
  162. sage/combinat/growth.py +4352 -0
  163. sage/combinat/hall_polynomial.py +188 -0
  164. sage/combinat/hillman_grassl.py +866 -0
  165. sage/combinat/integer_matrices.py +329 -0
  166. sage/combinat/integer_vectors_mod_permgroup.py +1238 -0
  167. sage/combinat/k_tableau.py +4564 -0
  168. sage/combinat/kazhdan_lusztig.py +215 -0
  169. sage/combinat/key_polynomial.py +885 -0
  170. sage/combinat/knutson_tao_puzzles.py +2286 -0
  171. sage/combinat/lr_tableau.py +311 -0
  172. sage/combinat/matrices/all.py +24 -0
  173. sage/combinat/matrices/hadamard_matrix.py +3790 -0
  174. sage/combinat/matrices/latin.py +2912 -0
  175. sage/combinat/misc.py +401 -0
  176. sage/combinat/multiset_partition_into_sets_ordered.py +3541 -0
  177. sage/combinat/ncsf_qsym/all.py +21 -0
  178. sage/combinat/ncsf_qsym/combinatorics.py +317 -0
  179. sage/combinat/ncsf_qsym/generic_basis_code.py +1427 -0
  180. sage/combinat/ncsf_qsym/ncsf.py +5637 -0
  181. sage/combinat/ncsf_qsym/qsym.py +4053 -0
  182. sage/combinat/ncsf_qsym/tutorial.py +447 -0
  183. sage/combinat/ncsym/all.py +21 -0
  184. sage/combinat/ncsym/bases.py +855 -0
  185. sage/combinat/ncsym/dual.py +593 -0
  186. sage/combinat/ncsym/ncsym.py +2076 -0
  187. sage/combinat/necklace.py +551 -0
  188. sage/combinat/non_decreasing_parking_function.py +634 -0
  189. sage/combinat/nu_dyck_word.py +1474 -0
  190. sage/combinat/output.py +861 -0
  191. sage/combinat/parallelogram_polyomino.py +4326 -0
  192. sage/combinat/parking_functions.py +1602 -0
  193. sage/combinat/partition_algebra.py +1998 -0
  194. sage/combinat/partition_kleshchev.py +1982 -0
  195. sage/combinat/partition_shifting_algebras.py +584 -0
  196. sage/combinat/partition_tuple.py +3114 -0
  197. sage/combinat/path_tableaux/all.py +13 -0
  198. sage/combinat/path_tableaux/catalog.py +29 -0
  199. sage/combinat/path_tableaux/dyck_path.py +380 -0
  200. sage/combinat/path_tableaux/frieze.py +476 -0
  201. sage/combinat/path_tableaux/path_tableau.py +728 -0
  202. sage/combinat/path_tableaux/semistandard.py +510 -0
  203. sage/combinat/perfect_matching.py +779 -0
  204. sage/combinat/plane_partition.py +3300 -0
  205. sage/combinat/q_bernoulli.cpython-314-x86_64-linux-musl.so +0 -0
  206. sage/combinat/q_bernoulli.pyx +128 -0
  207. sage/combinat/quickref.py +81 -0
  208. sage/combinat/recognizable_series.py +2051 -0
  209. sage/combinat/regular_sequence.py +4316 -0
  210. sage/combinat/regular_sequence_bounded.py +543 -0
  211. sage/combinat/restricted_growth.py +81 -0
  212. sage/combinat/ribbon.py +20 -0
  213. sage/combinat/ribbon_shaped_tableau.py +489 -0
  214. sage/combinat/ribbon_tableau.py +1180 -0
  215. sage/combinat/rigged_configurations/all.py +46 -0
  216. sage/combinat/rigged_configurations/bij_abstract_class.py +548 -0
  217. sage/combinat/rigged_configurations/bij_infinity.py +370 -0
  218. sage/combinat/rigged_configurations/bij_type_A.py +163 -0
  219. sage/combinat/rigged_configurations/bij_type_A2_dual.py +338 -0
  220. sage/combinat/rigged_configurations/bij_type_A2_even.py +218 -0
  221. sage/combinat/rigged_configurations/bij_type_A2_odd.py +199 -0
  222. sage/combinat/rigged_configurations/bij_type_B.py +900 -0
  223. sage/combinat/rigged_configurations/bij_type_C.py +267 -0
  224. sage/combinat/rigged_configurations/bij_type_D.py +771 -0
  225. sage/combinat/rigged_configurations/bij_type_D_tri.py +392 -0
  226. sage/combinat/rigged_configurations/bij_type_D_twisted.py +576 -0
  227. sage/combinat/rigged_configurations/bij_type_E67.py +402 -0
  228. sage/combinat/rigged_configurations/bijection.py +143 -0
  229. sage/combinat/rigged_configurations/kleber_tree.py +1475 -0
  230. sage/combinat/rigged_configurations/kr_tableaux.py +1898 -0
  231. sage/combinat/rigged_configurations/rc_crystal.py +461 -0
  232. sage/combinat/rigged_configurations/rc_infinity.py +540 -0
  233. sage/combinat/rigged_configurations/rigged_configuration_element.py +2403 -0
  234. sage/combinat/rigged_configurations/rigged_configurations.py +1918 -0
  235. sage/combinat/rigged_configurations/rigged_partition.cpython-314-x86_64-linux-musl.so +0 -0
  236. sage/combinat/rigged_configurations/rigged_partition.pxd +15 -0
  237. sage/combinat/rigged_configurations/rigged_partition.pyx +680 -0
  238. sage/combinat/rigged_configurations/tensor_product_kr_tableaux.py +499 -0
  239. sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py +428 -0
  240. sage/combinat/rsk.py +3438 -0
  241. sage/combinat/schubert_polynomial.py +508 -0
  242. sage/combinat/set_partition.py +3318 -0
  243. sage/combinat/set_partition_iterator.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/combinat/set_partition_iterator.pyx +136 -0
  245. sage/combinat/set_partition_ordered.py +1590 -0
  246. sage/combinat/sf/abreu_nigro.py +346 -0
  247. sage/combinat/sf/all.py +52 -0
  248. sage/combinat/sf/character.py +576 -0
  249. sage/combinat/sf/classical.py +319 -0
  250. sage/combinat/sf/dual.py +996 -0
  251. sage/combinat/sf/elementary.py +549 -0
  252. sage/combinat/sf/hall_littlewood.py +1028 -0
  253. sage/combinat/sf/hecke.py +336 -0
  254. sage/combinat/sf/homogeneous.py +464 -0
  255. sage/combinat/sf/jack.py +1428 -0
  256. sage/combinat/sf/k_dual.py +1458 -0
  257. sage/combinat/sf/kfpoly.py +447 -0
  258. sage/combinat/sf/llt.py +789 -0
  259. sage/combinat/sf/macdonald.py +2019 -0
  260. sage/combinat/sf/monomial.py +525 -0
  261. sage/combinat/sf/multiplicative.py +113 -0
  262. sage/combinat/sf/new_kschur.py +1786 -0
  263. sage/combinat/sf/ns_macdonald.py +964 -0
  264. sage/combinat/sf/orthogonal.py +246 -0
  265. sage/combinat/sf/orthotriang.py +355 -0
  266. sage/combinat/sf/powersum.py +963 -0
  267. sage/combinat/sf/schur.py +880 -0
  268. sage/combinat/sf/sf.py +1653 -0
  269. sage/combinat/sf/sfa.py +7053 -0
  270. sage/combinat/sf/symplectic.py +253 -0
  271. sage/combinat/sf/witt.py +721 -0
  272. sage/combinat/shifted_primed_tableau.py +2735 -0
  273. sage/combinat/shuffle.py +830 -0
  274. sage/combinat/sidon_sets.py +146 -0
  275. sage/combinat/similarity_class_type.py +1721 -0
  276. sage/combinat/sine_gordon.py +618 -0
  277. sage/combinat/six_vertex_model.py +784 -0
  278. sage/combinat/skew_partition.py +2053 -0
  279. sage/combinat/skew_tableau.py +2989 -0
  280. sage/combinat/sloane_functions.py +8935 -0
  281. sage/combinat/specht_module.py +1403 -0
  282. sage/combinat/species/all.py +48 -0
  283. sage/combinat/species/characteristic_species.py +321 -0
  284. sage/combinat/species/composition_species.py +273 -0
  285. sage/combinat/species/cycle_species.py +284 -0
  286. sage/combinat/species/empty_species.py +155 -0
  287. sage/combinat/species/functorial_composition_species.py +148 -0
  288. sage/combinat/species/generating_series.py +673 -0
  289. sage/combinat/species/library.py +148 -0
  290. sage/combinat/species/linear_order_species.py +169 -0
  291. sage/combinat/species/misc.py +83 -0
  292. sage/combinat/species/partition_species.py +290 -0
  293. sage/combinat/species/permutation_species.py +268 -0
  294. sage/combinat/species/product_species.py +423 -0
  295. sage/combinat/species/recursive_species.py +476 -0
  296. sage/combinat/species/set_species.py +192 -0
  297. sage/combinat/species/species.py +820 -0
  298. sage/combinat/species/structure.py +539 -0
  299. sage/combinat/species/subset_species.py +243 -0
  300. sage/combinat/species/sum_species.py +225 -0
  301. sage/combinat/subword.py +564 -0
  302. sage/combinat/subword_complex.py +2122 -0
  303. sage/combinat/subword_complex_c.cpython-314-x86_64-linux-musl.so +0 -0
  304. sage/combinat/subword_complex_c.pyx +119 -0
  305. sage/combinat/super_tableau.py +821 -0
  306. sage/combinat/superpartition.py +1154 -0
  307. sage/combinat/symmetric_group_algebra.py +3774 -0
  308. sage/combinat/symmetric_group_representations.py +1830 -0
  309. sage/combinat/t_sequences.py +877 -0
  310. sage/combinat/tableau.py +9506 -0
  311. sage/combinat/tableau_residues.py +860 -0
  312. sage/combinat/tableau_tuple.py +5353 -0
  313. sage/combinat/tiling.py +2432 -0
  314. sage/combinat/triangles_FHM.py +777 -0
  315. sage/combinat/tutorial.py +1857 -0
  316. sage/combinat/vector_partition.py +337 -0
  317. sage/combinat/words/abstract_word.py +1722 -0
  318. sage/combinat/words/all.py +59 -0
  319. sage/combinat/words/alphabet.py +268 -0
  320. sage/combinat/words/finite_word.py +7201 -0
  321. sage/combinat/words/infinite_word.py +113 -0
  322. sage/combinat/words/lyndon_word.py +652 -0
  323. sage/combinat/words/morphic.py +351 -0
  324. sage/combinat/words/morphism.py +3878 -0
  325. sage/combinat/words/paths.py +2932 -0
  326. sage/combinat/words/shuffle_product.py +278 -0
  327. sage/combinat/words/suffix_trees.py +1873 -0
  328. sage/combinat/words/word.py +769 -0
  329. sage/combinat/words/word_char.cpython-314-x86_64-linux-musl.so +0 -0
  330. sage/combinat/words/word_char.pyx +847 -0
  331. sage/combinat/words/word_datatypes.cpython-314-x86_64-linux-musl.so +0 -0
  332. sage/combinat/words/word_datatypes.pxd +4 -0
  333. sage/combinat/words/word_datatypes.pyx +1067 -0
  334. sage/combinat/words/word_generators.py +2026 -0
  335. sage/combinat/words/word_infinite_datatypes.py +1218 -0
  336. sage/combinat/words/word_options.py +99 -0
  337. sage/combinat/words/words.py +2396 -0
  338. sage/data_structures/all__sagemath_combinat.py +1 -0
  339. sage/databases/all__sagemath_combinat.py +13 -0
  340. sage/databases/findstat.py +4897 -0
  341. sage/databases/oeis.py +2058 -0
  342. sage/databases/sloane.py +393 -0
  343. sage/dynamics/all__sagemath_combinat.py +14 -0
  344. sage/dynamics/cellular_automata/all.py +7 -0
  345. sage/dynamics/cellular_automata/catalog.py +34 -0
  346. sage/dynamics/cellular_automata/elementary.py +612 -0
  347. sage/dynamics/cellular_automata/glca.py +477 -0
  348. sage/dynamics/cellular_automata/solitons.py +1463 -0
  349. sage/dynamics/finite_dynamical_system.py +1249 -0
  350. sage/dynamics/finite_dynamical_system_catalog.py +382 -0
  351. sage/games/all.py +7 -0
  352. sage/games/hexad.py +704 -0
  353. sage/games/quantumino.py +591 -0
  354. sage/games/sudoku.py +889 -0
  355. sage/games/sudoku_backtrack.cpython-314-x86_64-linux-musl.so +0 -0
  356. sage/games/sudoku_backtrack.pyx +189 -0
  357. sage/groups/all__sagemath_combinat.py +1 -0
  358. sage/groups/indexed_free_group.py +489 -0
  359. sage/libs/all__sagemath_combinat.py +6 -0
  360. sage/libs/lrcalc/__init__.py +1 -0
  361. sage/libs/lrcalc/lrcalc.py +525 -0
  362. sage/libs/symmetrica/__init__.py +7 -0
  363. sage/libs/symmetrica/all.py +101 -0
  364. sage/libs/symmetrica/kostka.pxi +168 -0
  365. sage/libs/symmetrica/part.pxi +193 -0
  366. sage/libs/symmetrica/plet.pxi +42 -0
  367. sage/libs/symmetrica/sab.pxi +196 -0
  368. sage/libs/symmetrica/sb.pxi +332 -0
  369. sage/libs/symmetrica/sc.pxi +192 -0
  370. sage/libs/symmetrica/schur.pxi +956 -0
  371. sage/libs/symmetrica/symmetrica.cpython-314-x86_64-linux-musl.so +0 -0
  372. sage/libs/symmetrica/symmetrica.pxi +1172 -0
  373. sage/libs/symmetrica/symmetrica.pyx +39 -0
  374. sage/monoids/all.py +13 -0
  375. sage/monoids/automatic_semigroup.py +1054 -0
  376. sage/monoids/free_abelian_monoid.py +315 -0
  377. sage/monoids/free_abelian_monoid_element.cpython-314-x86_64-linux-musl.so +0 -0
  378. sage/monoids/free_abelian_monoid_element.pxd +16 -0
  379. sage/monoids/free_abelian_monoid_element.pyx +397 -0
  380. sage/monoids/free_monoid.py +335 -0
  381. sage/monoids/free_monoid_element.py +431 -0
  382. sage/monoids/hecke_monoid.py +65 -0
  383. sage/monoids/string_monoid.py +817 -0
  384. sage/monoids/string_monoid_element.py +547 -0
  385. sage/monoids/string_ops.py +143 -0
  386. sage/monoids/trace_monoid.py +972 -0
  387. sage/rings/all__sagemath_combinat.py +2 -0
  388. sage/sat/all.py +4 -0
  389. sage/sat/boolean_polynomials.py +405 -0
  390. sage/sat/converters/__init__.py +6 -0
  391. sage/sat/converters/anf2cnf.py +14 -0
  392. sage/sat/converters/polybori.py +611 -0
  393. sage/sat/solvers/__init__.py +5 -0
  394. sage/sat/solvers/cryptominisat.py +287 -0
  395. sage/sat/solvers/dimacs.py +783 -0
  396. sage/sat/solvers/picosat.py +228 -0
  397. sage/sat/solvers/sat_lp.py +156 -0
  398. sage/sat/solvers/satsolver.cpython-314-x86_64-linux-musl.so +0 -0
  399. sage/sat/solvers/satsolver.pxd +3 -0
  400. sage/sat/solvers/satsolver.pyx +405 -0
@@ -0,0 +1,370 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Bijection between rigged configurations for `B(\infty)` and marginally large tableaux
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2015-07-01): Initial version
9
+
10
+ REFERENCES:
11
+
12
+ .. [RC-MLT] Ben Salisbury and Travis Scrimshaw. *Connecting marginally
13
+ large tableaux and rigged configurations via crystals*.
14
+ Preprint. :arxiv:`1505.07040`.
15
+ """
16
+
17
+ # ****************************************************************************
18
+ # Copyright (C) 2015 Travis Scrimshaw <tscrim@ucdavis.edu>
19
+ #
20
+ # Distributed under the terms of the GNU General Public License (GPL)
21
+ #
22
+ # This code is distributed in the hope that it will be useful,
23
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
24
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25
+ # General Public License for more details.
26
+ #
27
+ # The full text of the GPL is available at:
28
+ #
29
+ # https://www.gnu.org/licenses/
30
+ # ****************************************************************************
31
+
32
+ from sage.combinat.rigged_configurations.rigged_configurations import RiggedConfigurations
33
+
34
+ from sage.combinat.rigged_configurations.bij_type_B import (KRTToRCBijectionTypeB,
35
+ RCToKRTBijectionTypeB)
36
+ from sage.combinat.rigged_configurations.bij_type_D import (KRTToRCBijectionTypeD,
37
+ RCToKRTBijectionTypeD)
38
+ from sage.combinat.rigged_configurations.bij_type_A import (KRTToRCBijectionTypeA,
39
+ RCToKRTBijectionTypeA)
40
+ from sage.combinat.rigged_configurations.bij_type_C import (KRTToRCBijectionTypeC,
41
+ RCToKRTBijectionTypeC)
42
+ from sage.combinat.rigged_configurations.tensor_product_kr_tableaux import TensorProductOfKirillovReshetikhinTableaux
43
+ from sage.combinat.crystals.letters import CrystalOfLetters
44
+ from sage.categories.morphism import Morphism
45
+ from sage.categories.homset import Hom
46
+ from sage.misc.flatten import flatten
47
+
48
+
49
+ class FromTableauIsomorphism(Morphism):
50
+ r"""
51
+ Crystal isomorphism of `B(\infty)` in the tableau model to the
52
+ rigged configuration model.
53
+ """
54
+
55
+ def _repr_type(self):
56
+ r"""
57
+ Return the type of morphism of ``self``.
58
+
59
+ EXAMPLES::
60
+
61
+ sage: RC = crystals.infinity.RiggedConfigurations(['A',3])
62
+ sage: T = crystals.infinity.Tableaux(['A',3])
63
+ sage: phi = RC.coerce_map_from(T)
64
+ sage: phi._repr_type()
65
+ 'Crystal Isomorphism'
66
+ """
67
+ return "Crystal Isomorphism"
68
+
69
+ def __invert__(self):
70
+ r"""
71
+ Return the inverse of ``self``.
72
+
73
+ EXAMPLES::
74
+
75
+ sage: RC = crystals.infinity.RiggedConfigurations(['A',3])
76
+ sage: T = crystals.infinity.Tableaux(['A',3])
77
+ sage: phi = RC.coerce_map_from(T)
78
+ sage: ~phi
79
+ Crystal Isomorphism morphism:
80
+ From: The infinity crystal of rigged configurations of type ['A', 3]
81
+ To: The infinity crystal of tableaux of type ['A', 3]
82
+ """
83
+ return FromRCIsomorphism(Hom(self.codomain(), self.domain()))
84
+
85
+ def _call_(self, x):
86
+ r"""
87
+ Return the image of ``x`` in the rigged configuration model
88
+ of `B(\infty)`.
89
+
90
+ EXAMPLES::
91
+
92
+ sage: RC = crystals.infinity.RiggedConfigurations(['A',3])
93
+ sage: T = crystals.infinity.Tableaux(['A',3])
94
+ sage: phi = RC.coerce_map_from(T)
95
+ sage: x = T.an_element().f_string([2,2,1,1,3,2,1,2,1,3])
96
+ sage: y = phi(x); ascii_art(y)
97
+ -4[ ][ ][ ][ ]-2 -3[ ][ ][ ]-1 -1[ ][ ]-1
98
+ -2[ ]-1
99
+ sage: (~phi)(y) == x
100
+ True
101
+ """
102
+ conj = x.to_tableau().conjugate()
103
+ ct = self.domain().cartan_type()
104
+ act = ct.affine()
105
+ TP = TensorProductOfKirillovReshetikhinTableaux(act, [[r,1] for r in conj.shape()])
106
+ elt = TP(pathlist=[reversed(row) for row in conj])
107
+
108
+ if ct.type() == 'A':
109
+ bij = KRTToRCBijectionTypeA(elt)
110
+ elif ct.type() == 'B':
111
+ bij = MLTToRCBijectionTypeB(elt)
112
+ elif ct.type() == 'C':
113
+ bij = KRTToRCBijectionTypeC(elt)
114
+ elif ct.type() == 'D':
115
+ bij = MLTToRCBijectionTypeD(elt)
116
+ else:
117
+ raise NotImplementedError("bijection of type {} not yet implemented".format(ct))
118
+ return self.codomain()(bij.run())
119
+
120
+
121
+ class FromRCIsomorphism(Morphism):
122
+ r"""
123
+ Crystal isomorphism of `B(\infty)` in the rigged configuration model
124
+ to the tableau model.
125
+ """
126
+
127
+ def _repr_type(self):
128
+ r"""
129
+ Return the type of morphism of ``self``.
130
+
131
+ EXAMPLES::
132
+
133
+ sage: T = crystals.infinity.Tableaux(['A',3])
134
+ sage: RC = crystals.infinity.RiggedConfigurations(['A',3])
135
+ sage: phi = T.coerce_map_from(RC)
136
+ sage: phi._repr_type()
137
+ 'Crystal Isomorphism'
138
+ """
139
+ return "Crystal Isomorphism"
140
+
141
+ def __invert__(self):
142
+ r"""
143
+ Return the inverse of ``self``.
144
+
145
+ EXAMPLES::
146
+
147
+ sage: T = crystals.infinity.Tableaux(['A',3])
148
+ sage: RC = crystals.infinity.RiggedConfigurations(['A',3])
149
+ sage: phi = T.coerce_map_from(RC)
150
+ sage: ~phi
151
+ Crystal Isomorphism morphism:
152
+ From: The infinity crystal of tableaux of type ['A', 3]
153
+ To: The infinity crystal of rigged configurations of type ['A', 3]
154
+ """
155
+ return FromTableauIsomorphism(Hom(self.codomain(), self.domain()))
156
+
157
+ def _call_(self, x):
158
+ r"""
159
+ Return the image of ``x`` in the tableau model of `B(\infty)`.
160
+
161
+ EXAMPLES::
162
+
163
+ sage: T = crystals.infinity.Tableaux(['A',3])
164
+ sage: RC = crystals.infinity.RiggedConfigurations(['A',3])
165
+ sage: phi = T.coerce_map_from(RC)
166
+ sage: x = RC.an_element().f_string([2,2,1,1,3,2,1,2,1,3])
167
+ sage: y = phi(x); y.pp()
168
+ 1 1 1 1 1 2 2 3 4
169
+ 2 2 3 4
170
+ 3
171
+ sage: (~phi)(y) == x
172
+ True
173
+ """
174
+ lam = [sum(nu)+1 for nu in x]
175
+ ct = self.domain().cartan_type()
176
+ I = ct.index_set()
177
+ if ct.type() == 'D':
178
+ lam[-2] = max(lam[-2], lam[-1])
179
+ lam.pop()
180
+ l = sum([[[r+1, 1]]*v for r, v in enumerate(lam[:-1])], [])
181
+ n = len(I)
182
+ l = l + sum([[[n,1], [n-1,1]] for k in range(lam[-1])], [])
183
+ else:
184
+ if ct.type() == 'B':
185
+ lam[-1] *= 2
186
+ l = sum([[[r, 1]]*lam[i] for i, r in enumerate(I)], [])
187
+
188
+ RC = RiggedConfigurations(ct.affine(), reversed(l))
189
+ elt = RC(x)
190
+ if ct.type() == 'A':
191
+ bij = RCToKRTBijectionTypeA(elt)
192
+ elif ct.type() == 'B':
193
+ bij = RCToMLTBijectionTypeB(elt)
194
+ elif ct.type() == 'C':
195
+ bij = RCToKRTBijectionTypeC(elt)
196
+ elif ct.type() == 'D':
197
+ bij = RCToMLTBijectionTypeD(elt)
198
+ else:
199
+ raise NotImplementedError("bijection of type {} not yet implemented".format(ct))
200
+ y = bij.run()
201
+
202
+ # Now make the result marginally large
203
+ y = [list(c) for c in y]
204
+ cur = []
205
+ L = CrystalOfLetters(ct)
206
+ for i in I:
207
+ cur.insert(0, L(i))
208
+ c = y.count(cur)
209
+ while c > 1:
210
+ y.remove(cur)
211
+ c -= 1
212
+ return self.codomain()(*flatten(y))
213
+
214
+
215
+ class MLTToRCBijectionTypeB(KRTToRCBijectionTypeB):
216
+ def run(self):
217
+ r"""
218
+ Run the bijection from a marginally large tableaux to a rigged
219
+ configuration.
220
+
221
+ EXAMPLES::
222
+
223
+ sage: vct = CartanType(['B',4]).as_folding()
224
+ sage: RC = crystals.infinity.RiggedConfigurations(vct)
225
+ sage: T = crystals.infinity.Tableaux(['B',4])
226
+ sage: Psi = T.crystal_morphism({T.module_generators[0]: RC.module_generators[0]})
227
+ sage: TS = [x.value for x in T.subcrystal(max_depth=4)]
228
+ sage: all(Psi(b) == RC(b) for b in TS) # long time # indirect doctest
229
+ True
230
+ """
231
+ for cur_crystal in reversed(self.tp_krt):
232
+ cur_column = list(cur_crystal)
233
+ self.cur_path.insert(0, []) # Prepend an empty list
234
+ self.cur_dims.insert(0, [0, 1])
235
+
236
+ for letter in reversed(cur_column):
237
+ self.cur_dims[0][0] += 1
238
+
239
+ val = letter.value # Convert from a CrystalOfLetter to an Integer
240
+
241
+ # Build the next state
242
+ self.cur_path[0].insert(0, [letter]) # Prepend the value
243
+ if self.cur_dims[0][0] == self.n:
244
+ # Spinor case, we go from \Lambda_{n-1} -> 2\Lambda_n
245
+ self.cur_dims.insert(1, [self.n,1])
246
+ self.cur_path.insert(1, self.cur_path[0])
247
+
248
+ self.next_state(val)
249
+
250
+ self.ret_rig_con.set_immutable() # Return it to immutable
251
+ return self.ret_rig_con
252
+
253
+
254
+ class RCToMLTBijectionTypeB(RCToKRTBijectionTypeB):
255
+ def run(self):
256
+ r"""
257
+ Run the bijection from rigged configurations to a marginally large
258
+ tableau.
259
+
260
+ EXAMPLES::
261
+
262
+ sage: vct = CartanType(['B',4]).as_folding()
263
+ sage: RC = crystals.infinity.RiggedConfigurations(vct)
264
+ sage: T = crystals.infinity.Tableaux(['B',4])
265
+ sage: Psi = RC.crystal_morphism({RC.module_generators[0]: T.module_generators[0]})
266
+ sage: RCS = [x.value for x in RC.subcrystal(max_depth=4)]
267
+ sage: all(Psi(nu) == T(nu) for nu in RCS) # long time # indirect doctest
268
+ True
269
+ """
270
+ letters = CrystalOfLetters(self.rigged_con.parent()._cartan_type.classical())
271
+ ret_crystal_path = []
272
+
273
+ while self.cur_dims:
274
+ dim = self.cur_dims[0]
275
+ ret_crystal_path.append([])
276
+
277
+ # Assumption: all factors are single columns
278
+ if dim[0] == self.n:
279
+ # Spinor case, since we've done 2\Lambda_n -> \Lambda_{n-1}
280
+ self.cur_dims.pop(1)
281
+
282
+ while dim[0] > 0:
283
+ dim[0] -= 1 # This takes care of the indexing
284
+ b = self.next_state(dim[0])
285
+
286
+ # Make sure we have a crystal letter
287
+ ret_crystal_path[-1].append(letters(b)) # Append the rank
288
+
289
+ self.cur_dims.pop(0) # Pop off the leading column
290
+
291
+ return ret_crystal_path
292
+
293
+
294
+ class MLTToRCBijectionTypeD(KRTToRCBijectionTypeD):
295
+ def run(self):
296
+ r"""
297
+ Run the bijection from a marginally large tableaux to a rigged
298
+ configuration.
299
+
300
+ EXAMPLES::
301
+
302
+ sage: RC = crystals.infinity.RiggedConfigurations(['D',4])
303
+ sage: T = crystals.infinity.Tableaux(['D',4])
304
+ sage: Psi = T.crystal_morphism({T.module_generators[0]: RC.module_generators[0]})
305
+ sage: TS = [x.value for x in T.subcrystal(max_depth=4)]
306
+ sage: all(Psi(b) == RC(b) for b in TS) # long time # indirect doctest
307
+ True
308
+ """
309
+ for cur_crystal in reversed(self.tp_krt):
310
+ # Iterate through the columns
311
+ cur_column = list(cur_crystal)
312
+ self.cur_path.insert(0, []) # Prepend an empty list
313
+
314
+ self.cur_dims.insert(0, [0, 1])
315
+
316
+ for letter in reversed(cur_column):
317
+ self.cur_dims[0][0] += 1
318
+
319
+ val = letter.value # Convert from a CrystalOfLetter to an Integer
320
+
321
+ # Build the next state
322
+ self.cur_path[0].insert(0, [letter]) # Prepend the value
323
+ self.next_state(val)
324
+
325
+ if self.cur_dims[0][0] == self.n - 1:
326
+ # Spinor case, we go from \Lambda_{n-2} -> \Lambda_{n-1} + \Lambda_n
327
+ self.cur_dims.insert(1, [self.n,1])
328
+ self.cur_path.insert(1, self.cur_path[0] + [None])
329
+
330
+ self.ret_rig_con.set_immutable() # Return it to immutable
331
+ return self.ret_rig_con
332
+
333
+
334
+ class RCToMLTBijectionTypeD(RCToKRTBijectionTypeD):
335
+ def run(self):
336
+ r"""
337
+ Run the bijection from rigged configurations to a marginally large
338
+ tableau.
339
+
340
+ EXAMPLES::
341
+
342
+ sage: RC = crystals.infinity.RiggedConfigurations(['D',4])
343
+ sage: T = crystals.infinity.Tableaux(['D',4])
344
+ sage: Psi = RC.crystal_morphism({RC.module_generators[0]: T.module_generators[0]})
345
+ sage: RCS = [x.value for x in RC.subcrystal(max_depth=4)]
346
+ sage: all(Psi(nu) == T(nu) for nu in RCS) # long time # indirect doctest
347
+ True
348
+ """
349
+ letters = CrystalOfLetters(self.rigged_con.parent()._cartan_type.classical())
350
+ ret_crystal_path = []
351
+
352
+ while self.cur_dims:
353
+ dim = self.cur_dims[0]
354
+ ret_crystal_path.append([])
355
+
356
+ # Assumption: all factors are single columns
357
+ if dim[0] == self.n - 1:
358
+ # Spinor case, since we've done \Lambda_n + \Lambda_{n-1} -> \Lambda_{n-2}
359
+ self.cur_dims.pop(1)
360
+
361
+ while dim[0] > 0:
362
+ dim[0] -= 1 # This takes care of the indexing
363
+ b = self.next_state(dim[0])
364
+
365
+ # Make sure we have a crystal letter
366
+ ret_crystal_path[-1].append(letters(b)) # Append the rank
367
+
368
+ self.cur_dims.pop(0) # Pop off the leading column
369
+
370
+ return ret_crystal_path
@@ -0,0 +1,163 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Bijection classes for type `A_n^{(1)}`
5
+
6
+ Part of the (internal) classes which run the bijection between rigged
7
+ configurations and tensor products of Kirillov-Reshetikhin tableaux of
8
+ type `A_n^{(1)}`.
9
+
10
+ AUTHORS:
11
+
12
+ - Travis Scrimshaw (2011-04-15): Initial version
13
+
14
+ TESTS::
15
+
16
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 4, 1], [[2,1]])
17
+ sage: from sage.combinat.rigged_configurations.bij_type_A import KRTToRCBijectionTypeA
18
+ sage: bijection = KRTToRCBijectionTypeA(KRT(pathlist=[[5,2]]))
19
+ sage: TestSuite(bijection).run()
20
+ sage: RC = RiggedConfigurations(['A', 4, 1], [[2, 1]])
21
+ sage: from sage.combinat.rigged_configurations.bij_type_A import RCToKRTBijectionTypeA
22
+ sage: bijection = RCToKRTBijectionTypeA(RC(partition_list=[[],[],[],[]]))
23
+ sage: TestSuite(bijection).run()
24
+ """
25
+
26
+ # ****************************************************************************
27
+ # Copyright (C) 2011, 2012 Travis Scrimshaw <tscrim@ucdavis.edu>
28
+ #
29
+ # Distributed under the terms of the GNU General Public License (GPL)
30
+ #
31
+ # This code is distributed in the hope that it will be useful,
32
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
33
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
34
+ # General Public License for more details.
35
+ #
36
+ # The full text of the GPL is available at:
37
+ #
38
+ # https://www.gnu.org/licenses/
39
+ # ****************************************************************************
40
+
41
+ from sage.combinat.rigged_configurations.bij_abstract_class import KRTToRCBijectionAbstract
42
+ from sage.combinat.rigged_configurations.bij_abstract_class import RCToKRTBijectionAbstract
43
+
44
+
45
+ class KRTToRCBijectionTypeA(KRTToRCBijectionAbstract):
46
+ r"""
47
+ Specific implementation of the bijection from KR tableaux to rigged
48
+ configurations for type `A_n^{(1)}`.
49
+ """
50
+
51
+ def next_state(self, val):
52
+ r"""
53
+ Build the next state for type `A_n^{(1)}`.
54
+
55
+ EXAMPLES::
56
+
57
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 4, 1], [[2,1]])
58
+ sage: from sage.combinat.rigged_configurations.bij_type_A import KRTToRCBijectionTypeA
59
+ sage: bijection = KRTToRCBijectionTypeA(KRT(pathlist=[[4,3]]))
60
+ sage: bijection.cur_path.insert(0, [])
61
+ sage: bijection.cur_dims.insert(0, [0, 1])
62
+ sage: bijection.cur_path[0].insert(0, [3])
63
+ sage: bijection.next_state(3)
64
+ """
65
+ tableau_height = len(self.cur_path[0]) - 1
66
+ n = self.n
67
+
68
+ # Note first we subtract off for the n = max value (in the path) - 1,
69
+ # then we remove 1 to match the indices between math and programming.
70
+ if val - 1 > tableau_height:
71
+ # Always add a cell to the first singular value in the first
72
+ # tableau we are updating.
73
+ if len(self.ret_rig_con[val - 2]) > 0:
74
+ max_width = self.ret_rig_con[val - 2][0]
75
+ else:
76
+ max_width = 1
77
+
78
+ # Insert a cell into the rightmost rigged partition
79
+ max_width = self.ret_rig_con[val - 2].insert_cell(max_width)
80
+
81
+ # Move to the left and update values as we have finished modifying
82
+ # everything which affects its vacancy/partition values
83
+ for a in reversed(range(tableau_height, val - 2)):
84
+ max_width = self.ret_rig_con[a].insert_cell(max_width)
85
+ self._update_vacancy_nums(a + 1)
86
+ self._update_partition_values(a + 1)
87
+
88
+ # Update the final rigged tableau
89
+ # Note if tabelauHeight = n+1, then we must have val = n+1 (in order
90
+ # to be column strict increasing), but then tableau_height is never
91
+ # greater than val, so we don't enter into this statement.
92
+ self._update_vacancy_nums(tableau_height)
93
+ self._update_partition_values(tableau_height)
94
+
95
+ if val - 1 < n:
96
+ self._update_vacancy_nums(val - 1)
97
+
98
+ if tableau_height > 0:
99
+ self._update_vacancy_nums(tableau_height - 1)
100
+ elif tableau_height - 1 < n:
101
+ # Otherwise we just need to update the vacancy numbers that are affected
102
+ if tableau_height < n:
103
+ self._update_vacancy_nums(tableau_height)
104
+
105
+ if tableau_height > 0:
106
+ self._update_vacancy_nums(tableau_height - 1)
107
+
108
+
109
+ class RCToKRTBijectionTypeA(RCToKRTBijectionAbstract):
110
+ r"""
111
+ Specific implementation of the bijection from rigged configurations to
112
+ tensor products of KR tableaux for type `A_n^{(1)}`.
113
+ """
114
+
115
+ def next_state(self, height):
116
+ r"""
117
+ Build the next state for type `A_n^{(1)}`.
118
+
119
+ EXAMPLES::
120
+
121
+ sage: RC = RiggedConfigurations(['A', 4, 1], [[2, 1]])
122
+ sage: from sage.combinat.rigged_configurations.bij_type_A import RCToKRTBijectionTypeA
123
+ sage: bijection = RCToKRTBijectionTypeA(RC(partition_list=[[1],[1],[1],[1]]))
124
+ sage: bijection.next_state(1)
125
+ 5
126
+ """
127
+ height -= 1 # indexing
128
+ n = self.n
129
+ ell = [None] * n
130
+ b = None
131
+
132
+ # Calculate the rank and ell values
133
+ last_size = 0
134
+ a = height
135
+ for partition in self.cur_partitions[height:]:
136
+ ell[a] = self._find_singular_string(partition, last_size)
137
+
138
+ if ell[a] is None:
139
+ b = a + 1
140
+ break
141
+ else:
142
+ last_size = partition[ell[a]]
143
+ a += 1
144
+
145
+ if b is None:
146
+ b = n + 1
147
+
148
+ # Determine the new rigged configuration by removing a box from the selected
149
+ # string and then making the new string singular
150
+ row_num = self.cur_partitions[0].remove_cell(ell[0])
151
+ for a in range(1, n):
152
+ row_num_next = self.cur_partitions[a].remove_cell(ell[a])
153
+
154
+ self._update_vacancy_numbers(a - 1)
155
+ if row_num is not None:
156
+ self.cur_partitions[a - 1].rigging[row_num] = self.cur_partitions[a - 1].vacancy_numbers[row_num]
157
+ row_num = row_num_next
158
+
159
+ self._update_vacancy_numbers(n - 1)
160
+ if row_num is not None:
161
+ self.cur_partitions[n - 1].rigging[row_num] = self.cur_partitions[n - 1].vacancy_numbers[row_num]
162
+
163
+ return b