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,382 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Catalog of discrete dynamical systems
4
+
5
+ This module contains constructors for several specific discrete
6
+ dynamical systems.
7
+ These are accessible through
8
+ :mod:`sage.dynamics.finite_dynamical_system_catalog. <sage.dynamics.finite_dynamical_system_catalog>`
9
+ or just through ``finite_dynamical_systems.``
10
+ (type either of these in Sage and hit ``tab`` for a list).
11
+
12
+ AUTHORS:
13
+
14
+ - Darij Grinberg, Tom Roby (2018): initial version
15
+
16
+ Functions
17
+ =========
18
+ """
19
+ #*****************************************************************************
20
+ # Copyright (C) 2018 Darij Grinberg <darijgrinberg@gmail.com>,
21
+ # 2018 Tom Roby <tomrobyuconn@gmail.com>
22
+ #
23
+ # Distributed under the terms of the GNU General Public License (GPL)
24
+ # as published by the Free Software Foundation; either version 2 of
25
+ # the License, or (at your option) any later version.
26
+ # http://www.gnu.org/licenses/
27
+ #*****************************************************************************
28
+ from sage.dynamics.finite_dynamical_system import DiscreteDynamicalSystem, \
29
+ FiniteDynamicalSystem, InvertibleDiscreteDynamicalSystem, \
30
+ InvertibleFiniteDynamicalSystem
31
+
32
+
33
+ def permutation(pi, invertible=True):
34
+ r"""
35
+ Return the invertible finite discrete dynamical system
36
+ induced by the permutation ``pi`` of the set
37
+ `\{1, 2, \ldots, n\}`.
38
+
39
+ The permutation ``pi`` can be provided as an instance
40
+ of :class:`Permutation`, but also as anything that can
41
+ be cast into that class.
42
+
43
+ See also :meth:`one_line` for a more general
44
+ construction, which takes any map from
45
+ `\{1, 2, \ldots, n\}` to `\{1, 2, \ldots, n\}` given in
46
+ one-line notation, and builds a (not necessarily
47
+ invertible) discrete dynamical system out of it.
48
+
49
+ EXAMPLES::
50
+
51
+ sage: F = finite_dynamical_systems.permutation([3, 5, 4, 1, 2])
52
+ sage: F.verify_inverse_evolution()
53
+ True
54
+ sage: sorted(F.orbit_lengths())
55
+ [2, 3]
56
+ sage: F.orbit(3)
57
+ [3, 4, 1]
58
+ sage: F.is_homomesic(lambda x: 1)
59
+ True
60
+ sage: F.is_homomesic(lambda x: x)
61
+ False
62
+ """
63
+ from sage.combinat.permutation import Permutation
64
+ pi = Permutation(pi)
65
+ n = len(pi)
66
+ X = range(1, n+1)
67
+ return InvertibleFiniteDynamicalSystem(X, pi, inverse=pi.inverse(), create_tuple=True)
68
+
69
+
70
+ def one_line(xs):
71
+ r"""
72
+ Return the finite discrete dynamical system
73
+ with ground set `\{1, 2, \ldots, n\}` and evolution
74
+ sending each `i` to `x_i`,
75
+ where `(x_1, x_2, \ldots, x_n)` is the argument ``xs``
76
+ provided.
77
+
78
+ EXAMPLES::
79
+
80
+ sage: F = finite_dynamical_systems.one_line([2, 2, 1, 2, 3])
81
+ sage: F.orbit(3)
82
+ [3, 1, 2]
83
+ sage: F.orbit(5)
84
+ [5, 3, 1, 2]
85
+ sage: F.orbit(2)
86
+ [2]
87
+ """
88
+ n = len(xs)
89
+ X = range(1, n + 1)
90
+ xs2 = tuple(xs)
91
+
92
+ def pi(i):
93
+ return xs2[i - 1]
94
+ return FiniteDynamicalSystem(X, pi, create_tuple=True)
95
+
96
+
97
+ def bitstring_rotation(n, ones=None):
98
+ r"""
99
+ Return the invertible finite discrete dynamical system
100
+ consisting of all bitstrings of size `n` (that is, of
101
+ all `n`-tuples `(i_1, \ldots, i_n) \in \{0, 1\}^n`),
102
+ evolving by cyclic rotation.
103
+
104
+ If the optional parameter ``ones`` is provided, the
105
+ system is restricted only to those bitstrings whose
106
+ number of ones is the value of this parameter.
107
+
108
+ EXAMPLES::
109
+
110
+ sage: F = finite_dynamical_systems.bitstring_rotation(5)
111
+ sage: sorted(F.orbit_lengths())
112
+ [1, 1, 5, 5, 5, 5, 5, 5]
113
+ sage: F.orbit((0, 1, 1, 0, 1))
114
+ [(0, 1, 1, 0, 1),
115
+ (1, 1, 0, 1, 0),
116
+ (1, 0, 1, 0, 1),
117
+ (0, 1, 0, 1, 1),
118
+ (1, 0, 1, 1, 0)]
119
+ sage: F.is_homomesic(lambda x: sum(1 for i in range(5) for j in range(i) if x[j] > x[i]))
120
+ False
121
+ sage: F.is_homomesic(lambda x: x[0])
122
+ False
123
+ sage: F = finite_dynamical_systems.bitstring_rotation(5, ones=3)
124
+ sage: F.verify_inverse_evolution()
125
+ True
126
+ sage: sorted(F.orbit_lengths())
127
+ [5, 5]
128
+ sage: F.orbit((0, 1, 1, 0, 1))
129
+ [(0, 1, 1, 0, 1),
130
+ (1, 1, 0, 1, 0),
131
+ (1, 0, 1, 0, 1),
132
+ (0, 1, 0, 1, 1),
133
+ (1, 0, 1, 1, 0)]
134
+ sage: F.is_homomesic(lambda x: sum(1 for i in range(5) for j in range(i) if x[j] > x[i]))
135
+ True
136
+ sage: F.is_homomesic(lambda x: x[0])
137
+ True
138
+ """
139
+ if ones is None:
140
+ from sage.categories.cartesian_product import cartesian_product
141
+ X = cartesian_product([[0,1]] * n)
142
+ else:
143
+ from itertools import combinations
144
+ X = [tuple((1 if i in cs else 0) for i in range(n))
145
+ for cs in combinations(range(n), ones)]
146
+ if n == 0:
147
+ phi = lambda x: x
148
+ psi = phi
149
+ else:
150
+ phi = lambda x: x[1:] + (x[0],)
151
+ psi = lambda x: (x[-1],) + x[:-1]
152
+ return InvertibleFiniteDynamicalSystem(X, phi, inverse=psi)
153
+
154
+
155
+ def striker_sweep(E, predicate, elements, lazy=False):
156
+ r"""
157
+ Return the invertible finite discrete dynamical system
158
+ on all subsets of a finite set ``E`` satisfying a
159
+ boolean predicate ``predicate``, where evolution is
160
+ the "Striker sweep" -- i.e., the composition of
161
+ Striker toggles corresponding to the elements in the
162
+ iterable ``elements`` (from first to last).
163
+
164
+ Let `E` be a finite set.
165
+ Let `\mathcal{L}` be a subset of the powerset of `E`.
166
+ (In this implementation, `\mathcal{L}` should be
167
+ specified via the boolean predicate ``predicate``,
168
+ which takes a subset `F` of `E` and returns the truth
169
+ value of `F \in \mathcal{L}`.)
170
+ For any `e \in E`, the *Striker toggle* `t_e` is
171
+ the involution of the set `\mathcal{L}` that sends
172
+ each `F \in \mathcal{L}` to the symmetric difference
173
+ `F \triangle \{ e \}` if this symmetric difference
174
+ is in `\mathcal{L}`, and otherwise to `F` itself.
175
+ If `(e_1, e_2, \ldots, e_k)` is a finite sequence of
176
+ elements of `E` (to be provided as a tuple, via the
177
+ argument ``elements``), then the *Striker sweep*
178
+ corresponding to this sequence is the composition of
179
+ maps
180
+ `t_{e_k} \circ t_{e_{k-1}} \circ \cdots \circ t_{e_1}`.
181
+
182
+ This generalizes classical constructions such as
183
+ rowmotion on order ideals.
184
+
185
+ The optional argument ``lazy`` can be set to
186
+ ``True``; in that case, the ground set of the
187
+ dynamical system will not be explicitly computed.
188
+
189
+ .. WARNING::
190
+
191
+ The sequence ``elements`` should be provided as
192
+ a tuple, or as a list that is guaranteed not to
193
+ be mutated (as otherwise, mutation will corrupt
194
+ this DDS).
195
+
196
+ .. TODO::
197
+
198
+ Implement the ``lazy=True`` case.
199
+ This should differ in that ``X`` is no longer a
200
+ list, but an enumerated set.
201
+ But how to build an enumerated set filtering a
202
+ given enumerated set according to a predicate?
203
+
204
+ EXAMPLES::
205
+
206
+ sage: StS = finite_dynamical_systems.striker_sweep
207
+ sage: E = range(1, 5)
208
+ sage: lac = lambda S: all(s + 1 not in S for s in S) # lacunarity predicate
209
+ sage: F = StS(E, lac, [1, 2, 3, 4])
210
+ sage: F.ground_set()
211
+ [{}, {1}, {2}, {3}, {4}, {1, 3}, {1, 4}, {2, 4}]
212
+ sage: F.evolution()(Set([2, 4]))
213
+ {}
214
+ sage: F.evolution()(Set([]))
215
+ {1, 3}
216
+ sage: F.evolution()(Set([1, 3]))
217
+ {4}
218
+ sage: F.evolution()(Set([4]))
219
+ {1}
220
+ sage: F.inverse_evolution()(Set([1]))
221
+ {4}
222
+ sage: F.verify_inverse_evolution()
223
+ True
224
+ sage: sorted(F.orbit_lengths())
225
+ [3, 5]
226
+ sage: F.orbit(Set([2, 4]))
227
+ [{2, 4}, {}, {1, 3}, {4}, {1}]
228
+ sage: F.is_homomesic(lambda S: S.cardinality())
229
+ False
230
+ sage: F.is_homomesic(lambda S: bool(1 in S) - bool(4 in S), find_average=True)
231
+ 0
232
+ sage: F.is_homomesic(lambda S: bool(2 in S) - bool(3 in S), find_average=True)
233
+ 0
234
+ sage: F.is_homomesic(lambda S: bool(1 in S), find_average=True)
235
+ False
236
+ """
237
+ from sage.combinat.subset import Subsets
238
+ from sage.sets.set import Set
239
+ X = [F for F in Subsets(E) if predicate(F)]
240
+
241
+ def phi(F):
242
+ for e in elements:
243
+ G = F.symmetric_difference(Set([e]))
244
+ if predicate(G):
245
+ F = G
246
+ return F
247
+
248
+ def psi(F):
249
+ for e in reversed(elements):
250
+ G = F.symmetric_difference(Set([e]))
251
+ if predicate(G):
252
+ F = G
253
+ return F
254
+ return InvertibleFiniteDynamicalSystem(X, phi, inverse=psi)
255
+
256
+
257
+ def syt_promotion(lam):
258
+ r"""
259
+ Return the invertible finite discrete dynamical system
260
+ consisting of all standard tableaux of shape ``lam`` (a
261
+ given partition) and evolving according to promotion.
262
+
263
+ EXAMPLES::
264
+
265
+ sage: F = finite_dynamical_systems.syt_promotion([4, 4, 4])
266
+ sage: sorted(F.orbit_lengths())
267
+ [3, 3, 4, 4, 4, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12,
268
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
269
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
270
+ 12, 12, 12, 12, 12]
271
+ sage: G = finite_dynamical_systems.syt_promotion([4, 3, 1])
272
+ sage: sorted(G.orbit_lengths())
273
+ [16, 22, 32]
274
+ sage: G.verify_inverse_evolution()
275
+ True
276
+ """
277
+ from sage.combinat.partition import Partition
278
+ from sage.combinat.tableau import StandardTableaux
279
+ lam = Partition(lam)
280
+ X = StandardTableaux(lam)
281
+ return InvertibleFiniteDynamicalSystem(X, lambda T: T.promotion(),
282
+ inverse=lambda T: T.promotion_inverse())
283
+
284
+
285
+ def order_ideal_rowmotion(P):
286
+ r"""
287
+ Return the invertible finite discrete dynamical system
288
+ consisting of all order ideals of the poset ``P``,
289
+ evolving according to rowmotion.
290
+
291
+ EXAMPLES::
292
+
293
+ sage: # needs sage.combinat sage.graphs sage.modules
294
+ sage: P = RootSystem(["A", 6]).root_poset()
295
+ sage: F = finite_dynamical_systems.order_ideal_rowmotion(P)
296
+ sage: sorted(F.orbit_lengths())
297
+ [2, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
298
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14]
299
+ sage: F.is_homomesic(lambda I: len(I))
300
+ False
301
+ sage: F.is_homomesic(lambda I: sum((-1)**(P.rank(i)) for i in I))
302
+ True
303
+
304
+ sage: # needs sage.combinat sage.graphs sage.modules
305
+ sage: P = RootSystem(["A", 3]).root_poset()
306
+ sage: F = finite_dynamical_systems.order_ideal_rowmotion(P)
307
+ sage: F.verify_inverse_evolution()
308
+ True
309
+ """
310
+ from sage.sets.set import Set
311
+ X = [Set(P.order_ideal(A)) for A in P.antichains()]
312
+ # Using P.order_ideals_lattice() instead causes intransparency issues:
313
+ # sage can't always do P.rowmotion(I) when I is in P.order_ideals_lattice().
314
+ # Bug in P.order_ideals_lattice() when P is facade?
315
+ phi = P.rowmotion
316
+
317
+ def psi(I): # inverse of rowmotion
318
+ result = I
319
+ for i in P.linear_extension():
320
+ result = P.order_ideal_toggle(result, i)
321
+ return result
322
+ return InvertibleFiniteDynamicalSystem(X, phi, inverse=psi)
323
+
324
+
325
+ def bulgarian_solitaire(n):
326
+ r"""
327
+ Return the finite discrete dynamical system defined
328
+ by Bulgarian solitaire on partitions of size `n`.
329
+
330
+ Let `n` be a nonnegative integer.
331
+ Let `P` be the set of all integer partitions of
332
+ size `n`.
333
+ Let `B : P \to P` be the map that sends each
334
+ partition
335
+ `\lambda = (\lambda_1, \lambda_2, \ldots, \lambda_k)`
336
+ of `n` (with all the `\lambda_i` positive) to
337
+ `(\lambda_1 - 1, \lambda_2 - 1, \ldots, \lambda_k - 1, k)`,
338
+ where zero entries have been removed and the remaining
339
+ entries sorted into decreasing order.
340
+ (For example,
341
+ `B(5, 4, 2, 2, 1, 1) = (6, 4, 3, 1, 1)`.)
342
+ This method yields the finite DDS whose ground set
343
+ is `P` and whose evolution is `B`.
344
+
345
+ EXAMPLES::
346
+
347
+ sage: BS = finite_dynamical_systems.bulgarian_solitaire
348
+ sage: BS(3).evolution()(Partition([3]))
349
+ [2, 1]
350
+ sage: BS(3).evolution()(Partition([2, 1]))
351
+ [2, 1]
352
+ sage: BS(3).evolution()(Partition([1, 1, 1]))
353
+ [3]
354
+ sage: BS(4).evolution()(Partition([4]))
355
+ [3, 1]
356
+ sage: BS(4).orbit(Partition([4]))
357
+ [[4], [3, 1], [2, 2], [2, 1, 1]]
358
+ sage: BS(4).orbit(Partition([3, 1]))
359
+ [[3, 1], [2, 2], [2, 1, 1]]
360
+ sage: BS(7).orbit(Partition([6, 1]), preperiod=True)
361
+ ([[6, 1], [5, 2], [4, 2, 1], [3, 3, 1], [3, 2, 2], [3, 2, 1, 1]], 2)
362
+ sage: BS(6).is_homomesic(lambda lam: len(lam))
363
+ True
364
+ sage: BS(6).is_homomesic(lambda lam: lam[0])
365
+ True
366
+ sage: BS(6).is_homomesic(lambda lam: lam[-1])
367
+ True
368
+ sage: BS(8).is_homomesic(lambda lam: len(lam))
369
+ True
370
+ sage: BS(8).is_homomesic(lambda lam: lam[0])
371
+ True
372
+ sage: BS(8).is_homomesic(lambda lam: lam[-1])
373
+ False
374
+ """
375
+ from sage.combinat.partition import Partition, Partitions
376
+ X = Partitions(n)
377
+
378
+ def phi(lam):
379
+ mu = [p - 1 for p in lam if p > 0]
380
+ nu = sorted(mu + [len(lam)], reverse=True)
381
+ return Partition(nu)
382
+ return FiniteDynamicalSystem(X, phi)
sage/games/all.py ADDED
@@ -0,0 +1,7 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+
3
+ from sage.misc.lazy_import import lazy_import
4
+
5
+ lazy_import('sage.games.sudoku', ['Sudoku', 'sudoku'])
6
+ lazy_import('sage.games.hexad', ['Minimog'])
7
+ del lazy_import