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,591 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Quantum Group Representations
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2018): initial version
9
+ """
10
+
11
+ #*****************************************************************************
12
+ # Copyright (C) 2018 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.combinat.free_module import CombinatorialFreeModule
22
+ from sage.misc.lazy_attribute import lazy_attribute
23
+ from sage.misc.cachefunc import cached_method
24
+ from sage.algebras.quantum_groups.q_numbers import q_int
25
+ from sage.categories.crystals import Crystals
26
+ from sage.categories.quantum_group_representations import QuantumGroupRepresentations
27
+
28
+
29
+ class QuantumGroupRepresentation(CombinatorialFreeModule):
30
+ """
31
+ A representation of a quantum group whose basis is indexed
32
+ by the corresponding (combinatorial) crystal.
33
+
34
+ INPUT:
35
+
36
+ - ``C`` -- the crystal corresponding to the representation
37
+ - ``R`` -- the base ring
38
+ - ``q`` -- (default: the generator of ``R``) the parameter `q`
39
+ of the quantum group
40
+ """
41
+ @staticmethod
42
+ def __classcall__(cls, R, C, q=None):
43
+ """
44
+ Normalize input to ensure a unique representation.
45
+
46
+ EXAMPLES::
47
+
48
+ sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
49
+ sage: C = crystals.Tableaux(['A',3], shape=[1,1])
50
+ sage: R = ZZ['q'].fraction_field()
51
+ sage: V1 = MinusculeRepresentation(R, C)
52
+ sage: V2 = MinusculeRepresentation(R, C, R.gen())
53
+ sage: V1 is V2
54
+ True
55
+ """
56
+ if q is None:
57
+ q = R.gen()
58
+ return super().__classcall__(cls, R, C, q)
59
+
60
+ def __init__(self, R, C, q):
61
+ """
62
+ Initialize ``self``.
63
+
64
+ EXAMPLES::
65
+
66
+ sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
67
+ sage: C = crystals.Tableaux(['A',3], shape=[1,1])
68
+ sage: R = ZZ['q'].fraction_field()
69
+ sage: V = MinusculeRepresentation(R, C)
70
+ sage: TestSuite(V).run()
71
+ """
72
+ self._q = q
73
+ self._d = C.cartan_type().symmetrizer()
74
+ cat = QuantumGroupRepresentations(R).WithBasis()
75
+ if C in Crystals().Finite():
76
+ cat = cat.FiniteDimensional()
77
+ CombinatorialFreeModule.__init__(self, R, C, category=cat)
78
+
79
+ def cartan_type(self):
80
+ """
81
+ Return the Cartan type of ``self``.
82
+
83
+ EXAMPLES::
84
+
85
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
86
+ sage: C = crystals.Tableaux(['C',3], shape=[1])
87
+ sage: R = ZZ['q'].fraction_field()
88
+ sage: V = AdjointRepresentation(R, C)
89
+ sage: V.cartan_type()
90
+ ['C', 3]
91
+ """
92
+ return self.basis().keys().cartan_type()
93
+
94
+ def K_on_basis(self, i, b, power=1):
95
+ r"""
96
+ Return the action of `K_i` on the basis element indexed by ``b``
97
+ to the power ``power``.
98
+
99
+ INPUT:
100
+
101
+ - ``i`` -- an element of the index set
102
+ - ``b`` -- an element of basis keys
103
+ - ``power`` -- (default: 1) the power of `K_i`
104
+
105
+ EXAMPLES::
106
+
107
+ sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
108
+ sage: C = crystals.Tableaux(['A',3], shape=[1,1])
109
+ sage: R = ZZ['q'].fraction_field()
110
+ sage: V = MinusculeRepresentation(R, C)
111
+ sage: [[V.K_on_basis(i, b) for i in V.index_set()] for b in C]
112
+ [[B[[[1], [2]]], q*B[[[1], [2]]], B[[[1], [2]]]],
113
+ [q*B[[[1], [3]]], 1/q*B[[[1], [3]]], q*B[[[1], [3]]]],
114
+ [1/q*B[[[2], [3]]], B[[[2], [3]]], q*B[[[2], [3]]]],
115
+ [q*B[[[1], [4]]], B[[[1], [4]]], 1/q*B[[[1], [4]]]],
116
+ [1/q*B[[[2], [4]]], q*B[[[2], [4]]], 1/q*B[[[2], [4]]]],
117
+ [B[[[3], [4]]], 1/q*B[[[3], [4]]], B[[[3], [4]]]]]
118
+ sage: [[V.K_on_basis(i, b, -1) for i in V.index_set()] for b in C]
119
+ [[B[[[1], [2]]], 1/q*B[[[1], [2]]], B[[[1], [2]]]],
120
+ [1/q*B[[[1], [3]]], q*B[[[1], [3]]], 1/q*B[[[1], [3]]]],
121
+ [q*B[[[2], [3]]], B[[[2], [3]]], 1/q*B[[[2], [3]]]],
122
+ [1/q*B[[[1], [4]]], B[[[1], [4]]], q*B[[[1], [4]]]],
123
+ [q*B[[[2], [4]]], 1/q*B[[[2], [4]]], q*B[[[2], [4]]]],
124
+ [B[[[3], [4]]], q*B[[[3], [4]]], B[[[3], [4]]]]]
125
+ """
126
+ WLR = self.basis().keys().weight_lattice_realization()
127
+ alc = WLR.simple_coroots()
128
+ return self.term(b, self._q**(b.weight().scalar(alc[i]) * self._d[i] * power))
129
+
130
+
131
+ class CyclicRepresentation(QuantumGroupRepresentation):
132
+ """
133
+ A cyclic quantum group representation that is indexed by either a
134
+ highest weight crystal or Kirillov-Reshetikhin crystal.
135
+
136
+ The crystal ``C`` must either allow ``C.module_generator()``,
137
+ otherwise it is assumed to be generated by ``C.module_generators[0]``.
138
+
139
+ This is meant as an abstract base class for
140
+ :class:`~sage.algebras.quantum_groups.representation.AdjointRepresentation`
141
+ and
142
+ :class:`~sage.algebras.quantum_groups.representation.MinusculeRepresentation`.
143
+ """
144
+ def _repr_(self):
145
+ """
146
+ Return a string representation of ``self``.
147
+
148
+ EXAMPLES::
149
+
150
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
151
+ sage: C = crystals.Tableaux(['C',3], shape=[1])
152
+ sage: R = ZZ['q'].fraction_field()
153
+ sage: AdjointRepresentation(R, C)
154
+ V((1, 0, 0))
155
+ """
156
+ try:
157
+ mg = self.basis().keys().module_generator()
158
+ except (TypeError, AttributeError):
159
+ mg = self.basis().keys().module_generators[0]
160
+ return "V({})".format(mg.weight())
161
+
162
+ def _latex_(self):
163
+ r"""
164
+ Return a latex representation of ``self``.
165
+
166
+ EXAMPLES::
167
+
168
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
169
+ sage: C = crystals.Tableaux(['G',2], shape=[1])
170
+ sage: R = ZZ['q'].fraction_field()
171
+ sage: V = AdjointRepresentation(R, C)
172
+ sage: latex(V)
173
+ V\left( e_{0} - e_{2} \right)
174
+
175
+ sage: La = RootSystem(['E',7,1]).weight_space().fundamental_weights()
176
+ sage: K = crystals.ProjectedLevelZeroLSPaths(La[1])
177
+ sage: A = AdjointRepresentation(R, K)
178
+ sage: latex(A)
179
+ V\left( -2 \Lambda_{0} + \Lambda_{1} \right)
180
+ """
181
+ try:
182
+ mg = self.basis().keys().module_generator()
183
+ except (TypeError, AttributeError):
184
+ mg = self.basis().keys().module_generators[0]
185
+ from sage.misc.latex import latex
186
+ return r"V\left( {} \right)".format(latex(mg.weight()))
187
+
188
+ @cached_method
189
+ def module_generator(self):
190
+ """
191
+ Return the module generator of ``self``.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
196
+ sage: C = crystals.Tableaux(['G',2], shape=[1,1])
197
+ sage: R = ZZ['q'].fraction_field()
198
+ sage: V = AdjointRepresentation(R, C)
199
+ sage: V.module_generator()
200
+ B[[[1], [2]]]
201
+
202
+ sage: K = crystals.KirillovReshetikhin(['D',4,2], 1,1)
203
+ sage: A = AdjointRepresentation(R, K)
204
+ sage: A.module_generator()
205
+ B[[[1]]]
206
+ """
207
+ try:
208
+ mg = self.basis().keys().module_generator()
209
+ except (TypeError, AttributeError):
210
+ mg = self.basis().keys().module_generators[0]
211
+ return self.monomial(mg)
212
+
213
+
214
+ class AdjointRepresentation(CyclicRepresentation):
215
+ r"""
216
+ An (generalized) adjoint representation of a quantum group.
217
+
218
+ We define an *(generalized) adjoint representation* `V` of a
219
+ quantum group `U_q` to be a cyclic `U_q`-module with a weight
220
+ space decomposition `V = \bigoplus_{\mu} V_{\mu}` such that
221
+ `\dim V_{\mu} \leq 1` unless `\mu = 0`. Moreover, we require
222
+ that there exists a basis `\{y_j | j \in J\}` for `V_0` such
223
+ that `e_i y_j = 0` for all `j \neq i \in I`.
224
+
225
+ For a base ring `R`, we construct an adjoint representation from
226
+ its (combinatorial) crystal `B` by `V = R \{v_b | b \in B\}` with
227
+
228
+ .. MATH::
229
+
230
+ \begin{aligned}
231
+ e_i v_b & = \begin{cases}
232
+ v_{e_i b} / [\varphi_i(e_i b)]_{q_i},
233
+ & \text{if } \operatorname{wt}(b) \neq 0, \\
234
+ v_{e_i b} + \sum_{j \neq i} [-A_{ij}]_{q_i} / [2]_{q_i} v_{y_j}
235
+ & \text{otherwise}
236
+ \end{cases} \\
237
+ f_i v_b & = \begin{cases}
238
+ v_{f_i b} / [\varepsilon_i(f_i b)]_{q_i},
239
+ & \text{if } \operatorname{wt}(b) \neq 0, \\
240
+ v_{f_i b} + \sum_{j \neq i} [-A_{ij}]_{q_i} / [2]_{q_i} v_{y_j}
241
+ & \text{otherwise}
242
+ \end{cases} \\
243
+ K_i v_b & = q^{\langle h_i, \operatorname{wt}(b) \rangle} v_b,
244
+ \end{aligned}
245
+
246
+ where `(A_{ij})_{i,j \in I}` is the Cartan matrix, and we
247
+ consider `v_0 := 0`.
248
+
249
+ INPUT:
250
+
251
+ - ``C`` -- the crystal corresponding to the representation
252
+ - ``R`` -- the base ring
253
+ - ``q`` -- (default: the generator of ``R``) the parameter `q`
254
+ of the quantum group
255
+
256
+ .. WARNING::
257
+
258
+ This assumes that `q` is generic.
259
+
260
+ EXAMPLES::
261
+
262
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
263
+ sage: R = ZZ['q'].fraction_field()
264
+ sage: C = crystals.Tableaux(['D',4], shape=[1,1])
265
+ sage: V = AdjointRepresentation(R, C)
266
+ sage: V
267
+ V((1, 1, 0, 0))
268
+ sage: v = V.an_element(); v
269
+ 2*B[[[1], [2]]] + 2*B[[[1], [3]]] + 3*B[[[2], [3]]]
270
+ sage: v.e(2)
271
+ 2*B[[[1], [2]]]
272
+ sage: v.f(2)
273
+ 2*B[[[1], [3]]]
274
+ sage: v.f(4)
275
+ 2*B[[[1], [-4]]] + 3*B[[[2], [-4]]]
276
+ sage: v.K(3)
277
+ 2*B[[[1], [2]]] + 2*q*B[[[1], [3]]] + 3*q*B[[[2], [3]]]
278
+ sage: v.K(2,-2)
279
+ 2/q^2*B[[[1], [2]]] + 2*q^2*B[[[1], [3]]] + 3*B[[[2], [3]]]
280
+
281
+ sage: La = RootSystem(['F',4,1]).weight_space().fundamental_weights()
282
+ sage: K = crystals.ProjectedLevelZeroLSPaths(La[4])
283
+ sage: A = AdjointRepresentation(R, K)
284
+ sage: A
285
+ V(-Lambda[0] + Lambda[4])
286
+
287
+ Sort the summands uniformly in Python 2 and Python 3::
288
+
289
+ sage: A.print_options(sorting_key=lambda x: str(x))
290
+ sage: v = A.an_element(); v
291
+ 2*B[(-Lambda[0] + Lambda[3] - Lambda[4],)]
292
+ + 2*B[(-Lambda[0] + Lambda[4],)]
293
+ + 3*B[(Lambda[0] - Lambda[1] + Lambda[4],)]
294
+ sage: v.e(0)
295
+ 2*B[(Lambda[0] - Lambda[1] + Lambda[3] - Lambda[4],)]
296
+ + 2*B[(Lambda[0] - Lambda[1] + Lambda[4],)]
297
+ sage: v.f(0)
298
+ 3*B[(-Lambda[0] + Lambda[4],)]
299
+
300
+ REFERENCES:
301
+
302
+ - [OS2018]_
303
+ """
304
+ def __init__(self, R, C, q):
305
+ """
306
+ Initialize ``self``.
307
+
308
+ EXAMPLES::
309
+
310
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
311
+ sage: C = crystals.Tableaux(['B',3], shape=[1,1])
312
+ sage: R = ZZ['q'].fraction_field()
313
+ sage: V = AdjointRepresentation(R, C)
314
+ sage: TestSuite(V).run()
315
+
316
+ sage: A = crystals.Tableaux(['A',2], shape=[2,1])
317
+ sage: VA = AdjointRepresentation(R, A)
318
+ sage: TestSuite(VA).run()
319
+
320
+ sage: K1 = crystals.KirillovReshetikhin(['C',3,1], 1,1)
321
+ sage: A1 = AdjointRepresentation(R, K1)
322
+ sage: TestSuite(A1).run()
323
+ sage: K2 = crystals.KirillovReshetikhin(['C',2,1], 1,2)
324
+ sage: A2 = AdjointRepresentation(R, K2)
325
+ sage: TestSuite(A2).run()
326
+ """
327
+ self._WLR_zero = C.weight_lattice_realization().zero()
328
+ CyclicRepresentation.__init__(self, R, C, q)
329
+ ct = C.cartan_type()
330
+ if ct.is_finite() and ct.type() == 'A':
331
+ def test_zero(x):
332
+ wt = x.weight()
333
+ return all(wt.scalar(ac) == 0
334
+ for ac in self._WLR_zero.parent().simple_coroots())
335
+ self._check_zero_wt = test_zero
336
+ else:
337
+ self._check_zero_wt = lambda x: x.weight() == self._WLR_zero
338
+
339
+ @lazy_attribute
340
+ def _zero_elts(self):
341
+ r"""
342
+ Find all of the elements of weight `0` in the basis keys.
343
+
344
+ EXAMPLES::
345
+
346
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
347
+ sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,1)
348
+ sage: R = ZZ['q'].fraction_field()
349
+ sage: V = AdjointRepresentation(R, K)
350
+ sage: V._zero_elts
351
+ {0: [], 1: [[2], [-2]], 2: [[3], [-3]],
352
+ 3: [[4], [-4]], 4: [[-4], [4]]}
353
+ """
354
+ C = self.basis().keys()
355
+ ret = {}
356
+ for x in C:
357
+ if self._check_zero_wt(x):
358
+ for i in C.index_set():
359
+ if x.epsilon(i) > 0:
360
+ ret[i] = x
361
+ break
362
+ return ret
363
+
364
+ def e_on_basis(self, i, b):
365
+ r"""
366
+ Return the action of `e_i` on the basis element indexed by ``b``.
367
+
368
+ INPUT:
369
+
370
+ - ``i`` -- an element of the index set
371
+ - ``b`` -- an element of basis keys
372
+
373
+ EXAMPLES::
374
+
375
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
376
+ sage: K = crystals.KirillovReshetikhin(['D',3,2], 1,1)
377
+ sage: R = ZZ['q'].fraction_field()
378
+ sage: V = AdjointRepresentation(R, K)
379
+ sage: mg0 = K.module_generators[0]; mg0
380
+ []
381
+ sage: mg1 = K.module_generators[1]; mg1
382
+ [[1]]
383
+ sage: V.e_on_basis(0, mg0)
384
+ ((q^2+1)/q)*B[[[-1]]]
385
+ sage: V.e_on_basis(0, mg1)
386
+ B[[]]
387
+ sage: V.e_on_basis(1, mg0)
388
+ 0
389
+ sage: V.e_on_basis(1, mg1)
390
+ 0
391
+ sage: V.e_on_basis(2, mg0)
392
+ 0
393
+ sage: V.e_on_basis(2, mg1)
394
+ 0
395
+
396
+ sage: K = crystals.KirillovReshetikhin(['D',4,3], 1,1)
397
+ sage: V = AdjointRepresentation(R, K)
398
+ sage: V.e_on_basis(0, K.module_generator())
399
+ B[[]] + (q/(q^2+1))*B[[[0]]]
400
+ """
401
+ C = self.basis().keys()
402
+ x = b.e(i)
403
+ if x is None:
404
+ return self.zero()
405
+ I = {j: pos for pos,j in enumerate(C.index_set())}
406
+ if self._check_zero_wt(x):
407
+ A = C.cartan_type().cartan_matrix()
408
+ return self.monomial(x) + sum(self.term(self._zero_elts[j],
409
+ q_int(-A[I[i],I[j]], self._q**self._d[i])
410
+ / q_int(2, self._q**self._d[j]))
411
+ for j in C.index_set()
412
+ if A[I[i],I[j]] < 0 and j in self._zero_elts)
413
+ return self.term(x, q_int(x.phi(i), self._q**self._d[i]))
414
+
415
+ def f_on_basis(self, i, b):
416
+ r"""
417
+ Return the action of `f_i` on the basis element indexed by ``b``.
418
+
419
+ INPUT:
420
+
421
+ - ``i`` -- an element of the index set
422
+ - ``b`` -- an element of basis keys
423
+
424
+ EXAMPLES::
425
+
426
+ sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
427
+ sage: K = crystals.KirillovReshetikhin(['D',3,2], 1,1)
428
+ sage: R = ZZ['q'].fraction_field()
429
+ sage: V = AdjointRepresentation(R, K)
430
+ sage: mg0 = K.module_generators[0]; mg0
431
+ []
432
+ sage: mg1 = K.module_generators[1]; mg1
433
+ [[1]]
434
+ sage: V.f_on_basis(0, mg0)
435
+ ((q^2+1)/q)*B[[[1]]]
436
+ sage: V.f_on_basis(0, mg1)
437
+ 0
438
+ sage: V.f_on_basis(1, mg0)
439
+ 0
440
+ sage: V.f_on_basis(1, mg1)
441
+ B[[[2]]]
442
+ sage: V.f_on_basis(2, mg0)
443
+ 0
444
+ sage: V.f_on_basis(2, mg1)
445
+ 0
446
+
447
+ sage: K = crystals.KirillovReshetikhin(['D',4,3], 1,1)
448
+ sage: V = AdjointRepresentation(R, K)
449
+ sage: lw = K.module_generator().to_lowest_weight([1,2])[0]
450
+ sage: V.f_on_basis(0, lw)
451
+ B[[]] + (q/(q^2+1))*B[[[0]]]
452
+ """
453
+ C = self.basis().keys()
454
+ x = b.f(i)
455
+ if x is None:
456
+ return self.zero()
457
+ I = {j: pos for pos,j in enumerate(C.index_set())}
458
+ if self._check_zero_wt(x):
459
+ A = C.cartan_type().cartan_matrix()
460
+ return self.monomial(x) + sum(self.term(self._zero_elts[j],
461
+ q_int(-A[I[i],I[j]],
462
+ self._q**self._d[i])
463
+ / q_int(2, self._q**self._d[j]))
464
+ for j in C.index_set()
465
+ if A[I[i],I[j]] < 0 and j in self._zero_elts)
466
+ return self.term(x, q_int(x.epsilon(i), self._q**self._d[i]))
467
+
468
+
469
+ class MinusculeRepresentation(CyclicRepresentation):
470
+ r"""
471
+ A minuscule representation of a quantum group.
472
+
473
+ A quantum group representation `V` is *minuscule* if it is
474
+ cyclic, there is a weight space decomposition
475
+ `V = \bigoplus_{\mu} V_{\mu}` with `\dim V_{\mu} \leq 1`,
476
+ and `e_i^2 V = 0` and `f_i^2 V = 0`.
477
+
478
+ For a base ring `R`, we construct a minuscule representation from
479
+ its (combinatorial) crystal `B` by `V = R \{v_b | b \in B\}` with
480
+ `e_i v_b = v_{e_i b}`, `f_i v_b = v_{f_i b}`, and
481
+ `K_i v_b = q^{\langle h_i, \operatorname{wt}(b) \rangle} v_b`,
482
+ where we consider `v_0 := 0`.
483
+
484
+ INPUT:
485
+
486
+ - ``C`` -- the crystal corresponding to the representation
487
+ - ``R`` -- the base ring
488
+ - ``q`` -- (default: the generator of ``R``) the parameter `q`
489
+ of the quantum group
490
+
491
+ .. WARNING::
492
+
493
+ This assumes that `q` is generic.
494
+
495
+ EXAMPLES::
496
+
497
+ sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
498
+ sage: R = ZZ['q'].fraction_field()
499
+ sage: C = crystals.Tableaux(['B',3], shape=[1/2,1/2,1/2])
500
+ sage: V = MinusculeRepresentation(R, C)
501
+ sage: V
502
+ V((1/2, 1/2, 1/2))
503
+ sage: v = V.an_element(); v
504
+ 2*B[[+++, []]] + 2*B[[++-, []]] + 3*B[[+-+, []]]
505
+ sage: v.e(3)
506
+ 2*B[[+++, []]]
507
+ sage: v.f(1)
508
+ 3*B[[-++, []]]
509
+ sage: v.f(3)
510
+ 2*B[[++-, []]] + 3*B[[+--, []]]
511
+ sage: v.K(2)
512
+ 2*B[[+++, []]] + 2*q^2*B[[++-, []]] + 3/q^2*B[[+-+, []]]
513
+ sage: v.K(3, -2)
514
+ 2/q^2*B[[+++, []]] + 2*q^2*B[[++-, []]] + 3/q^2*B[[+-+, []]]
515
+
516
+ sage: K = crystals.KirillovReshetikhin(['D',4,2], 3,1)
517
+ sage: A = MinusculeRepresentation(R, K)
518
+ sage: A
519
+ V(-Lambda[0] + Lambda[3])
520
+ sage: v = A.an_element(); v
521
+ 2*B[[+++, []]] + 2*B[[++-, []]] + 3*B[[+-+, []]]
522
+ sage: v.f(0)
523
+ 0
524
+ sage: v.e(0)
525
+ 2*B[[-++, []]] + 2*B[[-+-, []]] + 3*B[[--+, []]]
526
+
527
+ REFERENCES:
528
+
529
+ - [OS2018]_
530
+ """
531
+ def e_on_basis(self, i, b):
532
+ r"""
533
+ Return the action of `e_i` on the basis element indexed by ``b``.
534
+
535
+ INPUT:
536
+
537
+ - ``i`` -- an element of the index set
538
+ - ``b`` -- an element of basis keys
539
+
540
+ EXAMPLES::
541
+
542
+ sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
543
+ sage: C = crystals.Tableaux(['A',3], shape=[1,1])
544
+ sage: R = ZZ['q'].fraction_field()
545
+ sage: V = MinusculeRepresentation(R, C)
546
+ sage: lw = C.lowest_weight_vectors()[0]
547
+ sage: V.e_on_basis(1, lw)
548
+ 0
549
+ sage: V.e_on_basis(2, lw)
550
+ B[[[2], [4]]]
551
+ sage: V.e_on_basis(3, lw)
552
+ 0
553
+ sage: hw = C.highest_weight_vectors()[0]
554
+ sage: all(V.e_on_basis(i, hw) == V.zero() for i in V.index_set())
555
+ True
556
+ """
557
+ x = b.e(i)
558
+ if x is None:
559
+ return self.zero()
560
+ return self.monomial(x)
561
+
562
+ def f_on_basis(self, i, b):
563
+ r"""
564
+ Return the action of `f_i` on the basis element indexed by ``b``.
565
+
566
+ INPUT:
567
+
568
+ - ``i`` -- an element of the index set
569
+ - ``b`` -- an element of basis keys
570
+
571
+ EXAMPLES::
572
+
573
+ sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
574
+ sage: C = crystals.Tableaux(['A',3], shape=[1,1])
575
+ sage: R = ZZ['q'].fraction_field()
576
+ sage: V = MinusculeRepresentation(R, C)
577
+ sage: hw = C.highest_weight_vectors()[0]
578
+ sage: V.f_on_basis(1, hw)
579
+ 0
580
+ sage: V.f_on_basis(2, hw)
581
+ B[[[1], [3]]]
582
+ sage: V.f_on_basis(3, hw)
583
+ 0
584
+ sage: lw = C.lowest_weight_vectors()[0]
585
+ sage: all(V.f_on_basis(i, lw) == V.zero() for i in V.index_set())
586
+ True
587
+ """
588
+ x = b.f(i)
589
+ if x is None:
590
+ return self.zero()
591
+ return self.monomial(x)