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,335 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Free Monoids
4
+
5
+ AUTHORS:
6
+
7
+ - David Kohel (2005-09)
8
+ - Simon King (2011-04): Put free monoids into the category framework
9
+
10
+ Sage supports free monoids on any prescribed finite number
11
+ `n\geq 0` of generators. Use the ``FreeMonoid``
12
+ function to create a free monoid, and the ``gen`` and
13
+ ``gens`` functions to obtain the corresponding
14
+ generators. You can print the generators as arbitrary strings using
15
+ the optional ``names`` argument to the
16
+ ``FreeMonoid`` function.
17
+ """
18
+ # ****************************************************************************
19
+ # Copyright (C) 2005 David Kohel <kohel@maths.usyd.edu>
20
+ #
21
+ # This program is free software: you can redistribute it and/or modify
22
+ # it under the terms of the GNU General Public License as published by
23
+ # the Free Software Foundation, either version 2 of the License, or
24
+ # (at your option) any later version.
25
+ # https://www.gnu.org/licenses/
26
+ # ****************************************************************************
27
+
28
+ from sage.rings.integer import Integer
29
+ from sage.structure.category_object import normalize_names
30
+ from .free_monoid_element import FreeMonoidElement
31
+
32
+ from .monoid import Monoid_class
33
+
34
+ from sage.combinat.words.finite_word import FiniteWord_class
35
+
36
+ from sage.structure.unique_representation import UniqueRepresentation
37
+ from sage.rings.integer_ring import ZZ
38
+
39
+
40
+ def is_FreeMonoid(x):
41
+ """
42
+ Return ``True`` if `x` is a free monoid.
43
+
44
+ EXAMPLES::
45
+
46
+ sage: from sage.monoids.free_monoid import is_FreeMonoid
47
+ sage: is_FreeMonoid(5)
48
+ doctest:warning...
49
+ DeprecationWarning: the function is_FreeMonoid is deprecated;
50
+ use 'isinstance(..., (FreeMonoid, IndexedFreeMonoid))' instead
51
+ See https://github.com/sagemath/sage/issues/37897 for details.
52
+ False
53
+ sage: is_FreeMonoid(FreeMonoid(7,'a'))
54
+ True
55
+ sage: is_FreeMonoid(FreeAbelianMonoid(7,'a'))
56
+ False
57
+ sage: is_FreeMonoid(FreeAbelianMonoid(0,''))
58
+ False
59
+ sage: is_FreeMonoid(FreeMonoid(index_set=ZZ))
60
+ True
61
+ sage: is_FreeMonoid(FreeAbelianMonoid(index_set=ZZ))
62
+ False
63
+ """
64
+ from sage.misc.superseded import deprecation
65
+ deprecation(37897, "the function is_FreeMonoid is deprecated; use 'isinstance(..., (FreeMonoid, IndexedFreeMonoid))' instead")
66
+ if isinstance(x, FreeMonoid):
67
+ return True
68
+ from sage.monoids.indexed_free_monoid import IndexedFreeMonoid
69
+ return isinstance(x, IndexedFreeMonoid)
70
+
71
+
72
+ class FreeMonoid(Monoid_class, UniqueRepresentation):
73
+ r"""
74
+ Return a free monoid on `n` generators or with the generators
75
+ indexed by a set `I`.
76
+
77
+ We construct free monoids by specifying either:
78
+
79
+ - the number of generators and/or the names of the generators
80
+ - the indexing set for the generators
81
+
82
+ INPUT:
83
+
84
+ - ``index_set`` -- an indexing set for the generators; if an
85
+ integer `n`, than this becomes `\{0, 1, \ldots, n-1\}`
86
+
87
+ - ``names`` -- names of generators
88
+
89
+ - ``commutative`` -- boolean (default: ``False``); whether the free
90
+ monoid is commutative or not
91
+
92
+ OUTPUT: a free monoid
93
+
94
+ EXAMPLES::
95
+
96
+ sage: F = FreeMonoid(3,'x'); F
97
+ Free monoid on 3 generators (x0, x1, x2)
98
+ sage: x = F.gens()
99
+ sage: x[0]*x[1]**5 * (x[0]*x[2])
100
+ x0*x1^5*x0*x2
101
+ sage: F = FreeMonoid(3, 'a')
102
+ sage: F
103
+ Free monoid on 3 generators (a0, a1, a2)
104
+
105
+ sage: F.<a,b,c,d,e> = FreeMonoid(); F
106
+ Free monoid on 5 generators (a, b, c, d, e)
107
+ sage: FreeMonoid(index_set=ZZ)
108
+ Free monoid indexed by Integer Ring
109
+
110
+ sage: F.<x,y,z> = FreeMonoid(abelian=True); F
111
+ Free abelian monoid on 3 generators (x, y, z)
112
+ sage: FreeMonoid(index_set=ZZ, commutative=True)
113
+ Free abelian monoid indexed by Integer Ring
114
+ """
115
+ @staticmethod
116
+ def __classcall_private__(cls, index_set=None, names=None,
117
+ commutative=False, **kwds):
118
+ r"""
119
+ Construct a free monoid or a free abelian monoid, depending on the
120
+ input. Also, normalize the input.
121
+
122
+ EXAMPLES::
123
+
124
+ sage: F.<a,b,c,d,e> = FreeMonoid(); F
125
+ Free monoid on 5 generators (a, b, c, d, e)
126
+ sage: FreeMonoid(index_set=ZZ)
127
+ Free monoid indexed by Integer Ring
128
+ sage: F.<x,y,z> = FreeMonoid(abelian=True); F
129
+ Free abelian monoid on 3 generators (x, y, z)
130
+ sage: FreeMonoid(index_set=ZZ, commutative=True)
131
+ Free abelian monoid indexed by Integer Ring
132
+ sage: F = FreeMonoid(index_set=ZZ, names='x,y,z')
133
+ sage: G = FreeMonoid(index_set=ZZ, names=['x', 'y', 'z'])
134
+ sage: F == G
135
+ True
136
+ sage: F is G
137
+ True
138
+
139
+ sage: FreeMonoid(2, names='a,b') is FreeMonoid(names=['a','b'])
140
+ True
141
+
142
+ Fix a bug when ``index_set`` is ``None`` and ``names`` is a
143
+ string (:issue:`26221`)::
144
+
145
+ sage: FreeMonoid(2, names=['a','b']) is FreeMonoid(names='a,b')
146
+ True
147
+ """
148
+ if 'abelian' in kwds:
149
+ commutative = kwds.pop('abelian')
150
+
151
+ if commutative:
152
+ from sage.monoids.free_abelian_monoid import FreeAbelianMonoid
153
+ return FreeAbelianMonoid(index_set, names, **kwds)
154
+
155
+ # Swap args (this works if names is None as well)
156
+ if isinstance(index_set, str):
157
+ names, index_set = index_set, names
158
+
159
+ if index_set is None and names is not None:
160
+ if isinstance(names, str):
161
+ index_set = names.count(',') + 1
162
+ else:
163
+ index_set = len(names)
164
+
165
+ if index_set not in ZZ:
166
+ if names is not None:
167
+ names = normalize_names(-1, names)
168
+ from sage.monoids.indexed_free_monoid import IndexedFreeMonoid
169
+ return IndexedFreeMonoid(index_set, names=names, **kwds)
170
+
171
+ if names is None:
172
+ raise ValueError("names must be specified")
173
+ names = normalize_names(index_set, names)
174
+ return super().__classcall__(cls, index_set, names)
175
+
176
+ Element = FreeMonoidElement
177
+
178
+ def __init__(self, n, names=None):
179
+ """
180
+ Return a free monoid on `n` generators or with the generators
181
+ indexed by a set `I`.
182
+
183
+ INPUT:
184
+
185
+ - ``n`` -- number of generators
186
+
187
+ - ``names`` -- names of generators
188
+
189
+ TESTS::
190
+
191
+ sage: M = FreeMonoid(3, names=['a','b','c'])
192
+ sage: TestSuite(M).run()
193
+ sage: F.<x,y> = FreeMonoid()
194
+ sage: TestSuite(F).run()
195
+ """
196
+ if not isinstance(n, (int, Integer)):
197
+ raise TypeError("n (=%s) must be an integer" % n)
198
+ if n < 0:
199
+ raise ValueError("n (=%s) must be nonnegative" % n)
200
+ self.__ngens = int(n)
201
+ Monoid_class.__init__(self, names)
202
+
203
+ def _repr_(self):
204
+ return f"Free monoid on {self.__ngens} generators {self.gens()}"
205
+
206
+ def _element_constructor_(self, x, check=True):
207
+ """
208
+ Return ``x`` coerced into this free monoid.
209
+
210
+ One can create a free monoid element from the integer 1, from
211
+ a list of 2-tuples of integers `(i,j)`, where `(i,j)`
212
+ corresponds to `x_i^j`, where `x_i` is the `i`-th generator,
213
+ and from words in the same alphabet as the generators.
214
+
215
+ EXAMPLES::
216
+
217
+ sage: F = FreeMonoid(3, 'a')
218
+ sage: F(1)
219
+ 1
220
+ sage: F(F.gen(0))
221
+ a0
222
+ sage: F(0)
223
+ Traceback (most recent call last):
224
+ ...
225
+ TypeError: argument x (= 0) is of the wrong type
226
+
227
+ An example with a list::
228
+
229
+ sage: F([(0,5),(1,2),(0,10),(0,2),(1,2)])
230
+ a0^5*a1^2*a0^12*a1^2
231
+
232
+ An example using words::
233
+
234
+ sage: F = FreeMonoid(3, 'a,b,c')
235
+ sage: w = Word('aabbcabac')
236
+ sage: F(w)
237
+ a^2*b^2*c*a*b*a*c
238
+ sage: F(Word([]))
239
+ 1
240
+
241
+ TESTS::
242
+
243
+ sage: F(F(w), check=False)
244
+ a^2*b^2*c*a*b*a*c
245
+
246
+ sage: F = FreeMonoid(3, 'a,b,c')
247
+ sage: G = FreeMonoid(2, 'a,c')
248
+ sage: F(G(Word("ac")))
249
+ a*c
250
+ """
251
+ # There should really be some careful type checking here...
252
+ if isinstance(x, FreeMonoidElement):
253
+ P = x.parent()
254
+ if P is self:
255
+ return x
256
+ elif P == self:
257
+ return self.element_class(self, x._element_list, check)
258
+ elif all(v in self.variable_names()
259
+ for v in P.variable_names()):
260
+ reindex = [next(j for j, w in enumerate(self.variable_names())
261
+ if v == w)
262
+ for v in P.variable_names()]
263
+ elt = [(reindex[i], exp) for i, exp in x._element_list]
264
+ return self.element_class(self, elt, check)
265
+ if isinstance(x, (int, Integer)) and x == 1:
266
+ return self.element_class(self, x, check)
267
+ if isinstance(x, FiniteWord_class):
268
+ d = self.gens_dict()
269
+ return self.prod([d[let] for let in x])
270
+ if isinstance(x, list):
271
+ return self.element_class(self, x, check)
272
+
273
+ raise TypeError("argument x (= %s) is of the wrong type" % x)
274
+
275
+ def __contains__(self, x):
276
+ return isinstance(x, FreeMonoidElement) and x.parent() == self
277
+
278
+ def gen(self, i=0):
279
+ """
280
+ The `i`-th generator of the monoid.
281
+
282
+ INPUT:
283
+
284
+ - ``i`` -- integer (default: 0)
285
+
286
+ EXAMPLES::
287
+
288
+ sage: F = FreeMonoid(3, 'a')
289
+ sage: F.gen(1)
290
+ a1
291
+ sage: F.gen(2)
292
+ a2
293
+ sage: F.gen(5)
294
+ Traceback (most recent call last):
295
+ ...
296
+ IndexError: argument i (= 5) must be between 0 and 2
297
+ """
298
+ n = self.__ngens
299
+ if i < 0 or not i < n:
300
+ msg = "argument i (= %s) must be between 0 and %s"
301
+ raise IndexError(msg % (i, n - 1))
302
+ return self.element_class(self, [(Integer(i), Integer(1))])
303
+
304
+ def ngens(self):
305
+ """
306
+ The number of free generators of the monoid.
307
+
308
+ EXAMPLES::
309
+
310
+ sage: F = FreeMonoid(2005, 'a')
311
+ sage: F.ngens()
312
+ 2005
313
+ """
314
+ return self.__ngens
315
+
316
+ def cardinality(self):
317
+ r"""
318
+ Return the cardinality of ``self``.
319
+
320
+ This is `\infty` if there is at least one generator.
321
+
322
+ EXAMPLES::
323
+
324
+ sage: F = FreeMonoid(2005, 'a')
325
+ sage: F.cardinality()
326
+ +Infinity
327
+
328
+ sage: F = FreeMonoid(0, [])
329
+ sage: F.cardinality()
330
+ 1
331
+ """
332
+ if self.__ngens == 0:
333
+ return Integer(1)
334
+ from sage.rings.infinity import infinity
335
+ return infinity