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,464 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ Homogeneous symmetric functions
5
+
6
+ By this we mean the basis formed of the complete homogeneous
7
+ symmetric functions `h_\lambda`, not an arbitrary graded basis.
8
+ """
9
+ #*****************************************************************************
10
+ # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>
11
+ # 2012 Mike Zabrocki <mike.zabrocki@gmail.com>
12
+ #
13
+ # Distributed under the terms of the GNU General Public License (GPL)
14
+ #
15
+ # This code is distributed in the hope that it will be useful,
16
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ # General Public License for more details.
19
+ #
20
+ # The full text of the GPL is available at:
21
+ #
22
+ # http://www.gnu.org/licenses/
23
+ #*****************************************************************************
24
+
25
+ ####################################
26
+ # #
27
+ # Homogeneous Symmetric Functions #
28
+ # #
29
+ ####################################
30
+ from sage.arith.misc import binomial, factorial
31
+ from sage.combinat.partition import Partition
32
+ from sage.combinat.sf import classical, multiplicative
33
+ from sage.misc.misc_c import prod
34
+ from sage.rings.infinity import infinity
35
+
36
+
37
+ class SymmetricFunctionAlgebra_homogeneous(multiplicative.SymmetricFunctionAlgebra_multiplicative):
38
+ def __init__(self, Sym):
39
+ """
40
+ A class of methods specific to the homogeneous basis of
41
+ symmetric functions.
42
+
43
+ INPUT:
44
+
45
+ - ``self`` -- a homogeneous basis of symmetric functions
46
+ - ``Sym`` -- an instance of the ring of symmetric functions
47
+
48
+ TESTS::
49
+
50
+ sage: h = SymmetricFunctions(QQ).e()
51
+ sage: h == loads(dumps(h))
52
+ True
53
+ sage: TestSuite(h).run(skip=['_test_associativity', '_test_distributivity', '_test_prod'])
54
+ sage: TestSuite(h).run(elements = [h[1,1]+h[2], h[1]+2*h[1,1]])
55
+ """
56
+ classical.SymmetricFunctionAlgebra_classical.__init__(self, Sym, "homogeneous", 'h')
57
+
58
+ def _dual_basis_default(self):
59
+ r"""
60
+ Return the dual basis to ``self``.
61
+
62
+ INPUT:
63
+
64
+ - ``self`` -- a homogeneous basis of symmetric functions
65
+ - ``scalar`` -- (optional) input which specifies a function ``zee``
66
+ on partitions. The function ``zee`` determines the scalar
67
+ product on the power sum basis with normalization
68
+ `\langle p_\mu, p_\mu \rangle = \mathrm{zee}(mu)`.
69
+ (default: uses standard ``zee`` function)
70
+ - ``scalar_name`` -- specifies the name of the scalar function
71
+ (optional)
72
+ - ``prefix`` -- (optional) input which specifies the prefix to be
73
+ used to display the basis
74
+
75
+ OUTPUT:
76
+
77
+ The dual basis of the homogeneous basis with respect to the
78
+ standard scalar product (the monomial basis). If a function
79
+ ``zee`` is specified, the dual basis is with respect to the
80
+ modified scalar product.
81
+
82
+ EXAMPLES::
83
+
84
+ sage: m = SymmetricFunctions(QQ).m()
85
+ sage: h = SymmetricFunctions(QQ).h()
86
+ sage: h.dual_basis() == m
87
+ True
88
+
89
+ sage: zee = lambda x : 2
90
+ sage: hh = h.dual_basis(zee); hh
91
+ Dual basis to Symmetric Functions over Rational Field in the homogeneous basis
92
+ sage: hh[2,1].scalar(h[2,1])
93
+ 1
94
+ sage: hh[2,2].scalar(h[2,2])
95
+ 4
96
+
97
+ TESTS::
98
+
99
+ sage: h._dual_basis_default() is h.dual_basis()
100
+ True
101
+ """
102
+ return self.realization_of().m()
103
+
104
+ def coproduct_on_generators(self, i):
105
+ r"""
106
+ Return the coproduct on `h_i`.
107
+
108
+ INPUT:
109
+
110
+ - ``self`` -- a homogeneous basis of symmetric functions
111
+ - ``i`` -- nonnegative integer
112
+
113
+ OUTPUT: the sum `\sum_{r=0}^i h_r \otimes h_{i-r}`
114
+
115
+ EXAMPLES::
116
+
117
+ sage: Sym = SymmetricFunctions(QQ)
118
+ sage: h = Sym.homogeneous()
119
+ sage: h.coproduct_on_generators(2)
120
+ h[] # h[2] + h[1] # h[1] + h[2] # h[]
121
+ sage: h.coproduct_on_generators(0)
122
+ h[] # h[]
123
+ """
124
+ def P(i):
125
+ return Partition([i]) if i else Partition([])
126
+ T = self.tensor_square()
127
+ return T.sum_of_monomials( (P(j), P(i-j)) for j in range(i+1) )
128
+
129
+ def _magma_init_(self, magma):
130
+ """
131
+ Used in converting this ring to the corresponding ring in MAGMA.
132
+
133
+ EXAMPLES::
134
+
135
+ sage: # optional - magma
136
+ sage: H = SymmetricFunctions(QQ).h()
137
+ sage: t = 4*H[3,2]+9
138
+ sage: mt = magma(t); mt
139
+ 9 + 4*$.[3,2]
140
+ sage: mt.sage()
141
+ 9*h[] + 4*h[3, 2]
142
+ """
143
+ B = magma(self.base_ring())
144
+ Bref = B._ref()
145
+ return f"SymmetricFunctionAlgebraHomogeneous({Bref})"
146
+
147
+ class Element(classical.SymmetricFunctionAlgebra_classical.Element):
148
+ def omega(self):
149
+ r"""
150
+ Return the image of ``self`` under the omega automorphism.
151
+
152
+ The *omega automorphism* is defined to be the unique algebra
153
+ endomorphism `\omega` of the ring of symmetric functions that
154
+ satisfies `\omega(e_k) = h_k` for all positive integers `k`
155
+ (where `e_k` stands for the `k`-th elementary symmetric
156
+ function, and `h_k` stands for the `k`-th complete homogeneous
157
+ symmetric function). It furthermore is a Hopf algebra
158
+ endomorphism and an involution, and it is also known as the
159
+ *omega involution*. It sends the power-sum symmetric function
160
+ `p_k` to `(-1)^{k-1} p_k` for every positive integer `k`.
161
+
162
+ The images of some bases under the omega automorphism are given by
163
+
164
+ .. MATH::
165
+
166
+ \omega(e_{\lambda}) = h_{\lambda}, \qquad
167
+ \omega(h_{\lambda}) = e_{\lambda}, \qquad
168
+ \omega(p_{\lambda}) = (-1)^{|\lambda| - \ell(\lambda)}
169
+ p_{\lambda}, \qquad
170
+ \omega(s_{\lambda}) = s_{\lambda^{\prime}},
171
+
172
+ where `\lambda` is any partition, where `\ell(\lambda)` denotes
173
+ the length (:meth:`~sage.combinat.partition.Partition.length`)
174
+ of the partition `\lambda`, where `\lambda^{\prime}` denotes the
175
+ conjugate partition
176
+ (:meth:`~sage.combinat.partition.Partition.conjugate`) of
177
+ `\lambda`, and where the usual notations for bases are used
178
+ (`e` = elementary, `h` = complete homogeneous, `p` = powersum,
179
+ `s` = Schur).
180
+
181
+ :meth:`omega_involution()` is a synonym for the :meth:`omega()`
182
+ method.
183
+
184
+ OUTPUT: the image of ``self`` under the omega automorphism
185
+
186
+ EXAMPLES::
187
+
188
+ sage: h = SymmetricFunctions(QQ).h()
189
+ sage: a = h([2,1]); a
190
+ h[2, 1]
191
+ sage: a.omega()
192
+ h[1, 1, 1] - h[2, 1]
193
+ sage: e = SymmetricFunctions(QQ).e()
194
+ sage: e(h([2,1]).omega())
195
+ e[2, 1]
196
+ """
197
+ e = self.parent().realization_of().e()
198
+ return self.parent()(e._from_element(self))
199
+
200
+ omega_involution = omega
201
+
202
+ def expand(self, n, alphabet='x'):
203
+ """
204
+ Expand the symmetric function ``self`` as a symmetric polynomial
205
+ in ``n`` variables.
206
+
207
+ INPUT:
208
+
209
+ - ``n`` -- nonnegative integer
210
+
211
+ - ``alphabet`` -- (default: ``'x'``) a variable for the expansion
212
+
213
+ OUTPUT:
214
+
215
+ A monomial expansion of ``self`` in the `n` variables
216
+ labelled by ``alphabet``.
217
+
218
+ EXAMPLES::
219
+
220
+ sage: h = SymmetricFunctions(QQ).h()
221
+ sage: h([3]).expand(2)
222
+ x0^3 + x0^2*x1 + x0*x1^2 + x1^3
223
+ sage: h([1,1,1]).expand(2)
224
+ x0^3 + 3*x0^2*x1 + 3*x0*x1^2 + x1^3
225
+ sage: h([2,1]).expand(3)
226
+ x0^3 + 2*x0^2*x1 + 2*x0*x1^2 + x1^3 + 2*x0^2*x2 + 3*x0*x1*x2 + 2*x1^2*x2 + 2*x0*x2^2 + 2*x1*x2^2 + x2^3
227
+ sage: h([3]).expand(2,alphabet='y')
228
+ y0^3 + y0^2*y1 + y0*y1^2 + y1^3
229
+ sage: h([3]).expand(2,alphabet='x,y')
230
+ x^3 + x^2*y + x*y^2 + y^3
231
+ sage: h([3]).expand(3,alphabet='x,y,z')
232
+ x^3 + x^2*y + x*y^2 + y^3 + x^2*z + x*y*z + y^2*z + x*z^2 + y*z^2 + z^3
233
+ sage: (h([]) + 2*h([1])).expand(3)
234
+ 2*x0 + 2*x1 + 2*x2 + 1
235
+ sage: h([1]).expand(0)
236
+ 0
237
+ sage: (3*h([])).expand(0)
238
+ 3
239
+ """
240
+ if n == 0: # Symmetrica crashes otherwise...
241
+ return self.counit()
242
+ condition = lambda part: False
243
+ return self._expand(condition, n, alphabet)
244
+
245
+ def principal_specialization(self, n=infinity, q=None):
246
+ r"""
247
+ Return the principal specialization of a symmetric function.
248
+
249
+ The *principal specialization* of order `n` at `q`
250
+ is the ring homomorphism `ps_{n,q}` from the ring of
251
+ symmetric functions to another commutative ring `R`
252
+ given by `x_i \mapsto q^{i-1}` for `i \in \{1,\dots,n\}`
253
+ and `x_i \mapsto 0` for `i > n`.
254
+ Here, `q` is a given element of `R`, and we assume that
255
+ the variables of our symmetric functions are
256
+ `x_1, x_2, x_3, \ldots`.
257
+ (To be more precise, `ps_{n,q}` is a `K`-algebra
258
+ homomorphism, where `K` is the base ring.)
259
+ See Section 7.8 of [EnumComb2]_.
260
+
261
+ The *stable principal specialization* at `q` is the ring
262
+ homomorphism `ps_q` from the ring of symmetric functions
263
+ to another commutative ring `R` given by
264
+ `x_i \mapsto q^{i-1}` for all `i`.
265
+ This is well-defined only if the resulting infinite sums
266
+ converge; thus, in particular, setting `q = 1` in the
267
+ stable principal specialization is an invalid operation.
268
+
269
+ INPUT:
270
+
271
+ - ``n`` -- (default: ``infinity``) a nonnegative integer or
272
+ ``infinity``, specifying whether to compute the principal
273
+ specialization of order ``n`` or the stable principal
274
+ specialization.
275
+
276
+ - ``q`` -- (default: ``None``) the value to use for `q`; the
277
+ default is to create a ring of polynomials in ``q``
278
+ (or a field of rational functions in ``q``) over the
279
+ given coefficient ring.
280
+
281
+ We use the formulas from Proposition 7.8.3 of [EnumComb2]_
282
+ (using Gaussian binomial coefficients `\binom{u}{v}_q`):
283
+
284
+ .. MATH::
285
+
286
+ ps_{n,q}(h_\lambda) = \prod_i \binom{n+\lambda_i-1}{\lambda_i}_q,
287
+
288
+ ps_{n,1}(h_\lambda) = \prod_i \binom{n+\lambda_i-1}{\lambda_i},
289
+
290
+ ps_q(h_\lambda) = 1 / \prod_i \prod_{j=1}^{\lambda_i} (1-q^j).
291
+
292
+ EXAMPLES::
293
+
294
+ sage: h = SymmetricFunctions(QQ).h()
295
+ sage: x = h[2,1]
296
+ sage: x.principal_specialization(3)
297
+ q^6 + 2*q^5 + 4*q^4 + 4*q^3 + 4*q^2 + 2*q + 1
298
+ sage: x = 3*h[2] + 2*h[1] + 1
299
+ sage: x.principal_specialization(3, q=var("q")) # needs sage.symbolic
300
+ 2*(q^3 - 1)/(q - 1) + 3*(q^4 - 1)*(q^3 - 1)/((q^2 - 1)*(q - 1)) + 1
301
+
302
+ TESTS::
303
+
304
+ sage: x = h.zero()
305
+ sage: s = x.principal_specialization(3); s
306
+ 0
307
+ """
308
+ from sage.combinat.q_analogues import q_binomial
309
+
310
+ def get_variable(ring, name):
311
+ try:
312
+ ring(name)
313
+ except TypeError:
314
+ from sage.rings.polynomial.polynomial_ring_constructor import (
315
+ PolynomialRing,
316
+ )
317
+ return PolynomialRing(ring, name).gen()
318
+ else:
319
+ raise ValueError("the variable %s is in the base ring, pass it explicitly" % name)
320
+
321
+ if q is None:
322
+ q = get_variable(self.base_ring(), 'q')
323
+
324
+ if q == 1:
325
+ if n == infinity:
326
+ raise ValueError("the stable principal specialization at q=1 is not defined")
327
+ f = lambda partition: prod(binomial(n+part-1, part) for part in partition)
328
+ elif n == infinity:
329
+ f = lambda partition: prod(1/prod((1-q**i) for i in range(1, part+1)) for part in partition)
330
+ else:
331
+ f = lambda partition: prod(q_binomial(n+part-1, part, q=q) for part in partition)
332
+
333
+ return self.parent()._apply_module_morphism(self, f, q.parent())
334
+
335
+ def exponential_specialization(self, t=None, q=1):
336
+ r"""
337
+ Return the exponential specialization of a
338
+ symmetric function (when `q = 1`), or the
339
+ `q`-exponential specialization (when `q \neq 1`).
340
+
341
+ The *exponential specialization* `ex` at `t` is a
342
+ `K`-algebra homomorphism from the `K`-algebra of
343
+ symmetric functions to another `K`-algebra `R`.
344
+ It is defined whenever the base ring `K` is a
345
+ `\QQ`-algebra and `t` is an element of `R`.
346
+ The easiest way to define it is by specifying its
347
+ values on the powersum symmetric functions to be
348
+ `p_1 = t` and `p_n = 0` for `n > 1`.
349
+ Equivalently, on the homogeneous functions it is
350
+ given by `ex(h_n) = t^n / n!`; see Proposition 7.8.4 of
351
+ [EnumComb2]_.
352
+
353
+ By analogy, the `q`-exponential specialization is a
354
+ `K`-algebra homomorphism from the `K`-algebra of
355
+ symmetric functions to another `K`-algebra `R` that
356
+ depends on two elements `t` and `q` of `R` for which
357
+ the elements `1 - q^i` for all positive integers `i`
358
+ are invertible.
359
+ It can be defined by specifying its values on the
360
+ complete homogeneous symmetric functions to be
361
+
362
+ .. MATH::
363
+
364
+ ex_q(h_n) = t^n / [n]_q!,
365
+
366
+ where `[n]_q!` is the `q`-factorial. Equivalently, for
367
+ `q \neq 1` and a homogeneous symmetric function `f` of
368
+ degree `n`, we have
369
+
370
+ .. MATH::
371
+
372
+ ex_q(f) = (1-q)^n t^n ps_q(f),
373
+
374
+ where `ps_q(f)` is the stable principal specialization of `f`
375
+ (see :meth:`principal_specialization`).
376
+ (See (7.29) in [EnumComb2]_.)
377
+
378
+ The limit of `ex_q` as `q \to 1` is `ex`.
379
+
380
+ INPUT:
381
+
382
+ - ``t`` -- (default: ``None``) the value to use for `t`;
383
+ the default is to create a ring of polynomials in ``t``
384
+
385
+ - ``q`` -- (default: `1`) the value to use for `q`; if
386
+ ``q`` is ``None``, then a ring (or fraction field) of
387
+ polynomials in ``q`` is created
388
+
389
+ EXAMPLES::
390
+
391
+ sage: h = SymmetricFunctions(QQ).h()
392
+ sage: x = h[5,3]
393
+ sage: x.exponential_specialization()
394
+ 1/720*t^8
395
+ sage: factorial(5)*factorial(3)
396
+ 720
397
+
398
+ sage: x = 5*h[1,1,1] + 3*h[2,1] + 1
399
+ sage: x.exponential_specialization()
400
+ 13/2*t^3 + 1
401
+
402
+ We also support the `q`-exponential_specialization::
403
+
404
+ sage: factor(h[3].exponential_specialization(q=var("q"), t=var("t"))) # needs sage.symbolic
405
+ t^3/((q^2 + q + 1)*(q + 1))
406
+
407
+ TESTS::
408
+
409
+ sage: x = h.zero()
410
+ sage: s = x.exponential_specialization(); s
411
+ 0
412
+ """
413
+ from sage.combinat.q_analogues import q_factorial
414
+
415
+ def get_variable(ring, name):
416
+ try:
417
+ ring(name)
418
+ except TypeError:
419
+ from sage.rings.polynomial.polynomial_ring_constructor import (
420
+ PolynomialRing,
421
+ )
422
+ return PolynomialRing(ring, name).gen()
423
+ else:
424
+ raise ValueError("the variable %s is in the base ring, pass it explicitly" % name)
425
+
426
+ if q == 1:
427
+ if t is None:
428
+ t = get_variable(self.base_ring(), 't')
429
+
430
+ def f(partition):
431
+ n = 0
432
+ m = 1
433
+ for part in partition:
434
+ n += part
435
+ m *= factorial(part)
436
+ return t**n/m
437
+
438
+ return self.parent()._apply_module_morphism(self, f, t.parent())
439
+
440
+ if q is None and t is None:
441
+ q = get_variable(self.base_ring(), 'q')
442
+ t = get_variable(q.parent(), 't')
443
+ elif q is None:
444
+ q = get_variable(t.parent(), 'q')
445
+ elif t is None:
446
+ t = get_variable(q.parent(), 't')
447
+
448
+ def f(partition):
449
+ n = 0
450
+ m = 1
451
+ for part in partition:
452
+ n += part
453
+ m *= q_factorial(part, q=q)
454
+ return t**n/m
455
+
456
+ return self.parent()._apply_module_morphism(self, f, t.parent())
457
+
458
+
459
+ # Backward compatibility for unpickling
460
+ from sage.misc.persist import register_unpickle_override
461
+
462
+ register_unpickle_override('sage.combinat.sf.homogeneous',
463
+ 'SymmetricFunctionAlgebraElement_homogeneous',
464
+ SymmetricFunctionAlgebra_homogeneous.Element)