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,355 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ De Bruijn sequences
4
+
5
+ A De Bruijn sequence is defined as the shortest cyclic sequence that
6
+ incorporates all substrings of a certain length of an alphabet.
7
+
8
+ For instance, the `2^3=8` binary strings of length 3 are all included in the
9
+ following string::
10
+
11
+ sage: DeBruijnSequences(2,3).an_element()
12
+ [0, 0, 0, 1, 0, 1, 1, 1]
13
+
14
+ They can be obtained as a subsequence of the *cyclic* De Bruijn sequence of
15
+ parameters `k=2` and `n=3`::
16
+
17
+ sage: seq = DeBruijnSequences(2,3).an_element()
18
+ sage: print(Word(seq).string_rep())
19
+ 00010111
20
+ sage: shift = lambda i: [(i+j)%2**3 for j in range(3)]
21
+ sage: for i in range(2**3):
22
+ ....: w = Word([b if j in shift(i) else '*' for j, b in enumerate(seq)])
23
+ ....: print(w.string_rep())
24
+ 000*****
25
+ *001****
26
+ **010***
27
+ ***101**
28
+ ****011*
29
+ *****111
30
+ 0*****11
31
+ 00*****1
32
+
33
+ This sequence is of length `k^n`, which is best possible as it is the number of
34
+ `k`-ary strings of length `n`. One can equivalently define a De Bruijn sequence
35
+ of parameters `k` and `n` as a cyclic sequence of length `k^n` in which all
36
+ substring of length `n` are different.
37
+
38
+ See also :wikipedia:`De_Bruijn_sequence`.
39
+
40
+ TESTS:
41
+
42
+ Checking the sequences generated are indeed valid::
43
+
44
+ sage: for n in range(1, 7):
45
+ ....: for k in range(1, 7):
46
+ ....: D = DeBruijnSequences(k, n)
47
+ ....: if not D.an_element() in D:
48
+ ....: print("Something's dead wrong (n=%s, k=%s)!" %(n,k))
49
+ ....: break
50
+
51
+ AUTHOR:
52
+
53
+ - Eviatar Bach (2011): initial version
54
+
55
+ - Nathann Cohen (2011): Some work on the documentation and defined the
56
+ ``__contain__`` method
57
+ """
58
+
59
+ # ******************************************************************************
60
+ # Copyright (C) 2011 Eviatar Bach <eviatarbach@gmail.com>
61
+ #
62
+ # Distributed under the terms of the GNU General Public License (GPL)
63
+ # https://www.gnu.org/licenses/
64
+ # ******************************************************************************
65
+
66
+ from sage.data_structures.bitset_base cimport *
67
+
68
+
69
+ def debruijn_sequence(int k, int n):
70
+ """
71
+ The generating function for De Bruijn sequences. This avoids the object
72
+ creation, so is significantly faster than accessing from DeBruijnSequence.
73
+ For more information, see the documentation there. The algorithm used is
74
+ from Frank Ruskey's "Combinatorial Generation".
75
+
76
+ INPUT:
77
+
78
+ - ``k`` -- arity; must be an integer
79
+
80
+ - ``n`` -- substring length; must be an integer
81
+
82
+ EXAMPLES::
83
+
84
+ sage: from sage.combinat.debruijn_sequence import debruijn_sequence
85
+ sage: debruijn_sequence(3, 1)
86
+ [0, 1, 2]
87
+ """
88
+ global a, sequence
89
+ if k == 1:
90
+ return [0]
91
+ a = [0] * k * n
92
+ sequence = []
93
+ gen(1, 1, k, n)
94
+ return sequence
95
+
96
+
97
+ cdef gen(int t, int p, k, n):
98
+ """
99
+ The internal generation function. This should not be accessed by the
100
+ user.
101
+ """
102
+ cdef int j
103
+ if t > n:
104
+ if n % p == 0:
105
+ for j in range(1, p + 1):
106
+ sequence.append(a[j])
107
+ else:
108
+ a[t] = a[t - p]
109
+ gen(t + 1, p, k, n)
110
+ for j in range((a[t - p] + 1), (k)):
111
+ a[t] = j
112
+ gen(t + 1, t, k, n)
113
+
114
+
115
+ def is_debruijn_sequence(seq, k, n):
116
+ r"""
117
+ Given a sequence of integer elements in `0, \ldots, k-1`, tests whether it
118
+ corresponds to a De Bruijn sequence of parameters `k` and `n`.
119
+
120
+ INPUT:
121
+
122
+ - ``seq`` -- sequence of elements in `0, \ldots, k-1`
123
+
124
+ - ``n``, ``k`` -- integers
125
+
126
+ EXAMPLES::
127
+
128
+ sage: from sage.combinat.debruijn_sequence import is_debruijn_sequence
129
+ sage: s = DeBruijnSequences(2, 3).an_element()
130
+ sage: is_debruijn_sequence(s, 2, 3)
131
+ True
132
+ sage: is_debruijn_sequence(s + [0], 2, 3)
133
+ False
134
+ sage: is_debruijn_sequence([1] + s[1:], 2, 3)
135
+ False
136
+ """
137
+
138
+ if k == 1:
139
+ return seq == [0]
140
+
141
+ # The implementation is pretty straightforward.
142
+
143
+ # The variable "current" is the integer representing the value of a
144
+ # substring of length n. We iterate over all the possible substrings from
145
+ # left to right, and keep track of the values met so far with the bitset
146
+ # "seen".
147
+
148
+ cdef int i
149
+ cdef list s = seq
150
+ cdef int nn = n
151
+ cdef int kk = k
152
+
153
+ cdef int k_p_n = kk ** nn
154
+
155
+ cdef bitset_t seen
156
+
157
+ # Checking if the length is correct
158
+ if len(s) != kk ** nn:
159
+ return False
160
+
161
+ # Initializing the bitset
162
+ bitset_init(seen, k_p_n)
163
+ bitset_set_first_n(seen, 0)
164
+
165
+ # We initialize "current" to correspond to the word formed by the (n-1) last elements
166
+ cdef int current = 0
167
+
168
+ for i in range(n - 1):
169
+ current = kk * current + s[-n + i + 1]
170
+
171
+ answer = True
172
+
173
+ # Main loop, stopping if the same word has been met twice
174
+ for i in s:
175
+ current = (kk * current + i) % k_p_n
176
+
177
+ if bitset_in(seen, current) or i < 0 or i >= k:
178
+ answer = False
179
+ break
180
+
181
+ bitset_set(seen, current)
182
+
183
+ bitset_free(seen)
184
+
185
+ return answer
186
+
187
+
188
+ from sage.categories.finite_sets import FiniteSets
189
+ from sage.structure.unique_representation import UniqueRepresentation
190
+ from sage.structure.parent import Parent
191
+
192
+ from sage.rings.integer cimport Integer
193
+ from sage.rings.integer_ring import ZZ
194
+
195
+
196
+ class DeBruijnSequences(UniqueRepresentation, Parent):
197
+ r"""
198
+ Represent the De Bruijn sequences of given parameters `k` and `n`.
199
+
200
+ A De Bruijn sequence of parameters `k` and `n` is defined as the shortest
201
+ cyclic sequence that incorporates all substrings of length `n` a `k`-ary
202
+ alphabet.
203
+
204
+ This class can be used to generate the lexicographically smallest De Bruijn
205
+ sequence, to count the number of existing De Bruijn sequences or to test
206
+ whether a given sequence is De Bruijn.
207
+
208
+ INPUT:
209
+
210
+ - ``k`` -- a natural number to define arity; the letters used are the
211
+ integers `0, \ldots, k-1`
212
+
213
+ - ``n`` -- a natural number that defines the length of the substring
214
+
215
+ EXAMPLES:
216
+
217
+ Obtaining a De Bruijn sequence::
218
+
219
+ sage: seq = DeBruijnSequences(2, 3).an_element()
220
+ sage: seq
221
+ [0, 0, 0, 1, 0, 1, 1, 1]
222
+
223
+ Testing whether it is indeed one::
224
+
225
+ sage: seq in DeBruijnSequences(2, 3)
226
+ True
227
+
228
+ The total number for these parameters::
229
+
230
+ sage: DeBruijnSequences(2, 3).cardinality()
231
+ 2
232
+
233
+ .. NOTE::
234
+
235
+ This function only generates one De Bruijn sequence (the smallest
236
+ lexicographically). Support for generating all possible ones may be
237
+ added in the future.
238
+
239
+ TESTS:
240
+
241
+ Setting ``k`` to 1 will return 0:
242
+
243
+ ::
244
+
245
+ sage: DeBruijnSequences(1, 3).an_element()
246
+ [0]
247
+
248
+ Setting ``n`` to 1 will return the alphabet::
249
+
250
+ sage: DeBruijnSequences(3, 1).an_element()
251
+ [0, 1, 2]
252
+
253
+ The test suite::
254
+
255
+ sage: d = DeBruijnSequences(2, 3)
256
+ sage: TestSuite(d).run()
257
+ """
258
+ def __init__(self, k, n):
259
+ """
260
+ Constructor.
261
+
262
+ This checks the consistency of the given arguments.
263
+
264
+ TESTS:
265
+
266
+ Setting ``n`` or ``k`` to anything under 1 will return
267
+ a :exc:`ValueError`::
268
+
269
+ sage: DeBruijnSequences(3, 0).an_element()
270
+ Traceback (most recent call last):
271
+ ...
272
+ ValueError: k and n cannot be under 1
273
+
274
+ Setting ``n`` or ``k`` to any type except an integer will return a
275
+ :exc:`TypeError`::
276
+
277
+ sage: DeBruijnSequences(2.5, 3).an_element()
278
+ Traceback (most recent call last):
279
+ ...
280
+ TypeError: k and n must be integers
281
+ """
282
+ Parent.__init__(self, category=FiniteSets())
283
+ if n < 1 or k < 1:
284
+ raise ValueError('k and n cannot be under 1')
285
+ if (not isinstance(n, (Integer, int)) or
286
+ not isinstance(k, (Integer, int))):
287
+ raise TypeError('k and n must be integers')
288
+
289
+ self.k = k
290
+ self.n = n
291
+
292
+ def _repr_(self):
293
+ """
294
+ Provides a string representation of the object's parameter.
295
+
296
+ EXAMPLES::
297
+
298
+ sage: repr(DeBruijnSequences(4, 50))
299
+ 'De Bruijn sequences with arity 4 and substring length 50'
300
+ """
301
+ return ("De Bruijn sequences with arity %s and substring length %s"
302
+ % (self.k, self.n))
303
+
304
+ def _an_element_(self):
305
+ """
306
+ Return the lexicographically smallest De Bruijn sequence with the given
307
+ parameters.
308
+
309
+ ALGORITHM:
310
+
311
+ The algorithm is described in the book "Combinatorial Generation" by
312
+ Frank Ruskey. This program is based on a Ruby implementation by Jonas
313
+ Elfström, which is based on the C program by Joe Sadawa.
314
+
315
+ EXAMPLES::
316
+
317
+ sage: DeBruijnSequences(2, 3).an_element()
318
+ [0, 0, 0, 1, 0, 1, 1, 1]
319
+ """
320
+ return debruijn_sequence(self.k, self.n)
321
+
322
+ def __contains__(self, seq):
323
+ r"""
324
+ Test whether the given sequence is a De Bruijn sequence with
325
+ the current object's parameters.
326
+
327
+ INPUT:
328
+
329
+ - ``seq`` -- a sequence of integers
330
+
331
+ EXAMPLES::
332
+
333
+ sage: Sequences = DeBruijnSequences(2, 3)
334
+ sage: Sequences.an_element() in Sequences
335
+ True
336
+ """
337
+ return is_debruijn_sequence(seq, self.k, self.n)
338
+
339
+ def cardinality(self):
340
+ """
341
+ Return the number of distinct De Bruijn sequences for the object's
342
+ parameters.
343
+
344
+ EXAMPLES::
345
+
346
+ sage: DeBruijnSequences(2, 5).cardinality()
347
+ 2048
348
+
349
+ ALGORITHM:
350
+
351
+ The formula for cardinality is `k!^{k^{n-1}}/k^n` [Ros2002]_.
352
+ """
353
+ k = ZZ(self.k)
354
+ n = ZZ(self.n)
355
+ return (k.factorial() ** (k ** (n - 1))) // (k**n)
@@ -0,0 +1,270 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Decorated permutations
4
+
5
+ AUTHORS:
6
+
7
+ - Martin Rubey (2020): Initial version
8
+ """
9
+ # ****************************************************************************
10
+ # Copyright (C) 2020 Martin Rubey <martin.rubey at tuwien.ac.at>
11
+ #
12
+ # Distributed under the terms of the GNU General Public License (GPL)
13
+ #
14
+ # This code is distributed in the hope that it will be useful, but
15
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # General Public License for more details.
18
+ #
19
+ # The full text of the GPL is available at:
20
+ #
21
+ # https://www.gnu.org/licenses/
22
+ # ****************************************************************************
23
+ from sage.misc.inherit_comparison import InheritComparisonClasscallMetaclass
24
+ from sage.structure.unique_representation import UniqueRepresentation
25
+ from sage.structure.parent import Parent
26
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
27
+ from sage.arith.misc import factorial
28
+ from sage.rings.integer import Integer
29
+ from sage.combinat.permutation import Permutations
30
+ from sage.combinat.subset import Subsets
31
+ from sage.combinat.colored_permutations import SignedPermutations
32
+ from sage.structure.list_clone import ClonableArray
33
+
34
+
35
+ class DecoratedPermutation(ClonableArray,
36
+ metaclass=InheritComparisonClasscallMetaclass):
37
+ r"""
38
+ A decorated permutation.
39
+
40
+ A decorated permutation is a signed permutation where all
41
+ non-fixed points have positive sign.
42
+ """
43
+ @staticmethod
44
+ def __classcall_private__(cls, pi):
45
+ """
46
+ Create a decorated permutation.
47
+
48
+ EXAMPLES::
49
+
50
+ sage: DecoratedPermutation([2, 1, 3])
51
+ [2, 1, 3]
52
+
53
+ sage: DecoratedPermutation([2, 1, -3])
54
+ [2, 1, -3]
55
+
56
+ TESTS:
57
+
58
+ Check that hashing and comparison works::
59
+
60
+ sage: S = DecoratedPermutations(3)
61
+ sage: elt1 = S([2, 1, -3])
62
+ sage: elt2 = DecoratedPermutation([2, 1, -3])
63
+ sage: elt1 == elt2
64
+ True
65
+
66
+ sage: elt1 == [2, 1, -3]
67
+ False
68
+
69
+ sage: elt2 = DecoratedPermutation([2, 1, 3])
70
+ sage: elt1 != elt2
71
+ True
72
+
73
+ sage: hash(elt1) # random
74
+ 915443076393556996
75
+ """
76
+ pi = list(pi)
77
+ return DecoratedPermutations(len(pi))(pi)
78
+
79
+ def __init__(self, parent, pi, check=True):
80
+ """
81
+ Initialize ``self``.
82
+
83
+ EXAMPLES::
84
+
85
+ sage: S = DecoratedPermutations(3)
86
+ sage: elt = S([2, 1, -3])
87
+ sage: TestSuite(elt).run()
88
+ """
89
+ ClonableArray.__init__(self, parent, pi, check=check)
90
+
91
+ def check(self):
92
+ """
93
+ Check that ``self`` is a valid decorated permutation.
94
+
95
+ EXAMPLES::
96
+
97
+ sage: S = DecoratedPermutations(3)
98
+ sage: elt = S([2, 1, -3])
99
+ sage: elt.check()
100
+ sage: elt = S([2, -1, 3])
101
+ Traceback (most recent call last):
102
+ ...
103
+ ValueError: invalid decorated permutation
104
+ """
105
+ if self not in self.parent():
106
+ raise ValueError("{} is not a decorated permutation".format(self))
107
+
108
+ def size(self):
109
+ """
110
+ Return the size of the decorated permutation.
111
+
112
+ EXAMPLES::
113
+
114
+ sage: DecoratedPermutation([2, 1, -3]).size()
115
+ 3
116
+ """
117
+ return len(self)
118
+
119
+ def to_signed_permutation(self):
120
+ """
121
+ Return ``self`` as a signed permutation.
122
+
123
+ EXAMPLES::
124
+
125
+ sage: DecoratedPermutation([2, 1, -3]).to_signed_permutation()
126
+ [2, 1, -3]
127
+ """
128
+ return SignedPermutations(len(self))(list(self))
129
+
130
+
131
+ class DecoratedPermutations(UniqueRepresentation, Parent):
132
+ r"""
133
+ Class of all decorated permutations of `n`.
134
+
135
+ A decorated permutation is a signed permutation where all
136
+ non-fixed points have positive sign.
137
+
138
+ INPUT:
139
+
140
+ - ``n`` -- integer; the size of the decorated permutations
141
+
142
+ EXAMPLES:
143
+
144
+ This will create an instance to manipulate the decorated
145
+ permutations of size 3::
146
+
147
+ sage: S = DecoratedPermutations(3); S
148
+ Decorated permutations of size 3
149
+ sage: S.cardinality()
150
+ 16
151
+ """
152
+
153
+ def __init__(self, n):
154
+ r"""
155
+ Initialize ``self``.
156
+
157
+ TESTS::
158
+
159
+ sage: S = DecoratedPermutations(4)
160
+ sage: TestSuite(S).run()
161
+ """
162
+ self._n = n
163
+ Parent.__init__(self, category=FiniteEnumeratedSets())
164
+
165
+ def _repr_(self):
166
+ r"""
167
+ Return a string representation of ``self``.
168
+
169
+ TESTS::
170
+
171
+ sage: DecoratedPermutations(4)
172
+ Decorated permutations of size 4
173
+ """
174
+ return "Decorated permutations of size %s" % self._n
175
+
176
+ def __contains__(self, pi):
177
+ """
178
+ Check if ``pi`` is in ``self``.
179
+
180
+ TESTS::
181
+
182
+ sage: S = DecoratedPermutations(3)
183
+ sage: [2, 1, -3] in S
184
+ True
185
+ sage: [2, -1, 3] in S
186
+ False
187
+ """
188
+ if isinstance(pi, DecoratedPermutation):
189
+ return len(pi) == self._n
190
+
191
+ values = list(pi)
192
+ if len(values) != self._n:
193
+ return False
194
+ abs_values = [abs(v) for v in values]
195
+ for i, (v, abs_v) in enumerate(zip(values, abs_values), 1):
196
+ if i != abs_v and v < 0:
197
+ return False
198
+ return sorted(abs_values) == list(range(1, self._n + 1))
199
+
200
+ def _element_constructor_(self, pi, check=True):
201
+ """
202
+ Construct an element of ``self``.
203
+
204
+ EXAMPLES::
205
+
206
+ sage: S = DecoratedPermutations(3)
207
+ sage: elt = S([2, 1, -3])
208
+ sage: elt.parent() is S
209
+ True
210
+ """
211
+ if isinstance(pi, DecoratedPermutation):
212
+ if pi.parent() is self:
213
+ return pi
214
+ raise ValueError("cannot convert between decorated permutations of different sizes")
215
+
216
+ pi = tuple(pi)
217
+ if check and pi not in self:
218
+ raise ValueError('invalid decorated permutation')
219
+ return self.element_class(self, pi)
220
+
221
+ Element = DecoratedPermutation
222
+
223
+ def _an_element_(self):
224
+ """
225
+ Return an element of ``self``.
226
+
227
+ EXAMPLES::
228
+
229
+ sage: S = DecoratedPermutations(3)
230
+ sage: S._an_element_()
231
+ [1, 2, 3]
232
+ """
233
+ return self.element_class(self, list(range(1, self._n + 1)))
234
+
235
+ def cardinality(self):
236
+ r"""
237
+ Return the cardinality of ``self``.
238
+
239
+ The number of decorated permutations of size `n` is equal to
240
+
241
+ .. MATH::
242
+
243
+ \sum_{k=0^n} \frac{n!}{k!}
244
+
245
+ EXAMPLES::
246
+
247
+ sage: [DecoratedPermutations(n).cardinality() for n in range(11)]
248
+ [1, 2, 5, 16, 65, 326, 1957, 13700, 109601, 986410, 9864101]
249
+ """
250
+ return Integer(sum(factorial(self._n) // factorial(k)
251
+ for k in range(self._n + 1)))
252
+
253
+ def __iter__(self):
254
+ r"""
255
+ Iterator on the decorated permutations of size `n`.
256
+
257
+ TESTS::
258
+
259
+ sage: S = DecoratedPermutations(2); S.list()
260
+ [[1, 2], [-1, 2], [1, -2], [-1, -2], [2, 1]]
261
+ sage: sum(1 for a in S)
262
+ 5
263
+ """
264
+ for sigma in Permutations(self._n):
265
+ F = sigma.fixed_points()
266
+ for X in Subsets(F):
267
+ tau = list(sigma)
268
+ for i in X:
269
+ tau[i - 1] = -tau[i - 1]
270
+ yield DecoratedPermutations(self._n)(tau)