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,461 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Crystal of rigged configurations
5
+
6
+ We only consider the highest weight crystal structure, not the
7
+ Kirillov-Reshetikhin structure, and we extend this to symmetrizable types.
8
+
9
+ AUTHORS:
10
+
11
+ - Travis Scrimshaw (2010-09-26): initial version
12
+ """
13
+
14
+ # ****************************************************************************
15
+ # Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
16
+ #
17
+ # Distributed under the terms of the GNU General Public License (GPL)
18
+ #
19
+ # This code is distributed in the hope that it will be useful,
20
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ # General Public License for more details.
23
+ #
24
+ # The full text of the GPL is available at:
25
+ #
26
+ # https://www.gnu.org/licenses/
27
+ # ****************************************************************************
28
+ from itertools import repeat
29
+ from sage.misc.lazy_attribute import lazy_attribute
30
+ from sage.structure.unique_representation import UniqueRepresentation
31
+ from sage.structure.parent import Parent
32
+ from sage.categories.highest_weight_crystals import HighestWeightCrystals
33
+ from sage.categories.regular_crystals import RegularCrystals
34
+ from sage.categories.classical_crystals import ClassicalCrystals
35
+ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
36
+ from sage.combinat.root_system.cartan_type import CartanType
37
+ from sage.combinat.rigged_configurations.rigged_configurations import RiggedConfigurations
38
+ from sage.combinat.rigged_configurations.rigged_configuration_element import (
39
+ RiggedConfigurationElement, RCHighestWeightElement, RCHWNonSimplyLacedElement)
40
+ from sage.combinat.rigged_configurations.rigged_partition import RiggedPartition
41
+
42
+ # Note on implementation, this class is used for simply-laced types only
43
+
44
+
45
+ class CrystalOfRiggedConfigurations(UniqueRepresentation, Parent):
46
+ r"""
47
+ A highest weight crystal of rigged configurations.
48
+
49
+ The crystal structure for finite simply-laced types is given
50
+ in [CrysStructSchilling06]_. These were then shown to be the crystal
51
+ operators in all finite types in [SS2015]_, all simply-laced and
52
+ a large class of foldings of simply-laced types in [SS2015II]_,
53
+ and all symmetrizable types (uniformly) in [SS2017]_.
54
+
55
+ INPUT:
56
+
57
+ - ``cartan_type`` -- (optional) a Cartan type or a Cartan type
58
+ given as a folding
59
+
60
+ - ``wt`` -- the highest weight vector in the weight lattice
61
+
62
+ EXAMPLES:
63
+
64
+ For simplicity, we display the rigged configurations horizontally::
65
+
66
+ sage: RiggedConfigurations.options.display='horizontal'
67
+
68
+ We start with a simply-laced finite type::
69
+
70
+ sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
71
+ sage: RC = crystals.RiggedConfigurations(La[1] + La[2])
72
+ sage: mg = RC.highest_weight_vector()
73
+ sage: mg.f_string([1,2])
74
+ 0[ ]0 0[ ]-1
75
+ sage: mg.f_string([1,2,2])
76
+ 0[ ]0 -2[ ][ ]-2
77
+ sage: mg.f_string([1,2,2,2])
78
+ sage: mg.f_string([2,1,1,2])
79
+ -1[ ][ ]-1 -1[ ][ ]-1
80
+ sage: RC.cardinality()
81
+ 8
82
+ sage: T = crystals.Tableaux(['A', 2], shape=[2,1])
83
+ sage: RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
84
+ True
85
+
86
+ We construct a non-simply-laced affine type::
87
+
88
+ sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
89
+ sage: RC = crystals.RiggedConfigurations(La[2])
90
+ sage: mg = RC.highest_weight_vector()
91
+ sage: mg.f_string([2,3])
92
+ (/) 1[ ]1 -1[ ]-1
93
+ sage: T = crystals.Tableaux(['C', 3], shape=[1,1])
94
+ sage: RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
95
+ True
96
+
97
+ We can construct rigged configurations using a diagram folding of
98
+ a simply-laced type. This yields an equivalent but distinct crystal::
99
+
100
+ sage: vct = CartanType(['C', 3]).as_folding()
101
+ sage: RC = crystals.RiggedConfigurations(vct, La[2])
102
+ sage: mg = RC.highest_weight_vector()
103
+ sage: mg.f_string([2,3])
104
+ (/) 0[ ]0 -1[ ]-1
105
+ sage: T = crystals.Tableaux(['C', 3], shape=[1,1])
106
+ sage: RC.digraph().is_isomorphic(T.digraph(), edge_labels=True)
107
+ True
108
+
109
+ We reset the global options::
110
+
111
+ sage: RiggedConfigurations.options._reset()
112
+
113
+ REFERENCES:
114
+
115
+ - [SS2015]_
116
+ - [SS2015II]_
117
+ - [SS2017]_
118
+ """
119
+ @staticmethod
120
+ def __classcall_private__(cls, cartan_type, wt=None, WLR=None):
121
+ r"""
122
+ Normalize the input arguments to ensure unique representation.
123
+
124
+ EXAMPLES::
125
+
126
+ sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
127
+ sage: RC = crystals.RiggedConfigurations(La[1])
128
+ sage: RC2 = crystals.RiggedConfigurations(['A', 2], La[1])
129
+ sage: RC3 = crystals.RiggedConfigurations(['A', 2], La[1], La[1].parent())
130
+ sage: RC is RC2 and RC2 is RC3
131
+ True
132
+
133
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
134
+ sage: LaE = RootSystem(['A',2,1]).weight_lattice(extended=True).fundamental_weights()
135
+ sage: RC = crystals.RiggedConfigurations(La[1])
136
+ sage: RCE = crystals.RiggedConfigurations(LaE[1])
137
+ sage: RC is RCE
138
+ False
139
+ """
140
+ from sage.combinat.root_system.type_folded import CartanTypeFolded
141
+
142
+ if wt is None:
143
+ wt = cartan_type
144
+ cartan_type = wt.parent().cartan_type()
145
+ else:
146
+ if not isinstance(cartan_type, CartanTypeFolded):
147
+ cartan_type = CartanType(cartan_type)
148
+
149
+ if WLR is None:
150
+ WLR = wt.parent()
151
+ else:
152
+ wt = WLR(wt)
153
+
154
+ if isinstance(cartan_type, CartanTypeFolded):
155
+ return CrystalOfNonSimplyLacedRC(cartan_type, wt, WLR)
156
+
157
+ return super().__classcall__(cls, wt, WLR=WLR)
158
+
159
+ def __init__(self, wt, WLR):
160
+ r"""
161
+ Initialize ``self``.
162
+
163
+ EXAMPLES::
164
+
165
+ sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
166
+ sage: RC = crystals.RiggedConfigurations(La[1] + La[2])
167
+ sage: TestSuite(RC).run()
168
+
169
+ sage: La = RootSystem(['A', 2, 1]).weight_lattice().fundamental_weights()
170
+ sage: RC = crystals.RiggedConfigurations(La[0])
171
+ sage: TestSuite(RC).run() # long time
172
+ """
173
+ self._cartan_type = WLR.cartan_type()
174
+ self._wt = wt
175
+ self._rc_index = self._cartan_type.index_set()
176
+ self._rc_index_inverse = {i: ii for ii,i in enumerate(self._rc_index)}
177
+ # We store the Cartan matrix for the vacancy number calculations for speed
178
+ self._cartan_matrix = self._cartan_type.cartan_matrix()
179
+ if self._cartan_type.is_finite():
180
+ category = ClassicalCrystals()
181
+ else:
182
+ category = (RegularCrystals(), HighestWeightCrystals(), InfiniteEnumeratedSets())
183
+ Parent.__init__(self, category=category)
184
+ n = self._cartan_type.rank() # == len(self._cartan_type.index_set())
185
+ self.module_generators = (self.element_class(self, partition_list=[[] for _ in repeat(None, n)]),)
186
+
187
+ options = RiggedConfigurations.options
188
+
189
+ def _repr_(self):
190
+ """
191
+ Return a string representation of ``self``.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: La = RootSystem(['A', 3]).weight_lattice().fundamental_weights()
196
+ sage: crystals.RiggedConfigurations(La[1])
197
+ Crystal of rigged configurations of type ['A', 3] and weight Lambda[1]
198
+ """
199
+ return "Crystal of rigged configurations of type {0} and weight {1}".format(
200
+ self._cartan_type, self._wt)
201
+
202
+ def _element_constructor_(self, *lst, **options):
203
+ """
204
+ Construct a ``RiggedConfigurationElement``.
205
+
206
+ Typically the user should not call this method since it does not check
207
+ if it is an actual configuration in the crystal. Instead the user
208
+ should use the iterator.
209
+
210
+ EXAMPLES::
211
+
212
+ sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
213
+ sage: RC = crystals.RiggedConfigurations(La[1] + La[2])
214
+ sage: RC(partition_list=[[1],[1]], rigging_list=[[0],[-1]])
215
+ <BLANKLINE>
216
+ 0[ ]0
217
+ <BLANKLINE>
218
+ 0[ ]-1
219
+ <BLANKLINE>
220
+ sage: RC(partition_list=[[1],[2]])
221
+ <BLANKLINE>
222
+ 0[ ]0
223
+ <BLANKLINE>
224
+ -2[ ][ ]-2
225
+ <BLANKLINE>
226
+
227
+ TESTS:
228
+
229
+ Check that :issue:`17054` is fixed::
230
+
231
+ sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
232
+ sage: RC = crystals.RiggedConfigurations(4*La[1] + 4*La[2])
233
+ sage: B = crystals.infinity.RiggedConfigurations(['A',2])
234
+ sage: x = B.an_element().f_string([2,2,1,1,2,1,2,1])
235
+ sage: ascii_art(x)
236
+ -4[ ][ ][ ][ ]-4 -4[ ][ ][ ][ ]0
237
+ sage: ascii_art(RC(x.nu()))
238
+ 0[ ][ ][ ][ ]-4 0[ ][ ][ ][ ]0
239
+ sage: x == B.an_element().f_string([2,2,1,1,2,1,2,1])
240
+ True
241
+ """
242
+ if isinstance(lst[0], (list, tuple)):
243
+ lst = lst[0]
244
+
245
+ if isinstance(lst[0], RiggedPartition):
246
+ lst = [p._clone() for p in lst] # Make a deep copy
247
+ elif isinstance(lst[0], RiggedConfigurationElement):
248
+ lst = [p._clone() for p in lst[0]] # Make a deep copy
249
+
250
+ return self.element_class(self, list(lst), **options)
251
+
252
+ def _calc_vacancy_number(self, partitions, a, i, **options):
253
+ r"""
254
+ Calculate the vacancy number `p_i^{(a)}(\nu)` in ``self``.
255
+
256
+ This assumes that `\gamma_a = 1` for all `a` and
257
+ `(\alpha_a | \alpha_b ) = A_{ab}`.
258
+
259
+ INPUT:
260
+
261
+ - ``partitions`` -- the list of rigged partitions we are using
262
+
263
+ - ``a`` -- the rigged partition index
264
+
265
+ - ``i`` -- the row length
266
+
267
+ TESTS::
268
+
269
+ sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights()
270
+ sage: RC = crystals.RiggedConfigurations(La[1] + La[2])
271
+ sage: elt = RC(partition_list=[[1],[2]])
272
+ sage: RC._calc_vacancy_number(elt.nu(), 1, 2)
273
+ -2
274
+ """
275
+ vac_num = self._wt[self.index_set()[a]]
276
+
277
+ for b,nu in enumerate(partitions):
278
+ val = self._cartan_matrix[a,b]
279
+ if val:
280
+ if i == float('inf'):
281
+ vac_num -= val * sum(nu)
282
+ else:
283
+ vac_num -= val * nu.get_num_cells_to_column(i)
284
+
285
+ return vac_num
286
+
287
+ def weight_lattice_realization(self):
288
+ """
289
+ Return the weight lattice realization used to express the weights
290
+ of elements in ``self``.
291
+
292
+ EXAMPLES::
293
+
294
+ sage: La = RootSystem(['A', 2, 1]).weight_lattice(extended=True).fundamental_weights()
295
+ sage: RC = crystals.RiggedConfigurations(La[0])
296
+ sage: RC.weight_lattice_realization()
297
+ Extended weight lattice of the Root system of type ['A', 2, 1]
298
+ """
299
+ return self._wt.parent()
300
+
301
+ Element = RCHighestWeightElement
302
+
303
+
304
+ class CrystalOfNonSimplyLacedRC(CrystalOfRiggedConfigurations):
305
+ """
306
+ Highest weight crystal of rigged configurations in non-simply-laced type.
307
+ """
308
+
309
+ def __init__(self, vct, wt, WLR):
310
+ """
311
+ Initialize ``self``.
312
+
313
+ EXAMPLES::
314
+
315
+ sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
316
+ sage: RC = crystals.RiggedConfigurations(La[1])
317
+ sage: TestSuite(RC).run()
318
+ """
319
+ self._folded_ct = vct
320
+ CrystalOfRiggedConfigurations.__init__(self, wt, WLR)
321
+
322
+ @lazy_attribute
323
+ def virtual(self):
324
+ """
325
+ Return the corresponding virtual crystal.
326
+
327
+ EXAMPLES::
328
+
329
+ sage: La = RootSystem(['C', 2, 1]).weight_lattice().fundamental_weights()
330
+ sage: vct = CartanType(['C', 2, 1]).as_folding()
331
+ sage: RC = crystals.RiggedConfigurations(vct, La[0])
332
+ sage: RC
333
+ Crystal of rigged configurations of type ['C', 2, 1] and weight Lambda[0]
334
+ sage: RC.virtual
335
+ Crystal of rigged configurations of type ['A', 3, 1] and weight 2*Lambda[0]
336
+ """
337
+ P = self._folded_ct._folding.root_system().weight_lattice()
338
+ gamma = self._folded_ct.scaling_factors()
339
+ sigma = self._folded_ct.folding_orbit()
340
+ vwt = P.sum_of_terms((b, gamma[a]*c) for a,c in self._wt for b in sigma[a])
341
+ return CrystalOfRiggedConfigurations(vwt)
342
+
343
+ def _calc_vacancy_number(self, partitions, a, i, **options):
344
+ r"""
345
+ Calculate the vacancy number `p_i^{(a)}(\nu)` in ``self``.
346
+
347
+ INPUT:
348
+
349
+ - ``partitions`` -- the list of rigged partitions we are using
350
+
351
+ - ``a`` -- the rigged partition index
352
+
353
+ - ``i`` -- the row length
354
+
355
+ TESTS::
356
+
357
+ sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
358
+ sage: vct = CartanType(['C', 3]).as_folding()
359
+ sage: RC = crystals.RiggedConfigurations(vct, La[2])
360
+ sage: elt = RC(partition_list=[[], [1], [1]])
361
+ sage: RC._calc_vacancy_number(elt.nu(), 1, 1)
362
+ 0
363
+ sage: RC._calc_vacancy_number(elt.nu(), 2, 1)
364
+ -1
365
+ """
366
+ I = self.index_set()
367
+ ia = I[a]
368
+ vac_num = self._wt[ia]
369
+
370
+ if i == float('inf'):
371
+ return vac_num - sum(self._cartan_matrix[a,b] * sum(nu)
372
+ for b,nu in enumerate(partitions))
373
+
374
+ gamma = self._folded_ct.scaling_factors()
375
+ g = gamma[ia]
376
+ for b, nu in enumerate(partitions):
377
+ ib = I[b]
378
+ q = nu.get_num_cells_to_column(g*i, gamma[ib])
379
+ vac_num -= self._cartan_matrix[a,b] * q / gamma[ib]
380
+
381
+ return vac_num
382
+
383
+ def to_virtual(self, rc):
384
+ """
385
+ Convert ``rc`` into a rigged configuration in the virtual crystal.
386
+
387
+ INPUT:
388
+
389
+ - ``rc`` -- a rigged configuration element
390
+
391
+ EXAMPLES::
392
+
393
+ sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
394
+ sage: vct = CartanType(['C', 3]).as_folding()
395
+ sage: RC = crystals.RiggedConfigurations(vct, La[2])
396
+ sage: elt = RC(partition_list=[[], [1], [1]]); elt
397
+ <BLANKLINE>
398
+ (/)
399
+ <BLANKLINE>
400
+ 0[ ]0
401
+ <BLANKLINE>
402
+ -1[ ]-1
403
+ <BLANKLINE>
404
+ sage: RC.to_virtual(elt)
405
+ <BLANKLINE>
406
+ (/)
407
+ <BLANKLINE>
408
+ 0[ ]0
409
+ <BLANKLINE>
410
+ -2[ ][ ]-2
411
+ <BLANKLINE>
412
+ 0[ ]0
413
+ <BLANKLINE>
414
+ (/)
415
+ <BLANKLINE>
416
+ """
417
+ gamma = [int(f) for f in self._folded_ct.scaling_factors()]
418
+ sigma = self._folded_ct._orbit
419
+ n = self._folded_ct._folding.rank()
420
+ vindex = self._folded_ct._folding.index_set()
421
+ partitions = [None] * n
422
+ riggings = [None] * n
423
+ for a, rp in enumerate(rc):
424
+ for i in sigma[a]:
425
+ k = vindex.index(i)
426
+ partitions[k] = [row_len*gamma[a] for row_len in rp._list]
427
+ riggings[k] = [rig_val*gamma[a] for rig_val in rp.rigging]
428
+ return self.virtual.element_class(self.virtual, partition_list=partitions,
429
+ rigging_list=riggings)
430
+
431
+ def from_virtual(self, vrc):
432
+ """
433
+ Convert ``vrc`` in the virtual crystal into a rigged configuration of
434
+ the original Cartan type.
435
+
436
+ INPUT:
437
+
438
+ - ``vrc`` -- a virtual rigged configuration
439
+
440
+ EXAMPLES::
441
+
442
+ sage: La = RootSystem(['C', 3]).weight_lattice().fundamental_weights()
443
+ sage: vct = CartanType(['C', 3]).as_folding()
444
+ sage: RC = crystals.RiggedConfigurations(vct, La[2])
445
+ sage: elt = RC(partition_list=[[0], [1], [1]])
446
+ sage: elt == RC.from_virtual(RC.to_virtual(elt))
447
+ True
448
+ """
449
+ gamma = list(self._folded_ct.scaling_factors()) # map(int, self._folded_ct.scaling_factors())
450
+ sigma = self._folded_ct._orbit
451
+ n = self._cartan_type.rank()
452
+ partitions = [None] * n
453
+ riggings = [None] * n
454
+ vindex = self._folded_ct._folding.index_set()
455
+ for a in range(n):
456
+ index = vindex.index(sigma[a][0])
457
+ partitions[a] = [row_len // gamma[a] for row_len in vrc[index]._list]
458
+ riggings[a] = [rig_val / gamma[a] for rig_val in vrc[index].rigging]
459
+ return self.element_class(self, partition_list=partitions, rigging_list=riggings)
460
+
461
+ Element = RCHWNonSimplyLacedElement