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,525 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ """
4
+ Rational Cherednik Algebras
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # https://www.gnu.org/licenses/
11
+ # ****************************************************************************
12
+
13
+ from sage.misc.cachefunc import cached_method
14
+ from sage.misc.lazy_attribute import lazy_attribute
15
+ from sage.categories.algebras import Algebras
16
+ from sage.combinat.free_module import CombinatorialFreeModule
17
+ from sage.combinat.root_system.cartan_type import CartanType
18
+ from sage.combinat.root_system.cartan_matrix import CartanMatrix
19
+ from sage.combinat.root_system.root_system import RootSystem
20
+ from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
21
+ from sage.sets.family import Family
22
+ from sage.monoids.indexed_free_monoid import IndexedFreeAbelianMonoid
23
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
24
+ from sage.rings.rational_field import QQ
25
+
26
+
27
+ class RationalCherednikAlgebra(CombinatorialFreeModule):
28
+ r"""
29
+ A rational Cherednik algebra.
30
+
31
+ Let `k` be a field. Let `W` be a complex reflection group acting on
32
+ a vector space `\mathfrak{h}` (over `k`). Let `\mathfrak{h}^*` denote
33
+ the corresponding dual vector space. Let `\cdot` denote the
34
+ natural action of `w` on `\mathfrak{h}` and `\mathfrak{h}^*`. Let
35
+ `\mathcal{S}` denote the set of reflections of `W` and `\alpha_s`
36
+ and `\alpha_s^{\vee}` are the associated root and coroot of `s`. Let
37
+ `c = (c_s)_{s \in W}` such that `c_s = c_{tst^{-1}}` for all `t \in W`.
38
+
39
+ The *rational Cherednik algebra* is the `k`-algebra
40
+ `H_{c,t}(W) = T(\mathfrak{h} \oplus \mathfrak{h}^*) \otimes kW` with
41
+ parameters `c, t \in k` that is subject to the relations:
42
+
43
+ .. MATH::
44
+
45
+ \begin{aligned}
46
+ w \alpha & = (w \cdot \alpha) w,
47
+ \\ \alpha^{\vee} w & = w (w^{-1} \cdot \alpha^{\vee}),
48
+ \\ \alpha \alpha^{\vee} & = \alpha^{\vee} \alpha
49
+ + t \langle \alpha^{\vee}, \alpha \rangle
50
+ + \sum_{s \in \mathcal{S}} c_s \frac{\langle \alpha^{\vee},
51
+ \alpha_s \rangle \langle \alpha^{\vee}_s, \alpha \rangle}{
52
+ \langle \alpha^{\vee}, \alpha \rangle} s,
53
+ \end{aligned}
54
+
55
+ where `w \in W` and `\alpha \in \mathfrak{h}` and
56
+ `\alpha^{\vee} \in \mathfrak{h}^*`.
57
+
58
+ INPUT:
59
+
60
+ - ``ct`` -- a finite Cartan type
61
+ - ``c`` -- the parameters `c_s` given as an element or a tuple, where
62
+ the first entry is the one for the long roots and (for
63
+ non-simply-laced types) the second is for the short roots
64
+ - ``t`` -- the parameter `t`
65
+ - ``base_ring`` -- (optional) the base ring
66
+ - ``prefix`` -- (default: ``('a', 's', 'ac')``) the prefixes
67
+
68
+ .. TODO::
69
+
70
+ Implement a version for complex reflection groups.
71
+
72
+ REFERENCES:
73
+
74
+ - [GGOR2003]_
75
+ - [EM2001]_
76
+ """
77
+ @staticmethod
78
+ def __classcall_private__(cls, ct, c=1, t=None, base_ring=None, prefix=('a', 's', 'ac')):
79
+ """
80
+ Normalize input to ensure a unique representation.
81
+
82
+ EXAMPLES::
83
+
84
+ sage: R1 = algebras.RationalCherednik(['B',2], 1, 1, QQ)
85
+ sage: R2 = algebras.RationalCherednik(CartanType(['B',2]), [1,1], 1, QQ, ('a', 's', 'ac'))
86
+ sage: R1 is R2
87
+ True
88
+ """
89
+ ct = CartanType(ct)
90
+ if not ct.is_finite():
91
+ raise ValueError("the Cartan type must be finite")
92
+ if base_ring is None:
93
+ if t is None:
94
+ base_ring = QQ
95
+ else:
96
+ base_ring = t.parent()
97
+ if t is None:
98
+ t = base_ring.one()
99
+ else:
100
+ t = base_ring(t)
101
+
102
+ # Normalize the parameter c
103
+ if isinstance(c, (tuple, list)):
104
+ if ct.is_simply_laced():
105
+ if len(c) != 1:
106
+ raise ValueError("1 parameter c_s must be given for simply-laced types")
107
+ c = (base_ring(c[0]),)
108
+ else:
109
+ if len(c) != 2:
110
+ raise ValueError("2 parameters c_s must be given for non-simply-laced types")
111
+ c = (base_ring(c[0]), base_ring(c[1]))
112
+ else:
113
+ c = base_ring(c)
114
+ if ct.is_simply_laced():
115
+ c = (c,)
116
+ else:
117
+ c = (c, c)
118
+
119
+ return super().__classcall__(cls, ct, c, t, base_ring, tuple(prefix))
120
+
121
+ def __init__(self, ct, c, t, base_ring, prefix) -> None:
122
+ r"""
123
+ Initialize ``self``.
124
+
125
+ EXAMPLES::
126
+
127
+ sage: k = QQ['c,t']
128
+ sage: R = algebras.RationalCherednik(['A',2], k.gen(0), k.gen(1))
129
+ sage: TestSuite(R).run() # long time
130
+ """
131
+ self._c = c
132
+ self._t = t
133
+ self._cartan_type = ct
134
+ self._weyl = RootSystem(ct).root_lattice().weyl_group(prefix=prefix[1])
135
+ self._hd = IndexedFreeAbelianMonoid(ct.index_set(), prefix=prefix[0],
136
+ bracket=False)
137
+ self._h = IndexedFreeAbelianMonoid(ct.index_set(), prefix=prefix[2],
138
+ bracket=False)
139
+ indices = DisjointUnionEnumeratedSets([self._hd, self._weyl, self._h])
140
+ CombinatorialFreeModule.__init__(self, base_ring, indices,
141
+ category=Algebras(base_ring).WithBasis().Graded(),
142
+ sorting_key=self._genkey)
143
+
144
+ def _genkey(self, t):
145
+ r"""
146
+ Construct a key for comparison for a term indexed by ``t``.
147
+
148
+ The key we create is the tuple in the following order:
149
+
150
+ - overall degree
151
+ - length of the Weyl group element
152
+ - the Weyl group element
153
+ - the element of `\mathfrak{h}`
154
+ - the element of `\mathfrak{h}^*`
155
+
156
+ EXAMPLES::
157
+
158
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
159
+ sage: R.an_element()**2 # indirect doctest
160
+ 9*ac1^2 + 10*I + 6*a1*ac1 + 6*s1 + 3/2*s2 + 3/2*s1*s2*s1 + a1^2
161
+ """
162
+ return (self.degree_on_basis(t), t[1].length(), t[1], str(t[0]), str(t[2]))
163
+
164
+ @lazy_attribute
165
+ def _reflections(self) -> dict:
166
+ """
167
+ A dictionary of reflections to a pair of the associated root
168
+ and coroot.
169
+
170
+ EXAMPLES::
171
+
172
+ sage: R = algebras.RationalCherednik(['B',2], [1,2], 1, QQ)
173
+ sage: [R._reflections[k] for k in sorted(R._reflections, key=str)]
174
+ [(alpha[1], alphacheck[1], 1),
175
+ (alpha[1] + alpha[2], 2*alphacheck[1] + alphacheck[2], 2),
176
+ (alpha[2], alphacheck[2], 2),
177
+ (alpha[1] + 2*alpha[2], alphacheck[1] + alphacheck[2], 1)]
178
+ """
179
+ d = {}
180
+ for r in RootSystem(self._cartan_type).root_lattice().positive_roots():
181
+ s = self._weyl.from_reduced_word(r.associated_reflection())
182
+ if r.is_short_root():
183
+ c = self._c[1]
184
+ else:
185
+ c = self._c[0]
186
+ d[s] = (r, r.associated_coroot(), c)
187
+ return d
188
+
189
+ def _repr_(self) -> str:
190
+ r"""
191
+ Return a string representation of ``self``.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: RationalCherednikAlgebra(['A',4], 2, 1, QQ)
196
+ Rational Cherednik Algebra of type ['A', 4] with c=2 and t=1
197
+ over Rational Field
198
+ sage: algebras.RationalCherednik(['B',2], [1,2], 1, QQ)
199
+ Rational Cherednik Algebra of type ['B', 2] with c_L=1 and c_S=2
200
+ and t=1 over Rational Field
201
+ """
202
+ ret = "Rational Cherednik Algebra of type {} with ".format(self._cartan_type)
203
+ if self._cartan_type.is_simply_laced():
204
+ ret += "c={}".format(self._c[0])
205
+ else:
206
+ ret += "c_L={} and c_S={}".format(*self._c)
207
+ return ret + " and t={} over {}".format(self._t, self.base_ring())
208
+
209
+ def _repr_term(self, t) -> str:
210
+ """
211
+ Return a string representation of the term indexed by ``t``.
212
+
213
+ EXAMPLES::
214
+
215
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
216
+ sage: R.an_element() # indirect doctest
217
+ 3*ac1 + 2*s1 + a1
218
+ sage: R.one() # indirect doctest
219
+ I
220
+ """
221
+ r = []
222
+ if t[0] != self._hd.one():
223
+ r.append(t[0])
224
+ if t[1] != self._weyl.one():
225
+ r.append(t[1])
226
+ if t[2] != self._h.one():
227
+ r.append(t[2])
228
+ if not r:
229
+ return 'I'
230
+ return '*'.join(repr(x) for x in r)
231
+
232
+ def algebra_generators(self):
233
+ """
234
+ Return the algebra generators of ``self``.
235
+
236
+ EXAMPLES::
237
+
238
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
239
+ sage: list(R.algebra_generators())
240
+ [a1, a2, s1, s2, ac1, ac2]
241
+ """
242
+ keys = ['a' + str(i) for i in self._cartan_type.index_set()]
243
+ keys += ['s' + str(i) for i in self._cartan_type.index_set()]
244
+ keys += ['ac' + str(i) for i in self._cartan_type.index_set()]
245
+
246
+ def gen_map(k):
247
+ if k[0] == 's':
248
+ i = int(k[1:])
249
+ return self.monomial((self._hd.one(),
250
+ self._weyl.group_generators()[i],
251
+ self._h.one()))
252
+ if k[1] == 'c':
253
+ i = int(k[2:])
254
+ return self.monomial((self._hd.one(),
255
+ self._weyl.one(),
256
+ self._h.monoid_generators()[i]))
257
+
258
+ i = int(k[1:])
259
+ return self.monomial((self._hd.monoid_generators()[i],
260
+ self._weyl.one(),
261
+ self._h.one()))
262
+ return Family(keys, gen_map)
263
+
264
+ @cached_method
265
+ def one_basis(self):
266
+ """
267
+ Return the index of the element `1`.
268
+
269
+ EXAMPLES::
270
+
271
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
272
+ sage: R.one_basis()
273
+ (1, 1, 1)
274
+ """
275
+ return (self._hd.one(), self._weyl.one(), self._h.one())
276
+
277
+ def product_on_basis(self, left, right):
278
+ r"""
279
+ Return ``left`` multiplied by ``right`` in ``self``.
280
+
281
+ EXAMPLES::
282
+
283
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
284
+ sage: a2 = R.algebra_generators()['a2']
285
+ sage: ac1 = R.algebra_generators()['ac1']
286
+ sage: a2 * ac1 # indirect doctest
287
+ a2*ac1
288
+ sage: ac1 * a2
289
+ -I + a2*ac1 - s1 - s2 + 1/2*s1*s2*s1
290
+ sage: x = R.an_element()
291
+ sage: [y * x for y in R.some_elements()]
292
+ [0,
293
+ 3*ac1 + 2*s1 + a1,
294
+ 9*ac1^2 + 10*I + 6*a1*ac1 + 6*s1 + 3/2*s2 + 3/2*s1*s2*s1 + a1^2,
295
+ 3*a1*ac1 + 2*a1*s1 + a1^2,
296
+ 3*a2*ac1 + 2*a2*s1 + a1*a2,
297
+ 3*s1*ac1 + 2*I - a1*s1,
298
+ 3*s2*ac1 + 2*s2*s1 + a1*s2 + a2*s2,
299
+ 3*ac1^2 - 2*s1*ac1 + 2*I + a1*ac1 + 2*s1 + 1/2*s2 + 1/2*s1*s2*s1,
300
+ 3*ac1*ac2 + 2*s1*ac1 + 2*s1*ac2 - I + a1*ac2 - s1 - s2 + 1/2*s1*s2*s1]
301
+ sage: [x * y for y in R.some_elements()]
302
+ [0,
303
+ 3*ac1 + 2*s1 + a1,
304
+ 9*ac1^2 + 10*I + 6*a1*ac1 + 6*s1 + 3/2*s2 + 3/2*s1*s2*s1 + a1^2,
305
+ 6*I + 3*a1*ac1 + 6*s1 + 3/2*s2 + 3/2*s1*s2*s1 - 2*a1*s1 + a1^2,
306
+ -3*I + 3*a2*ac1 - 3*s1 - 3*s2 + 3/2*s1*s2*s1 + 2*a1*s1 + 2*a2*s1 + a1*a2,
307
+ -3*s1*ac1 + 2*I + a1*s1,
308
+ 3*s2*ac1 + 3*s2*ac2 + 2*s1*s2 + a1*s2,
309
+ 3*ac1^2 + 2*s1*ac1 + a1*ac1,
310
+ 3*ac1*ac2 + 2*s1*ac2 + a1*ac2]
311
+ """
312
+ # Make copies of the internal dictionaries
313
+ dl = dict(left[2]._monomial)
314
+ dr = dict(right[0]._monomial)
315
+
316
+ # If there is nothing to commute
317
+ if not dl and not dr:
318
+ return self.monomial((left[0], left[1] * right[1], right[2]))
319
+
320
+ R = self.base_ring()
321
+ I = self._cartan_type.index_set()
322
+ P = PolynomialRing(R, 'x', len(I))
323
+ G = P.gens()
324
+ gens_dict = {a: G[i] for i, a in enumerate(I)}
325
+ Q = RootSystem(self._cartan_type).root_lattice()
326
+ alpha = Q.simple_roots()
327
+ alphacheck = Q.simple_coroots()
328
+
329
+ def commute_w_hd(w, al): # al is given as a dictionary
330
+ ret = P.one()
331
+ for k in al:
332
+ x = sum(c * gens_dict[i] for i, c in alpha[k].weyl_action(w))
333
+ ret *= x**al[k]
334
+ ret = ret.monomial_coefficients()
335
+ for k in ret:
336
+ yield (self._hd({I[i]: e for i, e in enumerate(k) if e != 0}), ret[k])
337
+
338
+ # Do Lac Ra if they are both non-trivial
339
+ if dl and dr:
340
+ il = next(iter(dl.keys()))
341
+ ir = next(iter(dr.keys()))
342
+
343
+ # Compute the commutator
344
+ terms = self._product_coroot_root(il, ir)
345
+
346
+ # remove the generator from the elements
347
+ dl[il] -= 1
348
+ if dl[il] == 0:
349
+ del dl[il]
350
+ dr[ir] -= 1
351
+ if dr[ir] == 0:
352
+ del dr[ir]
353
+
354
+ # We now commute right roots past the left reflections: s Ra = Ra' s
355
+ cur = self._from_dict({(hd, s * right[1], right[2]): c * cc
356
+ for s, c in terms
357
+ for hd, cc in commute_w_hd(s, dr)})
358
+ cur = self.monomial((left[0], left[1], self._h(dl))) * cur
359
+
360
+ # Add back in the commuted h and hd elements
361
+ rem = self.monomial((left[0], left[1], self._h(dl)))
362
+ rem = rem * self.monomial((self._hd({ir: 1}), self._weyl.one(),
363
+ self._h({il: 1})))
364
+ rem = rem * self.monomial((self._hd(dr), right[1], right[2]))
365
+
366
+ return cur + rem
367
+
368
+ if dl:
369
+ # We have La Ls Lac Rs Rac,
370
+ # so we must commute Lac Rs = Rs Lac'
371
+ # and obtain La (Ls Rs) (Lac' Rac)
372
+ ret = P.one()
373
+ r1_red = right[1].reduced_word()
374
+ for k, dlk in dl.items():
375
+ x = sum(c * gens_dict[i]
376
+ for i, c in alphacheck[k].weyl_action(r1_red,
377
+ inverse=True))
378
+ ret *= x**dlk
379
+ ret = ret.monomial_coefficients()
380
+ w = left[1] * right[1]
381
+ return self._from_dict({(left[0], w,
382
+ self._h({I[i]: e for i, e in enumerate(k)
383
+ if e != 0}) * right[2]
384
+ ): ret[k]
385
+ for k in ret})
386
+
387
+ # Otherwise dr is non-trivial and we have La Ls Ra Rs Rac,
388
+ # so we must commute Ls Ra = Ra' Ls
389
+ w = left[1] * right[1]
390
+ return self._from_dict({(left[0] * hd, w, right[2]): c
391
+ for hd, c in commute_w_hd(left[1], dr)})
392
+
393
+ @cached_method
394
+ def _product_coroot_root(self, i, j):
395
+ r"""
396
+ Return the product `\alpha^{\vee}_i \alpha_j`.
397
+
398
+ EXAMPLES::
399
+
400
+ sage: k = QQ['c,t']
401
+ sage: R = algebras.RationalCherednik(['A',3], k.gen(0), k.gen(1))
402
+ sage: sorted(R._product_coroot_root(1, 1))
403
+ [(s1, 2*c),
404
+ (s1*s2*s1, 1/2*c),
405
+ (s1*s2*s3*s2*s1, 1/2*c),
406
+ (1, 2*t),
407
+ (s3, 0),
408
+ (s2, 1/2*c),
409
+ (s2*s3*s2, 1/2*c)]
410
+
411
+ sage: sorted(R._product_coroot_root(1, 2))
412
+ [(s1, -c),
413
+ (s1*s2*s1, 1/2*c),
414
+ (s1*s2*s3*s2*s1, 0),
415
+ (1, -t),
416
+ (s3, 0),
417
+ (s2, -c),
418
+ (s2*s3*s2, -1/2*c)]
419
+
420
+ sage: sorted(R._product_coroot_root(1, 3))
421
+ [(s1, 0),
422
+ (s1*s2*s1, -1/2*c),
423
+ (s1*s2*s3*s2*s1, 1/2*c),
424
+ (1, 0),
425
+ (s3, 0),
426
+ (s2, 1/2*c),
427
+ (s2*s3*s2, -1/2*c)]
428
+ """
429
+ Q = RootSystem(self._cartan_type).root_lattice()
430
+ ac = Q.simple_coroot(i)
431
+ al = Q.simple_root(j)
432
+
433
+ R = self.base_ring()
434
+ terms = [(self._weyl.one(), self._t * R(ac.scalar(al)))]
435
+ for s in self._reflections:
436
+ # p[0] is the root, p[1] is the coroot, p[2] the value c_s
437
+ pr, pc, c = self._reflections[s]
438
+ terms.append((s, c * R(ac.scalar(pr) * pc.scalar(al)
439
+ / pc.scalar(pr))))
440
+ return tuple(terms)
441
+
442
+ def degree_on_basis(self, m):
443
+ """
444
+ Return the degree on the monomial indexed by ``m``.
445
+
446
+ EXAMPLES::
447
+
448
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
449
+ sage: [R.degree_on_basis(g.leading_support())
450
+ ....: for g in R.algebra_generators()]
451
+ [1, 1, 0, 0, -1, -1]
452
+ """
453
+ return m[0].length() - m[2].length()
454
+
455
+ @cached_method
456
+ def trivial_idempotent(self):
457
+ r"""
458
+ Return the trivial idempotent of ``self``.
459
+
460
+ Let `e = |W|^{-1} \sum_{w \in W} w` is the trivial idempotent.
461
+ Thus `e^2 = e` and `eW = We`. The trivial idempotent is used
462
+ in the construction of the spherical Cherednik algebra from
463
+ the rational Cherednik algebra by `U_{c,t}(W) = e H_{c,t}(W) e`.
464
+
465
+ EXAMPLES::
466
+
467
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
468
+ sage: R.trivial_idempotent()
469
+ 1/6*I + 1/6*s1 + 1/6*s2 + 1/6*s2*s1 + 1/6*s1*s2 + 1/6*s1*s2*s1
470
+ """
471
+ coeff = self.base_ring()(~self._weyl.cardinality())
472
+ hd_one = self._hd.one() # root - a
473
+ h_one = self._h.one() # coroot - ac
474
+ return self._from_dict({(hd_one, w, h_one): coeff for w in self._weyl},
475
+ remove_zeros=False)
476
+
477
+ @cached_method
478
+ def deformed_euler(self):
479
+ """
480
+ Return the element `eu_k`.
481
+
482
+ EXAMPLES::
483
+
484
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
485
+ sage: R.deformed_euler()
486
+ 2*I + 2/3*a1*ac1 + 1/3*a1*ac2 + 1/3*a2*ac1 + 2/3*a2*ac2
487
+ + s1 + s2 + s1*s2*s1
488
+ """
489
+ I = self._cartan_type.index_set()
490
+ G = self.algebra_generators()
491
+ cm = ~CartanMatrix(self._cartan_type)
492
+ n = len(I)
493
+ ac = [G['ac' + str(i)] for i in I]
494
+ la = [sum(cm[i, j] * G['a' + str(I[i])]
495
+ for i in range(n)) for j in range(n)]
496
+ return self.sum(ac[i] * la[i] for i in range(n))
497
+
498
+ @cached_method
499
+ def _an_element_(self):
500
+ """
501
+ Return an element of ``self``.
502
+
503
+ EXAMPLES::
504
+
505
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
506
+ sage: R.an_element()
507
+ 3*ac1 + 2*s1 + a1
508
+ """
509
+ G = self.algebra_generators()
510
+ i = str(self._cartan_type.index_set()[0])
511
+ return G['a' + i] + 2 * G['s' + i] + 3 * G['ac' + i]
512
+
513
+ def some_elements(self):
514
+ """
515
+ Return some elements of ``self``.
516
+
517
+ EXAMPLES::
518
+
519
+ sage: R = algebras.RationalCherednik(['A',2], 1, 1, QQ)
520
+ sage: R.some_elements()
521
+ [0, I, 3*ac1 + 2*s1 + a1, a1, a2, s1, s2, ac1, ac2]
522
+ """
523
+ ret = [self.zero(), self.one(), self.an_element()]
524
+ ret += list(self.algebra_generators())
525
+ return ret