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,329 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ Counting, generating, and manipulating nonnegative integer matrices
5
+
6
+ Counting, generating, and manipulating nonnegative integer matrices with
7
+ prescribed row sums and column sums.
8
+
9
+ AUTHORS:
10
+
11
+ - Franco Saliola
12
+ """
13
+ #*****************************************************************************
14
+ # Copyright (C) 2012 Franco Saliola <saliola@gmail.com>
15
+ #
16
+ # Distributed under the terms of the GNU General Public License (GPL)
17
+ # http://www.gnu.org/licenses/
18
+ #*****************************************************************************
19
+
20
+ from sage.structure.unique_representation import UniqueRepresentation
21
+ from sage.structure.parent import Parent
22
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
23
+ from sage.combinat.integer_lists import IntegerListsLex
24
+ from sage.matrix.constructor import matrix
25
+ from sage.rings.integer_ring import ZZ
26
+
27
+
28
+ class IntegerMatrices(UniqueRepresentation, Parent):
29
+ r"""
30
+ The class of nonnegative integer matrices with
31
+ prescribed row sums and column sums.
32
+
33
+ An *integer matrix* `m` with column sums `c := (c_1,...,c_k)` and row
34
+ sums `l := (l_1,...,l_n)` where `c_1+...+c_k` is equal to `l_1+...+l_n`,
35
+ is a `n \times k` matrix `m = (m_{i,j})` such that
36
+ `m_{1,j}+\dots+m_{n,j} = c_j`, for all `j` and
37
+ `m_{i,1}+\dots+m_{i,k} = l_i`, for all `i`.
38
+
39
+ EXAMPLES:
40
+
41
+ There are `6` integer matrices with row sums `[3,2,2]` and column sums
42
+ `[2,5]`::
43
+
44
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
45
+ sage: IM = IntegerMatrices([3,2,2], [2,5]); IM
46
+ Non-negative integer matrices with row sums [3, 2, 2] and column sums [2, 5]
47
+ sage: IM.list()
48
+ [
49
+ [2 1] [1 2] [1 2] [0 3] [0 3] [0 3]
50
+ [0 2] [1 1] [0 2] [2 0] [1 1] [0 2]
51
+ [0 2], [0 2], [1 1], [0 2], [1 1], [2 0]
52
+ ]
53
+ sage: IM.cardinality()
54
+ 6
55
+ """
56
+ @staticmethod
57
+ def __classcall__(cls, row_sums, column_sums):
58
+ r"""
59
+ Normalize the inputs so that they are hashable.
60
+
61
+ INPUT:
62
+
63
+ - ``row_sums`` -- list, tuple, or anything defining a Composition
64
+ - ``column_sums`` -- list, tuple, or anything defining a Composition
65
+
66
+ EXAMPLES::
67
+
68
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
69
+ sage: IM = IntegerMatrices([4,4,5], [3,7,1,2]); IM
70
+ Non-negative integer matrices with row sums [4, 4, 5] and column sums [3, 7, 1, 2]
71
+ sage: IM = IntegerMatrices((4,4,5), (3,7,1,2)); IM
72
+ Non-negative integer matrices with row sums [4, 4, 5] and column sums [3, 7, 1, 2]
73
+ sage: IM = IntegerMatrices(Composition([4,4,5]), Composition([3,7,1,2])); IM
74
+ Non-negative integer matrices with row sums [4, 4, 5] and column sums [3, 7, 1, 2]
75
+ """
76
+ from sage.combinat.composition import Composition
77
+ row_sums = Composition(row_sums)
78
+ column_sums = Composition(column_sums)
79
+ return super().__classcall__(cls, row_sums, column_sums)
80
+
81
+ def __init__(self, row_sums, column_sums):
82
+ r"""
83
+ Constructor of this class; for documentation, see
84
+ :class:`IntegerMatrices`.
85
+
86
+ INPUT:
87
+
88
+ - ``row_sums`` -- Composition
89
+ - ``column_sums`` -- Composition
90
+
91
+ TESTS::
92
+
93
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
94
+ sage: IM = IntegerMatrices([3,2,2], [2,5]); IM
95
+ Non-negative integer matrices with row sums [3, 2, 2] and column sums [2, 5]
96
+ sage: TestSuite(IM).run()
97
+ """
98
+ self._row_sums = row_sums
99
+ self._col_sums = column_sums
100
+ Parent.__init__(self, category=FiniteEnumeratedSets())
101
+
102
+ def _repr_(self):
103
+ r"""
104
+ TESTS::
105
+
106
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
107
+ sage: IntegerMatrices([3,2,2], [2,5])._repr_()
108
+ 'Non-negative integer matrices with row sums [3, 2, 2] and column sums [2, 5]'
109
+ """
110
+ return "Non-negative integer matrices with row sums %s and column sums %s" % \
111
+ (self._row_sums, self._col_sums)
112
+
113
+ def __iter__(self):
114
+ r"""
115
+ An iterator for the integer matrices with the prescribed row sums and
116
+ columns sums.
117
+
118
+ EXAMPLES::
119
+
120
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
121
+ sage: IntegerMatrices([2,2], [1,2,1]).list()
122
+ [
123
+ [1 1 0] [1 0 1] [0 2 0] [0 1 1]
124
+ [0 1 1], [0 2 0], [1 0 1], [1 1 0]
125
+ ]
126
+ sage: IntegerMatrices([0,0],[0,0,0]).list()
127
+ [
128
+ [0 0 0]
129
+ [0 0 0]
130
+ ]
131
+ sage: IntegerMatrices([1,1],[1,1]).list()
132
+ [
133
+ [1 0] [0 1]
134
+ [0 1], [1 0]
135
+ ]
136
+ """
137
+ for x in integer_matrices_generator(self._row_sums, self._col_sums):
138
+ yield matrix(ZZ, x)
139
+
140
+ def __contains__(self, x):
141
+ r"""
142
+ Test if ``x`` is an element of ``self``.
143
+
144
+ INPUT:
145
+
146
+ - ``x`` -- matrix
147
+
148
+ EXAMPLES::
149
+
150
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
151
+ sage: IM = IntegerMatrices([4], [1,2,1])
152
+ sage: matrix([[1, 2, 1]]) in IM
153
+ True
154
+ sage: matrix(QQ, [[1, 2, 1]]) in IM
155
+ True
156
+ sage: matrix([[2, 1, 1]]) in IM
157
+ False
158
+
159
+ TESTS::
160
+
161
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
162
+ sage: IM = IntegerMatrices([4], [1,2,1])
163
+ sage: [1, 2, 1] in IM
164
+ False
165
+ sage: matrix([[-1, 3, 1]]) in IM
166
+ False
167
+ """
168
+ from sage.structure.element import Matrix
169
+ if not isinstance(x, Matrix):
170
+ return False
171
+ row_sums = [ZZ.zero()] * x.nrows()
172
+ col_sums = [ZZ.zero()] * x.ncols()
173
+ for i in range(x.nrows()):
174
+ for j in range(x.ncols()):
175
+ x_ij = x[i, j]
176
+ if x_ij not in ZZ or x_ij < 0:
177
+ return False
178
+ row_sums[i] += x_ij
179
+ col_sums[j] += x_ij
180
+ if row_sums[i] != self._row_sums[i]:
181
+ return False
182
+ if col_sums != self._col_sums:
183
+ return False
184
+ return True
185
+
186
+ def cardinality(self):
187
+ r"""
188
+ The number of integer matrices with the prescribed row sums and columns
189
+ sums.
190
+
191
+ EXAMPLES::
192
+
193
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
194
+ sage: IntegerMatrices([2,5], [3,2,2]).cardinality()
195
+ 6
196
+ sage: IntegerMatrices([1,1,1,1,1], [1,1,1,1,1]).cardinality()
197
+ 120
198
+ sage: IntegerMatrices([2,2,2,2], [2,2,2,2]).cardinality()
199
+ 282
200
+ sage: IntegerMatrices([4], [3]).cardinality()
201
+ 0
202
+ sage: len(IntegerMatrices([0,0], [0]).list())
203
+ 1
204
+
205
+ This method computes the cardinality using symmetric functions. Below
206
+ are the same examples, but computed by generating the actual matrices::
207
+
208
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
209
+ sage: len(IntegerMatrices([2,5], [3,2,2]).list())
210
+ 6
211
+ sage: len(IntegerMatrices([1,1,1,1,1], [1,1,1,1,1]).list())
212
+ 120
213
+ sage: len(IntegerMatrices([2,2,2,2], [2,2,2,2]).list())
214
+ 282
215
+ sage: len(IntegerMatrices([4], [3]).list())
216
+ 0
217
+ sage: len(IntegerMatrices([0], [0]).list())
218
+ 1
219
+ """
220
+ from sage.combinat.sf.sf import SymmetricFunctions
221
+ from sage.combinat.partition import Partition
222
+ h = SymmetricFunctions(ZZ).homogeneous()
223
+ row_partition = Partition(sorted(self._row_sums, reverse=True))
224
+ col_partition = Partition(sorted(self._col_sums, reverse=True))
225
+ return h[row_partition].scalar(h[col_partition])
226
+
227
+ def row_sums(self):
228
+ r"""
229
+ The row sums of the integer matrices in ``self``.
230
+
231
+ OUTPUT: Composition
232
+
233
+ EXAMPLES::
234
+
235
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
236
+ sage: IM = IntegerMatrices([3,2,2], [2,5])
237
+ sage: IM.row_sums()
238
+ [3, 2, 2]
239
+ """
240
+ return self._row_sums
241
+
242
+ def column_sums(self):
243
+ r"""
244
+ The column sums of the integer matrices in ``self``.
245
+
246
+ OUTPUT: Composition
247
+
248
+ EXAMPLES::
249
+
250
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
251
+ sage: IM = IntegerMatrices([3,2,2], [2,5])
252
+ sage: IM.column_sums()
253
+ [2, 5]
254
+ """
255
+ return self._col_sums
256
+
257
+ def to_composition(self, x):
258
+ r"""
259
+ The composition corresponding to the integer matrix.
260
+
261
+ This is the composition obtained by reading the entries of the matrix
262
+ from left to right along each row, and reading the rows from top to
263
+ bottom, ignore zeros.
264
+
265
+ INPUT:
266
+
267
+ - ``x`` -- matrix
268
+
269
+ EXAMPLES::
270
+
271
+ sage: from sage.combinat.integer_matrices import IntegerMatrices
272
+ sage: IM = IntegerMatrices([3,2,2], [2,5]); IM
273
+ Non-negative integer matrices with row sums [3, 2, 2] and column sums [2, 5]
274
+ sage: IM.list()
275
+ [
276
+ [2 1] [1 2] [1 2] [0 3] [0 3] [0 3]
277
+ [0 2] [1 1] [0 2] [2 0] [1 1] [0 2]
278
+ [0 2], [0 2], [1 1], [0 2], [1 1], [2 0]
279
+ ]
280
+ sage: for m in IM: print(IM.to_composition(m))
281
+ [2, 1, 2, 2]
282
+ [1, 2, 1, 1, 2]
283
+ [1, 2, 2, 1, 1]
284
+ [3, 2, 2]
285
+ [3, 1, 1, 1, 1]
286
+ [3, 2, 2]
287
+ """
288
+ from sage.combinat.composition import Composition
289
+ return Composition([entry for row in x for entry in row if entry != 0])
290
+
291
+
292
+ def integer_matrices_generator(row_sums, column_sums):
293
+ r"""
294
+ Recursively generate the integer matrices with the prescribed row sums and
295
+ column sums.
296
+
297
+ INPUT:
298
+
299
+ - ``row_sums`` -- list or tuple
300
+ - ``column_sums`` -- list or tuple
301
+
302
+ OUTPUT: an iterator producing a list of lists
303
+
304
+ EXAMPLES::
305
+
306
+ sage: from sage.combinat.integer_matrices import integer_matrices_generator
307
+ sage: iter = integer_matrices_generator([3,2,2], [2,5]); iter
308
+ <generator object ...integer_matrices_generator at ...>
309
+ sage: for m in iter: print(m)
310
+ [[2, 1], [0, 2], [0, 2]]
311
+ [[1, 2], [1, 1], [0, 2]]
312
+ [[1, 2], [0, 2], [1, 1]]
313
+ [[0, 3], [2, 0], [0, 2]]
314
+ [[0, 3], [1, 1], [1, 1]]
315
+ [[0, 3], [0, 2], [2, 0]]
316
+ """
317
+ column_sums = list(column_sums)
318
+ if sum(row_sums) != sum(column_sums):
319
+ return
320
+ if not row_sums:
321
+ yield []
322
+ elif len(row_sums) == 1:
323
+ yield [column_sums]
324
+ else:
325
+ I = IntegerListsLex(n=row_sums[0], length=len(column_sums), ceiling=column_sums)
326
+ for comp in I.backend._iter():
327
+ t = [column_sums[i]-ci for (i, ci) in enumerate(comp)]
328
+ for mat in integer_matrices_generator(row_sums[1:], t):
329
+ yield [list(comp)] + mat