passagemath-combinat 10.6.42__cp314-cp314t-win_amd64.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 (401) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. passagemath_combinat-10.6.42.dist-info/DELVEWHEEL +2 -0
  3. passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
  4. passagemath_combinat-10.6.42.dist-info/RECORD +401 -0
  5. passagemath_combinat-10.6.42.dist-info/WHEEL +5 -0
  6. passagemath_combinat-10.6.42.dist-info/top_level.txt +3 -0
  7. passagemath_combinat.libs/libgmp-10-3a5f019e2510aeaad918cab2b57a689d.dll +0 -0
  8. passagemath_combinat.libs/libsymmetrica-3-7dcf900932804d0df5fd0919b4668720.dll +0 -0
  9. sage/algebras/affine_nil_temperley_lieb.py +263 -0
  10. sage/algebras/all.py +24 -0
  11. sage/algebras/all__sagemath_combinat.py +35 -0
  12. sage/algebras/askey_wilson.py +935 -0
  13. sage/algebras/associated_graded.py +345 -0
  14. sage/algebras/cellular_basis.py +350 -0
  15. sage/algebras/cluster_algebra.py +2766 -0
  16. sage/algebras/down_up_algebra.py +860 -0
  17. sage/algebras/free_algebra.py +1698 -0
  18. sage/algebras/free_algebra_element.py +345 -0
  19. sage/algebras/free_algebra_quotient.py +405 -0
  20. sage/algebras/free_algebra_quotient_element.py +295 -0
  21. sage/algebras/free_zinbiel_algebra.py +885 -0
  22. sage/algebras/hall_algebra.py +783 -0
  23. sage/algebras/hecke_algebras/all.py +4 -0
  24. sage/algebras/hecke_algebras/ariki_koike_algebra.py +1796 -0
  25. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +475 -0
  26. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +3520 -0
  27. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1473 -0
  28. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +1079 -0
  29. sage/algebras/iwahori_hecke_algebra.py +3095 -0
  30. sage/algebras/jordan_algebra.py +1773 -0
  31. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +113 -0
  32. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +156 -0
  33. sage/algebras/lie_conformal_algebras/all.py +18 -0
  34. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +134 -0
  35. sage/algebras/lie_conformal_algebras/examples.py +43 -0
  36. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +131 -0
  37. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +139 -0
  38. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +174 -0
  39. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +167 -0
  40. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +107 -0
  41. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +135 -0
  42. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +353 -0
  43. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +236 -0
  44. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +78 -0
  45. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +328 -0
  46. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +117 -0
  47. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +86 -0
  48. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +82 -0
  49. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +205 -0
  50. sage/algebras/nil_coxeter_algebra.py +191 -0
  51. sage/algebras/q_commuting_polynomials.py +673 -0
  52. sage/algebras/q_system.py +608 -0
  53. sage/algebras/quantum_clifford.py +959 -0
  54. sage/algebras/quantum_groups/ace_quantum_onsager.py +693 -0
  55. sage/algebras/quantum_groups/all.py +9 -0
  56. sage/algebras/quantum_groups/fock_space.py +2219 -0
  57. sage/algebras/quantum_groups/q_numbers.py +207 -0
  58. sage/algebras/quantum_groups/quantum_group_gap.py +2695 -0
  59. sage/algebras/quantum_groups/representations.py +591 -0
  60. sage/algebras/quantum_matrix_coordinate_algebra.py +1006 -0
  61. sage/algebras/quantum_oscillator.py +623 -0
  62. sage/algebras/quaternion_algebra.py +20 -0
  63. sage/algebras/quaternion_algebra_element.py +55 -0
  64. sage/algebras/rational_cherednik_algebra.py +525 -0
  65. sage/algebras/schur_algebra.py +670 -0
  66. sage/algebras/shuffle_algebra.py +1011 -0
  67. sage/algebras/splitting_algebra.py +779 -0
  68. sage/algebras/tensor_algebra.py +709 -0
  69. sage/algebras/yangian.py +1082 -0
  70. sage/algebras/yokonuma_hecke_algebra.py +1018 -0
  71. sage/all__sagemath_combinat.py +44 -0
  72. sage/combinat/SJT.py +255 -0
  73. sage/combinat/affine_permutation.py +2405 -0
  74. sage/combinat/algebraic_combinatorics.py +55 -0
  75. sage/combinat/all.py +53 -0
  76. sage/combinat/all__sagemath_combinat.py +195 -0
  77. sage/combinat/alternating_sign_matrix.py +2063 -0
  78. sage/combinat/baxter_permutations.py +346 -0
  79. sage/combinat/bijectionist.py +3220 -0
  80. sage/combinat/binary_recurrence_sequences.py +1180 -0
  81. sage/combinat/blob_algebra.py +685 -0
  82. sage/combinat/catalog_partitions.py +27 -0
  83. sage/combinat/chas/all.py +23 -0
  84. sage/combinat/chas/fsym.py +1180 -0
  85. sage/combinat/chas/wqsym.py +2601 -0
  86. sage/combinat/cluster_complex.py +326 -0
  87. sage/combinat/colored_permutations.py +2039 -0
  88. sage/combinat/colored_permutations_representations.py +964 -0
  89. sage/combinat/composition_signed.py +142 -0
  90. sage/combinat/composition_tableau.py +855 -0
  91. sage/combinat/constellation.py +1729 -0
  92. sage/combinat/core.py +751 -0
  93. sage/combinat/counting.py +12 -0
  94. sage/combinat/crystals/affine.py +742 -0
  95. sage/combinat/crystals/affine_factorization.py +518 -0
  96. sage/combinat/crystals/affinization.py +331 -0
  97. sage/combinat/crystals/alcove_path.py +2013 -0
  98. sage/combinat/crystals/all.py +22 -0
  99. sage/combinat/crystals/bkk_crystals.py +141 -0
  100. sage/combinat/crystals/catalog.py +115 -0
  101. sage/combinat/crystals/catalog_elementary_crystals.py +18 -0
  102. sage/combinat/crystals/catalog_infinity_crystals.py +33 -0
  103. sage/combinat/crystals/catalog_kirillov_reshetikhin.py +18 -0
  104. sage/combinat/crystals/crystals.py +257 -0
  105. sage/combinat/crystals/direct_sum.py +260 -0
  106. sage/combinat/crystals/elementary_crystals.py +1251 -0
  107. sage/combinat/crystals/fast_crystals.py +441 -0
  108. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +1205 -0
  109. sage/combinat/crystals/generalized_young_walls.py +1076 -0
  110. sage/combinat/crystals/highest_weight_crystals.py +436 -0
  111. sage/combinat/crystals/induced_structure.py +695 -0
  112. sage/combinat/crystals/infinity_crystals.py +730 -0
  113. sage/combinat/crystals/kac_modules.py +863 -0
  114. sage/combinat/crystals/kirillov_reshetikhin.py +4196 -0
  115. sage/combinat/crystals/kyoto_path_model.py +497 -0
  116. sage/combinat/crystals/letters.cp314t-win_amd64.pyd +0 -0
  117. sage/combinat/crystals/letters.pxd +79 -0
  118. sage/combinat/crystals/letters.pyx +3056 -0
  119. sage/combinat/crystals/littelmann_path.py +1518 -0
  120. sage/combinat/crystals/monomial_crystals.py +1262 -0
  121. sage/combinat/crystals/multisegments.py +462 -0
  122. sage/combinat/crystals/mv_polytopes.py +467 -0
  123. sage/combinat/crystals/pbw_crystal.py +511 -0
  124. sage/combinat/crystals/pbw_datum.cp314t-win_amd64.pyd +0 -0
  125. sage/combinat/crystals/pbw_datum.pxd +4 -0
  126. sage/combinat/crystals/pbw_datum.pyx +487 -0
  127. sage/combinat/crystals/polyhedral_realization.py +372 -0
  128. sage/combinat/crystals/spins.cp314t-win_amd64.pyd +0 -0
  129. sage/combinat/crystals/spins.pxd +21 -0
  130. sage/combinat/crystals/spins.pyx +756 -0
  131. sage/combinat/crystals/star_crystal.py +290 -0
  132. sage/combinat/crystals/subcrystal.py +464 -0
  133. sage/combinat/crystals/tensor_product.py +1177 -0
  134. sage/combinat/crystals/tensor_product_element.cp314t-win_amd64.pyd +0 -0
  135. sage/combinat/crystals/tensor_product_element.pxd +35 -0
  136. sage/combinat/crystals/tensor_product_element.pyx +1870 -0
  137. sage/combinat/crystals/virtual_crystal.py +420 -0
  138. sage/combinat/cyclic_sieving_phenomenon.py +204 -0
  139. sage/combinat/debruijn_sequence.cp314t-win_amd64.pyd +0 -0
  140. sage/combinat/debruijn_sequence.pyx +355 -0
  141. sage/combinat/decorated_permutation.py +270 -0
  142. sage/combinat/degree_sequences.cp314t-win_amd64.pyd +0 -0
  143. sage/combinat/degree_sequences.pyx +588 -0
  144. sage/combinat/derangements.py +527 -0
  145. sage/combinat/descent_algebra.py +1008 -0
  146. sage/combinat/diagram.py +1551 -0
  147. sage/combinat/diagram_algebras.py +5886 -0
  148. sage/combinat/dyck_word.py +4349 -0
  149. sage/combinat/e_one_star.py +1623 -0
  150. sage/combinat/enumerated_sets.py +123 -0
  151. sage/combinat/expnums.cp314t-win_amd64.pyd +0 -0
  152. sage/combinat/expnums.pyx +148 -0
  153. sage/combinat/fast_vector_partitions.cp314t-win_amd64.pyd +0 -0
  154. sage/combinat/fast_vector_partitions.pyx +346 -0
  155. sage/combinat/fqsym.py +1977 -0
  156. sage/combinat/free_dendriform_algebra.py +954 -0
  157. sage/combinat/free_prelie_algebra.py +1141 -0
  158. sage/combinat/fully_commutative_elements.py +1077 -0
  159. sage/combinat/fully_packed_loop.py +1523 -0
  160. sage/combinat/gelfand_tsetlin_patterns.py +1409 -0
  161. sage/combinat/gray_codes.py +311 -0
  162. sage/combinat/grossman_larson_algebras.py +667 -0
  163. sage/combinat/growth.py +4352 -0
  164. sage/combinat/hall_polynomial.py +188 -0
  165. sage/combinat/hillman_grassl.py +866 -0
  166. sage/combinat/integer_matrices.py +329 -0
  167. sage/combinat/integer_vectors_mod_permgroup.py +1238 -0
  168. sage/combinat/k_tableau.py +4564 -0
  169. sage/combinat/kazhdan_lusztig.py +215 -0
  170. sage/combinat/key_polynomial.py +885 -0
  171. sage/combinat/knutson_tao_puzzles.py +2286 -0
  172. sage/combinat/lr_tableau.py +311 -0
  173. sage/combinat/matrices/all.py +24 -0
  174. sage/combinat/matrices/hadamard_matrix.py +3790 -0
  175. sage/combinat/matrices/latin.py +2912 -0
  176. sage/combinat/misc.py +401 -0
  177. sage/combinat/multiset_partition_into_sets_ordered.py +3541 -0
  178. sage/combinat/ncsf_qsym/all.py +21 -0
  179. sage/combinat/ncsf_qsym/combinatorics.py +317 -0
  180. sage/combinat/ncsf_qsym/generic_basis_code.py +1427 -0
  181. sage/combinat/ncsf_qsym/ncsf.py +5637 -0
  182. sage/combinat/ncsf_qsym/qsym.py +4053 -0
  183. sage/combinat/ncsf_qsym/tutorial.py +447 -0
  184. sage/combinat/ncsym/all.py +21 -0
  185. sage/combinat/ncsym/bases.py +855 -0
  186. sage/combinat/ncsym/dual.py +593 -0
  187. sage/combinat/ncsym/ncsym.py +2076 -0
  188. sage/combinat/necklace.py +551 -0
  189. sage/combinat/non_decreasing_parking_function.py +634 -0
  190. sage/combinat/nu_dyck_word.py +1474 -0
  191. sage/combinat/output.py +861 -0
  192. sage/combinat/parallelogram_polyomino.py +4326 -0
  193. sage/combinat/parking_functions.py +1602 -0
  194. sage/combinat/partition_algebra.py +1998 -0
  195. sage/combinat/partition_kleshchev.py +1982 -0
  196. sage/combinat/partition_shifting_algebras.py +584 -0
  197. sage/combinat/partition_tuple.py +3114 -0
  198. sage/combinat/path_tableaux/all.py +13 -0
  199. sage/combinat/path_tableaux/catalog.py +29 -0
  200. sage/combinat/path_tableaux/dyck_path.py +380 -0
  201. sage/combinat/path_tableaux/frieze.py +476 -0
  202. sage/combinat/path_tableaux/path_tableau.py +728 -0
  203. sage/combinat/path_tableaux/semistandard.py +510 -0
  204. sage/combinat/perfect_matching.py +779 -0
  205. sage/combinat/plane_partition.py +3300 -0
  206. sage/combinat/q_bernoulli.cp314t-win_amd64.pyd +0 -0
  207. sage/combinat/q_bernoulli.pyx +128 -0
  208. sage/combinat/quickref.py +81 -0
  209. sage/combinat/recognizable_series.py +2051 -0
  210. sage/combinat/regular_sequence.py +4316 -0
  211. sage/combinat/regular_sequence_bounded.py +543 -0
  212. sage/combinat/restricted_growth.py +81 -0
  213. sage/combinat/ribbon.py +20 -0
  214. sage/combinat/ribbon_shaped_tableau.py +489 -0
  215. sage/combinat/ribbon_tableau.py +1180 -0
  216. sage/combinat/rigged_configurations/all.py +46 -0
  217. sage/combinat/rigged_configurations/bij_abstract_class.py +548 -0
  218. sage/combinat/rigged_configurations/bij_infinity.py +370 -0
  219. sage/combinat/rigged_configurations/bij_type_A.py +163 -0
  220. sage/combinat/rigged_configurations/bij_type_A2_dual.py +338 -0
  221. sage/combinat/rigged_configurations/bij_type_A2_even.py +218 -0
  222. sage/combinat/rigged_configurations/bij_type_A2_odd.py +199 -0
  223. sage/combinat/rigged_configurations/bij_type_B.py +900 -0
  224. sage/combinat/rigged_configurations/bij_type_C.py +267 -0
  225. sage/combinat/rigged_configurations/bij_type_D.py +771 -0
  226. sage/combinat/rigged_configurations/bij_type_D_tri.py +392 -0
  227. sage/combinat/rigged_configurations/bij_type_D_twisted.py +576 -0
  228. sage/combinat/rigged_configurations/bij_type_E67.py +402 -0
  229. sage/combinat/rigged_configurations/bijection.py +143 -0
  230. sage/combinat/rigged_configurations/kleber_tree.py +1475 -0
  231. sage/combinat/rigged_configurations/kr_tableaux.py +1898 -0
  232. sage/combinat/rigged_configurations/rc_crystal.py +461 -0
  233. sage/combinat/rigged_configurations/rc_infinity.py +540 -0
  234. sage/combinat/rigged_configurations/rigged_configuration_element.py +2403 -0
  235. sage/combinat/rigged_configurations/rigged_configurations.py +1918 -0
  236. sage/combinat/rigged_configurations/rigged_partition.cp314t-win_amd64.pyd +0 -0
  237. sage/combinat/rigged_configurations/rigged_partition.pxd +15 -0
  238. sage/combinat/rigged_configurations/rigged_partition.pyx +680 -0
  239. sage/combinat/rigged_configurations/tensor_product_kr_tableaux.py +499 -0
  240. sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py +428 -0
  241. sage/combinat/rsk.py +3438 -0
  242. sage/combinat/schubert_polynomial.py +508 -0
  243. sage/combinat/set_partition.py +3318 -0
  244. sage/combinat/set_partition_iterator.cp314t-win_amd64.pyd +0 -0
  245. sage/combinat/set_partition_iterator.pyx +136 -0
  246. sage/combinat/set_partition_ordered.py +1590 -0
  247. sage/combinat/sf/abreu_nigro.py +346 -0
  248. sage/combinat/sf/all.py +52 -0
  249. sage/combinat/sf/character.py +576 -0
  250. sage/combinat/sf/classical.py +319 -0
  251. sage/combinat/sf/dual.py +996 -0
  252. sage/combinat/sf/elementary.py +549 -0
  253. sage/combinat/sf/hall_littlewood.py +1028 -0
  254. sage/combinat/sf/hecke.py +336 -0
  255. sage/combinat/sf/homogeneous.py +464 -0
  256. sage/combinat/sf/jack.py +1428 -0
  257. sage/combinat/sf/k_dual.py +1458 -0
  258. sage/combinat/sf/kfpoly.py +447 -0
  259. sage/combinat/sf/llt.py +789 -0
  260. sage/combinat/sf/macdonald.py +2019 -0
  261. sage/combinat/sf/monomial.py +525 -0
  262. sage/combinat/sf/multiplicative.py +113 -0
  263. sage/combinat/sf/new_kschur.py +1786 -0
  264. sage/combinat/sf/ns_macdonald.py +964 -0
  265. sage/combinat/sf/orthogonal.py +246 -0
  266. sage/combinat/sf/orthotriang.py +355 -0
  267. sage/combinat/sf/powersum.py +963 -0
  268. sage/combinat/sf/schur.py +880 -0
  269. sage/combinat/sf/sf.py +1653 -0
  270. sage/combinat/sf/sfa.py +7053 -0
  271. sage/combinat/sf/symplectic.py +253 -0
  272. sage/combinat/sf/witt.py +721 -0
  273. sage/combinat/shifted_primed_tableau.py +2735 -0
  274. sage/combinat/shuffle.py +830 -0
  275. sage/combinat/sidon_sets.py +146 -0
  276. sage/combinat/similarity_class_type.py +1721 -0
  277. sage/combinat/sine_gordon.py +618 -0
  278. sage/combinat/six_vertex_model.py +784 -0
  279. sage/combinat/skew_partition.py +2053 -0
  280. sage/combinat/skew_tableau.py +2989 -0
  281. sage/combinat/sloane_functions.py +8935 -0
  282. sage/combinat/specht_module.py +1403 -0
  283. sage/combinat/species/all.py +48 -0
  284. sage/combinat/species/characteristic_species.py +321 -0
  285. sage/combinat/species/composition_species.py +273 -0
  286. sage/combinat/species/cycle_species.py +284 -0
  287. sage/combinat/species/empty_species.py +155 -0
  288. sage/combinat/species/functorial_composition_species.py +148 -0
  289. sage/combinat/species/generating_series.py +673 -0
  290. sage/combinat/species/library.py +148 -0
  291. sage/combinat/species/linear_order_species.py +169 -0
  292. sage/combinat/species/misc.py +83 -0
  293. sage/combinat/species/partition_species.py +290 -0
  294. sage/combinat/species/permutation_species.py +268 -0
  295. sage/combinat/species/product_species.py +423 -0
  296. sage/combinat/species/recursive_species.py +476 -0
  297. sage/combinat/species/set_species.py +192 -0
  298. sage/combinat/species/species.py +820 -0
  299. sage/combinat/species/structure.py +539 -0
  300. sage/combinat/species/subset_species.py +243 -0
  301. sage/combinat/species/sum_species.py +225 -0
  302. sage/combinat/subword.py +564 -0
  303. sage/combinat/subword_complex.py +2122 -0
  304. sage/combinat/subword_complex_c.cp314t-win_amd64.pyd +0 -0
  305. sage/combinat/subword_complex_c.pyx +119 -0
  306. sage/combinat/super_tableau.py +821 -0
  307. sage/combinat/superpartition.py +1154 -0
  308. sage/combinat/symmetric_group_algebra.py +3774 -0
  309. sage/combinat/symmetric_group_representations.py +1830 -0
  310. sage/combinat/t_sequences.py +877 -0
  311. sage/combinat/tableau.py +9506 -0
  312. sage/combinat/tableau_residues.py +860 -0
  313. sage/combinat/tableau_tuple.py +5353 -0
  314. sage/combinat/tiling.py +2432 -0
  315. sage/combinat/triangles_FHM.py +777 -0
  316. sage/combinat/tutorial.py +1857 -0
  317. sage/combinat/vector_partition.py +337 -0
  318. sage/combinat/words/abstract_word.py +1722 -0
  319. sage/combinat/words/all.py +59 -0
  320. sage/combinat/words/alphabet.py +268 -0
  321. sage/combinat/words/finite_word.py +7201 -0
  322. sage/combinat/words/infinite_word.py +113 -0
  323. sage/combinat/words/lyndon_word.py +652 -0
  324. sage/combinat/words/morphic.py +351 -0
  325. sage/combinat/words/morphism.py +3878 -0
  326. sage/combinat/words/paths.py +2932 -0
  327. sage/combinat/words/shuffle_product.py +278 -0
  328. sage/combinat/words/suffix_trees.py +1873 -0
  329. sage/combinat/words/word.py +769 -0
  330. sage/combinat/words/word_char.cp314t-win_amd64.pyd +0 -0
  331. sage/combinat/words/word_char.pyx +847 -0
  332. sage/combinat/words/word_datatypes.cp314t-win_amd64.pyd +0 -0
  333. sage/combinat/words/word_datatypes.pxd +4 -0
  334. sage/combinat/words/word_datatypes.pyx +1067 -0
  335. sage/combinat/words/word_generators.py +2026 -0
  336. sage/combinat/words/word_infinite_datatypes.py +1218 -0
  337. sage/combinat/words/word_options.py +99 -0
  338. sage/combinat/words/words.py +2396 -0
  339. sage/data_structures/all__sagemath_combinat.py +1 -0
  340. sage/databases/all__sagemath_combinat.py +13 -0
  341. sage/databases/findstat.py +4897 -0
  342. sage/databases/oeis.py +2058 -0
  343. sage/databases/sloane.py +393 -0
  344. sage/dynamics/all__sagemath_combinat.py +14 -0
  345. sage/dynamics/cellular_automata/all.py +7 -0
  346. sage/dynamics/cellular_automata/catalog.py +34 -0
  347. sage/dynamics/cellular_automata/elementary.py +612 -0
  348. sage/dynamics/cellular_automata/glca.py +477 -0
  349. sage/dynamics/cellular_automata/solitons.py +1463 -0
  350. sage/dynamics/finite_dynamical_system.py +1249 -0
  351. sage/dynamics/finite_dynamical_system_catalog.py +382 -0
  352. sage/games/all.py +7 -0
  353. sage/games/hexad.py +704 -0
  354. sage/games/quantumino.py +591 -0
  355. sage/games/sudoku.py +889 -0
  356. sage/games/sudoku_backtrack.cp314t-win_amd64.pyd +0 -0
  357. sage/games/sudoku_backtrack.pyx +189 -0
  358. sage/groups/all__sagemath_combinat.py +1 -0
  359. sage/groups/indexed_free_group.py +489 -0
  360. sage/libs/all__sagemath_combinat.py +6 -0
  361. sage/libs/lrcalc/__init__.py +1 -0
  362. sage/libs/lrcalc/lrcalc.py +525 -0
  363. sage/libs/symmetrica/__init__.py +7 -0
  364. sage/libs/symmetrica/all.py +101 -0
  365. sage/libs/symmetrica/kostka.pxi +168 -0
  366. sage/libs/symmetrica/part.pxi +193 -0
  367. sage/libs/symmetrica/plet.pxi +42 -0
  368. sage/libs/symmetrica/sab.pxi +196 -0
  369. sage/libs/symmetrica/sb.pxi +332 -0
  370. sage/libs/symmetrica/sc.pxi +192 -0
  371. sage/libs/symmetrica/schur.pxi +956 -0
  372. sage/libs/symmetrica/symmetrica.cp314t-win_amd64.pyd +0 -0
  373. sage/libs/symmetrica/symmetrica.pxi +1172 -0
  374. sage/libs/symmetrica/symmetrica.pyx +39 -0
  375. sage/monoids/all.py +13 -0
  376. sage/monoids/automatic_semigroup.py +1054 -0
  377. sage/monoids/free_abelian_monoid.py +315 -0
  378. sage/monoids/free_abelian_monoid_element.cp314t-win_amd64.pyd +0 -0
  379. sage/monoids/free_abelian_monoid_element.pxd +16 -0
  380. sage/monoids/free_abelian_monoid_element.pyx +397 -0
  381. sage/monoids/free_monoid.py +335 -0
  382. sage/monoids/free_monoid_element.py +431 -0
  383. sage/monoids/hecke_monoid.py +65 -0
  384. sage/monoids/string_monoid.py +817 -0
  385. sage/monoids/string_monoid_element.py +547 -0
  386. sage/monoids/string_ops.py +143 -0
  387. sage/monoids/trace_monoid.py +972 -0
  388. sage/rings/all__sagemath_combinat.py +2 -0
  389. sage/sat/all.py +4 -0
  390. sage/sat/boolean_polynomials.py +405 -0
  391. sage/sat/converters/__init__.py +6 -0
  392. sage/sat/converters/anf2cnf.py +14 -0
  393. sage/sat/converters/polybori.py +611 -0
  394. sage/sat/solvers/__init__.py +5 -0
  395. sage/sat/solvers/cryptominisat.py +287 -0
  396. sage/sat/solvers/dimacs.py +783 -0
  397. sage/sat/solvers/picosat.py +228 -0
  398. sage/sat/solvers/sat_lp.py +156 -0
  399. sage/sat/solvers/satsolver.cp314t-win_amd64.pyd +0 -0
  400. sage/sat/solvers/satsolver.pxd +3 -0
  401. sage/sat/solvers/satsolver.pyx +405 -0
@@ -0,0 +1,447 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ Kostka-Foulkes polynomials
5
+
6
+ Based on the algorithms in John Stembridge's SF package for Maple
7
+ which can be found at http://www.math.lsa.umich.edu/~jrs/maple.html
8
+ .
9
+ """
10
+ # ****************************************************************************
11
+ # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>,
12
+ # 2007 John Stembridge
13
+ #
14
+ # Distributed under the terms of the GNU General Public License (GPL)
15
+ #
16
+ # This code is distributed in the hope that it will be useful,
17
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19
+ # General Public License for more details.
20
+ #
21
+ # The full text of the GPL is available at:
22
+ #
23
+ # https://www.gnu.org/licenses/
24
+ # ****************************************************************************
25
+
26
+ from sage.combinat.partition import _Partitions
27
+ from sage.combinat.partitions import ZS1_iterator
28
+ from sage.combinat.skew_partition import SkewPartitions
29
+ from sage.combinat.skew_tableau import SemistandardSkewTableaux
30
+ from sage.rings.integer_ring import ZZ
31
+ from sage.rings.polynomial.polynomial_ring import polygen
32
+
33
+
34
+ def KostkaFoulkesPolynomial(mu, nu, t=None):
35
+ r"""
36
+ Return the Kostka-Foulkes polynomial `K_{\mu, \nu}(t)`.
37
+ Here, `\mu` is a partition or a skew partition, whereas
38
+ `\nu` is a partition of the same size.
39
+
40
+ The Kostka-Foulkes polynomial is defined to be the sum
41
+ of the monomials `t^{\operatorname{charge}(T)}` over all
42
+ semistandard tableaux `T` of shape `\lambda / \mu``,
43
+ where `\operatorname{charge}(T)` denotes the charge
44
+ of the reading word of `T`
45
+ (see :meth:`sage.combinat.words.finite_word.FiniteWord_class.charge`).
46
+
47
+ INPUT:
48
+
49
+ - ``mu`` -- partition or skew partition
50
+ - ``nu`` -- partition
51
+ - ``t`` -- an optional parameter (default: ``None``)
52
+
53
+ OUTPUT:
54
+
55
+ - the Kostka-Foulkes polynomial indexed by ``mu`` and ``nu`` and
56
+ evaluated at the parameter ``t``. If ``t`` is ``None`` the resulting
57
+ polynomial is in the polynomial ring `\ZZ[t]`.
58
+
59
+ EXAMPLES::
60
+
61
+ sage: KostkaFoulkesPolynomial([2,2],[2,2])
62
+ 1
63
+ sage: KostkaFoulkesPolynomial([2,2],[4])
64
+ 0
65
+ sage: KostkaFoulkesPolynomial([2,2],[1,1,1,1])
66
+ t^4 + t^2
67
+ sage: KostkaFoulkesPolynomial([2,2],[2,1,1])
68
+ t
69
+ sage: q = PolynomialRing(QQ,'q').gen()
70
+ sage: KostkaFoulkesPolynomial([2,2],[2,1,1],q)
71
+ q
72
+ sage: KostkaFoulkesPolynomial([[3,2],[1]],[2,2],q)
73
+ q + 1
74
+
75
+ TESTS::
76
+
77
+ sage: KostkaFoulkesPolynomial([2,4],[2,2])
78
+ Traceback (most recent call last):
79
+ ...
80
+ ValueError: mu must be a partition or a skew partition
81
+ sage: KostkaFoulkesPolynomial([2,2],[2,4])
82
+ Traceback (most recent call last):
83
+ ...
84
+ ValueError: nu must be a partition
85
+ sage: KostkaFoulkesPolynomial([3,2],[2,1])
86
+ Traceback (most recent call last):
87
+ ...
88
+ ValueError: mu and nu must be partitions of the same size
89
+ """
90
+ if mu not in _Partitions:
91
+ if mu in SkewPartitions():
92
+ return kfpoly_skew(mu, nu, t)
93
+ raise ValueError("mu must be a partition or a skew partition")
94
+ if nu not in _Partitions:
95
+ raise ValueError("nu must be a partition")
96
+ if sum(mu) != sum(nu):
97
+ raise ValueError("mu and nu must be partitions of the same size")
98
+ return kfpoly(mu, nu, t)
99
+
100
+
101
+ def kfpoly(mu, nu, t=None):
102
+ r"""
103
+ Return the Kostka-Foulkes polynomial `K_{\mu, \nu}(t)`
104
+ by generating all rigging sequences for the shape `\mu`, and then
105
+ selecting those of content `\nu`.
106
+
107
+ INPUT:
108
+
109
+ - ``mu``, ``nu`` -- partitions
110
+ - ``t`` -- an optional parameter (default: ``None``)
111
+
112
+ OUTPUT:
113
+
114
+ - the Kostka-Foulkes polynomial indexed by partitions ``mu`` and ``nu`` and
115
+ evaluated at the parameter ``t``. If ``t`` is ``None`` the resulting polynomial
116
+ is in the polynomial ring `\ZZ['t']`.
117
+
118
+ EXAMPLES::
119
+
120
+ sage: from sage.combinat.sf.kfpoly import kfpoly
121
+ sage: kfpoly([2,2], [2,1,1])
122
+ t
123
+ sage: kfpoly([4], [2,1,1])
124
+ t^3
125
+ sage: kfpoly([4], [2,2])
126
+ t^2
127
+ sage: kfpoly([1,1,1,1], [2,2])
128
+ 0
129
+
130
+ TESTS::
131
+
132
+ sage: kfpoly([], [])
133
+ 1
134
+ """
135
+ if mu == nu:
136
+ return 1
137
+
138
+ if t is None:
139
+ t = polygen(ZZ, 't')
140
+
141
+ nuc = _Partitions(nu).conjugate()
142
+
143
+ f = lambda x: weight(x, t) if x[0] == nuc else 0
144
+
145
+ return sum(f(rg) for rg in riggings(mu))
146
+
147
+
148
+ def kfpoly_skew(lamu, nu, t=None):
149
+ r"""
150
+ Return the Kostka-Foulkes polynomial `K_{\lambda / \mu, \nu}(t)`
151
+ by summing `t^{\operatorname{charge}(T)}` over all semistandard
152
+ tableaux `T` of shape `\lambda / \mu``.
153
+
154
+ INPUT:
155
+
156
+ - ``lamu`` -- skew partition `\lambda / \mu`
157
+ - ``nu`` -- partition `\nu`
158
+ - ``t`` -- an optional parameter (default: ``None``)
159
+
160
+ OUTPUT:
161
+
162
+ - the Kostka-Foulkes polynomial indexed by ``mu`` and ``nu`` and
163
+ evaluated at the parameter ``t``. If ``t`` is ``None`` the
164
+ resulting polynomial is in the polynomial ring `\ZZ['t']`.
165
+
166
+ EXAMPLES::
167
+
168
+ sage: from sage.combinat.sf.kfpoly import kfpoly_skew
169
+ sage: kfpoly_skew([[3,3], [1,1]], [2,1,1])
170
+ t
171
+ sage: kfpoly_skew([[3,3], [1,1]], [2,1,1], 5)
172
+ 5
173
+ sage: kfpoly_skew([[5], [1]], [2,2])
174
+ t^2
175
+
176
+ TESTS::
177
+
178
+ sage: from sage.combinat.sf.kfpoly import kfpoly, kfpoly_skew
179
+ sage: all(kfpoly_skew(SkewPartition([b,[]]), c) == kfpoly(b,c)
180
+ ....: for n in range(6) for b in Partitions(n)
181
+ ....: for c in Partitions(n))
182
+ True
183
+ """
184
+ if t is None:
185
+ t = polygen(ZZ, 't')
186
+
187
+ return t.parent().sum(t ** T.to_word().charge()
188
+ for T in SemistandardSkewTableaux(lamu, nu))
189
+
190
+
191
+ def schur_to_hl(mu, t=None):
192
+ r"""
193
+ Return a dictionary corresponding to `s_\mu` in Hall-Littlewood `P` basis.
194
+
195
+ INPUT:
196
+
197
+ - ``mu`` -- a partition
198
+ - ``t`` -- an optional parameter (default: the generator from `\ZZ['t']` )
199
+
200
+ OUTPUT:
201
+
202
+ - a dictionary with the coefficients `K_{\mu\nu}(t)` for `\nu` smaller
203
+ in dominance order than `\mu`
204
+
205
+ EXAMPLES::
206
+
207
+ sage: from sage.combinat.sf.kfpoly import *
208
+ sage: schur_to_hl([1,1,1])
209
+ {[1, 1, 1]: 1}
210
+ sage: a = schur_to_hl([2,1])
211
+ sage: for mc in sorted(a.items()): print(mc)
212
+ ([1, 1, 1], t^2 + t)
213
+ ([2, 1], 1)
214
+ sage: a = schur_to_hl([3])
215
+ sage: for mc in sorted(a.items()): print(mc)
216
+ ([1, 1, 1], t^3)
217
+ ([2, 1], t)
218
+ ([3], 1)
219
+ sage: a = schur_to_hl([4])
220
+ sage: for mc in sorted(a.items()): print(mc)
221
+ ([1, 1, 1, 1], t^6)
222
+ ([2, 1, 1], t^3)
223
+ ([2, 2], t^2)
224
+ ([3, 1], t)
225
+ ([4], 1)
226
+ sage: a = schur_to_hl([3,1])
227
+ sage: for mc in sorted(a.items()): print(mc)
228
+ ([1, 1, 1, 1], t^5 + t^4 + t^3)
229
+ ([2, 1, 1], t^2 + t)
230
+ ([2, 2], t)
231
+ ([3, 1], 1)
232
+ sage: a = schur_to_hl([2,2])
233
+ sage: for mc in sorted(a.items()): print(mc)
234
+ ([1, 1, 1, 1], t^4 + t^2)
235
+ ([2, 1, 1], t)
236
+ ([2, 2], 1)
237
+ sage: a = schur_to_hl([2,1,1])
238
+ sage: for mc in sorted(a.items()): print(mc)
239
+ ([1, 1, 1, 1], t^3 + t^2 + t)
240
+ ([2, 1, 1], 1)
241
+ sage: a = schur_to_hl([1,1,1,1])
242
+ sage: for mc in sorted(a.items()): print(mc)
243
+ ([1, 1, 1, 1], 1)
244
+ sage: a = schur_to_hl([2,2,2])
245
+ sage: for mc in sorted(a.items()): print(mc)
246
+ ([1, 1, 1, 1, 1, 1], t^9 + t^7 + t^6 + t^5 + t^3)
247
+ ([2, 1, 1, 1, 1], t^4 + t^2)
248
+ ([2, 2, 1, 1], t)
249
+ ([2, 2, 2], 1)
250
+ """
251
+ if mu == []:
252
+ return {mu: 1}
253
+ if t is None:
254
+ t = polygen(ZZ, 't')
255
+
256
+ res = {}
257
+ for rg in riggings(mu):
258
+ res[rg[0]] = res.get(rg[0], 0) + weight(rg, t)
259
+
260
+ return {key.conjugate(): value for key, value in res.items()}
261
+
262
+
263
+ def riggings(part):
264
+ r"""
265
+ Generate all possible rigging sequences for a fixed partition ``part``.
266
+
267
+ INPUT:
268
+
269
+ - ``part`` -- a partition
270
+
271
+ OUTPUT: list of riggings associated to the partition ``part``
272
+
273
+ EXAMPLES::
274
+
275
+ sage: from sage.combinat.sf.kfpoly import *
276
+ sage: riggings([3])
277
+ [[[1, 1, 1]], [[2, 1]], [[3]]]
278
+ sage: riggings([2,1])
279
+ [[[2, 1], [1]], [[3], [1]]]
280
+ sage: riggings([1,1,1])
281
+ [[[3], [2], [1]]]
282
+ sage: riggings([2,2])
283
+ [[[2, 2], [1, 1]], [[3, 1], [1, 1]], [[4], [1, 1]], [[4], [2]]]
284
+ sage: riggings([2,2,2])
285
+ [[[3, 3], [2, 2], [1, 1]],
286
+ [[4, 2], [2, 2], [1, 1]],
287
+ [[5, 1], [2, 2], [1, 1]],
288
+ [[6], [2, 2], [1, 1]],
289
+ [[5, 1], [3, 1], [1, 1]],
290
+ [[6], [3, 1], [1, 1]],
291
+ [[6], [4], [2]]]
292
+ """
293
+ l = len(part)
294
+ res = [ [[],[]] ]
295
+ sa = 0
296
+ for i in sorted(part):
297
+ sa += i
298
+ res = [[new] + nu for nu in res for new in compat(sa, nu[0], nu[1])]
299
+
300
+ return [x[:l] for x in res]
301
+
302
+
303
+ def compat(n, mu, nu):
304
+ r"""
305
+ Generate all possible partitions of `n` that can precede `\mu, \nu`
306
+ in a rigging sequence.
307
+
308
+ INPUT:
309
+
310
+ - ``n`` -- positive integer
311
+ - ``mu``, ``nu`` -- partitions
312
+
313
+ OUTPUT: list of partitions
314
+
315
+ EXAMPLES::
316
+
317
+ sage: from sage.combinat.sf.kfpoly import *
318
+ sage: compat(4, [1], [2,1])
319
+ [[1, 1, 1, 1], [2, 1, 1], [2, 2], [3, 1], [4]]
320
+ sage: compat(3, [1], [2,1])
321
+ [[1, 1, 1], [2, 1], [3]]
322
+ sage: compat(2, [1], [])
323
+ [[2]]
324
+ sage: compat(3, [1], [])
325
+ [[2, 1], [3]]
326
+ sage: compat(3, [2], [1])
327
+ [[3]]
328
+ sage: compat(4, [1,1], [])
329
+ [[2, 2], [3, 1], [4]]
330
+ sage: compat(4, [2], [])
331
+ [[4]]
332
+ """
333
+ l = max(len(mu), len(nu))
334
+ mmu = list(mu) + [0]*(l-len(mu))
335
+ nnu = list(nu) + [0]*(l-len(nu))
336
+
337
+ bd = []
338
+ sa = 0
339
+ for i in range(l):
340
+ sa += 2*mmu[i] - nnu[i]
341
+ bd.append(sa)
342
+
343
+ for la in ZS1_iterator(n):
344
+ if dom(la, bd):
345
+ return [x.conjugate() for x in _Partitions(la).dominated_partitions()]
346
+
347
+ return [] # _Partitions([])
348
+
349
+
350
+ def dom(mup, snu):
351
+ """
352
+ Return ``True`` if ``sum(mu[:i+1]) >= snu[i]`` for all
353
+ ``0 <= i < len(snu)``; otherwise, it returns ``False``.
354
+
355
+ INPUT:
356
+
357
+ - ``mup`` -- a partition conjugate to ``mu``
358
+ - ``snu`` -- a sequence of positive integers
359
+
360
+ OUTPUT: boolean
361
+
362
+ EXAMPLES::
363
+
364
+ sage: from sage.combinat.sf.kfpoly import *
365
+ sage: dom([3,2,1],[2,4,5])
366
+ True
367
+ sage: dom([3,2,1],[2,4,7])
368
+ False
369
+ sage: dom([3,2,1],[2,6,5])
370
+ False
371
+ sage: dom([3,2,1],[4,4,4])
372
+ False
373
+
374
+ TESTS::
375
+
376
+ sage: dom([],[])
377
+ True
378
+ """
379
+ if not mup: # mup is empty:
380
+ return not snu # True if and only if snu is empty
381
+
382
+ l = len(snu)
383
+ lmup = len(mup)
384
+ # Special case for the largest columns
385
+ if any((k+1)*lmup < snu[k] for k in range(min(mup[-1],l))):
386
+ return False
387
+
388
+ pos = mup[-1]
389
+ sa = mup[-1] * lmup
390
+ for i in range(lmup-1, 0, -1):
391
+ for k in range(mup[i-1] - mup[i]):
392
+ if pos >= l: # We've reached the end of snu
393
+ return True
394
+ sa += i
395
+ if sa < snu[pos]:
396
+ return False
397
+ pos += 1
398
+ return all(sa >= snu[j] for j in range(pos, l))
399
+
400
+
401
+ def weight(rg, t=None):
402
+ r"""
403
+ Return the weight of a rigging.
404
+
405
+ INPUT:
406
+
407
+ - ``rg`` -- a rigging, a list of partitions
408
+ - ``t`` -- an optional parameter, (default: the generator from `\ZZ['t']`)
409
+
410
+ OUTPUT: a polynomial in the parameter `t`
411
+
412
+ EXAMPLES::
413
+
414
+ sage: from sage.combinat.sf.kfpoly import weight
415
+ sage: weight([[2,1], [1]])
416
+ 1
417
+ sage: weight([[3], [1]])
418
+ t^2 + t
419
+ sage: weight([[2,1], [3]])
420
+ t^4
421
+ sage: weight([[2, 2], [1, 1]])
422
+ 1
423
+ sage: weight([[3, 1], [1, 1]])
424
+ t
425
+ sage: weight([[4], [1, 1]], 2)
426
+ 16
427
+ sage: weight([[4], [2]], t=2)
428
+ 4
429
+ """
430
+ from sage.combinat.q_analogues import q_binomial
431
+ if t is None:
432
+ t = polygen(ZZ, 't')
433
+
434
+ nu = rg + [ [] ]
435
+ l = 1 + max( map(len, nu) )
436
+ nu = [ list(mu) + [0]*l for mu in nu ]
437
+ res = t**int(sum(i * (i-1) // 2 for i in rg[-1]))
438
+ for k in range(1, len(nu)-1):
439
+ sa = 0
440
+ mid = nu[k]
441
+ for i in range( max(len(rg[k]), len(rg[k-1])) ):
442
+ sa += nu[k-1][i] - 2*mid[i] + nu[k+1][i]
443
+ if mid[i] - mid[i+1] + sa >= 0:
444
+ res *= q_binomial(mid[i]-mid[i+1]+sa, sa, t)
445
+ mu = nu[k-1][i] - mid[i]
446
+ res *= t**int(mu * (mu-1) // 2)
447
+ return res