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,511 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ `\mathcal{B}(\infty)` crystal of PBW monomials
5
+
6
+ .. SEEALSO::
7
+
8
+ For information on PBW datum, see
9
+ :ref:`sage.combinat.crystals.pbw_datum`.
10
+
11
+ AUTHORS:
12
+
13
+ - Dinakar Muthiah (2015-05-11): initial version
14
+ """
15
+
16
+ # ****************************************************************************
17
+ # Copyright (C) 2015 Dinakar Muthiah <muthiah at ualberta.ca>
18
+ #
19
+ # This program is free software: you can redistribute it and/or modify
20
+ # it under the terms of the GNU General Public License as published by
21
+ # the Free Software Foundation, either version 2 of the License, or
22
+ # (at your option) any later version.
23
+ # https://www.gnu.org/licenses/
24
+ # ****************************************************************************
25
+
26
+ from sage.misc.cachefunc import cached_method
27
+ from sage.structure.element import Element
28
+ from sage.structure.parent import Parent
29
+ from sage.structure.unique_representation import UniqueRepresentation
30
+ from sage.structure.richcmp import richcmp
31
+ from sage.categories.highest_weight_crystals import HighestWeightCrystals
32
+ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
33
+ from sage.combinat.root_system.cartan_type import CartanType
34
+ from sage.combinat.crystals.pbw_datum import PBWData, PBWDatum
35
+
36
+
37
+ class PBWCrystalElement(Element):
38
+ """
39
+ A crystal element in the PBW model.
40
+ """
41
+
42
+ def __init__(self, parent, lusztig_datum, long_word=None):
43
+ """
44
+ Initialize ``self``.
45
+
46
+ EXAMPLES::
47
+
48
+ sage: B = crystals.infinity.PBW(['F', 4])
49
+ sage: u = B.highest_weight_vector()
50
+ sage: b = u.f_string([1,2,3,4,2,3,2,3,4,1,2])
51
+ sage: TestSuite(b).run()
52
+ """
53
+ Element.__init__(self, parent)
54
+ if long_word is None:
55
+ long_word = parent._default_word
56
+ self._pbw_datum = PBWDatum(parent._pbw_datum_parent, long_word, lusztig_datum)
57
+
58
+ def _repr_(self):
59
+ """
60
+ Return a string representation of ``self``.
61
+
62
+ EXAMPLES::
63
+
64
+ sage: B = crystals.infinity.PBW(['B', 4])
65
+ sage: u = B.highest_weight_vector()
66
+ sage: u.f_string([1,2,3,4,2,3,2,3,4,1,2])
67
+ PBW monomial with Lusztig datum
68
+ (0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 2)
69
+ """
70
+ pbw_datum = self._pbw_datum.convert_to_new_long_word(self.parent()._default_word)
71
+ return "PBW monomial with Lusztig datum {}".format(pbw_datum.lusztig_datum)
72
+
73
+ def _latex_(self):
74
+ r"""
75
+ Return a latex representation of ``self``.
76
+
77
+ EXAMPLES::
78
+
79
+ sage: B = crystals.infinity.PBW(['F', 4])
80
+ sage: u = B.highest_weight_vector()
81
+ sage: b = u.f_string([1,2,3,4,2,3,2,3,4,1,2])
82
+ sage: latex(b)
83
+ f_{\alpha_{4}}^{2}
84
+ f_{\alpha_{3}}
85
+ f_{\alpha_{1} + \alpha_{2} + 2 \alpha_{3}}
86
+ f_{\alpha_{1} + \alpha_{2}}
87
+ f_{\alpha_{2}}^{2}
88
+ """
89
+ pbw_datum = self._pbw_datum.convert_to_new_long_word(self.parent()._default_word)
90
+ lusztig_datum = list(pbw_datum.lusztig_datum)
91
+ al = self.parent()._pbw_datum_parent._root_list_from(self.parent()._default_word)
92
+ from sage.misc.latex import latex
93
+ ret_str = ' '.join("f_{%s}%s" % (latex(al[i]), "^{%s}" % latex(exp) if exp > 1 else "")
94
+ for i, exp in enumerate(lusztig_datum) if exp)
95
+ if ret_str == '':
96
+ return '1'
97
+ return ret_str
98
+
99
+ def lusztig_datum(self, word=None):
100
+ """
101
+ Return the Lusztig datum of ``self`` with respect to the reduced
102
+ expression of the long word ``word``.
103
+
104
+ EXAMPLES::
105
+
106
+ sage: B = crystals.infinity.PBW(['A', 2])
107
+ sage: u = B.highest_weight_vector()
108
+ sage: b = u.f_string([2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2])
109
+ sage: b.lusztig_datum()
110
+ (6, 0, 10)
111
+ sage: b.lusztig_datum(word=[2,1,2])
112
+ (4, 6, 0)
113
+ """
114
+ if word is None:
115
+ word = self.parent()._default_word
116
+ else:
117
+ self.parent()._check_is_long_word(word)
118
+ word = tuple(word)
119
+ pbw_datum = self._pbw_datum.convert_to_new_long_word(word)
120
+ return tuple(pbw_datum.lusztig_datum)
121
+
122
+ def __eq__(self, other):
123
+ """
124
+ Check equality of ``self`` with ``other``.
125
+
126
+ EXAMPLES::
127
+
128
+ sage: B = crystals.infinity.PBW(['A', 2])
129
+ sage: u = B.highest_weight_vector()
130
+ sage: b = u.f_string([2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2])
131
+ sage: bp = u.f_string([2,1,2,2,1,1,2,2,2,1,2,1,2,2,1,2])
132
+ sage: b == bp
133
+ True
134
+ """
135
+ if other not in self.parent():
136
+ return False
137
+ other_long_word = other._pbw_datum.long_word
138
+ other_lusztig_datum = other._pbw_datum.lusztig_datum
139
+ equiv_pbw_datum = self._pbw_datum.convert_to_new_long_word(other_long_word)
140
+ return equiv_pbw_datum.lusztig_datum == other_lusztig_datum
141
+
142
+ def __ne__(self, other):
143
+ """
144
+ Check inequality of ``self`` with ``other``.
145
+
146
+ EXAMPLES::
147
+
148
+ sage: B = crystals.infinity.PBW(['A', 2])
149
+ sage: u = B.highest_weight_vector()
150
+ sage: b = u.f_string([2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2])
151
+ sage: bp = u.f_string([2,1,2,2,1,1,2,2,2,1,2,1,2,2,1,2])
152
+ sage: b != bp
153
+ False
154
+ """
155
+ return not (self == other)
156
+
157
+ # Necessary for displaying subcrystals
158
+ def _richcmp_(self, other, op):
159
+ """
160
+ Return comparison of ``self`` and ``other``.
161
+
162
+ EXAMPLES::
163
+
164
+ sage: B = crystals.infinity.PBW(['A', 2])
165
+ sage: u = B.highest_weight_vector()
166
+ sage: b = u.f_string([2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2])
167
+ sage: bp = u.f_string([2,1,2,2,1,1,2,2,2,1,2,1,2])
168
+ sage: w = [1, 2, 1]
169
+ sage: (b < bp) == (b.lusztig_datum(w) < bp.lusztig_datum(w))
170
+ True
171
+ sage: (b > bp) == (b.lusztig_datum(w) > bp.lusztig_datum(w))
172
+ True
173
+ """
174
+ i = self.parent().index_set()[0]
175
+ word = self.parent()._pbw_datum_parent._long_word_begin_with(i)
176
+ lusztig_datum = tuple(self._pbw_datum.convert_to_new_long_word(word).lusztig_datum)
177
+ other_lusztig_datum = tuple(other._pbw_datum.convert_to_new_long_word(word).lusztig_datum)
178
+ return richcmp(lusztig_datum, other_lusztig_datum, op)
179
+
180
+ @cached_method
181
+ def __hash__(self):
182
+ """
183
+ Return the hash of ``self``.
184
+
185
+ EXAMPLES::
186
+
187
+ sage: B = crystals.infinity.PBW(['A', 2])
188
+ sage: u = B.highest_weight_vector()
189
+ sage: b = u.f_string([2,1,2,2,2,2,1,1,2,1,2,1,2,1,2,2])
190
+ sage: bp = u.f_string([2,1,2,2,1,1,2,2,2,1,2,1,2,2,1,2])
191
+ sage: hash(b) == hash(bp)
192
+ True
193
+ """
194
+ i = self.parent().index_set()[0]
195
+ word = self.parent()._pbw_datum_parent._long_word_begin_with(i)
196
+ pbw_datum = self._pbw_datum.convert_to_new_long_word(word)
197
+ return hash(tuple(pbw_datum.lusztig_datum))
198
+
199
+ def e(self, i):
200
+ """
201
+ Return the action of `e_i` on ``self``.
202
+
203
+ EXAMPLES::
204
+
205
+ sage: B = crystals.infinity.PBW(['B', 3])
206
+ sage: b = B.highest_weight_vector()
207
+ sage: c = b.f_string([2,1,3,2,1,3,2,2]); c
208
+ PBW monomial with Lusztig datum (0, 1, 0, 1, 0, 0, 0, 1, 2)
209
+ sage: c.e(2)
210
+ PBW monomial with Lusztig datum (0, 1, 0, 1, 0, 0, 0, 1, 1)
211
+ sage: c.e_string([2,2,1,3,2,1,3,2]) == b
212
+ True
213
+ """
214
+ equiv_pbw_datum = self._pbw_datum.convert_to_long_word_with_first_letter(i)
215
+ new_long_word = equiv_pbw_datum.long_word
216
+ new_lusztig_datum = list(equiv_pbw_datum.lusztig_datum)
217
+ if new_lusztig_datum[0] == 0:
218
+ return None
219
+ new_lusztig_datum[0] -= 1
220
+ return type(self)(self.parent(), tuple(new_lusztig_datum), new_long_word)
221
+
222
+ def f(self, i):
223
+ """
224
+ Return the action of `f_i` on ``self``.
225
+
226
+ EXAMPLES::
227
+
228
+ sage: B = crystals.infinity.PBW("D4")
229
+ sage: b = B.highest_weight_vector()
230
+ sage: c = b.f_string([1,2,3,1,2,3,4]); c
231
+ PBW monomial with Lusztig datum (0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0)
232
+ sage: c == b.f_string([1,2,4,1,2,3,3])
233
+ True
234
+ """
235
+ equiv_PBWDatum = self._pbw_datum.convert_to_long_word_with_first_letter(i)
236
+ new_long_word = equiv_PBWDatum.long_word
237
+ new_lusztig_datum = list(equiv_PBWDatum.lusztig_datum)
238
+ new_lusztig_datum[0] += 1
239
+ return type(self)(self.parent(), tuple(new_lusztig_datum), new_long_word)
240
+
241
+ def epsilon(self, i):
242
+ r"""
243
+ Return `\varepsilon_i` of ``self``.
244
+
245
+ EXAMPLES::
246
+
247
+ sage: B = crystals.infinity.PBW(["A2"])
248
+ sage: s = B((3,0,0), (1,2,1))
249
+ sage: s.epsilon(1)
250
+ 3
251
+ sage: s.epsilon(2)
252
+ 0
253
+ """
254
+ equiv_pbw_datum = self._pbw_datum.convert_to_long_word_with_first_letter(i)
255
+ return equiv_pbw_datum.lusztig_datum[0]
256
+
257
+ def phi(self, i):
258
+ r"""
259
+ Return `\varphi_i` of ``self``.
260
+
261
+ EXAMPLES::
262
+
263
+ sage: B = crystals.infinity.PBW(['A', 2])
264
+ sage: s = B((3,0,0), (1,2,1))
265
+ sage: s.phi(1)
266
+ -3
267
+ sage: s.phi(2)
268
+ 3
269
+ """
270
+ WLR = self.parent().weight_lattice_realization()
271
+ h = WLR.simple_coroots()
272
+ return self.epsilon(i) + self.weight().scalar(h[i])
273
+
274
+ def weight(self):
275
+ """
276
+ Return weight of ``self``.
277
+
278
+ EXAMPLES::
279
+
280
+ sage: B = crystals.infinity.PBW(['A', 2])
281
+ sage: s = B((2,2,2), (1,2,1))
282
+ sage: s.weight()
283
+ (-4, 0, 4)
284
+ """
285
+ WLR = self.parent().weight_lattice_realization()
286
+ al = WLR.simple_roots()
287
+ return WLR.sum(c*al[i] for i,c in self._pbw_datum.weight())
288
+
289
+ def star(self):
290
+ r"""
291
+ Return the starred crystal element corresponding
292
+ to ``self``.
293
+
294
+ Let `b` be an element of ``self`` with Lusztig datum
295
+ `(b_1, \ldots, b_N)` with respect to `w_0 = s_{i_1} \cdots s_{i_N}`.
296
+ Then `b^*` is the element with Lusztig datum `(b_N, \ldots, b_1)`
297
+ with respect to `w_0 = s_{i_N^*} \cdots s_{i_1^*}`, where
298
+ `i_j^* = \omega(i_j)` with `\omega` being the :meth:`automorphism
299
+ <sage.combinat.root_system.cartan_type.CartanType_standard_finite.opposition_automorphism>`
300
+ given by the action of `w_0` on the simple roots.
301
+
302
+ EXAMPLES::
303
+
304
+ sage: P = crystals.infinity.PBW(['A', 2])
305
+ sage: P((1,2,3), (1,2,1)).star() == P((3,2,1), (2,1,2))
306
+ True
307
+
308
+ sage: B = crystals.infinity.PBW(['E', 6])
309
+ sage: b = B.highest_weight_vector()
310
+ sage: c = b.f_string([1,2,6,3,4,2,5,2,3,4,1,6])
311
+ sage: c == c.star().star()
312
+ True
313
+
314
+ TESTS::
315
+
316
+ sage: from itertools import product
317
+ sage: def test_star(PBW, depth):
318
+ ....: S = crystals.infinity.Star(PBW)
319
+ ....: for f_str in product(*([PBW.index_set()]*depth)):
320
+ ....: x = PBW.highest_weight_vector().f_string(f_str).star()
321
+ ....: y = S.highest_weight_vector().f_string(f_str)
322
+ ....: assert x.lusztig_datum() == y.value.lusztig_datum()
323
+ sage: P = crystals.infinity.PBW(['A', 2])
324
+ sage: test_star(P, 5)
325
+ sage: P = crystals.infinity.PBW(['A', 3])
326
+ sage: test_star(P, 5)
327
+ sage: P = crystals.infinity.PBW(['B', 3])
328
+ sage: test_star(P, 5)
329
+ sage: P = crystals.infinity.PBW(['C', 3])
330
+ sage: test_star(P, 5)
331
+ sage: P = crystals.infinity.PBW(['D', 4])
332
+ sage: test_star(P, 5) # long time
333
+ sage: P = crystals.infinity.PBW(['D', 5])
334
+ sage: test_star(P, 4) # long time
335
+ sage: P = crystals.infinity.PBW(['E', 6])
336
+ sage: test_star(P, 4) # long time
337
+ sage: P = crystals.infinity.PBW(['F', 4])
338
+ sage: test_star(P, 4) # long time
339
+ sage: P = crystals.infinity.PBW(['G', 2])
340
+ sage: test_star(P, 5)
341
+ """
342
+ starred_pbw_datum = self._pbw_datum.star()
343
+ return type(self)(self.parent(), starred_pbw_datum.lusztig_datum,
344
+ starred_pbw_datum.long_word)
345
+
346
+
347
+ class PBWCrystal(Parent, UniqueRepresentation):
348
+ r"""
349
+ Crystal of `\mathcal{B}(\infty)` given by PBW monomials.
350
+
351
+ A model of the crystal `\mathcal{B}(\infty)` whose elements are
352
+ PBW datum up to equivalence by the tropical Plücker relations.
353
+ The crystal structure on Lusztig data `x = (x_1, \ldots, x_m)`
354
+ for the reduced word `s_{i_1} \cdots s_{i_m} = w_0` is given as
355
+ follows. Suppose `i_1 = j`, then `f_j x = (x_1 + 1, x_2, \ldots, x_m)`.
356
+ If `i_1 \neq j`, then we use the tropical Plücker relations to
357
+ change the reduced expression such that `i_1' = j` and then we
358
+ change back to the original word.
359
+
360
+ EXAMPLES::
361
+
362
+ sage: PBW = crystals.infinity.PBW(['B', 3])
363
+ sage: hw = PBW.highest_weight_vector()
364
+ sage: x = hw.f_string([1,2,2,3,3,1,3,3,2,3,2,1,3,1,2,3,1,2,1,3,2]); x
365
+ PBW monomial with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
366
+
367
+ Elements are expressed in terms of Lusztig datum for a fixed
368
+ reduced expression of `w_0`::
369
+
370
+ sage: PBW.default_long_word()
371
+ [1, 3, 2, 3, 1, 2, 3, 1, 2]
372
+ sage: PBW.set_default_long_word([2,1,3,2,1,3,2,3,1])
373
+ sage: x
374
+ PBW monomial with Lusztig datum (3, 1, 1, 0, 1, 0, 1, 3, 4)
375
+ sage: PBW.set_default_long_word([1, 3, 2, 3, 1, 2, 3, 1, 2])
376
+
377
+ We can construct elements by giving it Lusztig data (with respect
378
+ to the default long word)::
379
+
380
+ sage: PBW([1,1,1,3,1,0,0,1,1])
381
+ PBW monomial with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
382
+
383
+ We can also construct elements by passing in a reduced expression
384
+ for a long word::
385
+
386
+ sage: x = PBW([1,1,1,3,1,0,0,1,1], [3,2,1,3,2,3,2,1,2]); x
387
+ PBW monomial with Lusztig datum (1, 1, 1, 0, 1, 0, 5, 1, 1)
388
+ sage: x.to_highest_weight()[1]
389
+ [1, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 2, 1, 3]
390
+ """
391
+ @staticmethod
392
+ def __classcall__(cls, cartan_type):
393
+ """
394
+ Normalize input to ensure a unique representation.
395
+
396
+ EXAMPLES::
397
+
398
+ sage: B1 = crystals.infinity.PBW(['A', 2])
399
+ sage: B2 = crystals.infinity.PBW("A2")
400
+ sage: B3 = crystals.infinity.PBW(CartanType("A2"))
401
+ sage: B1 is B2 and B2 is B3
402
+ True
403
+ """
404
+ cartan_type = CartanType(cartan_type)
405
+ if not cartan_type.is_finite():
406
+ raise NotImplementedError("only implemented for finite types")
407
+ return super().__classcall__(cls, cartan_type)
408
+
409
+ def __init__(self, cartan_type):
410
+ """
411
+ Initialize ``self``.
412
+
413
+ EXAMPLES::
414
+
415
+ sage: B = crystals.infinity.PBW(['B', 2])
416
+ sage: TestSuite(B).run()
417
+ """
418
+ self._cartan_type = cartan_type
419
+ self._pbw_datum_parent = PBWData(self._cartan_type)
420
+ category = (HighestWeightCrystals(), InfiniteEnumeratedSets())
421
+ Parent.__init__(self, category=category)
422
+
423
+ # There must be a better way to do the following
424
+ i = self._cartan_type.index_set()[0]
425
+ self._default_word = self._pbw_datum_parent._long_word_begin_with(i)
426
+ zero_lusztig_datum = [0]*len(self._default_word)
427
+ self.module_generators = (self.element_class(self,
428
+ zero_lusztig_datum,
429
+ self._default_word),)
430
+
431
+ def _repr_(self):
432
+ """
433
+ Return a string representation of ``self``.
434
+
435
+ EXAMPLES::
436
+
437
+ sage: crystals.infinity.PBW(['C', 3])
438
+ Crystal of PBW data of type ['C', 3]
439
+ """
440
+ return "Crystal of PBW data of type {}".format(self._cartan_type)
441
+
442
+ def default_long_word(self):
443
+ """
444
+ Return the default long word used to express elements of ``self``.
445
+
446
+ EXAMPLES::
447
+
448
+ sage: B = crystals.infinity.PBW(['E', 6])
449
+ sage: B.default_long_word()
450
+ [1, 3, 4, 5, 6, 2, 4, 5, 3, 4, 1, 3, 2, 4, 5, 6, 2, 4,
451
+ 5, 3, 4, 1, 3, 2, 4, 5, 3, 4, 1, 3, 2, 4, 1, 3, 2, 1]
452
+ """
453
+ return list(self._default_word)
454
+
455
+ def _check_is_long_word(self, word):
456
+ """
457
+ Check if ``word`` is a reduced expression of the long of the
458
+ Coxeter group of ``self``.
459
+
460
+ EXAMPLES::
461
+
462
+ sage: B = crystals.infinity.PBW(['A', 3])
463
+ sage: B._check_is_long_word([1,2,1,3,2,1])
464
+ sage: B._check_is_long_word([1,3,2,3,2,1])
465
+ Traceback (most recent call last):
466
+ ...
467
+ ValueError: not a reduced word of the long element
468
+ sage: B._check_is_long_word([1,2,1,3,2])
469
+ Traceback (most recent call last):
470
+ ...
471
+ ValueError: not a reduced word of the long element
472
+ sage: B._check_is_long_word([1,2,1,3,2,1,2])
473
+ Traceback (most recent call last):
474
+ ...
475
+ ValueError: not a reduced word of the long element
476
+ """
477
+ W = self._pbw_datum_parent.weyl_group
478
+ if (len(word) != len(self._default_word)
479
+ or W.from_reduced_word(word) != W.long_element()):
480
+ raise ValueError("not a reduced word of the long element")
481
+
482
+ def set_default_long_word(self, word):
483
+ """
484
+ Set the default long word used to express elements of ``self``.
485
+
486
+ EXAMPLES::
487
+
488
+ sage: B = crystals.infinity.PBW(['C', 3])
489
+ sage: B.default_long_word()
490
+ [1, 3, 2, 3, 1, 2, 3, 1, 2]
491
+ sage: x = B.highest_weight_vector().f_string([2,1,3,2,3,1,2,3,3,1])
492
+ sage: x
493
+ PBW monomial with Lusztig datum (1, 2, 2, 0, 0, 0, 0, 0, 1)
494
+ sage: B.set_default_long_word([2,1,3,2,1,3,2,3,1])
495
+ sage: B.default_long_word()
496
+ [2, 1, 3, 2, 1, 3, 2, 3, 1]
497
+ sage: x
498
+ PBW monomial with Lusztig datum (2, 0, 0, 0, 0, 0, 1, 3, 2)
499
+
500
+ TESTS::
501
+
502
+ sage: B = crystals.infinity.PBW(['A', 3])
503
+ sage: B._check_is_long_word([1,2,1,3,2,1,2])
504
+ Traceback (most recent call last):
505
+ ...
506
+ ValueError: not a reduced word of the long element
507
+ """
508
+ self._check_is_long_word(word)
509
+ self._default_word = tuple(word)
510
+
511
+ Element = PBWCrystalElement
@@ -0,0 +1,4 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ cpdef tuple compute_new_lusztig_datum(list enhanced_braid_chain, initial_lusztig_datum)
3
+ cpdef tuple tropical_plucker_relation(tuple a, lusztig_datum)
4
+ cpdef list enhance_braid_move_chain(braid_move_chain, cartan_type)