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,789 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ LLT symmetric functions
5
+
6
+ REFERENCES:
7
+
8
+ .. [LLT1997] Alain Lascoux, Bernard Leclerc, Jean-Yves Thibon,
9
+ Ribbon tableaux, Hall-Littlewood functions, quantum affine algebras, and unipotent varieties,
10
+ J. Math. Phys. 38 (1997), no. 2, 1041-1068,
11
+ :arxiv:`q-alg/9512031v1` [math.q.alg]
12
+
13
+ .. [LT2000] Bernard Leclerc and Jean-Yves Thibon,
14
+ Littlewood-Richardson coefficients and Kazhdan-Lusztig polynomials,
15
+ in: Combinatorial methods in representation theory (Kyoto)
16
+ Adv. Stud. Pure Math., vol. 28, Kinokuniya, Tokyo, 2000, pp 155-220
17
+ :arxiv:`math/9809122v3` [math.q-alg]
18
+ """
19
+ # ****************************************************************************
20
+ # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>
21
+ # 2012 Mike Zabrocki <mike.zabrocki@gmail.com>
22
+ #
23
+ # Distributed under the terms of the GNU General Public License (GPL)
24
+ #
25
+ # This code is distributed in the hope that it will be useful,
26
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
27
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28
+ # General Public License for more details.
29
+ #
30
+ # The full text of the GPL is available at:
31
+ #
32
+ # https://www.gnu.org/licenses/
33
+ # ****************************************************************************
34
+ import sage.combinat.skew_partition
35
+ from sage.categories.homset import Hom
36
+ from sage.categories.morphism import SetMorphism
37
+ from sage.combinat import ribbon_tableau
38
+ from sage.combinat.partition import Partition, Partitions, _Partitions
39
+ from sage.rings.integer_ring import ZZ
40
+ from sage.rings.rational_field import QQ
41
+ from sage.structure.unique_representation import UniqueRepresentation
42
+
43
+ from . import sfa
44
+
45
+ # cache for H spin basis
46
+ hsp_to_m_cache = {}
47
+ m_to_hsp_cache = {}
48
+
49
+ # cache for H cospin basis
50
+ hcosp_to_m_cache = {}
51
+ m_to_hcosp_cache = {}
52
+
53
+ QQt = QQ['t'].fraction_field()
54
+ # This is to become the "abstract algebra" for llt polynomials
55
+
56
+
57
+ class LLT_class(UniqueRepresentation):
58
+ r"""
59
+ A class for working with LLT symmetric functions.
60
+
61
+ EXAMPLES::
62
+
63
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
64
+ sage: L3 = Sym.llt(3); L3
65
+ level 3 LLT polynomials over Fraction Field of Univariate Polynomial Ring in t over Rational Field
66
+ sage: L3.cospin([3,2,1])
67
+ (t+1)*m[1, 1] + m[2]
68
+ sage: HC3 = L3.hcospin(); HC3
69
+ Symmetric Functions over Fraction Field of Univariate Polynomial Ring in t over Rational Field in the level 3 LLT cospin basis
70
+ sage: m = Sym.monomial()
71
+ sage: m( HC3[1,1] )
72
+ (t+1)*m[1, 1] + m[2]
73
+
74
+ We require that the parameter `t` must be in the base ring::
75
+
76
+ sage: # needs sage.symbolic
77
+ sage: Symxt = SymmetricFunctions(QQ['x','t'].fraction_field())
78
+ sage: (x,t) = Symxt.base_ring().gens()
79
+ sage: LLT3x = Symxt.llt(3,t=x)
80
+ sage: LLT3 = Symxt.llt(3)
81
+ sage: HS3x = LLT3x.hspin()
82
+ sage: HS3t = LLT3.hspin()
83
+ sage: s = Symxt.schur()
84
+ sage: s(HS3x[2,1])
85
+ s[2, 1] + x*s[3]
86
+ sage: s(HS3t[2,1])
87
+ s[2, 1] + t*s[3]
88
+ sage: HS3x(HS3t[2,1])
89
+ HSp3[2, 1] - (x-t)*HSp3[3]
90
+ sage: s(HS3x(HS3t[2,1]))
91
+ s[2, 1] + t*s[3]
92
+ sage: LLT3t2 = Symxt.llt(3,t=2)
93
+ sage: HC3t2 = LLT3t2.hcospin()
94
+ sage: HS3x(HC3t2[3,1])
95
+ 2*HSp3[3, 1] - (2*x-1)*HSp3[4]
96
+ """
97
+ @staticmethod
98
+ def __classcall__(cls, Sym, k, t='t'):
99
+ """
100
+ Normalize the arguments.
101
+
102
+ TESTS::
103
+
104
+ sage: R.<q, t> = QQ[]
105
+ sage: B1 = SymmetricFunctions(R).llt(3).hspin()
106
+ sage: B2 = SymmetricFunctions(R).llt(3, t).hspin()
107
+ sage: B3 = SymmetricFunctions(R).llt(3, q).hspin()
108
+ sage: B1 is B2
109
+ True
110
+ sage: B1 == B3
111
+ False
112
+ """
113
+ return super().__classcall__(cls, Sym, k, Sym.base_ring()(t))
114
+
115
+ def __init__(self, Sym, k, t):
116
+ r"""
117
+ Class of LLT symmetric function bases.
118
+
119
+ INPUT:
120
+
121
+ - ``self`` -- a family of LLT symmetric function bases
122
+ - ``k`` -- positive integer (the level)
123
+ - ``t`` -- a parameter (default: `t`)
124
+
125
+ EXAMPLES::
126
+
127
+ sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
128
+ sage: L3 == loads(dumps(L3))
129
+ True
130
+ sage: TestSuite(L3).run(skip=["_test_associativity","_test_distributivity","_test_prod"])
131
+
132
+ TESTS::
133
+
134
+ sage: L3 != SymmetricFunctions(FractionField(QQ['t'])).llt(2)
135
+ True
136
+ sage: L3p = SymmetricFunctions(FractionField(QQ['t'])).llt(3,t=1)
137
+ sage: L3 != L3p
138
+ True
139
+ sage: L3p != SymmetricFunctions(QQ).llt(3,t=1)
140
+ True
141
+
142
+ sage: Sym = SymmetricFunctions(QQ['t'])
143
+ sage: ks3 = Sym.kschur(3)
144
+ sage: llt3 = Sym.llt(3)
145
+ sage: f = llt3.cospin([[1],[2,1],[1,1]]).omega()
146
+ sage: ks3(f)
147
+ ks3[2, 2, 1, 1] + ks3[2, 2, 2] + t*ks3[3, 1, 1, 1] + t^2*ks3[3, 2, 1]
148
+ """
149
+ self._k = k
150
+ self._sym = Sym
151
+ self._name = "level %s LLT polynomials" % self._k
152
+ self.t = t
153
+ self._name_suffix = ""
154
+ if str(t) != 't':
155
+ self._name_suffix += " with t=%s" % self.t
156
+ self._name += self._name_suffix + " over %s" % self._sym.base_ring()
157
+ self._m = Sym.monomial()
158
+
159
+ def __repr__(self):
160
+ r"""
161
+ Representation of the LLT symmetric functions.
162
+
163
+ INPUT:
164
+
165
+ - ``self`` -- a family of LLT symmetric function bases
166
+
167
+ OUTPUT: a string representing the LLT symmetric functions
168
+
169
+ EXAMPLES::
170
+
171
+ sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3)
172
+ level 3 LLT polynomials over Fraction Field of Univariate Polynomial Ring in t over Rational Field
173
+ sage: SymmetricFunctions(QQ).llt(3,t=2)
174
+ level 3 LLT polynomials with t=2 over Rational Field
175
+ """
176
+ return self._name
177
+
178
+ def symmetric_function_ring( self ):
179
+ r"""
180
+ The symmetric function algebra associated to the family of LLT
181
+ symmetric function bases
182
+
183
+ INPUT:
184
+
185
+ - ``self`` -- a family of LLT symmetric functions bases
186
+
187
+ OUTPUT: the symmetric function ring associated to ``self``
188
+
189
+ EXAMPLES::
190
+
191
+ sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
192
+ sage: L3.symmetric_function_ring()
193
+ Symmetric Functions over Fraction Field of Univariate Polynomial Ring in t over Rational Field
194
+ """
195
+ return self._sym
196
+
197
+ def base_ring(self):
198
+ r"""
199
+ Return the base ring of ``self``.
200
+
201
+ INPUT:
202
+
203
+ - ``self`` -- a family of LLT symmetric functions bases
204
+
205
+ OUTPUT: the base ring of the symmetric function ring associated to ``self``
206
+
207
+ EXAMPLES::
208
+
209
+ sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3).base_ring()
210
+ Fraction Field of Univariate Polynomial Ring in t over Rational Field
211
+ """
212
+ return self._sym.base_ring()
213
+
214
+ def level(self):
215
+ r"""
216
+ Return the level of ``self``.
217
+
218
+ INPUT:
219
+
220
+ - ``self`` -- a family of LLT symmetric functions bases
221
+
222
+ OUTPUT: the level is the parameter of `k` in the basis
223
+
224
+ EXAMPLES::
225
+
226
+ sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3).level()
227
+ 3
228
+ """
229
+ return self._k
230
+
231
+ def _llt_generic(self, skp, stat):
232
+ r"""
233
+ Take in partition, list of partitions, or a list of skew
234
+ partitions as well as a function which takes in two partitions and
235
+ a level and return a coefficient.
236
+
237
+ INPUT:
238
+
239
+ - ``self`` -- a family of LLT symmetric functions bases
240
+ - ``skp`` -- a partition or a list of partitions or a list of skew partitions
241
+ - ``stat`` -- a function which accepts two partitions and a value
242
+ for the level and returns a coefficient which is a polynomial
243
+ in a parameter `t`. The first partition is the index of the
244
+ LLT function, the second partition is the index of the monomial
245
+ basis element.
246
+
247
+ OUTPUT:
248
+
249
+ - returns the monomial expansion of the LLT symmetric function
250
+ indexed by ``skp``
251
+
252
+ EXAMPLES::
253
+
254
+ sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
255
+ sage: f = lambda skp,mu,level: QQ(1)
256
+ sage: L3._llt_generic([3,2,1],f)
257
+ m[1, 1] + m[2]
258
+ sage: L3._llt_generic([[2,1],[1],[2]],f)
259
+ m[1, 1, 1, 1, 1, 1] + m[2, 1, 1, 1, 1] + m[2, 2, 1, 1] + m[2, 2, 2] + m[3, 1, 1, 1] + m[3, 2, 1] + m[3, 3] + m[4, 1, 1] + m[4, 2] + m[5, 1] + m[6]
260
+ sage: L3._llt_generic([[[2,2],[1]],[[2,1],[]]],f)
261
+ m[1, 1, 1, 1] + m[2, 1, 1] + m[2, 2] + m[3, 1] + m[4]
262
+ """
263
+ if skp in _Partitions:
264
+ m = (sum(skp) / self.level()).floor()
265
+ if m == 0:
266
+ raise ValueError("level (%s=) must divide %s " % (sum(skp),
267
+ self.level()))
268
+ mu = Partitions( ZZ(sum(skp) / self.level()) )
269
+
270
+ elif isinstance(skp, list) and skp[0] in sage.combinat.skew_partition.SkewPartitions():
271
+ #skp is a list of skew partitions
272
+ skp2 = [Partition(core=[], quotient=[skp[i][0] for i in range(len(skp))])]
273
+ skp2 += [Partition(core=[], quotient=[skp[i][1] for i in range(len(skp))])]
274
+ mu = Partitions(ZZ((skp2[0].size()-skp2[1].size()) / self.level()))
275
+ skp = skp2
276
+ elif isinstance(skp, list) and skp[0] in _Partitions:
277
+ #skp is a list of partitions
278
+ skp = Partition(core=[], quotient=skp)
279
+ mu = Partitions( ZZ(sum(skp) / self.level()) )
280
+ else:
281
+ raise ValueError("LLT polynomials not defined for %s" % skp)
282
+
283
+ BR = self.base_ring()
284
+ return sum([ BR(stat(skp,nu,self.level()).subs(t=self.t))*self._m(nu) for nu in mu])
285
+
286
+ def spin_square(self, skp):
287
+ r"""
288
+ Calculate a single instance of a spin squared LLT symmetric function
289
+ associated with a partition, list of partitions, or a list of skew partitions.
290
+
291
+ This family of symmetric functions is defined in [LT2000]_ equation (43).
292
+
293
+ INPUT:
294
+
295
+ - ``self`` -- a family of LLT symmetric functions bases
296
+ - ``skp`` -- a partition of a list of partitions or a list of skew
297
+ partitions
298
+
299
+ OUTPUT:
300
+
301
+ the monomial expansion of the LLT symmetric function spin-square
302
+ functions indexed by ``skp``
303
+
304
+ EXAMPLES::
305
+
306
+ sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
307
+ sage: L3.spin_square([2,1])
308
+ t*m[1]
309
+ sage: L3.spin_square([3,2,1])
310
+ (t^3+t)*m[1, 1] + t^3*m[2]
311
+ sage: L3.spin_square([[1],[1],[1]])
312
+ (t^6+2*t^4+2*t^2+1)*m[1, 1, 1] + (t^6+t^4+t^2)*m[2, 1] + t^6*m[3]
313
+ sage: L3.spin_square([[[2,2],[1]],[[2,1],[]]])
314
+ (2*t^4+3*t^2+1)*m[1, 1, 1, 1] + (t^4+t^2)*m[2, 1, 1] + t^4*m[2, 2]
315
+ """
316
+ return self._llt_generic(skp, ribbon_tableau.spin_polynomial_square)
317
+
318
+ def cospin(self, skp):
319
+ r"""
320
+ Calculate a single instance of the cospin symmetric functions.
321
+
322
+ These are the functions defined in [LLT1997]_ equation (26).
323
+
324
+ INPUT:
325
+
326
+ - ``self`` -- a family of LLT symmetric functions bases
327
+ - ``skp`` -- a partition or a list of partitions or a list of skew
328
+ partitions
329
+
330
+ OUTPUT:
331
+
332
+ the monomial expansion of the LLT symmetric function cospin
333
+ functions indexed by ``skp``
334
+
335
+ EXAMPLES::
336
+
337
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
338
+ sage: L3 = Sym.llt(3)
339
+ sage: L3.cospin([2,1])
340
+ m[1]
341
+ sage: L3.cospin([3,2,1])
342
+ (t+1)*m[1, 1] + m[2]
343
+ sage: s = Sym.schur()
344
+ sage: s(L3.cospin([[2],[1],[2]]))
345
+ t^4*s[2, 2, 1] + t^3*s[3, 1, 1] + (t^3+t^2)*s[3, 2] + (t^2+t)*s[4, 1] + s[5]
346
+ """
347
+ return self._llt_generic(skp, ribbon_tableau.cospin_polynomial)
348
+
349
+ #### Is it safe to delete this function?
350
+ ## def llt_inv(self, skp):
351
+ ## """
352
+ ## """
353
+ ## l = sage.combinat.partitions( sum( [ p.size() for p in skp ] ) ).list()
354
+ ## res = m(0)
355
+ ## for p in l:
356
+ ## inv_p = [ ktuple.inversions() for ktuple in kTupleTableaux(skp, p) ]
357
+ ## res += sum([t**x for x in inv_p])*m(p)
358
+ ## return res
359
+
360
+ def hcospin(self):
361
+ r"""
362
+ Return the HCospin basis.
363
+ This basis is defined [LLT1997]_ equation (27).
364
+
365
+ INPUT:
366
+
367
+ - ``self`` -- a family of LLT symmetric functions bases
368
+
369
+ OUTPUT: the h-cospin basis of the LLT symmetric functions
370
+
371
+ EXAMPLES::
372
+
373
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
374
+ sage: HCosp3 = Sym.llt(3).hcospin(); HCosp3
375
+ Symmetric Functions
376
+ over Fraction Field of Univariate Polynomial Ring in t over Rational Field
377
+ in the level 3 LLT cospin basis
378
+ sage: HCosp3([1])^2
379
+ 1/t*HCosp3[1, 1] + ((t-1)/t)*HCosp3[2]
380
+
381
+ sage: s = Sym.schur()
382
+ sage: HCosp3(s([2]))
383
+ HCosp3[2]
384
+ sage: HCosp3(s([1,1]))
385
+ 1/t*HCosp3[1, 1] - 1/t*HCosp3[2]
386
+ sage: s(HCosp3([2,1]))
387
+ t*s[2, 1] + s[3]
388
+ """
389
+ return LLT_cospin(self)
390
+
391
+ def hspin(self):
392
+ r"""
393
+ Return the HSpin basis.
394
+
395
+ This basis is defined [LLT1997]_ equation (28).
396
+
397
+ INPUT:
398
+
399
+ - ``self`` -- a family of LLT symmetric functions bases
400
+
401
+ OUTPUT: the h-spin basis of the LLT symmetric functions
402
+
403
+ EXAMPLES::
404
+
405
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
406
+
407
+ sage: # needs sage.symbolic
408
+ sage: HSp3 = Sym.llt(3).hspin(); HSp3
409
+ Symmetric Functions
410
+ over Fraction Field of Univariate Polynomial Ring in t over Rational Field
411
+ in the level 3 LLT spin basis
412
+ sage: HSp3([1])^2
413
+ HSp3[1, 1] + (-t+1)*HSp3[2]
414
+ sage: s = Sym.schur()
415
+ sage: HSp3(s([2]))
416
+ HSp3[2]
417
+ sage: HSp3(s([1,1]))
418
+ HSp3[1, 1] - t*HSp3[2]
419
+ sage: s(HSp3([2,1]))
420
+ s[2, 1] + t*s[3]
421
+ """
422
+ return LLT_spin(self)
423
+
424
+
425
+ class LLT_generic(sfa.SymmetricFunctionAlgebra_generic):
426
+
427
+ def __init__(self, llt, prefix):
428
+ r"""
429
+ A class of methods which are common to both the hspin and hcospin
430
+ of the LLT symmetric functions.
431
+
432
+ INPUT:
433
+
434
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
435
+ - ``llt`` -- a family of LLT symmetric functions
436
+
437
+ EXAMPLES::
438
+
439
+ sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
440
+ Symmetric Functions
441
+ over Fraction Field of Univariate Polynomial Ring in t over Rational Field
442
+ in the level 3 LLT spin basis
443
+ sage: SymmetricFunctions(QQ).llt(3,t=2).hspin()
444
+ Symmetric Functions over Rational Field in the level 3 LLT spin with t=2 basis
445
+ sage: QQz = FractionField(QQ['z']); z = QQz.gen()
446
+ sage: SymmetricFunctions(QQz).llt(3,t=z).hspin()
447
+ Symmetric Functions
448
+ over Fraction Field of Univariate Polynomial Ring in z over Rational Field
449
+ in the level 3 LLT spin with t=z basis
450
+ """
451
+ s = self.__class__.__name__[4:]
452
+ sfa.SymmetricFunctionAlgebra_generic.__init__(
453
+ self, llt._sym,
454
+ basis_name="level %s LLT " % llt.level() + s + llt._name_suffix,
455
+ prefix=prefix)
456
+
457
+ self.t = llt.t
458
+ self._sym = llt._sym
459
+ self._llt = llt
460
+ self._k = llt._k
461
+
462
+ sfa.SymmetricFunctionAlgebra_generic.__init__(self, self._sym, self._basis_name)
463
+
464
+ # temporary until Hom(GradedHopfAlgebrasWithBasis work better)
465
+ category = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
466
+ self._m = llt._sym.m()
467
+ self .register_coercion(SetMorphism(Hom(self._m, self, category), self._m_to_self))
468
+ self._m.register_coercion(SetMorphism(Hom(self, self._m, category), self._self_to_m))
469
+
470
+ def construction(self):
471
+ """
472
+ Return a pair ``(F, R)``, where ``F`` is a
473
+ :class:`SymmetricFunctionsFunctor` and `R` is a ring, such
474
+ that ``F(R)`` returns ``self``.
475
+
476
+ EXAMPLES::
477
+
478
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
479
+ sage: HSp3 = Sym.llt(3).hspin()
480
+ sage: HSp3.construction()
481
+ (SymmetricFunctionsFunctor[level 3 LLT spin],
482
+ Fraction Field of Univariate Polynomial Ring in t over Rational Field)
483
+ """
484
+ from sage.combinat.sf.sfa import SymmetricFunctionsFamilyFunctor
485
+ return (SymmetricFunctionsFamilyFunctor(self, LLT_class,
486
+ self.basis_name(),
487
+ self._k, self.t),
488
+ self.base_ring())
489
+
490
+ def _m_to_self(self, x):
491
+ r"""
492
+ Isomorphism from the monomial basis into ``self``.
493
+
494
+ INPUT:
495
+
496
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
497
+ - ``x`` -- an element of the monomial basis
498
+
499
+ OUTPUT: ``x`` expanded in the basis ``self``
500
+
501
+ EXAMPLES::
502
+
503
+ sage: # needs sage.symbolic
504
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
505
+ sage: HSp3 = Sym.llt(3).hspin()
506
+ sage: m = Sym.monomial()
507
+ sage: HSp3._m_to_self(m[2,1])
508
+ -2*HSp3[1, 1, 1] + (2*t^2+2*t+1)*HSp3[2, 1] + (-2*t^2-t)*HSp3[3]
509
+
510
+ This is for internal use only. Please use instead::
511
+
512
+ sage: HSp3(m[2,1]) # needs sage.symbolic
513
+ -2*HSp3[1, 1, 1] + (2*t^2+2*t+1)*HSp3[2, 1] + (-2*t^2-t)*HSp3[3]
514
+ """
515
+ return self._from_cache(x, self._m_cache, self._m_to_self_cache,
516
+ t=self.t)
517
+
518
+ def _self_to_m(self, x):
519
+ r"""
520
+ Isomorphism from ``self`` to the monomial basis.
521
+
522
+ INPUT:
523
+
524
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
525
+ - ``x`` -- an element of ``self``
526
+
527
+ OUTPUT: ``x`` expanded in the monomial basis
528
+
529
+ EXAMPLES::
530
+
531
+ sage: # needs sage.symbolic
532
+ sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
533
+ sage: HSp3 = Sym.llt(3).hspin()
534
+ sage: m = Sym.monomial()
535
+ sage: HSp3._self_to_m(HSp3[2,1])
536
+ (t+2)*m[1, 1, 1] + (t+1)*m[2, 1] + t*m[3]
537
+
538
+ This is for internal use only. Please use instead::
539
+
540
+ sage: m(HSp3[2,1]) # needs sage.symbolic
541
+ (t+2)*m[1, 1, 1] + (t+1)*m[2, 1] + t*m[3]
542
+ """
543
+ return self._m._from_cache(x, self._m_cache, self._self_to_m_cache,
544
+ t=self.t)
545
+
546
+ def level(self):
547
+ r"""
548
+ Return the level of ``self``.
549
+
550
+ INPUT:
551
+
552
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
553
+
554
+ OUTPUT: the level associated to the basis ``self``
555
+
556
+ EXAMPLES::
557
+
558
+ sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
559
+ sage: HSp3.level()
560
+ 3
561
+ """
562
+ return self._k
563
+
564
+ def llt_family( self ):
565
+ r"""
566
+ The family of the llt bases of the symmetric functions.
567
+
568
+ INPUT:
569
+
570
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
571
+
572
+ OUTPUT: an instance of the family of LLT bases associated to ``self``
573
+
574
+ EXAMPLES::
575
+
576
+ sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
577
+ sage: HSp3.llt_family()
578
+ level 3 LLT polynomials
579
+ over Fraction Field of Univariate Polynomial Ring in t over Rational Field
580
+ """
581
+ return self._llt
582
+
583
+ def product(self, left, right):
584
+ r"""
585
+ Convert to the monomial basis, do the multiplication there, and
586
+ convert back to the basis ``self``.
587
+
588
+ INPUT:
589
+
590
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
591
+ - ``left``, ``right`` -- elements of the symmetric functions
592
+
593
+ OUTPUT: the product of ``left`` and ``right`` expanded in the basis ``self``
594
+
595
+ EXAMPLES::
596
+
597
+ sage: # needs sage.symbolic
598
+ sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
599
+ sage: HSp3.product(HSp3([1]), HSp3([2]))
600
+ HSp3[2, 1] + (-t+1)*HSp3[3]
601
+ sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
602
+ sage: HCosp3.product(HCosp3([1]), HSp3([2]))
603
+ 1/t*HCosp3[2, 1] + ((t-1)/t)*HCosp3[3]
604
+ """
605
+ return self(self._m(left) * self._m(right))
606
+
607
+ def _m_cache(self, n):
608
+ r"""
609
+ Compute the change of basis from the monomial symmetric functions
610
+ to ``self``.
611
+
612
+ INPUT:
613
+
614
+ - ``self`` -- an instance of the LLT hspin or hcospin basis
615
+ - ``n`` -- positive integer representing the degree
616
+
617
+ EXAMPLES::
618
+
619
+ sage: # needs sage.symbolic
620
+ sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
621
+ sage: HSp3._m_cache(2)
622
+ sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())]
623
+ sage: l( HSp3._self_to_m_cache[2] )
624
+ [([1, 1], [([1, 1], t + 1), ([2], t)]), ([2], [([1, 1], 1), ([2], 1)])]
625
+ sage: l( HSp3._m_to_self_cache[2] )
626
+ [([1, 1], [([1, 1], 1), ([2], -t)]), ([2], [([1, 1], -1), ([2], t + 1)])]
627
+ sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
628
+ sage: HCosp3._m_cache(2)
629
+ sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())]
630
+ sage: l( HCosp3._self_to_m_cache[2] )
631
+ [([1, 1], [([1, 1], t + 1), ([2], 1)]), ([2], [([1, 1], 1), ([2], 1)])]
632
+ sage: l( HCosp3._m_to_self_cache[2] )
633
+ [([1, 1], [([1, 1], 1/t), ([2], -1/t)]),
634
+ ([2], [([1, 1], -1/t), ([2], (t + 1)/t)])]
635
+ """
636
+ self._invert_morphism(n, QQt, self._self_to_m_cache,
637
+ self._m_to_self_cache,
638
+ to_other_function=self._to_m)
639
+
640
+ class Element(sfa.SymmetricFunctionAlgebra_generic.Element):
641
+ pass
642
+
643
+
644
+ # the H-spin basis
645
+ class LLT_spin(LLT_generic):
646
+
647
+ def __init__(self, llt):
648
+ r"""
649
+ A class of methods for the h-spin LLT basis of the symmetric functions.
650
+
651
+ INPUT:
652
+
653
+ - ``self`` -- an instance of the LLT hcospin basis
654
+ - ``llt`` -- a family of LLT symmetric function bases
655
+
656
+ TESTS::
657
+
658
+ sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
659
+ sage: TestSuite(HSp3).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (10s on sage.math, 2012)
660
+ sage: TestSuite(HSp3).run(elements = [HSp3.t*HSp3[1,1]+HSp3.t*HSp3[2], HSp3[1]+(1+HSp3.t)*HSp3[1,1]]) # long time (depends on previous)
661
+
662
+ ::
663
+
664
+ sage: HS3t2 = SymmetricFunctions(QQ).llt(3,t=2).hspin()
665
+ sage: TestSuite(HS3t2).run() # products are too expensive, long time (7s on sage.math, 2012)
666
+
667
+ ::
668
+
669
+ sage: R.<x> = QQ[]
670
+ sage: HS3x = SymmetricFunctions(FractionField(R)).llt(3, t=x).hspin()
671
+ sage: TestSuite(HS3x).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (4s on sage.math, 2012)
672
+ sage: TestSuite(HS3x).run(elements = [HS3x.t*HS3x[1,1]+HS3x.t*HS3x[2], HS3x[1]+(1+HS3x.t)*HS3x[1,1]]) # long time (depends on previous)
673
+ """
674
+ level = llt._k
675
+ if level not in hsp_to_m_cache:
676
+ hsp_to_m_cache[level] = {}
677
+ m_to_hsp_cache[level] = {}
678
+ self._self_to_m_cache = hsp_to_m_cache[level]
679
+ self._m_to_self_cache = m_to_hsp_cache[level]
680
+
681
+ LLT_generic.__init__(self, llt, prefix="HSp%s" % level)
682
+
683
+ def _to_m(self, part):
684
+ r"""
685
+ Return a function which gives the coefficient of a partition
686
+ in the monomial expansion of self(part).
687
+
688
+ INPUT:
689
+
690
+ - ``self`` -- an instance of the LLT hspin basis
691
+ - ``part`` -- a partition
692
+
693
+ OUTPUT:
694
+
695
+ - returns a function which accepts a partition and returns the coefficient
696
+ in the expansion of the monomial basis
697
+
698
+ EXAMPLES::
699
+
700
+ sage: # needs sage.symbolic
701
+ sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
702
+ sage: f21 = HSp3._to_m(Partition([2,1]))
703
+ sage: [f21(p) for p in Partitions(3)]
704
+ [t, t + 1, t + 2]
705
+ sage: HSp3.symmetric_function_ring().m()( HSp3[2,1] )
706
+ (t+2)*m[1, 1, 1] + (t+1)*m[2, 1] + t*m[3]
707
+ """
708
+ level = self.level()
709
+ f = lambda part2: QQt(ribbon_tableau.spin_polynomial([level*i for i in part], part2, level))
710
+ return f
711
+
712
+ class Element(LLT_generic.Element):
713
+ pass
714
+
715
+
716
+ # the h-cospin basis
717
+ class LLT_cospin(LLT_generic):
718
+ def __init__(self, llt):
719
+ r"""
720
+ A class of methods for the h-cospin LLT basis of the symmetric functions.
721
+
722
+ INPUT:
723
+
724
+ - ``self`` -- an instance of the LLT hcospin basis
725
+ - ``llt`` -- a family of LLT symmetric function bases
726
+
727
+ TESTS::
728
+
729
+ sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
730
+ sage: TestSuite(HCosp3).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (11s on sage.math, 2012)
731
+ sage: TestSuite(HCosp3).run(elements = [HCosp3.t*HCosp3[1,1]+HCosp3.t*HCosp3[2], HCosp3[1]+(1+HCosp3.t)*HCosp3[1,1]]) # long time (depends on previous)
732
+
733
+ ::
734
+
735
+ sage: HC3t2 = SymmetricFunctions(QQ).llt(3,t=2).hcospin()
736
+ sage: TestSuite(HC3t2).run() # products are too expensive, long time (6s on sage.math, 2012)
737
+
738
+ ::
739
+
740
+ sage: R.<x> = QQ[]
741
+ sage: HC3x = SymmetricFunctions(FractionField(R)).llt(3, t=x).hcospin()
742
+ sage: TestSuite(HC3x).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (5s on sage.math, 2012)
743
+ sage: TestSuite(HC3x).run(elements = [HC3x.t*HC3x[1,1]+HC3x.t*HC3x[2], HC3x[1]+(1+HC3x.t)*HC3x[1,1]]) # long time (depends on previous)
744
+ """
745
+ level = llt._k
746
+ if level not in hcosp_to_m_cache:
747
+ hcosp_to_m_cache[level] = {}
748
+ m_to_hcosp_cache[level] = {}
749
+ self._self_to_m_cache = hcosp_to_m_cache[level]
750
+ self._m_to_self_cache = m_to_hcosp_cache[level]
751
+ LLT_generic.__init__(self, llt, prefix="HCosp%s" % level)
752
+
753
+ def _to_m(self, part):
754
+ r"""
755
+ Return a function which gives the coefficient of part2 in the
756
+ monomial expansion of self(part).
757
+
758
+ INPUT:
759
+
760
+ - ``self`` -- an instance of the LLT hcospin basis
761
+ - ``part`` -- a partition
762
+
763
+ OUTPUT:
764
+
765
+ - returns a function which accepts a partition and returns the coefficient
766
+ in the expansion of the monomial basis
767
+
768
+ EXAMPLES::
769
+
770
+ sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
771
+ sage: f21 = HCosp3._to_m(Partition([2,1]))
772
+ sage: [f21(p) for p in Partitions(3)]
773
+ [1, t + 1, 2*t + 1]
774
+ sage: HCosp3.symmetric_function_ring().m()( HCosp3[2,1] )
775
+ (2*t+1)*m[1, 1, 1] + (t+1)*m[2, 1] + m[3]
776
+ """
777
+ level = self.level()
778
+ f = lambda part2: QQt(ribbon_tableau.cospin_polynomial([level*i for i in part], part2, level))
779
+ return f
780
+
781
+ class Element(LLT_generic.Element):
782
+ pass
783
+
784
+
785
+ # Backward compatibility for unpickling
786
+ from sage.misc.persist import register_unpickle_override
787
+
788
+ register_unpickle_override('sage.combinat.sf.llt', 'LLTElement_spin', LLT_spin.Element)
789
+ register_unpickle_override('sage.combinat.sf.llt', 'LLTElement_cospin', LLT_cospin.Element)