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,431 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ """
3
+ Elements of Free Monoids
4
+
5
+ AUTHORS:
6
+
7
+ - David Kohel (2005-09-29)
8
+
9
+ Elements of free monoids are represented internally as lists of
10
+ pairs of integers.
11
+ """
12
+
13
+ # ****************************************************************************
14
+ # Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
15
+ #
16
+ # Distributed under the terms of the GNU General Public License (GPL)
17
+ #
18
+ # This code is distributed in the hope that it will be useful,
19
+ # but WITHOUT ANY WARRANTY; without even the implied warranty
20
+ # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21
+ #
22
+ # See the GNU General Public License for more details; the full text
23
+ # is available at:
24
+ #
25
+ # https://www.gnu.org/licenses/
26
+ # ****************************************************************************
27
+
28
+ from sage.rings.integer import Integer
29
+ from sage.structure.element import MonoidElement
30
+ from sage.structure.richcmp import richcmp, richcmp_not_equal
31
+ from sage.rings.semirings.non_negative_integer_semiring import NN
32
+
33
+
34
+ def is_FreeMonoidElement(x):
35
+ from sage.misc.superseded import deprecation
36
+ deprecation(38184,
37
+ "The function is_FreeMonoidElement is deprecated; "
38
+ "use 'isinstance(..., FreeMonoidElement)' instead.")
39
+ return isinstance(x, FreeMonoidElement)
40
+
41
+
42
+ class FreeMonoidElement(MonoidElement):
43
+ """
44
+ Element of a free monoid.
45
+
46
+ EXAMPLES::
47
+
48
+ sage: a = FreeMonoid(5, 'a').gens()
49
+ sage: x = a[0]*a[1]*a[4]**3
50
+ sage: x**3
51
+ a0*a1*a4^3*a0*a1*a4^3*a0*a1*a4^3
52
+ sage: x**0
53
+ 1
54
+ sage: x**(-1)
55
+ Traceback (most recent call last):
56
+ ...
57
+ NotImplementedError
58
+ """
59
+ def __init__(self, F, x, check=True):
60
+ """
61
+ Create the element `x` of the FreeMonoid `F`.
62
+
63
+ This should typically be called by a FreeMonoid.
64
+ """
65
+ MonoidElement.__init__(self, F)
66
+ if isinstance(x, (int, Integer)):
67
+ if x == 1:
68
+ self._element_list = []
69
+ else:
70
+ raise TypeError("argument x (= %s) is of the wrong type" % x)
71
+ elif isinstance(x, list):
72
+ if check:
73
+ x2 = []
74
+ for v in x:
75
+ if not (isinstance(v, tuple) and len(v) == 2):
76
+ raise TypeError("x (= %s) must be a list of 2-tuples or 1" % x)
77
+ if not (isinstance(v[0], (int, Integer)) and
78
+ isinstance(v[1], (int, Integer))):
79
+ raise TypeError("x (= %s) must be a list of 2-tuples of integers or 1" % x)
80
+ if len(x2) > 0 and v[0] == x2[len(x2)-1][0]:
81
+ x2[len(x2)-1] = (v[0], v[1]+x2[len(x2)-1][1])
82
+ else:
83
+ x2.append(v)
84
+ self._element_list = x2
85
+ else:
86
+ self._element_list = list(x) # make copy, so user can't accidentally change monoid.
87
+
88
+ else:
89
+ # TODO: should have some other checks here...
90
+ raise TypeError("argument x (= %s) is of the wrong type" % x)
91
+
92
+ def __hash__(self):
93
+ r"""
94
+ TESTS::
95
+
96
+ sage: R.<x,y> = FreeMonoid(2)
97
+ sage: hash(x) == hash(((0, 1),))
98
+ True
99
+ sage: hash(y) == hash(((1, 1),))
100
+ True
101
+ sage: hash(x*y) == hash(((0, 1), (1, 1)))
102
+ True
103
+ """
104
+ return hash(tuple(self._element_list))
105
+
106
+ def __iter__(self):
107
+ """
108
+ Return an iterator which yields tuples of variable and exponent.
109
+
110
+ EXAMPLES::
111
+
112
+ sage: a = FreeMonoid(5, 'a').gens()
113
+ sage: list(a[0]*a[1]*a[4]**3*a[0])
114
+ [(a0, 1), (a1, 1), (a4, 3), (a0, 1)]
115
+ """
116
+ gens = self.parent().gens()
117
+ return ((gens[index], exponent)
118
+ for (index, exponent) in self._element_list)
119
+
120
+ def _repr_(self):
121
+ s = ""
122
+ v = self._element_list
123
+ x = self.parent().variable_names()
124
+ for i in range(len(v)):
125
+ if len(s) > 0:
126
+ s += "*"
127
+ g = x[int(v[i][0])]
128
+ e = v[i][1]
129
+ if e == 1:
130
+ s += "%s" % g
131
+ else:
132
+ s += f"{g}^{e}"
133
+ if len(s) == 0:
134
+ s = "1"
135
+ return s
136
+
137
+ def _latex_(self) -> str:
138
+ r"""
139
+ Return latex representation of ``self``.
140
+
141
+ EXAMPLES::
142
+
143
+ sage: F = FreeMonoid(3, 'a')
144
+ sage: z = F([(0,5),(1,2),(0,10),(0,2),(1,2)])
145
+ sage: z._latex_()
146
+ 'a_{0}^{5}a_{1}^{2}a_{0}^{12}a_{1}^{2}'
147
+ sage: F.<alpha,beta,gamma> = FreeMonoid(3)
148
+ sage: latex(alpha*beta*gamma)
149
+ \alpha \beta \gamma
150
+
151
+ Check that :issue:`14509` is fixed::
152
+
153
+ sage: # needs sage.symbolic
154
+ sage: K.< alpha,b > = FreeAlgebra(SR)
155
+ sage: latex(alpha*b)
156
+ \alpha b
157
+ sage: latex(b*alpha)
158
+ b \alpha
159
+ sage: "%s" % latex(alpha*b)
160
+ '\\alpha b'
161
+ """
162
+ s = ""
163
+ v = self._element_list
164
+ x = self.parent().latex_variable_names()
165
+ for i in range(len(v)):
166
+ g = x[int(v[i][0])]
167
+ e = v[i][1]
168
+ if e == 1:
169
+ s += f"{g} "
170
+ else:
171
+ s += f"{g}^{{{e}}}"
172
+ s = s.rstrip(" ") # strip the trailing whitespace caused by adding a space after each element name
173
+ if len(s) == 0:
174
+ s = "1"
175
+ return s
176
+
177
+ def __call__(self, *x, **kwds):
178
+ """
179
+ EXAMPLES::
180
+
181
+ sage: M.<x,y> = FreeMonoid(2)
182
+ sage: (x*y).substitute(x=1)
183
+ y
184
+
185
+ sage: M.<a> = FreeMonoid(1)
186
+ sage: a.substitute(a=5)
187
+ 5
188
+
189
+ sage: M.<x,y,z> = FreeMonoid(3)
190
+ sage: (x*y).subs(x=1,y=2,z=14)
191
+ 2
192
+ sage: (x*y).subs({x:z,y:z})
193
+ z^2
194
+
195
+ It is still possible to substitute elements
196
+ that have no common parent::
197
+
198
+ sage: M1 = MatrixSpace(ZZ,1,2) # needs sage.modules
199
+ sage: M2 = MatrixSpace(ZZ,2,1) # needs sage.modules
200
+ sage: (x*y).subs({x: M1([1,2]), y: M2([3,4])}) # needs sage.modules
201
+ [11]
202
+
203
+ TESTS::
204
+
205
+ sage: M.<x,y> = FreeMonoid(2)
206
+ sage: (x*y)(QQ(4),QQ(5)).parent()
207
+ Rational Field
208
+
209
+ The codomain is by default the first parent::
210
+
211
+ sage: M.one()(QQ(4),QQ(5)).parent()
212
+ Rational Field
213
+
214
+ unless there is no variable and no substitution::
215
+
216
+ sage: M = FreeMonoid(0, [])
217
+ sage: M.one()().parent()
218
+ Free monoid on 0 generators ()
219
+
220
+ AUTHORS:
221
+
222
+ - Joel B. Mohler (2007-10-27)
223
+ """
224
+ if kwds and x:
225
+ raise ValueError("must not specify both a keyword and positional argument")
226
+
227
+ P = self.parent()
228
+
229
+ if kwds:
230
+ x = self.gens()
231
+ gens_dict = {name: i for i, name in enumerate(P.variable_names())}
232
+ for key, value in kwds.items():
233
+ if key in gens_dict:
234
+ x[gens_dict[key]] = value
235
+
236
+ if x and isinstance(x[0], tuple):
237
+ x = x[0]
238
+
239
+ if len(x) != self.parent().ngens():
240
+ raise ValueError("must specify as many values as generators in parent")
241
+
242
+ # if no substitution, do nothing
243
+ if not x:
244
+ return self
245
+
246
+ try:
247
+ # This will land in the parent of the first element
248
+ result = x[0].parent().one()
249
+ except (AttributeError, TypeError):
250
+ # unless the parent has no unit
251
+ result = NN.one()
252
+ for var_index, exponent in self._element_list:
253
+ replacement = x[var_index]
254
+ if exponent > 1:
255
+ result *= replacement ** exponent
256
+ elif exponent == 1:
257
+ result *= replacement
258
+ return result
259
+
260
+ def _mul_(self, y):
261
+ """
262
+ Multiply two elements ``self`` and ``y`` of the
263
+ free monoid.
264
+
265
+ EXAMPLES::
266
+
267
+ sage: a = FreeMonoid(5, 'a').gens()
268
+ sage: x = a[0] * a[1] * a[4]**3
269
+ sage: y = a[4] * a[0] * a[1]
270
+ sage: x*y
271
+ a0*a1*a4^4*a0*a1
272
+ """
273
+ M = self.parent()
274
+ z = M(1)
275
+ x_elt = self._element_list
276
+ y_elt = y._element_list
277
+ if not x_elt:
278
+ z._element_list = y_elt
279
+ elif not y_elt:
280
+ z._element_list = x_elt
281
+ else:
282
+ k = len(x_elt)-1
283
+ if x_elt[k][0] != y_elt[0][0]:
284
+ z._element_list = x_elt + y_elt
285
+ else:
286
+ m = (y_elt[0][0], x_elt[k][1]+y_elt[0][1])
287
+ z._element_list = x_elt[:k] + [m] + y_elt[1:]
288
+ return z
289
+
290
+ def __invert__(self):
291
+ """
292
+ EXAMPLES::
293
+
294
+ sage: a = FreeMonoid(5, 'a').gens()
295
+ sage: x = a[0]*a[1]*a[4]**3
296
+ sage: x**(-1)
297
+ Traceback (most recent call last):
298
+ ...
299
+ NotImplementedError
300
+ """
301
+ raise NotImplementedError
302
+
303
+ def __len__(self) -> int:
304
+ """
305
+ Return the degree of the monoid element ``self``, where each
306
+ generator of the free monoid is given degree `1`.
307
+
308
+ For example, the length of the identity is `0`, and the
309
+ length of `x_0^2x_1` is `3`.
310
+
311
+ EXAMPLES::
312
+
313
+ sage: F = FreeMonoid(3, 'a')
314
+ sage: z = F(1)
315
+ sage: len(z)
316
+ 0
317
+ sage: a = F.gens()
318
+ sage: len(a[0]**2 * a[1])
319
+ 3
320
+ """
321
+ return sum(x[1] for x in self._element_list)
322
+
323
+ def _richcmp_(self, other, op) -> bool:
324
+ """
325
+ Compare two free monoid elements with the same parents.
326
+
327
+ The ordering is first by increasing length, then lexicographically
328
+ on the underlying word.
329
+
330
+ EXAMPLES::
331
+
332
+ sage: S = FreeMonoid(3, 'a')
333
+ sage: (x,y,z) = S.gens()
334
+ sage: x * y < y * x
335
+ True
336
+
337
+ sage: a = FreeMonoid(5, 'a').gens()
338
+ sage: x = a[0]*a[1]*a[4]**3
339
+ sage: x < x
340
+ False
341
+ sage: x == x
342
+ True
343
+ sage: x >= x*x
344
+ False
345
+ """
346
+ m = sum(i for x, i in self._element_list)
347
+ n = sum(i for x, i in other._element_list)
348
+ if m != n:
349
+ return richcmp_not_equal(m, n, op)
350
+ v = tuple([x for x, i in self._element_list for j in range(i)])
351
+ w = tuple([x for x, i in other._element_list for j in range(i)])
352
+ return richcmp(v, w, op)
353
+
354
+ def _acted_upon_(self, x, self_on_left):
355
+ """
356
+ Return the action of the integer 1 on this element.
357
+
358
+ EXAMPLES::
359
+
360
+ sage: M.<x,y,z>=FreeMonoid(3)
361
+ sage: 1*x
362
+ x
363
+ """
364
+ if x == 1:
365
+ return self
366
+ return None
367
+
368
+ def to_word(self, alph=None):
369
+ """
370
+ Return ``self`` as a word.
371
+
372
+ INPUT:
373
+
374
+ - ``alph`` -- (optional) the alphabet which the result should
375
+ be specified in
376
+
377
+ EXAMPLES::
378
+
379
+ sage: M.<x,y,z> = FreeMonoid(3)
380
+ sage: a = x * x * y * x
381
+ sage: w = a.to_word(); w
382
+ word: xxyx
383
+ sage: w.to_monoid_element() == a
384
+ True
385
+
386
+ .. SEEALSO::
387
+
388
+ :meth:`to_list`
389
+ """
390
+ from sage.combinat.words.finite_word import Words
391
+ gens = self.parent().gens()
392
+ if alph is None:
393
+ alph = gens
394
+ alph = [str(c) for c in alph]
395
+ W = Words(alph, infinite=False)
396
+ return W(sum([[alph[gens.index(i[0])]] * i[1] for i in self], []))
397
+
398
+ def to_list(self, indices=False) -> list:
399
+ r"""
400
+ Return ``self`` as a list of generators.
401
+
402
+ If ``self`` equals `x_{i_1} x_{i_2} \cdots x_{i_n}`, with
403
+ `x_{i_1}, x_{i_2}, \ldots, x_{i_n}` being some of the
404
+ generators of the free monoid, then this method returns
405
+ the list `[x_{i_1}, x_{i_2}, \ldots, x_{i_n}]`.
406
+
407
+ If the optional argument ``indices`` is set to ``True``,
408
+ then the list `[i_1, i_2, \ldots, i_n]` is returned instead.
409
+
410
+ EXAMPLES::
411
+
412
+ sage: M.<x,y,z> = FreeMonoid(3)
413
+ sage: a = x * x * y * x
414
+ sage: w = a.to_list(); w
415
+ [x, x, y, x]
416
+ sage: M.prod(w) == a
417
+ True
418
+ sage: w = a.to_list(indices=True); w
419
+ [0, 0, 1, 0]
420
+ sage: a = M.one()
421
+ sage: a.to_list()
422
+ []
423
+
424
+ .. SEEALSO::
425
+
426
+ :meth:`to_word`
427
+ """
428
+ if not indices:
429
+ return sum(([i[0]] * i[1] for i in list(self)), [])
430
+ gens = self.parent().gens()
431
+ return sum(([gens.index(i[0])] * i[1] for i in list(self)), [])
@@ -0,0 +1,65 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.groups
3
+ """
4
+ Hecke Monoids
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2015 Nicolas M. Thiéry <nthiery at users.sf.net>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # https://www.gnu.org/licenses/
11
+ # ****************************************************************************
12
+ from sage.misc.cachefunc import cached_function
13
+ from sage.sets.finite_set_maps import FiniteSetMaps
14
+
15
+
16
+ @cached_function
17
+ def HeckeMonoid(W):
18
+ r"""
19
+ Return the `0`-Hecke monoid of the Coxeter group `W`.
20
+
21
+ INPUT:
22
+
23
+ - ``W`` -- a finite Coxeter group
24
+
25
+ Let `s_1,\ldots,s_n` be the simple reflections of `W`. The 0-Hecke
26
+ monoid is the monoid generated by projections `\pi_1,\ldots,\pi_n`
27
+ satisfying the same braid and commutation relations as the `s_i`.
28
+ It is of same cardinality as `W`.
29
+
30
+ .. NOTE::
31
+
32
+ This is currently a very basic implementation as the submonoid
33
+ of sorting maps on `W` generated by the simple projections of
34
+ `W`. It's only functional for `W` finite.
35
+
36
+ .. SEEALSO::
37
+
38
+ - :class:`CoxeterGroups`
39
+ - :class:`CoxeterGroups.ParentMethods.simple_projections`
40
+ - :class:`IwahoriHeckeAlgebra`
41
+
42
+ EXAMPLES::
43
+
44
+ sage: from sage.monoids.hecke_monoid import HeckeMonoid
45
+ sage: W = SymmetricGroup(4)
46
+ sage: H = HeckeMonoid(W); H
47
+ 0-Hecke monoid of the Symmetric group of order 4! as a permutation group
48
+ sage: pi = H.monoid_generators(); pi
49
+ Finite family {1: ..., 2: ..., 3: ...}
50
+ sage: all(pi[i]^2 == pi[i] for i in pi.keys())
51
+ True
52
+ sage: pi[1] * pi[2] * pi[1] == pi[2] * pi[1] * pi[2]
53
+ True
54
+ sage: pi[2] * pi[3] * pi[2] == pi[3] * pi[2] * pi[3]
55
+ True
56
+ sage: pi[1] * pi[3] == pi[3] * pi[1]
57
+ True
58
+ sage: H.cardinality()
59
+ 24
60
+ """
61
+ ambient_monoid = FiniteSetMaps(W, action='right')
62
+ pi = W.simple_projections(length_increasing=True).map(ambient_monoid)
63
+ H = ambient_monoid.submonoid(pi)
64
+ H.rename("0-Hecke monoid of the %s" % W)
65
+ return H