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,351 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Morphic words
4
+
5
+ This modules implements morphic words (letter-to-letter coding of fixed
6
+ point of a morphism).
7
+
8
+ AUTHORS:
9
+
10
+ - Jana Lepsova (January 2021): initial version
11
+
12
+ EXAMPLES:
13
+
14
+ Creation of the fixed point of a morphism::
15
+
16
+ sage: m = WordMorphism('a->abc,b->baba,c->ca')
17
+ sage: w = m.fixed_point('a'); w
18
+ word: abcbabacababaabcbabaabccaabcbabaabcbabaa...
19
+ sage: w.length()
20
+ +Infinity
21
+
22
+ Computing the `n`-th letter of a fixed point is fast as it is using the
23
+ abstract numeration system associated to the morphism and the starting
24
+ letter, see chapter 3 of the book [BR2010b]_::
25
+
26
+ sage: w[10000000] # needs sage.modules
27
+ 'b'
28
+ """
29
+
30
+ from sage.combinat.words.word_infinite_datatypes import WordDatatype_callable
31
+ from sage.misc.lazy_import import lazy_import
32
+ from sage.rings.infinity import Infinity
33
+
34
+ lazy_import('sage.modules.free_module_element', 'vector')
35
+
36
+
37
+ class WordDatatype_morphic(WordDatatype_callable):
38
+ r"""
39
+ Datatype for a morphic word defined by a morphism, a starting letter
40
+ and a coding.
41
+ """
42
+ def __init__(self, parent, morphism, letter, coding=None, length=Infinity):
43
+ r"""
44
+ INPUT:
45
+
46
+ - ``parent`` -- a parent
47
+ - ``morphism`` -- a word morphism
48
+ - ``letter`` -- a starting letter
49
+ - ``coding`` -- dictionary (default: ``None``); if ``None``
50
+ the identity map is used for the coding
51
+ - ``length`` -- integer or ``'finite'`` or ``Infinity`` or
52
+ ``'unknown'`` (default: ``Infinity``) the length of the word
53
+
54
+ EXAMPLES::
55
+
56
+ sage: m = WordMorphism('a->ab,b->a')
57
+ sage: w = m.fixed_point('a')
58
+ sage: w
59
+ word: abaababaabaababaababaabaababaabaababaaba...
60
+ sage: w[555:1000] # needs sage.modules
61
+ word: abaababaabaababaababaabaababaabaababaaba...
62
+ sage: w.length()
63
+ +Infinity
64
+
65
+ ::
66
+
67
+ sage: m = WordMorphism('a->abc,b->baba,c->ca')
68
+ sage: m.fixed_point('a')
69
+ word: abcbabacababaabcbabaabccaabcbabaabcbabaa...
70
+ sage: w = m.fixed_point('a')
71
+ sage: w[7] # needs sage.modules
72
+ 'c'
73
+ sage: w[2:7] # needs sage.modules
74
+ word: cbaba
75
+ sage: w[500:503] # needs sage.modules
76
+ word: caa
77
+
78
+ When the morphic word is finite::
79
+
80
+ sage: m = WordMorphism("a->ab,b->")
81
+ sage: w = m.fixed_point("a"); w
82
+ word: ab
83
+ sage: w[0] # needs sage.modules
84
+ 'a'
85
+ sage: w.length()
86
+ 2
87
+
88
+ Using the coding argument::
89
+
90
+ sage: m = WordMorphism('a->ab,b->a')
91
+ sage: W = m.domain()
92
+ sage: from sage.combinat.words.morphic import WordDatatype_morphic
93
+ sage: coding = {'a':'x', 'b':'y'}
94
+ sage: w = WordDatatype_morphic(W, m, 'a', coding=coding)
95
+ sage: [w[i] for i in range(10)] # needs sage.modules
96
+ ['x', 'y', 'x', 'x', 'y', 'x', 'y', 'x', 'x', 'y']
97
+
98
+ TESTS::
99
+
100
+ sage: m = WordMorphism('a->abcd,b->bbc,c->cddd,d->cba')
101
+ sage: w = m.fixed_point('a')
102
+ sage: it = iter(w)
103
+ sage: for _ in range(10000): _ = next(it)
104
+ sage: L = [next(it) for _ in range(10)]; L
105
+ ['d', 'd', 'd', 'c', 'd', 'd', 'd', 'c', 'b', 'a']
106
+ sage: w[10000:10010] # needs sage.modules
107
+ word: dddcdddcba
108
+ sage: list(w[10000:10010]) == L # needs sage.modules
109
+ True
110
+ """
111
+ self._parent = parent
112
+ # self._func = callable
113
+ # for hashing
114
+ self._hash = None
115
+
116
+ if length is Infinity:
117
+ self._len = Infinity
118
+ elif length is None or length == 'unknown' or length == 'finite':
119
+ self._len = None
120
+ else:
121
+ self._len = length
122
+
123
+ self._morphism = morphism
124
+ self._letter = letter
125
+ self._alphabet = self._morphism.domain().alphabet()
126
+ if coding is None:
127
+ self._coding = {a: a for a in self._alphabet}
128
+ else:
129
+ self._coding = coding
130
+
131
+ def __reduce__(self):
132
+ r"""
133
+ EXAMPLES::
134
+
135
+ sage: m = WordMorphism('a->ab,b->a')
136
+ sage: w = m.fixed_point('a')
137
+ sage: w.__reduce__()
138
+ (<class 'sage.combinat.words.word.InfiniteWord_morphic'>,
139
+ (Infinite words over {'a', 'b'},
140
+ WordMorphism: a->ab, b->a,
141
+ 'a',
142
+ {'a': 'a', 'b': 'b'},
143
+ +Infinity))
144
+
145
+ Below is the behavior for words of finite length::
146
+
147
+ sage: m = WordMorphism("a->ab,b->")
148
+ sage: w = m.fixed_point("a")
149
+ sage: w.__reduce__()
150
+ (<class 'sage.combinat.words.word.FiniteWord_morphic'>,
151
+ (Finite words over {'a', 'b'},
152
+ WordMorphism: a->ab, b->,
153
+ 'a',
154
+ {'a': 'a', 'b': 'b'},
155
+ 2))
156
+ """
157
+ return self.__class__, (self._parent, self._morphism, self._letter,
158
+ self._coding, self._len)
159
+
160
+ def representation(self, n):
161
+ r"""
162
+ Return the representation of the integer n in the numeration system
163
+ associated to the morphism.
164
+
165
+ INPUT:
166
+
167
+ - ``n`` -- nonnegative integer
168
+
169
+ OUTPUT: list
170
+
171
+ EXAMPLES::
172
+
173
+ sage: m = WordMorphism('a->ab,b->a')
174
+ sage: w = m.fixed_point('a')
175
+ sage: w.representation(5) # needs sage.modules
176
+ [1, 0, 0, 0]
177
+
178
+ When the morphic word is finite::
179
+
180
+ sage: m = WordMorphism("a->ab,b->,c->cdab,d->dcab")
181
+ sage: w = m.fixed_point("a")
182
+ sage: w.representation(0) # needs sage.modules
183
+ []
184
+ sage: w.representation(1) # needs sage.modules
185
+ [1]
186
+ sage: w.representation(2) # needs sage.modules
187
+ Traceback (most recent call last):
188
+ ...
189
+ IndexError: index (=2) out of range, the fixed point is finite and has length 2
190
+
191
+ TESTS:
192
+
193
+ Accessing this method from an instance of the current class (no using
194
+ the inherited word classes)::
195
+
196
+ sage: m = WordMorphism('a->ab,b->a')
197
+ sage: W = m.domain()
198
+ sage: from sage.combinat.words.morphic import WordDatatype_morphic
199
+ sage: w = WordDatatype_morphic(W, m, 'a')
200
+ sage: type(w)
201
+ <class 'sage.combinat.words.morphic.WordDatatype_morphic'>
202
+ sage: w.representation(5) # needs sage.modules
203
+ [1, 0, 0, 0]
204
+ """
205
+ letters_to_int = {a:i for (i,a) in enumerate(self._alphabet)}
206
+ position = letters_to_int[self._letter]
207
+ M = self._morphism.incidence_matrix()
208
+ vMk = vector([1]*len(self._alphabet))
209
+ length_of_images = []
210
+ while vMk[position] <= n:
211
+ length_of_images.append(vMk)
212
+ vMk_next = vMk*M
213
+ if vMk[position] == vMk_next[position]:
214
+ raise IndexError('index (={}) out of range, the fixed point is finite and has length {}'.format(n,vMk[position]))
215
+ vMk = vMk_next
216
+ k = len(length_of_images)
217
+ letter_k = self._letter
218
+ n_k = n
219
+ path = []
220
+ while k > 0:
221
+ m_letter_k = self._morphism(letter_k)
222
+ S = 0
223
+ j = 0
224
+ while S <= n_k:
225
+ a = m_letter_k[j]
226
+ i = letters_to_int[a]
227
+ pile_length = length_of_images[k-1][i]
228
+ S += pile_length
229
+ j += 1
230
+ path.append(j-1)
231
+ n_k -= S - pile_length
232
+ letter_k = a
233
+ k -= 1
234
+ return path
235
+
236
+ def _func(self, key):
237
+ """
238
+ Return a letter of a fixed point of a morphism on position ``key``.
239
+
240
+ INPUT:
241
+
242
+ - ``self`` -- a fixed point of a morphism
243
+ - ``key`` -- integer; the position
244
+
245
+ OUTPUT: a letter
246
+
247
+ EXAMPLES::
248
+
249
+ sage: m = WordMorphism("a->ab,b->a")
250
+ sage: w = m.fixed_point("a")
251
+ sage: w[0] # needs sage.modules
252
+ 'a'
253
+ sage: w[5] # needs sage.modules
254
+ 'a'
255
+ sage: w[10000] # needs sage.modules
256
+ 'a'
257
+
258
+ TESTS:
259
+
260
+ Accessing this method from an instance of the current class
261
+ (without using the inherited word classes)::
262
+
263
+ sage: m = WordMorphism('a->ab,b->a')
264
+ sage: W = m.domain()
265
+ sage: from sage.combinat.words.morphic import WordDatatype_morphic
266
+ sage: w = WordDatatype_morphic(W, m, 'a')
267
+ sage: w._func(5) # needs sage.modules
268
+ 'a'
269
+ """
270
+ letter = self._letter
271
+ for a in self.representation(key):
272
+ letter = (self._morphism(letter))[a]
273
+ if key == 0:
274
+ return self._coding[letter]
275
+ return self._coding[letter]
276
+
277
+ def __iter__(self):
278
+ r"""
279
+ Return an iterator of the letters of the fixed point of ``self``
280
+ starting with ``letter``.
281
+
282
+ If w is the iterated word, then this iterator: outputs the elements
283
+ of morphism[ w[i] ], appends morphism[ w[i+1] ] to w, increments i.
284
+
285
+ INPUT:
286
+
287
+ - ``self`` -- an endomorphism, must be prolongable on
288
+ letter
289
+
290
+ - ``letter`` -- a letter in the domain of ``self``
291
+
292
+ OUTPUT: iterator of the fixed point
293
+
294
+ EXAMPLES::
295
+
296
+ sage: m = WordMorphism("a->ab,b->a")
297
+ sage: w = m.fixed_point("a")
298
+ sage: it = iter(w)
299
+ sage: [next(it) for _ in range(10)]
300
+ ['a', 'b', 'a', 'a', 'b', 'a', 'b', 'a', 'a', 'b']
301
+
302
+ Works with erasing morphisms::
303
+
304
+ sage: m = WordMorphism('a->abc,b->,c->')
305
+ sage: w = m.fixed_point("a")
306
+ sage: list(w)
307
+ ['a', 'b', 'c']
308
+
309
+ The morphism must be prolongable on the letter or the iterator will
310
+ be empty::
311
+
312
+ sage: list(m.fixed_point("b"))
313
+ Traceback (most recent call last):
314
+ ...
315
+ TypeError: self must be prolongable on b
316
+
317
+ The morphism must be an endomorphism::
318
+
319
+ sage: m = WordMorphism('a->ac,b->aac')
320
+ sage: w = m.fixed_point('a')
321
+ Traceback (most recent call last):
322
+ ...
323
+ TypeError: self (=a->ac, b->aac) is not self-composable
324
+
325
+ We check that :issue:`8595` is fixed::
326
+
327
+ sage: s = WordMorphism({('a', 1):[('a', 1), ('a', 2)], ('a', 2):[('a', 1)]})
328
+ sage: w = s.fixed_point(('a', 1))
329
+ sage: it = iter(w)
330
+ sage: next(it)
331
+ ('a', 1)
332
+
333
+ This shows that issue :issue:`13668` has been resolved::
334
+
335
+ sage: s = WordMorphism({1:[1,2],2:[2,3],3:[4],4:[5],5:[6],6:[7],7:[8],8:[9],9:[10],10:[1]})
336
+ sage: (s^7).fixed_points()
337
+ [word: 1223234234523456234567234567823456789234...,
338
+ word: 2,3,4,5,6,7,8,9,10,1,1,2,1,2,2,3,1,2,2,3,2,3,4,1,2,2,3,2,3,4,2,3,4,5,1,2,2,3,2,3,...]
339
+ sage: (s^7).reversal().fixed_points()
340
+ []
341
+ """
342
+ from itertools import chain
343
+ w = iter(self._morphism.image(self._letter))
344
+ while True:
345
+ try:
346
+ for a in self._morphism.image(next(w)):
347
+ yield self._coding[a]
348
+ next_w = next(w)
349
+ w = chain([next_w], w, self._morphism.image(next_w))
350
+ except StopIteration:
351
+ return