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,475 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.modules
3
+ r"""
4
+ Ariki-Koike Algebra Representations
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2023-12-28): Initial version
9
+ """
10
+
11
+ #*****************************************************************************
12
+ # Copyright (C) 2023 Travis Scrimshaw <tcscrims at gmail.com>
13
+ #
14
+ # This program is free software: you can redistribute it and/or modify
15
+ # it under the terms of the GNU General Public License as published by
16
+ # the Free Software Foundation, either version 2 of the License, or
17
+ # (at your option) any later version.
18
+ # http://www.gnu.org/licenses/
19
+ #*****************************************************************************
20
+
21
+ from sage.misc.misc_c import prod
22
+ from sage.misc.latex import latex
23
+ from sage.categories.modules import Modules
24
+ from sage.rings.integer_ring import ZZ
25
+ from sage.combinat.free_module import CombinatorialFreeModule
26
+ from sage.combinat.partition_tuple import PartitionTuples
27
+ from sage.combinat.permutation import Permutations
28
+ from sage.combinat.tableau_tuple import StandardTableauTuples
29
+
30
+
31
+ class SpechtModule(CombinatorialFreeModule):
32
+ r"""
33
+ Specht module of the Ariki-Koike algebra.
34
+
35
+ Let `H_{r,n}(q, u)` be the Ariki-Koike algebra with parameters `q`
36
+ and `u = (u_1, \ldots, u_r)` (note our indexing convention for
37
+ the `u` parameters differs from
38
+ :mod:`sage.algebras.hecke_algebras.ariki_koike_algebra`) over a
39
+ commutative ring `R`. Let `\lambda` be a partition tuple of level
40
+ `r` and size `n`. The *Specht module* of shape `\lambda` is the (right)
41
+ `H_{r,n}(q,u)`-representation `S^{\lambda}` given as free `R`-module
42
+ with basis given by the standard tableau (tuples) of shape `\lambda`.
43
+
44
+ We will now describe the right action of the Ariki-Koike algebra,
45
+ but we first need to set some notation and definitions.
46
+ Let `t` be a standard tableau tuple of level `r` and size `n`.
47
+ Define the *residue* of `i` in `t` to be `r_t(i) = q^{c-r} u_k`,
48
+ where `i` is in cell `(r, c)` of the `k`-th tableau.
49
+
50
+ The action of `L_i` is given by `t \cdot L_i = r_T(i) t`. For `T_i`,
51
+ we need to consider the following cases. If `i, i+1` are in the same
52
+ row (resp. column), then `t \cdot T_i = q t` (resp. `t \cdot T_i = -t`).
53
+ Otherwise if we swap `i, i+1`, the resulting tableau tuple `s` is again
54
+ standard and the action is given by
55
+
56
+ .. MATH::
57
+
58
+ t \cdot T_i = \frac{(q - 1) r_t(i)}{r_s(i) - r_t(i)} t
59
+ + \frac{q r_t(i) - r_s(i)}{r_s(i) - r_t(i)} s.
60
+
61
+ Note that `r_s(i) = r_t(i+1)`.
62
+
63
+ Over a field of characteristic `0`, the set of Specht modules for all
64
+ partition tuples of level `r` and size `n` form the complete set
65
+ of irreducible modules for `H_{r,n}(q, u)` [AK1994]_. (The condition
66
+ on the base ring can be weakened; see Theorem 3.2 of [Mathas2002]_.)
67
+
68
+ EXAMPLES:
69
+
70
+ We construct the Specht module `S^{(2,1,21)}` for `H_{3,6}(q, u)` with
71
+ generic parameters `q, u` over `\GF(3)` and perform some basic
72
+ computations. We change the tableaux to use the compact representation
73
+ to condense the output::
74
+
75
+ sage: TableauTuples.options.display = 'compact'
76
+
77
+ sage: R = PolynomialRing(GF(3), 'u', 3)
78
+ sage: u = R.gens()
79
+ sage: q = R['q'].gen()
80
+ sage: H = algebras.ArikiKoike(3, 6, q, u, use_fraction_field=True)
81
+ sage: LT = H.LT()
82
+ sage: T0, T1, T2, T3, T4, T5 = LT.T()
83
+ sage: S = H.specht_module([[2], [1], [2,1]])
84
+ sage: S.dimension()
85
+ 120
86
+ sage: elt = S.an_element(); elt
87
+ S[1,2|3|4,5/6] - S[1,3|2|4,5/6] + S[1,3|4|2,5/6]
88
+ sage: elt * LT.L(3)
89
+ u1*S[1,2|3|4,5/6] + (-u0*q)*S[1,3|2|4,5/6] + u0*q*S[1,3|4|2,5/6]
90
+ sage: elt * T2
91
+ (((-u0-u1)*q-u1)/(-u0*q+u1))*S[1,2|3|4,5/6]
92
+ + (((-u0+u2)*q)/(u0*q-u2))*S[1,2|4|3,5/6]
93
+ + ((-u0*q^2-u0*q-u1)/(-u0*q+u1))*S[1,3|2|4,5/6]
94
+ + ((u0*q^2-u0*q)/(u0*q-u2))*S[1,3|4|2,5/6]
95
+ sage: (elt * T3) * T2 == elt * (T3 * T2)
96
+ True
97
+ sage: elt * T2 * T3 * T2 == elt * T3 * T2 * T3
98
+ True
99
+ sage: elt * T0 * T1 * T0 * T1 == elt * T1 * T0 * T1 * T0
100
+ True
101
+ sage: elt * T2 * T5 == elt * T5 * T2
102
+ True
103
+
104
+ sage: TableauTuples.options._reset()
105
+
106
+ REFERENCES:
107
+
108
+ - [AK1994]_
109
+ - [DJM1998]_
110
+ - [DR2001]_
111
+ - [Mathas2002]_
112
+ - [Mathas2004]_
113
+ """
114
+ @staticmethod
115
+ def __classcall_private__(cls, AK, la):
116
+ """
117
+ Normalize input to ensure a unique representation.
118
+
119
+ EXAMPLES::
120
+
121
+ sage: AK = algebras.ArikiKoike(3, 6)
122
+ sage: S1 = AK.specht_module([[3], [1], [1,1]])
123
+ sage: S2 = AK.specht_module(PartitionTuple([[3], [1], [1,1]]))
124
+ sage: S1 is S2
125
+ True
126
+ """
127
+ la = PartitionTuples(AK._r, AK._n)(la)
128
+ return super().__classcall__(cls, AK, la)
129
+
130
+ def __init__(self, AK, la):
131
+ r"""
132
+ Initialize ``self``.
133
+
134
+ EXAMPLES::
135
+
136
+ sage: AK = algebras.ArikiKoike(3, 6, use_fraction_field=True)
137
+ sage: S = AK.specht_module([[3], [1], [1,1]])
138
+ sage: TestSuite(S).run() # long time
139
+ sage: Sp = AK.specht_module([[], [2,1,1], [2]])
140
+ sage: TestSuite(Sp).run() # long time
141
+ """
142
+ self._shape = la
143
+ self._AK = AK
144
+ self._q = AK.q()
145
+ self._u = AK.u()
146
+ self._Pn = Permutations(la.size())
147
+ indices = StandardTableauTuples(la)
148
+ R = AK.base_ring()
149
+ cat = Modules(R).FiniteDimensional().WithBasis()
150
+ CombinatorialFreeModule.__init__(self, R, indices, category=cat, prefix='S')
151
+
152
+ def _repr_(self):
153
+ r"""
154
+ Return a string representation of ``self``.
155
+
156
+ EXAMPLES::
157
+
158
+ sage: AK = algebras.ArikiKoike(3, 8)
159
+ sage: AK.specht_module([[3], [], [2,2,1]])
160
+ Specht module of shape ([3], [], [2, 2, 1]) for
161
+ Ariki-Koike algebra of rank 3 and order 8 with q=q and u=(u0, u1, u2)
162
+ over ... over Integer Ring
163
+ """
164
+ return "Specht module of shape {} for {}".format(self._shape, self._AK)
165
+
166
+ def _latex_(self):
167
+ r"""
168
+ Return a latex representation of ``self``.
169
+
170
+ EXAMPLES::
171
+
172
+ sage: AK = algebras.ArikiKoike(3, 8)
173
+ sage: S = AK.specht_module([[3], [], [2,2,1]])
174
+ sage: latex(S)
175
+ S^{{\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}
176
+ \raisebox{-.6ex}{$\begin{array}[b]{*{3}c}\cline{1-3}
177
+ \lr{\phantom{x}}&\lr{\phantom{x}}&\lr{\phantom{x}}\\\cline{1-3}
178
+ \end{array}$},\emptyset,\raisebox{-.6ex}{$\begin{array}[b]{*{2}c}\cline{1-2}
179
+ \lr{\phantom{x}}&\lr{\phantom{x}}\\\cline{1-2}
180
+ \lr{\phantom{x}}&\lr{\phantom{x}}\\\cline{1-2}
181
+ \lr{\phantom{x}}\\\cline{1-1}
182
+ \end{array}$}
183
+ }}_{\mathcal{H}_{3,8}(q)}
184
+ """
185
+ return "S^{{{}}}_{{{}}}".format(latex(self._shape), latex(self._AK))
186
+
187
+ def _test_representation(self, **options):
188
+ r"""
189
+ Test that the relations of the Ariki-Koike algebra are satisfied.
190
+
191
+ EXAMPLES::
192
+
193
+ sage: q = ZZ['q'].fraction_field().gen()
194
+ sage: AK = algebras.ArikiKoike(2, 4, q, [q^2+1, q-3], q.parent())
195
+ sage: S = AK.specht_module([[2,1], [1]])
196
+ sage: S._test_representation(elements=S.basis())
197
+ """
198
+ tester = self._tester(**options)
199
+ n = self._shape.size()
200
+ q = self._q
201
+ from sage.misc.misc import some_tuples
202
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
203
+
204
+ # Build the polynomial for testing the T0 action
205
+ z = PolynomialRing(self.base_ring(), 'DUMMY').gen()
206
+ T0_poly = -prod(z - val for val in self._u)
207
+
208
+ def apply_T0_power(b, exp):
209
+ for i in range(exp):
210
+ b = b.T(0)
211
+ return b
212
+
213
+ AKelts = self._AK.some_elements()
214
+ for b in tester.some_elements():
215
+ t0 = self.linear_combination((apply_T0_power(b, exp), c)
216
+ for exp, c in enumerate(T0_poly))
217
+ tester.assertEqual(t0, self.zero())
218
+
219
+ tester.assertEqual(b.T([0, 1, 0, 1]), b.T([1, 0, 1, 0]))
220
+ tester.assertEqual(b.T(1).T(1), (q-1)*b.T(1) + q*b)
221
+ for i in range(2, n):
222
+ tester.assertEqual(b.T(i).T(i), (q-1)*b.T(i) + q*b)
223
+ tester.assertEqual(b.T(i).T(0), b.T(0).T(i))
224
+ if i < n - 1:
225
+ tester.assertEqual(b.T([i, i+1, i]), b.T([i+1, i, i+1]))
226
+ for j in range(i+2, n):
227
+ tester.assertEqual(b.T([i, j]), b.T([j, i]))
228
+
229
+ for (x, y) in some_tuples(AKelts, 2, tester._max_runs):
230
+ tester.assertEqual(b*(x*y), (b*x)*y)
231
+
232
+ def _L_on_basis(self, i, t):
233
+ """
234
+ Return the action of `L_i` on the basis element indexed by
235
+ the standard tableau tuple ``t``.
236
+
237
+ EXAMPLES::
238
+
239
+ sage: AK = algebras.ArikiKoike(3, 10)
240
+ sage: S = AK.specht_module([[2,1], [], [3,2,2]])
241
+ sage: P = S.basis().keys()
242
+ sage: t = P([[[2,4],[8]], [], [[1,3,7],[5,6],[9,10]]])
243
+ sage: S._L_on_basis(1, t)
244
+ u2*S[([[2, 4], [8]], [], [[1, 3, 7], [5, 6], [9, 10]])]
245
+ sage: S._L_on_basis(4, t)
246
+ u0*q*S[([[2, 4], [8]], [], [[1, 3, 7], [5, 6], [9, 10]])]
247
+ sage: S._L_on_basis(6, t)
248
+ u2*S[([[2, 4], [8]], [], [[1, 3, 7], [5, 6], [9, 10]])]
249
+ sage: S._L_on_basis(8, t)
250
+ (u0*q^-1)*S[([[2, 4], [8]], [], [[1, 3, 7], [5, 6], [9, 10]])]
251
+ sage: S._L_on_basis(9, t)
252
+ (u2*q^-2)*S[([[2, 4], [8]], [], [[1, 3, 7], [5, 6], [9, 10]])]
253
+ """
254
+ c = t.cells_containing(i)[0]
255
+ if len(c) == 2: # it is of level 1 and a regular tableau
256
+ c = (0,) + c
257
+ res = self._q**(c[2]-c[1]) * self._u[c[0]]
258
+ R = self.base_ring()
259
+ return self.element_class(self, {t: R(res)})
260
+
261
+ def _T_on_basis(self, i, t):
262
+ r"""
263
+ Return the action of `T_i` on the basis element indexed by
264
+ the standard tableau tuple ``t``.
265
+
266
+ EXAMPLES::
267
+
268
+ sage: AK = algebras.ArikiKoike(3, 10, use_fraction_field=True)
269
+ sage: S = AK.specht_module([[2,1], [], [3,2,2]])
270
+ sage: P = S.basis().keys()
271
+ sage: t = P([[[2,4],[8]], [], [[1,5,7],[3,6],[9,10]]])
272
+ sage: S._T_on_basis(0, t) == S._L_on_basis(1, t)
273
+ True
274
+ sage: S._T_on_basis(1, t)
275
+ ((u2*q-u0)/(u0-u2))*S[([[1, 4], [8]], [], [[2, 5, 7], [3, 6], [9, 10]])]
276
+ + ((u0*q-u0)/(u0-u2))*S[([[2, 4], [8]], [], [[1, 5, 7], [3, 6], [9, 10]])]
277
+ sage: S._T_on_basis(2, t)
278
+ ((u2*q-u2)/(-u0*q+u2))*S[([[2, 4], [8]], [], [[1, 5, 7], [3, 6], [9, 10]])]
279
+ + ((u0*q^2-u2)/(-u0*q+u2))*S[([[3, 4], [8]], [], [[1, 5, 7], [2, 6], [9, 10]])]
280
+ sage: S._T_on_basis(5, t)
281
+ -S[([[2, 4], [8]], [], [[1, 5, 7], [3, 6], [9, 10]])]
282
+ sage: S._T_on_basis(7, t)
283
+ ((u2*q^4-u0)/(-u2*q^3+u0))*S[([[2, 4], [7]], [], [[1, 5, 8], [3, 6], [9, 10]])]
284
+ + ((u0*q-u0)/(-u2*q^3+u0))*S[([[2, 4], [8]], [], [[1, 5, 7], [3, 6], [9, 10]])]
285
+ sage: S._T_on_basis(9, t)
286
+ q*S[([[2, 4], [8]], [], [[1, 5, 7], [3, 6], [9, 10]])]
287
+ """
288
+ R = self.base_ring()
289
+ if i == 0:
290
+ return self._L_on_basis(1, t)
291
+
292
+ ct = t.cells_containing(i)[0]
293
+ cs = t.cells_containing(i+1)[0]
294
+ if len(ct) == 2: # it is of level 1 and a regular tableau
295
+ ct = (0,) + ct
296
+ cs = (0,) + cs
297
+
298
+ if ct[0] == cs[0] and ct[2] == cs[2]: # same column
299
+ return self.element_class(self, {t: -R.one()})
300
+
301
+ if ct[0] == cs[0] and ct[1] == cs[1]: # same row
302
+ return self.element_class(self, {t: self._q})
303
+
304
+ # result is standard
305
+ s = t.symmetric_group_action_on_entries(self._Pn.simple_reflection(i))
306
+ assert s.parent() is t.parent()
307
+
308
+ def res(cell):
309
+ return self._q**(cell[2]-cell[1]) * self._u[cell[0]]
310
+
311
+ # Note that the residue of i in t is given by the cell c
312
+ # and of i in s corresponds to cell cp because the
313
+ # corresponding action of the permutation on t.
314
+ one = self.base_ring().one()
315
+ denom = res(cs) - res(ct)
316
+ coefft = (self._q - one) * res(cs) / denom
317
+ coeffs = (self._q * res(ct) - res(cs)) / denom
318
+ return self.element_class(self, {t: R(coefft), s: R(coeffs)})
319
+
320
+ def ariki_koike_algebra(self):
321
+ r"""
322
+ Return the Ariki-Koike algebra that ``self`` is a representation of.
323
+
324
+ EXAMPLES::
325
+
326
+ sage: AK = algebras.ArikiKoike(3, 6)
327
+ sage: S = AK.specht_module([[2], [], [3,1]])
328
+ sage: S.ariki_koike_algebra() is AK
329
+ True
330
+ """
331
+ return self._AK
332
+
333
+ class Element(CombinatorialFreeModule.Element):
334
+ def _acted_upon_(self, scalar, self_on_left):
335
+ r"""
336
+ Return the action of ``scalar`` on ``self``.
337
+
338
+ EXAMPLES::
339
+
340
+ sage: TableauTuples.options.display = 'compact'
341
+ sage: AK = algebras.ArikiKoike(4, 6, use_fraction_field=True)
342
+ sage: q = AK.q()
343
+ sage: LT = AK.LT()
344
+ sage: T = AK.T()
345
+ sage: S = AK.specht_module([[], [2], [1], [2,1]])
346
+ sage: elt = S.an_element()
347
+ sage: 5 * elt
348
+ 5*S[-|1,2|3|4,5/6] + 10*S[-|1,3|2|4,5/6] + 5*S[-|1,3|4|2,5/6]
349
+ + 15*S[-|2,3|1|4,5/6]
350
+ sage: elt * (q - 2)
351
+ (q-2)*S[-|1,2|3|4,5/6] + (2*q-4)*S[-|1,3|2|4,5/6]
352
+ + (q-2)*S[-|1,3|4|2,5/6] + (3*q-6)*S[-|2,3|1|4,5/6]
353
+ sage: elt * LT.an_element() == elt * T(LT.an_element())
354
+ True
355
+ sage: T.an_element() * elt
356
+ Traceback (most recent call last):
357
+ ...
358
+ TypeError: unsupported operand parent(s) for *: 'Ariki-Koike algebra ... over Integer Ring'
359
+ sage: TableauTuples.options._reset()
360
+
361
+ TESTS::
362
+
363
+ sage: AK = algebras.ArikiKoike(2, 4, use_fraction_field=True)
364
+ sage: LT = AK.LT()
365
+ sage: T = AK.T()
366
+ sage: S = AK.specht_module([[1], [2,1]])
367
+ sage: B = list(LT.basis())[::55]
368
+ sage: all(b * x == b * T(x) for b in S.basis() for x in B) # long time
369
+ True
370
+ """
371
+ ret = super()._acted_upon_(scalar, self_on_left)
372
+ if ret is not None:
373
+ return ret
374
+ if not self_on_left: # only a right action
375
+ return None
376
+ P = self.parent()
377
+ if scalar not in P._AK:
378
+ return None
379
+ scalar = P._AK(scalar)
380
+ if scalar.parent() is P._AK.LT():
381
+ return P.linear_combination((self.L(sum(([i]*val for i, val in enumerate(m[0], start=1)), [])).T(m[1].reduced_word()), c)
382
+ for m, c in scalar)
383
+ elif scalar.parent() is P._AK.T():
384
+ AKT = P._AK.T()
385
+ return P.linear_combination((self.T(AKT._basis_to_word(m)), c)
386
+ for m, c in scalar)
387
+ return self * P._AK.LT()(scalar)
388
+
389
+ def L(self, i):
390
+ r"""
391
+ Return the (right) action of `L_i` on ``self``.
392
+
393
+ INPUT:
394
+
395
+ - ``i`` -- an integer or a list of integers
396
+
397
+ EXAMPLES::
398
+
399
+ sage: TableauTuples.options.display = 'compact' # compact tableau printing
400
+ sage: AK = algebras.ArikiKoike(3, 6, use_fraction_field=True)
401
+ sage: S = AK.specht_module([[2], [], [3,1]])
402
+ sage: elt = S.an_element(); elt
403
+ S[1,2|-|3,4,5/6] + 2*S[1,3|-|2,4,5/6]
404
+ + 3*S[2,3|-|1,4,5/6] + S[2,4|-|1,3,5/6]
405
+ sage: elt.L(1)
406
+ u0*S[1,2|-|3,4,5/6] + 2*u0*S[1,3|-|2,4,5/6]
407
+ + 3*u2*S[2,3|-|1,4,5/6] + u2*S[2,4|-|1,3,5/6]
408
+ sage: elt.L(2)
409
+ u0*q*S[1,2|-|3,4,5/6] + 2*u2*S[1,3|-|2,4,5/6]
410
+ + 3*u0*S[2,3|-|1,4,5/6] + u0*S[2,4|-|1,3,5/6]
411
+ sage: elt.L(6)
412
+ u2/q*S[1,2|-|3,4,5/6] + 2*u2/q*S[1,3|-|2,4,5/6]
413
+ + 3*u2/q*S[2,3|-|1,4,5/6] + u2/q*S[2,4|-|1,3,5/6]
414
+ sage: elt.L([3,3,3])
415
+ u2^3*S[1,2|-|3,4,5/6] + 2*u0^3*q^3*S[1,3|-|2,4,5/6]
416
+ + 3*u0^3*q^3*S[2,3|-|1,4,5/6] + u2^3*q^3*S[2,4|-|1,3,5/6]
417
+ sage: LT = AK.LT()
418
+ sage: elt.L([3,3,3]) == elt * (LT.L(3)^3)
419
+ True
420
+ sage: TableauTuples.options._reset() # reset
421
+ """
422
+ if not self: # action on 0 is 0
423
+ return self
424
+ if i not in ZZ:
425
+ ret = self
426
+ for val in i:
427
+ ret = ret.L(val)
428
+ return ret
429
+ P = self.parent()
430
+ return P.linear_combination((P._L_on_basis(i, t), c) for t, c in self)
431
+
432
+ def T(self, i):
433
+ r"""
434
+ Return the (right) action of `T_i` on ``self``.
435
+
436
+ INPUT:
437
+
438
+ - ``i`` -- an integer or a list of integers
439
+
440
+ EXAMPLES::
441
+
442
+ sage: TableauTuples.options.display = 'compact' # compact tableau printing
443
+ sage: AK = algebras.ArikiKoike(3, 10, use_fraction_field=True)
444
+ sage: q = AK.q()
445
+ sage: S = AK.specht_module([[2,1], [], [3,2,2]])
446
+ sage: P = S.basis().keys()
447
+ sage: t = P([[[2,4],[8]], [], [[1,5,7],[3,6],[9,10]]])
448
+ sage: b = S.basis()[t]
449
+ sage: b.T(2)
450
+ ((u2*q-u2)/(-u0*q+u2))*S[2,4/8|-|1,5,7/3,6/9,10]
451
+ + ((u0*q^2-u2)/(-u0*q+u2))*S[3,4/8|-|1,5,7/2,6/9,10]
452
+ sage: b.T(6)
453
+ ((-q)/(q+1))*S[2,4/8|-|1,5,6/3,7/9,10]
454
+ + (q^2/(q+1))*S[2,4/8|-|1,5,7/3,6/9,10]
455
+ sage: b.T([2,1,2]) == b.T([1,2,1])
456
+ True
457
+ sage: b.T(9)
458
+ q*S[2,4/8|-|1,5,7/3,6/9,10]
459
+ sage: all(b.T([i,i]) == (q-1)*b.T(i) + q*b for i in range(1,10))
460
+ True
461
+ sage: b.T(0)
462
+ u2*S[2,4/8|-|1,5,7/3,6/9,10]
463
+ sage: b.T([0,1,0,1]) == b.T([1,0,1,0])
464
+ True
465
+ sage: TableauTuples.options._reset() # reset
466
+ """
467
+ if not self: # action on 0 is 0
468
+ return self
469
+ if i not in ZZ:
470
+ ret = self
471
+ for val in i:
472
+ ret = ret.T(val)
473
+ return ret
474
+ P = self.parent()
475
+ return P.linear_combination((P._T_on_basis(i, t), c) for t, c in self)