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,576 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.libs.pari sage.modules
3
+ r"""
4
+ Characters of the symmetric group as bases of the symmetric functions
5
+
6
+ Just as the Schur functions are the irreducible characters of `Gl_n`
7
+ and form a basis of the symmetric functions, the irreducible
8
+ symmetric group character basis are the irreducible characters of
9
+ of `S_n` when the group is realized as the permutation matrices.
10
+
11
+ REFERENCES:
12
+
13
+ .. [OZ2015] \R. Orellana, M. Zabrocki, *Symmetric group characters
14
+ as symmetric functions*, :arxiv:`1510.00438`.
15
+ """
16
+
17
+ # ****************************************************************************
18
+ # Copyright (C) 2015 Mike Zabrocki <zabrocki@mathstat.yorku.ca
19
+ #
20
+ # Distributed under the terms of the GNU General Public License (GPL)
21
+ #
22
+ # This code is distributed in the hope that it will be useful,
23
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
24
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25
+ # General Public License for more details.
26
+ #
27
+ # The full text of the GPL is available at:
28
+ #
29
+ # https://www.gnu.org/licenses/
30
+ # ****************************************************************************
31
+
32
+ from sage.arith.misc import binomial, divisors, moebius
33
+ from sage.categories.homset import Hom
34
+ from sage.categories.morphism import SetMorphism
35
+ from sage.combinat.sf.sfa import SymmetricFunctionAlgebra_generic as SFA_generic
36
+ from sage.misc.cachefunc import cached_method
37
+ from sage.rings.integer import Integer
38
+
39
+
40
+ class Character_generic(SFA_generic):
41
+
42
+ def _my_key(self, la):
43
+ r"""
44
+ A rank function for partitions.
45
+
46
+ The leading term of a homogeneous expression will
47
+ be the partition with the largest key value.
48
+
49
+ This key value is `|\lambda|^2 + \lambda_0` and
50
+ using the ``max`` function on a list of Partitions.
51
+
52
+ Of course it is possible that this rank function
53
+ is equal for some partitions, but the leading
54
+ term should be any one of these partitions.
55
+
56
+ INPUT:
57
+
58
+ - ``la`` -- a partition
59
+
60
+ OUTPUT: integer
61
+
62
+ EXAMPLES::
63
+
64
+ sage: Sym = SymmetricFunctions(QQ)
65
+ sage: ht = SymmetricFunctions(QQ).ht()
66
+ sage: ht._my_key(Partition([2,1,1]))
67
+ 18
68
+ sage: ht._my_key(Partition([2,2]))
69
+ 18
70
+ sage: ht._my_key(Partition([3,1]))
71
+ 19
72
+ sage: ht._my_key(Partition([1,1,1,1]))
73
+ 17
74
+ """
75
+ if la:
76
+ return la.size()**2 + la[0]
77
+ else:
78
+ return 0
79
+
80
+ def _other_to_self(self, sexpr):
81
+ r"""
82
+ Convert an expression the target basis to the character-basis.
83
+
84
+ We use triangularity to determine the expansion
85
+ by subtracting off the leading term. The target basis
86
+ is specified by the method ``self._other``.
87
+
88
+ INPUT:
89
+
90
+ - ``sexpr`` -- an element of ``self._other`` basis
91
+
92
+ EXAMPLES::
93
+
94
+ sage: Sym = SymmetricFunctions(QQ)
95
+ sage: ht = SymmetricFunctions(QQ).ht()
96
+ sage: h = Sym.h()
97
+ sage: ht._other_to_self(h[2] + h([]))
98
+ ht[] + ht[1] + ht[2]
99
+ sage: st = SymmetricFunctions(QQ).st()
100
+ sage: s = Sym.s()
101
+ sage: st._other_to_self(s[1] + s([]))
102
+ 2*st[] + st[1]
103
+ sage: 7 * st[[]] * st[[]] # needs lrcalc_python
104
+ 7*st[]
105
+ """
106
+ if sexpr == 0:
107
+ return self(0)
108
+ if list(sexpr.support()) == [[]]:
109
+ return self._from_dict({self.one_basis(): sexpr.coefficient([])},
110
+ remove_zeros=False)
111
+ out = self.zero()
112
+ while sexpr:
113
+ mup = max(sexpr.support(), key=self._my_key)
114
+ out += sexpr.coefficient(mup) * self(mup)
115
+ sexpr -= sexpr.coefficient(mup) * self._self_to_other_on_basis(mup)
116
+ return out
117
+
118
+ def _b_power_k(self, k):
119
+ r"""
120
+ An expression involving Moebius inversion in the powersum generators.
121
+
122
+ For a positive value of ``k``, this expression is
123
+
124
+ .. MATH::
125
+
126
+ \frac{1}{k} \sum_{d|k} \mu(d/k) p_d.
127
+
128
+ INPUT:
129
+
130
+ - ``k`` -- positive integer
131
+
132
+ OUTPUT: an expression in the powersum basis of the symmetric functions
133
+
134
+ EXAMPLES::
135
+
136
+ sage: st = SymmetricFunctions(QQ).st()
137
+ sage: st._b_power_k(1)
138
+ p[1]
139
+ sage: st._b_power_k(2)
140
+ -1/2*p[1] + 1/2*p[2]
141
+ sage: st._b_power_k(6)
142
+ 1/6*p[1] - 1/6*p[2] - 1/6*p[3] + 1/6*p[6]
143
+ """
144
+ if k == 1:
145
+ return self._p([1])
146
+ if k > 0:
147
+ return ~k * self._p.linear_combination((self._p([d]),moebius(k//d))
148
+ for d in divisors(k))
149
+
150
+
151
+ class InducedTrivialCharacterBasis(Character_generic):
152
+ r"""
153
+ The induced trivial symmetric group character basis of
154
+ the symmetric functions.
155
+
156
+ This is a basis of the symmetric functions that has the
157
+ property that ``self(la).character_to_frobenius_image(n)``
158
+ is equal to ``h([n-sum(la)]+la)``.
159
+
160
+ It has the property that the (outer) structure
161
+ constants are the analogue of the stable Kronecker
162
+ coefficients on the complete basis.
163
+
164
+ This basis is introduced in [OZ2015]_.
165
+
166
+ EXAMPLES::
167
+
168
+ sage: Sym = SymmetricFunctions(QQ)
169
+ sage: s = Sym.s()
170
+ sage: h = Sym.h()
171
+ sage: ht = SymmetricFunctions(QQ).ht()
172
+ sage: st = SymmetricFunctions(QQ).st()
173
+ sage: ht(s[2,1])
174
+ ht[1, 1] + ht[2, 1] - ht[3]
175
+ sage: s(ht[2,1])
176
+ s[1] - 2*s[1, 1] - 2*s[2] + s[2, 1] + s[3]
177
+ sage: ht(h[2,1])
178
+ ht[1] + 2*ht[1, 1] + ht[2, 1]
179
+ sage: h(ht[2,1])
180
+ h[1] - 2*h[1, 1] + h[2, 1]
181
+ sage: st(ht[2,1])
182
+ st[] + 2*st[1] + st[1, 1] + 2*st[2] + st[2, 1] + st[3]
183
+ sage: ht(st[2,1])
184
+ ht[1] - ht[1, 1] + ht[2, 1] - ht[3]
185
+ sage: ht[2]*ht[1,1] # needs lrcalc_python
186
+ ht[1, 1] + 2*ht[1, 1, 1] + ht[2, 1, 1]
187
+ sage: h[4,2].kronecker_product(h[4,1,1])
188
+ h[2, 2, 1, 1] + 2*h[3, 1, 1, 1] + h[4, 1, 1]
189
+ sage: s(st[2,1])
190
+ 3*s[1] - 2*s[1, 1] - 2*s[2] + s[2, 1]
191
+ sage: st(s[2,1])
192
+ st[] + 3*st[1] + 2*st[1, 1] + 2*st[2] + st[2, 1]
193
+ sage: st[2]*st[1] # needs lrcalc_python
194
+ st[1] + st[1, 1] + st[2] + st[2, 1] + st[3]
195
+ sage: s[4,2].kronecker_product(s[5,1])
196
+ s[3, 2, 1] + s[3, 3] + s[4, 1, 1] + s[4, 2] + s[5, 1]
197
+
198
+ TESTS::
199
+
200
+ sage: TestSuite(ht).run() # needs lrcalc_python
201
+ """
202
+
203
+ def __init__(self, Sym):
204
+ r"""
205
+ Initialize the basis and register coercions.
206
+
207
+ The coercions are set up between the ``other_basis``.
208
+
209
+ INPUT:
210
+
211
+ - ``Sym`` -- an instance of the symmetric function algebra
212
+ - ``pfix`` -- a prefix to use for the basis
213
+
214
+ EXAMPLES::
215
+
216
+ sage: Sym = SymmetricFunctions(QQ)
217
+ sage: ht = SymmetricFunctions(QQ).ht(); ht
218
+ Symmetric Functions over Rational Field in the induced trivial
219
+ symmetric group character basis
220
+ """
221
+ SFA_generic.__init__(self, Sym,
222
+ basis_name="induced trivial symmetric group character",
223
+ prefix='ht', graded=False)
224
+ self._other = Sym.complete()
225
+ self._p = Sym.powersum()
226
+
227
+ self.module_morphism(self._self_to_power_on_basis,
228
+ codomain=Sym.powersum()).register_as_coercion()
229
+ self.register_coercion(SetMorphism(Hom(self._other, self),
230
+ self._other_to_self))
231
+
232
+ def _b_bar_power_k_r(self, k, r):
233
+ r"""
234
+ An expression involving Moebius inversion in the powersum generators.
235
+
236
+ For a positive value of ``k``, this expression is
237
+
238
+ .. MATH::
239
+
240
+ \sum_{j=0}^r (-1)^{r-j}k^j\binom{r,j}
241
+ \left( \frac{1}{k} \sum_{d|k} \mu(d/k) p_d \right)_k.
242
+
243
+ INPUT:
244
+
245
+ - ``k``, ``r`` -- positive integers
246
+
247
+ OUTPUT: an expression in the powersum basis of the symmetric functions
248
+
249
+ EXAMPLES::
250
+
251
+ sage: ht = SymmetricFunctions(QQ).ht()
252
+ sage: ht._b_bar_power_k_r(1,1)
253
+ p[1]
254
+ sage: ht._b_bar_power_k_r(2,2)
255
+ 2*p[1] + p[1, 1] - 2*p[2] - 2*p[2, 1] + p[2, 2]
256
+ sage: ht._b_bar_power_k_r(3,2)
257
+ 3*p[1] + p[1, 1] - 3*p[3] - 2*p[3, 1] + p[3, 3]
258
+ """
259
+ p = self._p
260
+ return k**r * p.prod( self._b_power_k(k)-j for j in range(r) )
261
+
262
+ def _b_bar_power_gamma(self, gamma):
263
+ r"""
264
+ An expression involving Moebius inversion in the powersum generators.
265
+
266
+ For a partition `\gamma = (1^{m_1}, 2^{m_2}, \ldots, r^{m_r})`,
267
+ this expression is
268
+
269
+ .. MATH::
270
+
271
+ {\mathbf p}_{\ga} = \sum_{k \geq 1} {\mathbf p}_{k^{m_k}},
272
+
273
+ where
274
+
275
+ .. MATH::
276
+
277
+ {\mathbf p}_{k^r} = \sum_{j=0}^r (-1)^{r-j}k^j\binom{r,j}
278
+ \left( \frac{1}{k} \sum_{d|k} \mu(d/k) p_d \right)_k.
279
+
280
+ INPUT:
281
+
282
+ - ``gamma`` -- a partition
283
+
284
+ OUTPUT: an expression in the powersum basis of the symmetric functions
285
+
286
+ EXAMPLES::
287
+
288
+ sage: ht = SymmetricFunctions(QQ).ht()
289
+ sage: ht._b_bar_power_gamma(Partition([2,2,1]))
290
+ 2*p[1, 1] + p[1, 1, 1] - 2*p[2, 1] - 2*p[2, 1, 1] + p[2, 2, 1]
291
+ sage: ht._b_bar_power_gamma(Partition([1,1,1]))
292
+ 2*p[1] - 3*p[1, 1] + p[1, 1, 1]
293
+ sage: ht._b_bar_power_gamma(Partition([3,3,1]))
294
+ 3*p[1, 1] + p[1, 1, 1] - 3*p[3, 1] - 2*p[3, 1, 1] + p[3, 3, 1]
295
+ """
296
+ return self._p.prod(self._b_bar_power_k_r(Integer(k), Integer(r))
297
+ for k, r in gamma.to_exp_dict().items())
298
+
299
+ def _self_to_power_on_basis(self, lam):
300
+ r"""
301
+ An expansion of the induced trivial character in the powersum basis.
302
+
303
+ The formula for the induced trivial character basis indexed by the
304
+ partition ``lam`` is given by the formula
305
+
306
+ .. MATH::
307
+
308
+ \sum_{\gamma} \left\langle h_\lambda, p_\gamma \right\rangle
309
+ \frac{{\overline {\mathbf p}}_\gamma}{z_\gamma},
310
+
311
+ where `{\overline {\mathbf p}}_\gamma` is the
312
+ power sum expression calculated in the method
313
+ :meth:`_b_bar_power_gamma`.
314
+
315
+ INPUT:
316
+
317
+ - ``lam`` -- a partition
318
+
319
+ OUTPUT: an expression in the power sum basis
320
+
321
+ EXAMPLES::
322
+
323
+ sage: ht = SymmetricFunctions(QQ).ht()
324
+ sage: ht._self_to_power_on_basis([2,1])
325
+ p[1] - 2*p[1, 1] + 1/2*p[1, 1, 1] + 1/2*p[2, 1]
326
+ sage: ht._self_to_power_on_basis([1,1,1])
327
+ 2*p[1] - 3*p[1, 1] + p[1, 1, 1]
328
+ """
329
+ return self._p.sum( c*self._b_bar_power_gamma(ga)
330
+ for (ga, c) in self._p(self._other(lam)) )
331
+
332
+ @cached_method
333
+ def _self_to_other_on_basis(self, lam):
334
+ r"""
335
+ An expansion of the induced trivial character basis in complete basis.
336
+
337
+ Compute the complete expansion by first computing it in the
338
+ powersum basis and the coercing to the complete basis.
339
+
340
+ INPUT:
341
+
342
+ - ``lam`` -- a partition
343
+
344
+ OUTPUT:
345
+
346
+ - an expression in the complete (other) basis
347
+
348
+ EXAMPLES::
349
+
350
+ sage: Sym = SymmetricFunctions(QQ)
351
+ sage: ht = SymmetricFunctions(QQ).ht()
352
+ sage: ht._self_to_other_on_basis(Partition([2,1]))
353
+ h[1] - 2*h[1, 1] + h[2, 1]
354
+
355
+ TESTS::
356
+
357
+ sage: h = SymmetricFunctions(QQ).h()
358
+ sage: ht = SymmetricFunctions(QQ).ht()
359
+ sage: st = SymmetricFunctions(QQ).st()
360
+ sage: all(ht(h(ht[la])) == ht[la] for i in range(5) for la in Partitions(i))
361
+ True
362
+ sage: all(h(ht(h[la])) == h[la] for i in range(5) for la in Partitions(i))
363
+ True
364
+ sage: all(st(h(st[la])) == st[la] for i in range(5) for la in Partitions(i))
365
+ True
366
+ sage: all(h(st(h[la])) == h[la] for i in range(5) for la in Partitions(i))
367
+ True
368
+ """
369
+ return self._other(self._self_to_power_on_basis(lam))
370
+
371
+
372
+ class IrreducibleCharacterBasis(Character_generic):
373
+ r"""
374
+ The irreducible symmetric group character basis of
375
+ the symmetric functions.
376
+
377
+ This is a basis of the symmetric functions that has the
378
+ property that ``self(la).character_to_frobenius_image(n)``
379
+ is equal to ``s([n-sum(la)]+la)``.
380
+
381
+ It should also have the property that the (outer) structure
382
+ constants are the analogue of the stable Kronecker
383
+ coefficients on the Schur basis.
384
+
385
+ This basis is introduced in [OZ2015]_.
386
+
387
+ EXAMPLES::
388
+
389
+ sage: Sym = SymmetricFunctions(QQ)
390
+ sage: s = Sym.s()
391
+ sage: h = Sym.h()
392
+ sage: ht = SymmetricFunctions(QQ).ht()
393
+ sage: st = SymmetricFunctions(QQ).st()
394
+ sage: st(ht[2,1])
395
+ st[] + 2*st[1] + st[1, 1] + 2*st[2] + st[2, 1] + st[3]
396
+ sage: ht(st[2,1])
397
+ ht[1] - ht[1, 1] + ht[2, 1] - ht[3]
398
+ sage: s(st[2,1])
399
+ 3*s[1] - 2*s[1, 1] - 2*s[2] + s[2, 1]
400
+ sage: st(s[2,1])
401
+ st[] + 3*st[1] + 2*st[1, 1] + 2*st[2] + st[2, 1]
402
+ sage: st[2]*st[1] # needs lrcalc_python
403
+ st[1] + st[1, 1] + st[2] + st[2, 1] + st[3]
404
+ sage: s[4,2].kronecker_product(s[5,1])
405
+ s[3, 2, 1] + s[3, 3] + s[4, 1, 1] + s[4, 2] + s[5, 1]
406
+ sage: st[1,1,1].counit()
407
+ -1
408
+ sage: all(sum(c*st(la)*st(mu).antipode() for # needs lrcalc_python
409
+ ....: ((la,mu),c) in st(ga).coproduct())==st(st(ga).counit())
410
+ ....: for ga in Partitions(3))
411
+ True
412
+
413
+ TESTS::
414
+
415
+ sage: TestSuite(st).run() # needs lrcalc_python
416
+ """
417
+
418
+ def __init__(self, Sym):
419
+ r"""
420
+ Initialize the basis and register coercions.
421
+
422
+ The coercions are set up between the ``other_basis``
423
+
424
+ INPUT:
425
+
426
+ - ``Sym`` -- an instance of the symmetric function algebra
427
+ - ``pfix`` -- a prefix to use for the basis
428
+
429
+ EXAMPLES::
430
+
431
+ sage: Sym = SymmetricFunctions(QQ)
432
+ sage: ht = SymmetricFunctions(QQ).ht(); ht
433
+ Symmetric Functions over Rational Field in the induced trivial
434
+ symmetric group character basis
435
+ sage: st = SymmetricFunctions(QQ).st(); st
436
+ Symmetric Functions over Rational Field in the irreducible
437
+ symmetric group character basis
438
+ """
439
+ SFA_generic.__init__(self, Sym,
440
+ basis_name="irreducible symmetric group character",
441
+ prefix='st', graded=False)
442
+ self._other = Sym.Schur()
443
+ self._p = Sym.powersum()
444
+
445
+ self.module_morphism(self._self_to_power_on_basis,
446
+ codomain=Sym.powersum()).register_as_coercion()
447
+ self.register_coercion(SetMorphism(Hom(self._other, self),
448
+ self._other_to_self))
449
+
450
+ def _b_power_k_r(self, k, r):
451
+ r"""
452
+ An expression involving Moebius inversion in the powersum generators.
453
+
454
+ For a positive value of ``k``, this expression is
455
+
456
+ .. MATH::
457
+
458
+ \sum_{j=0}^r (-1)^{r-j}k^j\binom{r,j} \left(
459
+ \frac{1}{k} \sum_{d|k} \mu(d/k) p_d \right)_k.
460
+
461
+ INPUT:
462
+
463
+ - ``k``, ``r`` -- positive integers
464
+
465
+ OUTPUT: an expression in the powersum basis of the symmetric functions
466
+
467
+ EXAMPLES::
468
+
469
+ sage: st = SymmetricFunctions(QQ).st()
470
+ sage: st._b_power_k_r(1,1)
471
+ -p[] + p[1]
472
+ sage: st._b_power_k_r(2,2)
473
+ p[] + 4*p[1] + p[1, 1] - 4*p[2] - 2*p[2, 1] + p[2, 2]
474
+ sage: st._b_power_k_r(3,2)
475
+ p[] + 5*p[1] + p[1, 1] - 5*p[3] - 2*p[3, 1] + p[3, 3]
476
+ """
477
+ p = self._p
478
+ return p.sum( (-1)**(r-j) * k**j * binomial(r,j)
479
+ * p.prod(self._b_power_k(k) - i*p.one() for i in range(j))
480
+ for j in range(r+1) )
481
+
482
+ def _b_power_gamma(self, gamma):
483
+ r"""
484
+ An expression involving Moebius inversion in the powersum generators.
485
+
486
+ For a partition `\gamma = (1^{m_1}, 2^{m_2}, \ldots, r^{m_r})`,
487
+ this expression is
488
+
489
+ .. MATH::
490
+
491
+ {\mathbf p}_{\ga} = \sum_{k \geq 1} {\mathbf p}_{k^{m_k}},
492
+
493
+ where
494
+
495
+ .. MATH::
496
+
497
+ {\mathbf p}_{k^r} = \sum_{j=0}^r (-1)^{r-j}k^j\binom{r,j}
498
+ \left( \frac{1}{k} \sum_{d|k} \mu(d/k) p_d \right)_k.
499
+
500
+ INPUT:
501
+
502
+ - ``gamma`` -- a partition
503
+
504
+ OUTPUT: an expression in the powersum basis of the symmetric functions
505
+
506
+ EXAMPLES::
507
+
508
+ sage: st = SymmetricFunctions(QQ).st()
509
+ sage: st._b_power_gamma(Partition([2,2]))
510
+ p[] + 4*p[1] + p[1, 1] - 4*p[2] - 2*p[2, 1] + p[2, 2]
511
+ sage: st._b_power_gamma(Partition([1,1,1]))
512
+ -p[] + 8*p[1] - 6*p[1, 1] + p[1, 1, 1]
513
+ sage: st._b_power_gamma(Partition([3,1]))
514
+ p[] - p[1, 1] - p[3] + p[3, 1]
515
+ """
516
+ return self._p.prod(self._b_power_k_r(Integer(k), Integer(r))
517
+ for k, r in gamma.to_exp_dict().items())
518
+
519
+ def _self_to_power_on_basis(self, lam):
520
+ r"""
521
+ An expansion of the irreducible character in the powersum basis.
522
+
523
+ The formula for the irreducible character basis indexed by the
524
+ partition ``lam`` is given by the formula
525
+
526
+ .. MATH::
527
+
528
+ \sum_{\gamma} \chi^{\lambda}(\gamma)
529
+ \frac{{\mathbf p}_\gamma}{z_\gamma},
530
+
531
+ where `\chi^{\lambda}(\gamma)` is the irreducible character
532
+ indexed by the partition `\lambda` and evaluated at an element
533
+ of cycle structure `\gamma` and `{\mathbf p}_\gamma` is the
534
+ power sum expression calculated in the method
535
+ :meth:`_b_power_gamma`.
536
+
537
+ INPUT:
538
+
539
+ - ``lam`` -- a partition
540
+
541
+ OUTPUT: an expression in the power sum basis
542
+
543
+ EXAMPLES::
544
+
545
+ sage: st = SymmetricFunctions(QQ).st()
546
+ sage: st._self_to_power_on_basis([2,1])
547
+ 3*p[1] - 2*p[1, 1] + 1/3*p[1, 1, 1] - 1/3*p[3]
548
+ sage: st._self_to_power_on_basis([1,1])
549
+ p[] - p[1] + 1/2*p[1, 1] - 1/2*p[2]
550
+ """
551
+ return self._p.sum( c*self._b_power_gamma(ga)
552
+ for (ga, c) in self._p(self._other(lam)) )
553
+
554
+ @cached_method
555
+ def _self_to_other_on_basis(self, lam):
556
+ r"""
557
+ An expansion of the irreducible character basis in the Schur basis.
558
+
559
+ Compute the Schur expansion by first computing it in the
560
+ powersum basis and the coercing to the Schur basis.
561
+
562
+ INPUT:
563
+
564
+ - ``lam`` -- a partition
565
+
566
+ OUTPUT: an expression in the Schur basis
567
+
568
+ EXAMPLES::
569
+
570
+ sage: st = SymmetricFunctions(QQ).st()
571
+ sage: st._self_to_other_on_basis(Partition([1,1]))
572
+ s[] - s[1] + s[1, 1]
573
+ sage: st._self_to_other_on_basis(Partition([2,1]))
574
+ 3*s[1] - 2*s[1, 1] - 2*s[2] + s[2, 1]
575
+ """
576
+ return self._other(self._self_to_power_on_basis(lam))