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,346 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ """
3
+ Baxter permutations
4
+ """
5
+ from sage.combinat.permutation import Permutations
6
+ from sage.rings.integer import Integer
7
+ from sage.rings.integer_ring import ZZ
8
+ from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
9
+ from sage.structure.parent import Parent
10
+ from sage.structure.unique_representation import UniqueRepresentation
11
+
12
+
13
+ class BaxterPermutations(UniqueRepresentation, Parent):
14
+ r"""
15
+ The combinatorial class of Baxter permutations.
16
+
17
+ A Baxter permutation is a permutation avoiding the generalized
18
+ permutation patterns `2-41-3` and `3-14-2`. In other words, a
19
+ permutation `\sigma` is a Baxter permutation if for any subword `u
20
+ := u_1u_2u_3u_4` of `\sigma` such that the letters `u_2` and `u_3`
21
+ are adjacent in `\sigma`, the standardized version of `u` is
22
+ neither `2413` nor `3142`.
23
+
24
+ See [Gir2012]_ for a study of Baxter permutations.
25
+
26
+ INPUT:
27
+
28
+ - ``n`` -- nonnegative integer (default: ``None``); the size of
29
+ the permutations
30
+
31
+ OUTPUT:
32
+
33
+ Return the combinatorial class of the Baxter permutations of size ``n``
34
+ if ``n`` is not ``None``. Otherwise, return the combinatorial class
35
+ of all Baxter permutations.
36
+
37
+ EXAMPLES::
38
+
39
+ sage: BaxterPermutations(5)
40
+ Baxter permutations of size 5
41
+ sage: BaxterPermutations()
42
+ Baxter permutations
43
+ """
44
+ @staticmethod
45
+ def __classcall_private__(classe, n=None):
46
+ """
47
+ EXAMPLES::
48
+
49
+ sage: BaxterPermutations(5)
50
+ Baxter permutations of size 5
51
+ sage: BaxterPermutations()
52
+ Baxter permutations
53
+ """
54
+ if n is None:
55
+ return BaxterPermutations_all()
56
+ return BaxterPermutations_size(n)
57
+
58
+
59
+ class BaxterPermutations_size(BaxterPermutations):
60
+ r"""
61
+ The enumerated set of Baxter permutations of a given size.
62
+
63
+ See :class:`BaxterPermutations` for the definition of Baxter
64
+ permutations.
65
+
66
+ EXAMPLES::
67
+
68
+ sage: from sage.combinat.baxter_permutations import BaxterPermutations_size
69
+ sage: BaxterPermutations_size(5)
70
+ Baxter permutations of size 5
71
+ """
72
+
73
+ def __init__(self, n):
74
+ """
75
+ EXAMPLES::
76
+
77
+ sage: from sage.combinat.baxter_permutations import BaxterPermutations_size
78
+ sage: BaxterPermutations_size(5)
79
+ Baxter permutations of size 5
80
+ """
81
+ self.element_class = Permutations(n).element_class
82
+ self._n = Integer(n)
83
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
84
+ super().__init__(category=FiniteEnumeratedSets())
85
+
86
+ def _repr_(self) -> str:
87
+ """
88
+ Return a string representation of ``self``.
89
+
90
+ EXAMPLES::
91
+
92
+ sage: from sage.combinat.baxter_permutations import BaxterPermutations_size
93
+ sage: BaxterPermutations_size(5)
94
+ Baxter permutations of size 5
95
+ """
96
+ return f"Baxter permutations of size {self._n}"
97
+
98
+ def __contains__(self, x) -> bool:
99
+ r"""
100
+ Return ``True`` if and only if ``x`` is a Baxter permutation of
101
+ size ``self._n``.
102
+
103
+ INPUT:
104
+
105
+ - ``x`` -- a permutation
106
+
107
+ EXAMPLES::
108
+
109
+ sage: Permutation([2, 1, 4, 3]) in BaxterPermutations(4)
110
+ True
111
+ sage: Permutation([2, 1, 4, 3]) in BaxterPermutations(5)
112
+ False
113
+ sage: Permutation([3, 1, 4, 2]) in BaxterPermutations(4)
114
+ False
115
+ sage: [len([p for p in Permutations(n) if p in BaxterPermutations(n)]) for n in range(7)]
116
+ [1, 1, 2, 6, 22, 92, 422]
117
+ sage: sorted([p for p in Permutations(6) if p in BaxterPermutations(6)]) == sorted(BaxterPermutations(6).list())
118
+ True
119
+ """
120
+ if x not in Permutations(self._n):
121
+ return False
122
+ for i in range(1, len(x) - 1):
123
+ a = x[i]
124
+ b = x[i + 1]
125
+ if a < b: # Hunting pattern 3-14-2.
126
+ max_l = 0
127
+ for x_j in x[:i]:
128
+ if x_j > a and x_j < b and x_j > max_l:
129
+ max_l = x_j
130
+ min_r = len(x) + 1
131
+ for x_j in x[i + 2:]:
132
+ if x_j > a and x_j < b and x_j < min_r:
133
+ min_r = x_j
134
+ if max_l > min_r:
135
+ return False
136
+ else: # Hunting pattern 2-41-3.
137
+ min_l = len(x) + 1
138
+ for x_j in x[:i]:
139
+ if x_j < a and x_j > b and x_j < min_l:
140
+ min_l = x_j
141
+ max_r = 0
142
+ for x_j in x[i + 2:]:
143
+ if x_j < a and x_j > b and x_j > max_r:
144
+ max_r = x_j
145
+ if min_l < max_r:
146
+ return False
147
+ return True
148
+
149
+ def __iter__(self):
150
+ r"""
151
+ Efficient generation of Baxter permutations.
152
+
153
+ OUTPUT: an iterator over the Baxter permutations of size ``self._n``
154
+
155
+ EXAMPLES::
156
+
157
+ sage: BaxterPermutations(4).list()
158
+ [[4, 3, 2, 1], [3, 4, 2, 1], [3, 2, 4, 1], [3, 2, 1, 4], [2, 4, 3, 1],
159
+ [4, 2, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4], [2, 1, 4, 3], [4, 2, 1, 3],
160
+ [2, 1, 3, 4], [1, 4, 3, 2], [4, 1, 3, 2], [1, 3, 4, 2], [1, 3, 2, 4],
161
+ [4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 2, 4], [1, 2, 4, 3], [1, 4, 2, 3],
162
+ [4, 1, 2, 3], [1, 2, 3, 4]]
163
+ sage: [len(BaxterPermutations(n)) for n in range(9)]
164
+ [1, 1, 2, 6, 22, 92, 422, 2074, 10754]
165
+
166
+ TESTS::
167
+
168
+ sage: all(a in BaxterPermutations(n) for n in range(7)
169
+ ....: for a in BaxterPermutations(n))
170
+ True
171
+
172
+ ALGORITHM:
173
+
174
+ The algorithm using generating trees described in [BBMF2008]_ is used.
175
+ The idea is that all Baxter permutations of size `n + 1` can be
176
+ obtained by inserting the letter `n + 1` either just before a left
177
+ to right maximum or just after a right to left maximum of a Baxter
178
+ permutation of size `n`.
179
+ """
180
+ if self._n == 0:
181
+ yield Permutations(0)([])
182
+ elif self._n == 1:
183
+ yield Permutations(1)([1])
184
+ else:
185
+ for b in BaxterPermutations(self._n - 1):
186
+ # Left to right maxima.
187
+ for j in b.reverse().saliances():
188
+ i = self._n - 2 - j
189
+ yield Permutations(self._n)(b[:i] + [self._n] + b[i:])
190
+ # Right to left maxima.
191
+ for i in b.saliances():
192
+ yield Permutations(self._n)(b[:i + 1] + [self._n] + b[i + 1:])
193
+
194
+ def _an_element_(self):
195
+ """
196
+ Return an element of ``self``.
197
+
198
+ EXAMPLES::
199
+
200
+ sage: BaxterPermutations(4)._an_element_()
201
+ [4, 3, 2, 1]
202
+ """
203
+ return self.first()
204
+
205
+ def cardinality(self):
206
+ r"""
207
+ Return the number of Baxter permutations of size ``self._n``.
208
+
209
+ For any positive integer `n`, the number of Baxter
210
+ permutations of size `n` equals
211
+
212
+ .. MATH::
213
+
214
+ \sum_{k=1}^n \dfrac
215
+ {\binom{n+1}{k-1} \binom{n+1}{k} \binom{n+1}{k+1}}
216
+ {\binom{n+1}{1} \binom{n+1}{2}} .
217
+
218
+ This is :oeis:`A001181`.
219
+
220
+ EXAMPLES::
221
+
222
+ sage: [BaxterPermutations(n).cardinality() for n in range(13)]
223
+ [1, 1, 2, 6, 22, 92, 422, 2074, 10754, 58202, 326240, 1882960, 11140560]
224
+
225
+ sage: BaxterPermutations(3r).cardinality()
226
+ 6
227
+ sage: parent(_)
228
+ Integer Ring
229
+ """
230
+ if self._n == 0:
231
+ return ZZ.one()
232
+ n = self._n + 1
233
+ return sum((n.binomial(k) *
234
+ n.binomial(k + 1) *
235
+ n.binomial(k + 2)) // (n * n.binomial(2))
236
+ for k in range(self._n))
237
+
238
+
239
+ class BaxterPermutations_all(DisjointUnionEnumeratedSets, BaxterPermutations):
240
+ r"""
241
+ The enumerated set of all Baxter permutations.
242
+
243
+ See :class:`BaxterPermutations` for the definition of Baxter
244
+ permutations.
245
+
246
+ EXAMPLES::
247
+
248
+ sage: from sage.combinat.baxter_permutations import BaxterPermutations_all
249
+ sage: BaxterPermutations_all()
250
+ Baxter permutations
251
+ """
252
+
253
+ def __init__(self, n=None):
254
+ r"""
255
+ EXAMPLES::
256
+
257
+ sage: from sage.combinat.baxter_permutations import BaxterPermutations_all
258
+ sage: BaxterPermutations_all()
259
+ Baxter permutations
260
+ """
261
+ self.element_class = Permutations().element_class
262
+ from sage.sets.non_negative_integers import NonNegativeIntegers
263
+ from sage.sets.family import Family
264
+ DisjointUnionEnumeratedSets.__init__(self,
265
+ Family(NonNegativeIntegers(),
266
+ BaxterPermutations_size),
267
+ facade=False, keepkey=False)
268
+
269
+ def _repr_(self):
270
+ r"""
271
+ Return a string representation of ``self``.
272
+
273
+ EXAMPLES::
274
+
275
+ sage: from sage.combinat.baxter_permutations import BaxterPermutations_all
276
+ sage: BaxterPermutations_all()
277
+ Baxter permutations
278
+ """
279
+ return "Baxter permutations"
280
+
281
+ def __contains__(self, x):
282
+ r"""
283
+ Return ``True`` if and only if ``x`` is a Baxter permutation.
284
+
285
+ INPUT:
286
+
287
+ - ``x`` -- any object
288
+
289
+ EXAMPLES::
290
+
291
+ sage: Permutation([4, 2, 1, 7, 3, 8, 5, 6]) in BaxterPermutations()
292
+ False
293
+ sage: Permutation([4, 3, 6, 9, 7, 5, 1, 2, 8]) in BaxterPermutations()
294
+ True
295
+
296
+ TESTS::
297
+
298
+ sage: 42 in BaxterPermutations()
299
+ False
300
+ """
301
+ if x not in Permutations():
302
+ return False
303
+ return x in BaxterPermutations(len(x))
304
+
305
+ def to_pair_of_twin_binary_trees(self, p):
306
+ r"""
307
+ Apply a bijection between Baxter permutations of size ``self._n``
308
+ and the set of pairs of twin binary trees with ``self._n`` nodes.
309
+
310
+ INPUT:
311
+
312
+ - ``p`` -- a Baxter permutation
313
+
314
+ OUTPUT:
315
+
316
+ The pair of twin binary trees `(T_L, T_R)` where `T_L`
317
+ (resp. `T_R`) is obtained by inserting the letters of ``p`` from
318
+ left to right (resp. right to left) following the binary search
319
+ tree insertion algorithm. This is called the *Baxter P-symbol*
320
+ in [Gir2012]_ Definition 4.1.
321
+
322
+ .. NOTE::
323
+
324
+ This method only works when ``p`` is a permutation. For words
325
+ with repeated letters, it would return two "right binary
326
+ search trees" (in the terminology of [Gir2012]_), which conflicts
327
+ with the definition in [Gir2012]_.
328
+
329
+ EXAMPLES::
330
+
331
+ sage: BP = BaxterPermutations()
332
+ sage: BP.to_pair_of_twin_binary_trees(Permutation([])) # needs sage.graphs
333
+ (., .)
334
+ sage: BP.to_pair_of_twin_binary_trees(Permutation([1, 2, 3])) # needs sage.graphs
335
+ (1[., 2[., 3[., .]]], 3[2[1[., .], .], .])
336
+ sage: BP.to_pair_of_twin_binary_trees(Permutation([3, 4, 1, 2])) # needs sage.graphs
337
+ (3[1[., 2[., .]], 4[., .]], 2[1[., .], 4[3[., .], .]])
338
+ """
339
+ from sage.combinat.binary_tree import LabelledBinaryTree
340
+ left = LabelledBinaryTree(None)
341
+ right = LabelledBinaryTree(None)
342
+ for a in p:
343
+ left = left.binary_search_insert(a)
344
+ for a in reversed(p):
345
+ right = right.binary_search_insert(a)
346
+ return (left, right)