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,441 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Fast rank two crystals
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2007 Anne Schilling <anne at math.ucdavis.edu>
8
+ # Nicolas Thiery <nthiery at users.sf.net>
9
+ # Ben Brubaker <brubaker at math.mit.edu>
10
+ # Daniel Bump <bump at match.stanford.edu>
11
+ # Justin Walker <justin at mac.com>
12
+ #
13
+ # Distributed under the terms of the GNU General Public License (GPL)
14
+ #
15
+ # This code is distributed in the hope that it will be useful,
16
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ # General Public License for more details.
19
+ #
20
+ # The full text of the GPL is available at:
21
+ #
22
+ # https://www.gnu.org/licenses/
23
+ # ***************************************************************************
24
+
25
+ from sage.structure.unique_representation import UniqueRepresentation
26
+ from sage.structure.parent import Parent
27
+ from sage.categories.classical_crystals import ClassicalCrystals
28
+ from sage.structure.element import Element, parent
29
+ from sage.combinat.root_system.cartan_type import CartanType
30
+ from sage.structure.richcmp import richcmp
31
+
32
+
33
+ class FastCrystal(UniqueRepresentation, Parent):
34
+ r"""
35
+ An alternative implementation of rank 2 crystals. The root
36
+ operators are implemented in memory by table lookup. This means
37
+ that in comparison with the
38
+ :class:`~sage.combinat.crystals.tensor_product.CrystalsOfTableaux`, these
39
+ crystals are slow to instantiate but faster for computation. Implemented
40
+ for types `A_2`, `B_2`, and `C_2`.
41
+
42
+ INPUT:
43
+
44
+ - ``cartan_type`` -- the Cartan type and must be either type `A_2`, `B_2`, or `C_2`
45
+
46
+ - ``shape`` -- a shape is of the form ``[l1,l2]`` where ``l1`` and ``l2``
47
+ are either integers or (in type `B_2`) half integers such that
48
+ ``l1 - l2`` is integral. It is assumed that ``l1 >= l2 >= 0``. If
49
+ ``l1`` and ``l2`` are integers, this will produce a crystal
50
+ isomorphic to the one obtained by
51
+ ``crystals.Tableaux(type, shape=[l1,l2])``. Furthermore
52
+ ``crystals.FastRankTwo(['B', 2], l1+1/2, l2+1/2)`` produces a crystal
53
+ isomorphic to the following crystal ``T``::
54
+
55
+ sage: C = crystals.Tableaux(['B',2], shape=[l1,l2]) # not tested
56
+ sage: D = crystals.Spins(['B',2]) # not tested
57
+ sage: T = crystals.TensorProduct(C, D, C.list()[0], D.list()[0]) # not tested
58
+
59
+ - ``format`` -- (default: ``'string'``) the default representation of
60
+ elements is in term of theBerenstein-Zelevinsky-Littelmann (BZL)
61
+ strings ``[a1, a2, ...]`` described under metapost in
62
+ :mod:`~sage.categories.crystals`. Alternative representations may be
63
+ obtained by the options ``'dual_string'`` or ``'simple'``.
64
+ In the ``'simple'`` format, the element is represented by and integer,
65
+ and in the ``'dual_string'`` format, it is represented by the
66
+ BZL string, but the underlying decomposition of the long Weyl group
67
+ element into simple reflections is changed.
68
+
69
+ TESTS::
70
+
71
+ sage: C = crystals.FastRankTwo(['A',2],shape=[4,1])
72
+ sage: C.cardinality()
73
+ 24
74
+ sage: C.cartan_type()
75
+ ['A', 2]
76
+ sage: TestSuite(C).run()
77
+ sage: C = crystals.FastRankTwo(['B',2],shape=[4,1])
78
+ sage: C.cardinality()
79
+ 154
80
+ sage: TestSuite(C).run()
81
+ sage: C = crystals.FastRankTwo(['B',2],shape=[3/2,1/2])
82
+ sage: C.cardinality()
83
+ 16
84
+ sage: TestSuite(C).run()
85
+ sage: C = crystals.FastRankTwo(['C',2],shape=[2,1])
86
+ sage: C.cardinality()
87
+ 16
88
+ sage: C = crystals.FastRankTwo(['C',2],shape=[3,1])
89
+ sage: C.cardinality()
90
+ 35
91
+ sage: TestSuite(C).run()
92
+
93
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
94
+ sage: C.list()
95
+ [[0, 0, 0],
96
+ [1, 0, 0],
97
+ [0, 1, 1],
98
+ [0, 2, 1],
99
+ [1, 2, 1],
100
+ [0, 1, 0],
101
+ [1, 1, 0],
102
+ [2, 1, 0]]
103
+ """
104
+ @staticmethod
105
+ def __classcall__(cls, cartan_type, shape, format='string'):
106
+ """
107
+ Normalize the input arguments to ensure unique representation.
108
+
109
+ EXAMPLES::
110
+
111
+ sage: C1 = crystals.FastRankTwo(['A',2], shape=(4,1))
112
+ sage: C2 = crystals.FastRankTwo(CartanType(['A',2]),shape=[4,1])
113
+ sage: C1 is C2
114
+ True
115
+ """
116
+ cartan_type = CartanType(cartan_type)
117
+ shape = tuple(shape)
118
+ if len(shape) > 2:
119
+ raise ValueError("The shape must have length <=2")
120
+ shape = shape + (0,)*(2-len(shape))
121
+ return super().__classcall__(cls, cartan_type, shape, format)
122
+
123
+ def __init__(self, ct, shape, format):
124
+ """
125
+ EXAMPLES::
126
+
127
+ sage: C = crystals.FastRankTwo(['A',2],shape=[4,1]); C
128
+ The fast crystal for A2 with shape [4,1]
129
+ sage: TestSuite(C).run()
130
+ """
131
+ Parent.__init__(self, category=ClassicalCrystals())
132
+ # super().__init__(category = FiniteEnumeratedSets())
133
+ self._cartan_type = ct
134
+ if ct[1] != 2:
135
+ raise NotImplementedError
136
+
137
+ l1 = shape[0]
138
+ l2 = shape[1]
139
+
140
+ # For safety, delpat and gampat should be immutable
141
+
142
+ self.delpat = []
143
+ self.gampat = []
144
+
145
+ if ct[0] == 'A':
146
+ self._type_a_init(l1, l2)
147
+ elif ct[0] == 'B' or ct[0] == 'C':
148
+ self._type_bc_init(l1, l2)
149
+ else:
150
+ raise NotImplementedError
151
+
152
+ self.format = format
153
+ self.size = len(self.delpat)
154
+ self._rootoperators = []
155
+ self.shape = shape
156
+
157
+ for i in range(self.size):
158
+ target = list(self.delpat[i])
159
+
160
+ target[0] = target[0]-1
161
+ e1 = None if target not in self.delpat else self.delpat.index(target)
162
+ target[0] = target[0]+1+1
163
+ f1 = None if target not in self.delpat else self.delpat.index(target)
164
+
165
+ target = list(self.gampat[i])
166
+ target[0] = target[0]-1
167
+ e2 = None if target not in self.gampat else self.gampat.index(target)
168
+ target[0] = target[0]+1+1
169
+ f2 = None if target not in self.gampat else self.gampat.index(target)
170
+
171
+ self._rootoperators.append([e1,f1,e2,f2])
172
+
173
+ if int(2*l1) % 2 == 0:
174
+ l1_str = "%d" % l1
175
+ l2_str = "%d" % l2
176
+ else:
177
+ assert self._cartan_type[0] == 'B' and int(2*l2) % 2 == 1
178
+ l1_str = "%d/2" % int(2*l1)
179
+ l2_str = "%d/2" % int(2*l2)
180
+ self.rename("The fast crystal for %s2 with shape [%s,%s]" % (ct[0],l1_str,l2_str))
181
+ self.module_generators = [self(0)]
182
+ # self._digraph = ClassicalCrystal.digraph(self)
183
+ self._digraph = super().digraph()
184
+ self._digraph_closure = self.digraph().transitive_closure()
185
+
186
+ def _type_a_init(self, l1, l2):
187
+ """
188
+ EXAMPLES::
189
+
190
+ sage: C = crystals.FastRankTwo(['A',2],shape=[1,1])
191
+ sage: C.delpat # indirect doctest
192
+ [[0, 0, 0], [0, 1, 0], [1, 1, 0]]
193
+ sage: C.gampat
194
+ [[0, 0, 0], [1, 0, 0], [0, 1, 1]]
195
+ """
196
+ for b in range(l2,-1,-1):
197
+ for a in range(l1,l2-1,-1):
198
+ for c in range(a,b-1,-1):
199
+ a3 = l1-a
200
+ a2 = l1+l2-a-b
201
+ a1 = a-c
202
+ b1 = max(a3,a2-a1)
203
+ b2 = a1+a3
204
+ b3 = min(a2-a3,a1)
205
+ self.delpat.append([a1,a2,a3])
206
+ self.gampat.append([b1,b2,b3])
207
+
208
+ def _type_bc_init(self, l1, l2):
209
+ """
210
+ EXAMPLES::
211
+
212
+ sage: C = crystals.FastRankTwo(['B',2],shape=[1])
213
+ sage: len(C.delpat) # indirect doctest
214
+ 5
215
+ sage: len(C.gampat)
216
+ 5
217
+ sage: C = crystals.FastRankTwo(['C',2],shape=[1])
218
+ sage: len(C.delpat)
219
+ 4
220
+ sage: len(C.gampat)
221
+ 4
222
+ """
223
+ if self._cartan_type[0] == 'B':
224
+ m1, m2 = l1 + l2, l1 - l2
225
+ else:
226
+ m1, m2 = l1, l2
227
+ for b in range(m2,-1,-1):
228
+ for a in range(m1,m2-1,-1):
229
+ for c in range(b,a+1):
230
+ for d in range(c,-1,-1):
231
+ a1 = c-d
232
+ a2 = m1+m2+c-a-2*b
233
+ a3 = m1+m2-a-b
234
+ a4 = m1-a
235
+ b1 = max(a4,2*a3-a2,a2-2*a1)
236
+ b2 = max(a3, a1+a4, a1+2*a3-a2)
237
+ b3 = min(a2, 2*a2-2*a3+a4, 2*a1+a4)
238
+ b4 = min(a1, a2-a3, a3-a4)
239
+ if self._cartan_type[0] == 'B':
240
+ self.delpat.append([a1,a2,a3,a4])
241
+ self.gampat.append([b1,b2,b3,b4])
242
+ else:
243
+ self.gampat.append([a1,a2,a3,a4])
244
+ self.delpat.append([b1,b2,b3,b4])
245
+
246
+ def __call__(self, value):
247
+ """
248
+ EXAMPLES::
249
+
250
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
251
+ sage: C(0)
252
+ [0, 0, 0]
253
+ sage: C(1)
254
+ [1, 0, 0]
255
+ sage: x = C(0)
256
+ sage: C(x) is x
257
+ True
258
+ """
259
+ if parent(value) is self:
260
+ return value
261
+ return self.element_class(self, value, self.format)
262
+
263
+ def digraph(self):
264
+ """
265
+ Return the digraph associated to ``self``.
266
+
267
+ EXAMPLES::
268
+
269
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
270
+ sage: C.digraph()
271
+ Digraph on 8 vertices
272
+ """
273
+ return self._digraph
274
+
275
+ def cmp_elements(self, x, y):
276
+ r"""
277
+ Return ``True`` if and only if there is a path from `x` to `y` in the
278
+ crystal graph.
279
+
280
+ Because the crystal graph is classical, it is a directed acyclic
281
+ graph which can be interpreted as a poset. This function implements
282
+ the comparison function of this poset.
283
+
284
+ EXAMPLES::
285
+
286
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
287
+ sage: x = C(0)
288
+ sage: y = C(1)
289
+ sage: C.cmp_elements(x,y)
290
+ -1
291
+ sage: C.cmp_elements(y,x)
292
+ 1
293
+ sage: C.cmp_elements(x,x)
294
+ 0
295
+ """
296
+ assert x.parent() == self and y.parent() == self
297
+ if self._digraph_closure.has_edge(x,y):
298
+ return -1
299
+ elif self._digraph_closure.has_edge(y,x):
300
+ return 1
301
+ else:
302
+ return 0
303
+
304
+ class Element(Element):
305
+ def __init__(self, parent, value, format):
306
+ """
307
+ EXAMPLES::
308
+
309
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
310
+ sage: c = C(0); c
311
+ [0, 0, 0]
312
+ sage: C[0].parent()
313
+ The fast crystal for A2 with shape [2,1]
314
+ sage: TestSuite(c).run()
315
+ """
316
+ Element.__init__(self, parent)
317
+ self.value = value
318
+ self.format = format
319
+
320
+ def weight(self):
321
+ """
322
+ Return the weight of ``self``.
323
+
324
+ EXAMPLES::
325
+
326
+ sage: [v.weight() for v in crystals.FastRankTwo(['A',2], shape=[2,1])]
327
+ [(2, 1, 0), (1, 2, 0), (1, 1, 1), (1, 0, 2), (0, 1, 2), (2, 0, 1), (1, 1, 1), (0, 2, 1)]
328
+ sage: [v.weight() for v in crystals.FastRankTwo(['B',2], shape=[1,0])]
329
+ [(1, 0), (0, 1), (0, 0), (0, -1), (-1, 0)]
330
+ sage: [v.weight() for v in crystals.FastRankTwo(['B',2], shape=[1/2,1/2])]
331
+ [(1/2, 1/2), (1/2, -1/2), (-1/2, 1/2), (-1/2, -1/2)]
332
+ sage: [v.weight() for v in crystals.FastRankTwo(['C',2], shape=[1,0])]
333
+ [(1, 0), (0, 1), (0, -1), (-1, 0)]
334
+ sage: [v.weight() for v in crystals.FastRankTwo(['C',2], shape=[1,1])]
335
+ [(1, 1), (1, -1), (0, 0), (-1, 1), (-1, -1)]
336
+ """
337
+ delpat = self.parent().delpat[self.value]
338
+ if self.parent()._cartan_type[0] == 'A':
339
+ delpat = delpat + [0,]
340
+ alpha1, alpha2 = self.parent().weight_lattice_realization().simple_roots()
341
+ hwv = sum(self.parent().shape[i]*self.parent().weight_lattice_realization().monomial(i) for i in range(2))
342
+ return hwv - (delpat[0]+delpat[2])*alpha1 - (delpat[1]+delpat[3])*alpha2
343
+
344
+ def _repr_(self) -> str:
345
+ """
346
+ EXAMPLES::
347
+
348
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
349
+ sage: C[0]._repr_()
350
+ '[0, 0, 0]'
351
+ """
352
+ if self.format == "string":
353
+ return repr(self.parent().delpat[self.value])
354
+ elif self.format == "dual_string":
355
+ return repr(self.parent().gampat[self.value])
356
+ elif self.format == "simple":
357
+ return repr(self.value)
358
+ else:
359
+ raise NotImplementedError
360
+
361
+ def __hash__(self):
362
+ r"""
363
+ TESTS::
364
+
365
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
366
+ sage: hash(C(0))
367
+ 0
368
+ """
369
+ return hash(self.value)
370
+
371
+ def _richcmp_(self, other, op):
372
+ """
373
+ EXAMPLES::
374
+
375
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
376
+ sage: D = crystals.FastRankTwo(['B',2],shape=[2,1])
377
+ sage: C(0) == C(0)
378
+ True
379
+ sage: C(1) == C(0)
380
+ False
381
+ sage: C(0) == D(0)
382
+ False
383
+
384
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
385
+ sage: D = crystals.FastRankTwo(['B',2],shape=[2,1])
386
+ sage: C(0) != C(0)
387
+ False
388
+ sage: C(1) != C(0)
389
+ True
390
+ sage: C(0) != D(0)
391
+ True
392
+
393
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
394
+ sage: C(1) < C(2)
395
+ True
396
+ sage: C(2) < C(1)
397
+ False
398
+ sage: C(2) > C(1)
399
+ True
400
+ sage: C(1) <= C(1)
401
+ True
402
+ """
403
+ return richcmp(self.value, other.value, op)
404
+
405
+ def e(self, i):
406
+ """
407
+ Return the action of `e_i` on ``self``.
408
+
409
+ EXAMPLES::
410
+
411
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
412
+ sage: C(1).e(1)
413
+ [0, 0, 0]
414
+ sage: C(0).e(1) is None
415
+ True
416
+ """
417
+ assert i in self.index_set()
418
+ if i == 1:
419
+ r = self.parent()._rootoperators[self.value][0]
420
+ else:
421
+ r = self.parent()._rootoperators[self.value][2]
422
+ return self.parent()(r) if r is not None else None
423
+
424
+ def f(self, i):
425
+ """
426
+ Return the action of `f_i` on ``self``.
427
+
428
+ EXAMPLES::
429
+
430
+ sage: C = crystals.FastRankTwo(['A',2],shape=[2,1])
431
+ sage: C(6).f(1)
432
+ [1, 2, 1]
433
+ sage: C(7).f(1) is None
434
+ True
435
+ """
436
+ assert i in self.index_set()
437
+ if i == 1:
438
+ r = self.parent()._rootoperators[self.value][1]
439
+ else:
440
+ r = self.parent()._rootoperators[self.value][3]
441
+ return self.parent()(r) if r is not None else None