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,337 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Vector partitions
4
+
5
+ AUTHORS:
6
+
7
+ - Amritanshu Prasad (2013): initial version
8
+ - Shriya M (2022): added new parameters such as ``distinct``, ``parts`` and
9
+ ``is_repeatable``
10
+ """
11
+ # ****************************************************************************
12
+ # Copyright (C) 2013 Amritanshu Prasad <amri@imsc.res.in>
13
+ # 2022 Shriya M <25shriya@gmail.com>
14
+ #
15
+ # Distributed under the terms of the GNU General Public License (GPL)
16
+ #
17
+ # This code is distributed in the hope that it will be useful, but
18
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
+ # General Public License for more details.
21
+ #
22
+ # The full text of the GPL is available at:
23
+ #
24
+ # http://www.gnu.org/licenses/
25
+ # ****************************************************************************
26
+
27
+ from sage.structure.parent import Parent
28
+ from sage.structure.unique_representation import UniqueRepresentation
29
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
30
+ from sage.combinat.combinat import CombinatorialElement
31
+ from sage.combinat.partition import Partition
32
+
33
+
34
+ def find_min(vect):
35
+ """
36
+ Return a string of ``0``'s with one ``1`` at the location where the list
37
+ ``vect`` has its last entry which is not equal to ``0``.
38
+
39
+ INPUT:
40
+
41
+ - ``vec`` -- list of integers
42
+
43
+ OUTPUT:
44
+
45
+ A list of the same length with ``0``'s everywhere, except for a ``1``
46
+ at the last position where ``vec`` has an entry not equal to ``0``.
47
+
48
+ EXAMPLES::
49
+
50
+ sage: from sage.combinat.vector_partition import find_min
51
+ sage: find_min([2, 1])
52
+ [0, 1]
53
+ sage: find_min([2, 1, 0])
54
+ [0, 1, 0]
55
+ """
56
+ i = len(vect)
57
+ while vect[i-1] == 0 and i > 0:
58
+ i = i-1
59
+ min = [0]*len(vect)
60
+ if i > 0:
61
+ min[i-1] = 1
62
+ return min
63
+
64
+
65
+ def IntegerVectorsIterator(vect, min=None):
66
+ """
67
+ Return an iterator over the list of integer vectors which are componentwise
68
+ less than or equal to ``vect``, and lexicographically greater than or equal
69
+ to ``min``.
70
+
71
+ INPUT:
72
+
73
+ - ``vect`` -- list of nonnegative integers
74
+ - ``min`` -- list of nonnegative integers dominated elementwise by ``vect``
75
+
76
+ OUTPUT:
77
+
78
+ A list in lexicographic order of all integer vectors (as lists) which are
79
+ dominated elementwise by ``vect`` and are greater than or equal to ``min`` in
80
+ lexicographic order.
81
+
82
+ EXAMPLES::
83
+
84
+ sage: from sage.combinat.vector_partition import IntegerVectorsIterator
85
+ sage: list(IntegerVectorsIterator([1, 1]))
86
+ [[0, 0], [0, 1], [1, 0], [1, 1]]
87
+
88
+ sage: list(IntegerVectorsIterator([1, 1], min = [1, 0]))
89
+ [[1, 0], [1, 1]]
90
+ """
91
+ vect = list(vect)
92
+ if not vect:
93
+ yield []
94
+ else:
95
+ if min is None:
96
+ min = [0] * len(vect)
97
+ if vect < min:
98
+ return
99
+ else:
100
+ for vec in IntegerVectorsIterator(vect[1:], min=min[1:]):
101
+ yield [min[0]] + vec
102
+ for j in range(min[0] + 1, vect[0] + 1):
103
+ for vec in IntegerVectorsIterator(vect[1:]):
104
+ yield [j] + vec
105
+
106
+
107
+ class VectorPartition(CombinatorialElement):
108
+ r"""
109
+ A vector partition is a multiset of integer vectors.
110
+ """
111
+ @staticmethod
112
+ def __classcall_private__(cls, vecpar):
113
+ """
114
+ Create a vector partition.
115
+
116
+ EXAMPLES::
117
+
118
+ sage: VectorPartition([[3, 2, 1], [2, 2, 1]])
119
+ [[2, 2, 1], [3, 2, 1]]
120
+
121
+ The parent class is the class of vector partitions of the sum of the
122
+ vectors in ``vecpar``::
123
+
124
+ sage: V = VectorPartition([[3, 2, 1], [2, 2, 1]])
125
+ sage: V.parent()._vec
126
+ (5, 4, 2)
127
+ """
128
+ vec = [sum([vec[i] for vec in vecpar]) for i in range(len(vecpar[0]))]
129
+ P = VectorPartitions(vec)
130
+ return P(vecpar)
131
+
132
+ def __init__(self, parent, vecpar):
133
+ """
134
+ Initialize ``self``.
135
+
136
+ EXAMPLES::
137
+
138
+ sage: elt = VectorPartition([[3, 2, 1], [2, 2, 1]])
139
+ sage: TestSuite(elt).run()
140
+ """
141
+ CombinatorialElement.__init__(self, parent, sorted(vecpar))
142
+
143
+ def sum(self):
144
+ """
145
+ Return the sum vector as a list.
146
+
147
+ EXAMPLES::
148
+
149
+ sage: V = VectorPartition([[3, 2, 1], [2, 2, 1]])
150
+ sage: V.sum()
151
+ [5, 4, 2]
152
+ """
153
+ return list(self.parent()._vec)
154
+
155
+ def partition_at_vertex(self, i):
156
+ """
157
+ Return the partition obtained by sorting the ``i``-th elements of
158
+ the vectors in the vector partition.
159
+
160
+ EXAMPLES::
161
+
162
+ sage: V = VectorPartition([[1, 2, 1], [2, 4, 1]])
163
+ sage: V.partition_at_vertex(1)
164
+ [4, 2]
165
+ """
166
+ return Partition(sorted([vec[i] for vec in self._list], reverse=True))
167
+
168
+
169
+ class VectorPartitions(UniqueRepresentation, Parent):
170
+ r"""
171
+ Class of all vector partitions of ``vec`` with all parts greater than
172
+ or equal to ``min`` in lexicographic order, with parts from ``parts``.
173
+
174
+ A vector partition of ``vec`` is a list of vectors with nonnegative
175
+ integer entries whose sum is ``vec``.
176
+
177
+ INPUT:
178
+
179
+ - ``vec`` -- integer vector
180
+ - ``min`` -- integer vector dominated elementwise by ``vec``
181
+ - ``parts`` -- finite list of possible parts
182
+ - ``distinct`` -- boolean, set to ``True`` if only vector partitions with
183
+ distinct parts are enumerated
184
+ - ``is_repeatable`` -- boolean function on ``parts`` which gives ``True``
185
+ in parts that can be repeated
186
+
187
+ EXAMPLES:
188
+
189
+ If ``min`` is not specified, then the class of all vector partitions of
190
+ ``vec`` is created::
191
+
192
+ sage: VP = VectorPartitions([2, 2])
193
+ sage: for vecpar in VP:
194
+ ....: print(vecpar)
195
+ [[0, 1], [0, 1], [1, 0], [1, 0]]
196
+ [[0, 1], [0, 1], [2, 0]]
197
+ [[0, 1], [1, 0], [1, 1]]
198
+ [[0, 1], [2, 1]]
199
+ [[0, 2], [1, 0], [1, 0]]
200
+ [[0, 2], [2, 0]]
201
+ [[1, 0], [1, 2]]
202
+ [[1, 1], [1, 1]]
203
+ [[2, 2]]
204
+
205
+ If ``distinct`` is set to be True, then distinct part partitions are created::
206
+
207
+ sage: VP = VectorPartitions([2,2], distinct = True)
208
+ sage: list(VP)
209
+ [[[0, 1], [1, 0], [1, 1]],
210
+ [[0, 1], [2, 1]],
211
+ [[0, 2], [2, 0]],
212
+ [[1, 0], [1, 2]],
213
+ [[2, 2]]]
214
+
215
+ If ``min`` is specified, then the class consists of only those vector
216
+ partitions whose parts are all greater than or equal to ``min`` in
217
+ lexicographic order::
218
+
219
+ sage: VP = VectorPartitions([2, 2], min = [1, 0])
220
+ sage: for vecpar in VP:
221
+ ....: print(vecpar)
222
+ [[1, 0], [1, 2]]
223
+ [[1, 1], [1, 1]]
224
+ [[2, 2]]
225
+ sage: VP = VectorPartitions([2, 2], min = [1, 0], distinct = True)
226
+ sage: for vecpar in VP:
227
+ ....: print(vecpar)
228
+ [[1, 0], [1, 2]]
229
+ [[2, 2]]
230
+
231
+ If ``parts`` is specified, then the class consists only of those vector partitions
232
+ whose parts are from ``parts``::
233
+
234
+ sage: Vec_Par = VectorPartitions([2,2], parts=[[0,1],[1,0],[1,1]])
235
+ sage: list(Vec_Par)
236
+ [[[0, 1], [0, 1], [1, 0], [1, 0]], [[0, 1], [1, 0], [1, 1]], [[1, 1], [1, 1]]]
237
+
238
+ If ``is_repeatable`` is specified, then the parts which satisfy the boolean function
239
+ ``is_repeatable`` are allowed to be repeated::
240
+
241
+
242
+ sage: Vector_Partitions = VectorPartitions([2,2], parts=[[0,1],[1,0],[1,1]], is_repeatable=lambda vec: sum(vec)%2!=0)
243
+ sage: list(Vector_Partitions)
244
+ [[[0, 1], [0, 1], [1, 0], [1, 0]], [[0, 1], [1, 0], [1, 1]]]
245
+ """
246
+ @staticmethod
247
+ def __classcall_private__(cls, vec, min=None, parts=None, distinct=False, is_repeatable=None):
248
+ r"""
249
+ Create the class of vector partitions of ``vec`` where all parts
250
+ are greater than or equal to the vector ``min``.
251
+
252
+ EXAMPLES::
253
+
254
+ sage: VP1 = VectorPartitions([2, 1])
255
+ sage: VP2 = VectorPartitions((2, 1), min = [0, 1])
256
+ sage: VP1 is VP2
257
+ True
258
+ """
259
+ if min is None:
260
+ min = find_min(vec) # tuple([0 for v in vec[:-1]]+[1])
261
+ if parts is None:
262
+ parts = list(IntegerVectorsIterator(vec, min=min))
263
+ if [0]*len(vec) in parts:
264
+ parts.remove([0]*len(vec))
265
+ if min in parts:
266
+ min_index = parts.index(min)
267
+ parts = parts[min_index:]
268
+ parts = list(parts)
269
+ for part_index in range(len(parts)):
270
+ parts[part_index] = tuple(parts[part_index])
271
+ return super().__classcall__(cls, tuple(vec), tuple(min), tuple(parts), distinct, is_repeatable)
272
+
273
+ def __init__(self, vec, min=None, parts=None, distinct=False, is_repeatable=None):
274
+ r"""
275
+ Initialize ``self``.
276
+
277
+ TESTS::
278
+
279
+ sage: VP = VectorPartitions([2, 2])
280
+ sage: TestSuite(VP).run()
281
+ """
282
+ Parent.__init__(self, category=FiniteEnumeratedSets())
283
+ self._vec = vec
284
+ self._min = min
285
+ self._parts = parts
286
+ self._distinct = distinct
287
+ self._is_repeatable = is_repeatable
288
+
289
+ def _element_constructor_(self, vecpar):
290
+ """
291
+ Construct an element of ``self``.
292
+
293
+ EXAMPLES::
294
+
295
+ sage: VP = VectorPartitions([2, 2])
296
+ sage: elt = VP([[1, 0], [1, 2]]); elt
297
+ [[1, 0], [1, 2]]
298
+ sage: elt.parent() is VP
299
+ True
300
+ """
301
+ return self.element_class(self, vecpar)
302
+
303
+ Element = VectorPartition
304
+
305
+ def __iter__(self):
306
+ r"""
307
+ Iterator for vector partitions.
308
+
309
+ EXAMPLES::
310
+
311
+ sage: VP = VectorPartitions([2, 2])
312
+ sage: VP.cardinality()
313
+ 9
314
+ """
315
+ if all(coord == 0 for coord in self._vec):
316
+ yield self.element_class(self, []) # the zero vector has only the empty partition
317
+ else:
318
+ for part in self._parts: # choose the first part
319
+ if tuple(part) == self._vec:
320
+ yield self.element_class(self, [list(part)])
321
+ elif any(part[i] > self._vec[i] for i in range(len(self._vec))):
322
+ pass
323
+ else:# recursively find all possibilities for the rest of the vector partition
324
+ new_vec = tuple(self._vec[i]-part[i] for i in range(len(self._vec)))
325
+ i = self._parts.index(part)
326
+ if self._is_repeatable is None:
327
+ if self._distinct:
328
+ new_parts = self._parts[i+1:]
329
+ else:
330
+ new_parts = self._parts[i:]
331
+ else:
332
+ if self._is_repeatable(part):
333
+ new_parts = self._parts[i:]
334
+ else:
335
+ new_parts = self._parts[i+1:]
336
+ for vecpar in VectorPartitions(new_vec, min=self._min, parts=new_parts, distinct=self._distinct, is_repeatable=self._is_repeatable):
337
+ yield self.element_class(self, [list(part)] + list(vecpar))