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,497 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Kyoto path model for affine highest weight crystals
5
+ """
6
+
7
+ # ***************************************************************************
8
+ # Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
9
+ #
10
+ # Distributed under the terms of the GNU General Public License (GPL)
11
+ #
12
+ # This code is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ # General Public License for more details.
16
+ #
17
+ # The full text of the GPL is available at:
18
+ #
19
+ # http://www.gnu.org/licenses/
20
+ # ***************************************************************************
21
+
22
+ from sage.structure.parent import Parent
23
+ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
24
+ from sage.categories.highest_weight_crystals import HighestWeightCrystals
25
+ from sage.combinat.crystals.tensor_product import TensorProductOfCrystals, \
26
+ TensorProductOfRegularCrystalsElement
27
+
28
+
29
+ class KyotoPathModel(TensorProductOfCrystals):
30
+ r"""
31
+ The Kyoto path model for an affine highest weight crystal.
32
+
33
+ .. NOTE::
34
+
35
+ Here we are using anti-Kashiwara notation and might differ from
36
+ some of the literature.
37
+
38
+ Consider a Kac--Moody algebra `\mathfrak{g}` of affine Cartan type `X`,
39
+ and we want to model the `U_q'(\mathfrak{g})`-crystal `B(\lambda)`.
40
+ First we consider the set of fundamental weights `\{\Lambda_i\}_{i \in I}`
41
+ of `\mathfrak{g}` and let `\{\overline{\Lambda}_i\}_{i \in I_0}` be the
42
+ corresponding fundamental weights of the corresponding classical Lie
43
+ algebra `\mathfrak{g}_0`. To model `B(\lambda)`, we start with a sequence
44
+ of perfect `U_q'(\mathfrak{g})`-crystals `(B^{(i)})_i` of level
45
+ `l` such that
46
+
47
+ .. MATH::
48
+
49
+ \lambda \in \overline{P}_l^+ = \left\{ \mu \in \overline{P}^+ \mid
50
+ \langle c, \mu \rangle = l \right\}
51
+
52
+ where `c` is the canonical central element of `U_q'(\mathfrak{g})`
53
+ and `\overline{P}^+` is the nonnegative weight lattice spanned by
54
+ `\{ \overline{\Lambda}_i \mid i \in I \}`.
55
+
56
+ Next we consider the crystal isomorphism `\Phi_0 : B(\lambda_0) \to B^{(0)}
57
+ \otimes B(\lambda_1)` defined by `u_{\lambda_0} \mapsto b^{(0)}_{\lambda_0}
58
+ \otimes u_{\lambda_1}` where `b^{(0)}_{\lambda_0}` is the unique element in
59
+ `B^{(0)}` such that `\varphi\left( b^{(0)}_{\lambda_0} \right) = \lambda_0`
60
+ and `\lambda_1 = \varepsilon\left( b^{(0)}_{\lambda_0} \right)` and
61
+ `u_{\mu}` is the highest weight element in `B(\mu)`. Iterating this, we
62
+ obtain the following isomorphism:
63
+
64
+ .. MATH::
65
+
66
+ \Phi_n : B(\lambda) \to B^{(0)} \otimes B^{(1)} \otimes \cdots
67
+ \otimes B^{(N)} \otimes B(\lambda_{N+1}).
68
+
69
+ We note by Lemma 10.6.2 in [HK2002]_ that for any `b \in B(\lambda)` there
70
+ exists a finite `N` such that
71
+
72
+ .. MATH::
73
+
74
+ \Phi_N(b) = \left( \bigotimes_{k=0}^{N-1} b^{(k)} \right)
75
+ \otimes u_{\lambda_N}.
76
+
77
+ Therefore we can model elements `b \in B(\lambda)` as a
78
+ `U_q'(\mathfrak{g})`-crystal by considering an infinite list of
79
+ elements `b^{(k)} \in B^{(k)}` and defining the crystal structure by:
80
+
81
+ .. MATH::
82
+
83
+ \begin{aligned}
84
+ \overline{\mathrm{wt}}(b) & = \lambda_N + \sum_{k=0}^{N-1}
85
+ \overline{\mathrm{wt}}\left( b^{(k)} \right)
86
+ \\ e_i(b) & = e_i\left( b^{\prime} \otimes b^{(N)} \right) \otimes
87
+ u_{\lambda_N},
88
+ \\ f_i(b) & = f_i\left( b^{\prime} \otimes b^{(N)} \right) \otimes
89
+ u_{\lambda_N},
90
+ \\ \varepsilon_i(b) & = \max\left( \varepsilon_i(b^{\prime}) -
91
+ \varphi_i\left( b^{(N)} \right), 0 \right),
92
+ \\ \varphi_i(b) & = \varphi_i(b^{\prime}) + \max\left(
93
+ \varphi_i\left( b^{(N)} \right) - \varepsilon_i(b^{\prime}), 0 \right),
94
+ \end{aligned}
95
+
96
+ where `b^{\prime} = b^{(0)} \otimes \cdots \otimes b^{(N-1)}`. To
97
+ translate this into a finite list, we consider a finite sequence
98
+ `b^{(0)} \otimes \cdots \otimes b^{(N-1)} \otimes b^{(N)}_{\lambda_N}`
99
+ and if
100
+
101
+ .. MATH::
102
+
103
+ f_i\left( b^{(0)} \otimes \cdots b^{(N-1)} \otimes
104
+ b^{(N)}_{\lambda_N} \right) = b_0 \otimes \cdots \otimes b^{(N-1)}
105
+ \otimes f_i\left( b^{(N)}_{\lambda_N} \right),
106
+
107
+ then we take the image as `b^{(0)} \otimes \cdots \otimes f_i\left(
108
+ b^{(N)}_{\lambda_N}\right) \otimes b^{(N+1)}_{\lambda_{N+1}}`. Similarly
109
+ we remove `b^{(N)}_{\lambda_{N}}` if we have `b_0 \otimes \cdots
110
+ \otimes b^{(N-1)} \otimes b^{(N-1)}_{\lambda_{N-1}} \otimes
111
+ b^{(N)}_{\lambda_N}`. Additionally if
112
+
113
+ .. MATH::
114
+
115
+ e_i\left( b^{(0)} \otimes \cdots \otimes b^{(N-1)} \otimes
116
+ b^{(N)}_{\lambda_N} \right) = b^{(0)} \otimes \cdots \otimes
117
+ b^{(N-1)} \otimes e_i\left( b^{(N)}_{\lambda_N} \right),
118
+
119
+ then we consider this to be `0`.
120
+
121
+ We can then lift the `U_q'(\mathfrak{g})`-crystal structure to a
122
+ `U_q(\mathfrak{g})`-crystal structure by using a tensor product of
123
+ the :class:`affinization
124
+ <sage.combinat.crystals.affinization.AffinizationOfCrystal>` of the
125
+ of crystals `B^{(i)}` for all `i`.
126
+
127
+ INPUT:
128
+
129
+ - ``B`` -- a single or list of `U_q^{\prime}` perfect crystal(s) of
130
+ level `l`
131
+ - ``weight`` -- a weight in `\overline{P}_l^+`
132
+
133
+ EXAMPLES::
134
+
135
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
136
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
137
+ sage: C = crystals.KyotoPathModel(B, La[0])
138
+ sage: mg = C.module_generators[0]; mg
139
+ [[[3]]]
140
+ sage: mg.f_string([0,1,2,2])
141
+ [[[3]], [[3]], [[1]]]
142
+ sage: x = mg.f_string([0,1,2]); x
143
+ [[[2]], [[3]], [[1]]]
144
+ sage: x.weight()
145
+ Lambda[0]
146
+
147
+ An example of type `A_5^{(2)}`::
148
+
149
+ sage: B = crystals.KirillovReshetikhin(['A',5,2], 1,1)
150
+ sage: La = RootSystem(['A',5,2]).weight_lattice().fundamental_weights()
151
+ sage: C = crystals.KyotoPathModel(B, La[0])
152
+ sage: mg = C.module_generators[0]; mg
153
+ [[[-1]]]
154
+ sage: mg.f_string([0,2,1,3])
155
+ [[[-3]], [[2]], [[-1]]]
156
+ sage: mg.f_string([0,2,3,1])
157
+ [[[-3]], [[2]], [[-1]]]
158
+
159
+ An example of type `D_3^{(2)}`::
160
+
161
+ sage: B = crystals.KirillovReshetikhin(['D',3,2], 1,1)
162
+ sage: La = RootSystem(['D',3,2]).weight_lattice().fundamental_weights()
163
+ sage: C = crystals.KyotoPathModel(B, La[0])
164
+ sage: mg = C.module_generators[0]; mg
165
+ [[]]
166
+ sage: mg.f_string([0,1,2,0])
167
+ [[[0]], [[1]], []]
168
+
169
+ An example using multiple crystals of the same level::
170
+
171
+ sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1)
172
+ sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1)
173
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
174
+ sage: C = crystals.KyotoPathModel([B1, B2, B1], La[0])
175
+ sage: mg = C.module_generators[0]; mg
176
+ [[[3]]]
177
+ sage: mg.f_string([0,1,2,2])
178
+ [[[3]], [[1], [3]], [[3]]]
179
+ sage: mg.f_string([0,1,2,2,2])
180
+ sage: mg.f_string([0,1,2,2,1,0])
181
+ [[[3]], [[2], [3]], [[1]], [[2]]]
182
+ sage: mg.f_string([0,1,2,2,1,0,0,2])
183
+ [[[3]], [[1], [2]], [[1]], [[3]], [[1], [3]]]
184
+
185
+ By using the extended weight lattice, the Kyoto path model lifts
186
+ the perfect crystals to their affinizations::
187
+
188
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
189
+ sage: P = RootSystem(['A',2,1]).weight_lattice(extended=True)
190
+ sage: La = P.fundamental_weights()
191
+ sage: C = crystals.KyotoPathModel(B, La[0])
192
+ sage: mg = C.module_generators[0]; mg
193
+ [[[3]](0)]
194
+ sage: x = mg.f_string([0,1,2]); x
195
+ [[[2]](-1), [[3]](0), [[1]](0)]
196
+ sage: x.weight()
197
+ Lambda[0] - delta
198
+ """
199
+ @staticmethod
200
+ def __classcall_private__(cls, crystals, weight, P=None):
201
+ """
202
+ Normalize input to ensure a unique representation.
203
+
204
+ EXAMPLES::
205
+
206
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
207
+ sage: P = RootSystem(['A',2,1]).weight_lattice()
208
+ sage: La = P.fundamental_weights()
209
+ sage: C = crystals.KyotoPathModel(B, La[0])
210
+ sage: C2 = crystals.KyotoPathModel((B,), La[0])
211
+ sage: C3 = crystals.KyotoPathModel([B], La[0], P)
212
+ sage: C is C2 and C2 is C3
213
+ True
214
+ """
215
+ if isinstance(crystals, list):
216
+ crystals = tuple(crystals)
217
+ elif not isinstance(crystals, tuple):
218
+ crystals = (crystals,)
219
+
220
+ if any(not B.is_perfect() for B in crystals):
221
+ raise ValueError("all crystals must be perfect")
222
+ level = crystals[0].level()
223
+ if any(B.level() != level for B in crystals[1:]):
224
+ raise ValueError("all crystals must have the same level")
225
+ ct = crystals[0].cartan_type()
226
+ if P is None:
227
+ P = weight.parent()
228
+ if sum( ct.dual().c()[i] * weight.scalar(h) for i,h in
229
+ enumerate(P.simple_coroots()) ) != level:
230
+ raise ValueError( "{} is not a level {} weight".format(weight, level) )
231
+
232
+ return super().__classcall__(cls, crystals, weight, P)
233
+
234
+ def __init__(self, crystals, weight, P):
235
+ """
236
+ Initialize ``self``.
237
+
238
+ EXAMPLES::
239
+
240
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
241
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
242
+ sage: C = crystals.KyotoPathModel(B, La[0])
243
+ sage: TestSuite(C).run() # long time
244
+ """
245
+ Parent.__init__(self, category=(HighestWeightCrystals(), InfiniteEnumeratedSets()))
246
+
247
+ self._cartan_type = crystals[0].cartan_type()
248
+ self._weight = weight
249
+ if weight.parent().is_extended():
250
+ # public for TensorProductOfCrystals
251
+ self.crystals = tuple([C.affinization() for C in crystals])
252
+ self._epsilon_dicts = [{b.Epsilon(): self.crystals[i](b, 0) for b in B}
253
+ for i,B in enumerate(crystals)]
254
+ self._phi_dicts = [{b.Phi(): self.crystals[i](b, 0) for b in B}
255
+ for i,B in enumerate(crystals)]
256
+ else:
257
+ # public for TensorProductOfCrystals
258
+ self.crystals = tuple(crystals)
259
+ self._epsilon_dicts = [{b.Epsilon(): b for b in B}
260
+ for B in crystals]
261
+ self._phi_dicts = [{b.Phi(): b for b in B}
262
+ for B in crystals]
263
+ self.module_generators = (self.element_class(self, [self._phi_dicts[0][weight]]),)
264
+
265
+ def _repr_(self):
266
+ """
267
+ Return a string representation of ``self``.
268
+
269
+ EXAMPLES::
270
+
271
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
272
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
273
+ sage: crystals.KyotoPathModel(B, La[0])
274
+ Kyoto path realization of B(Lambda[0]) using
275
+ [Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1)]
276
+ """
277
+ return "Kyoto path realization of B({}) using {}".format(self._weight, list(self.crystals))
278
+
279
+ def finite_tensor_product(self, k):
280
+ """
281
+ Return the finite tensor product of crystals of length ``k``
282
+ from truncating ``self``.
283
+
284
+ EXAMPLES::
285
+
286
+ sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1)
287
+ sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1)
288
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
289
+ sage: C = crystals.KyotoPathModel([B1,B2,B1], La[0])
290
+ sage: C.finite_tensor_product(5)
291
+ Full tensor product of the crystals
292
+ [Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1),
293
+ Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(2,1),
294
+ Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1),
295
+ Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1),
296
+ Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(2,1)]
297
+ """
298
+ N = len(self.crystals)
299
+ crystals = [self.crystals[i % N] for i in range(k)]
300
+ return TensorProductOfCrystals(*crystals)
301
+
302
+ def weight_lattice_realization(self):
303
+ """
304
+ Return the weight lattice realization used to express weights.
305
+
306
+ EXAMPLES::
307
+
308
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
309
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
310
+ sage: C = crystals.KyotoPathModel(B, La[0])
311
+ sage: C.weight_lattice_realization()
312
+ Weight lattice of the Root system of type ['A', 2, 1]
313
+
314
+ sage: P = RootSystem(['A',2,1]).weight_lattice(extended=True)
315
+ sage: C = crystals.KyotoPathModel(B, P.fundamental_weight(0))
316
+ sage: C.weight_lattice_realization()
317
+ Extended weight lattice of the Root system of type ['A', 2, 1]
318
+ """
319
+ return self._weight.parent()
320
+
321
+ class Element(TensorProductOfRegularCrystalsElement):
322
+ """
323
+ An element in the Kyoto path model.
324
+ """
325
+ # For simplicity (and safety), we use the regular crystals implementation
326
+
327
+ def epsilon(self, i):
328
+ r"""
329
+ Return `\varepsilon_i` of ``self``.
330
+
331
+ EXAMPLES::
332
+
333
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
334
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
335
+ sage: C = crystals.KyotoPathModel(B, La[0])
336
+ sage: mg = C.module_generators[0]
337
+ sage: [mg.epsilon(i) for i in C.index_set()]
338
+ [0, 0, 0]
339
+ sage: elt = mg.f(0)
340
+ sage: [elt.epsilon(i) for i in C.index_set()]
341
+ [1, 0, 0]
342
+ sage: elt = mg.f_string([0,1,2])
343
+ sage: [elt.epsilon(i) for i in C.index_set()]
344
+ [0, 0, 1]
345
+ sage: elt = mg.f_string([0,1,2,2])
346
+ sage: [elt.epsilon(i) for i in C.index_set()]
347
+ [0, 0, 2]
348
+ """
349
+ x = self.e(i)
350
+ eps = 0
351
+ while x is not None:
352
+ x = x.e(i)
353
+ eps = eps + 1
354
+ return eps
355
+
356
+ def phi(self, i):
357
+ r"""
358
+ Return `\varphi_i` of ``self``.
359
+
360
+ EXAMPLES::
361
+
362
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
363
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
364
+ sage: C = crystals.KyotoPathModel(B, La[0])
365
+ sage: mg = C.module_generators[0]
366
+ sage: [mg.phi(i) for i in C.index_set()]
367
+ [1, 0, 0]
368
+ sage: elt = mg.f(0)
369
+ sage: [elt.phi(i) for i in C.index_set()]
370
+ [0, 1, 1]
371
+ sage: elt = mg.f_string([0,1])
372
+ sage: [elt.phi(i) for i in C.index_set()]
373
+ [0, 0, 2]
374
+ """
375
+ x = self.f(i)
376
+ phi = 0
377
+ while x is not None:
378
+ x = x.f(i)
379
+ phi = phi + 1
380
+ return phi
381
+
382
+ def e(self, i):
383
+ """
384
+ Return the action of `e_i` on ``self``.
385
+
386
+ EXAMPLES::
387
+
388
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
389
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
390
+ sage: C = crystals.KyotoPathModel(B, La[0])
391
+ sage: mg = C.module_generators[0]
392
+ sage: all(mg.e(i) is None for i in C.index_set())
393
+ True
394
+ sage: mg.f(0).e(0) == mg
395
+ True
396
+ """
397
+ k = self.position_of_first_unmatched_plus(i)
398
+ if k is None:
399
+ return None
400
+ if k == len(self)-1:
401
+ return None
402
+ crystal = self[k].e(i)
403
+ if k == len(self)-2 and crystal.Epsilon() == self[-1].Phi():
404
+ l = self[:-1]
405
+ l[-1] = crystal
406
+ return self.__class__(self.parent(), l)
407
+ return self._set_index(k, crystal)
408
+
409
+ def f(self, i):
410
+ """
411
+ Return the action of `f_i` on ``self``.
412
+
413
+ EXAMPLES::
414
+
415
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
416
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
417
+ sage: C = crystals.KyotoPathModel(B, La[0])
418
+ sage: mg = C.module_generators[0]
419
+ sage: mg.f(2)
420
+ sage: mg.f(0)
421
+ [[[1]], [[2]]]
422
+ sage: mg.f_string([0,1,2])
423
+ [[[2]], [[3]], [[1]]]
424
+ """
425
+ k = self.position_of_last_unmatched_minus(i)
426
+ if k is None:
427
+ return None
428
+ if k == len(self)-1:
429
+ l = list(self)
430
+ k = len(l) % len(self.parent().crystals)
431
+ l.append(self.parent()._phi_dicts[k][ l[-1].Epsilon() ])
432
+ l[-2] = l[-2].f(i)
433
+ return self.__class__(self.parent(), l)
434
+ return self._set_index(k, self[k].f(i))
435
+
436
+ def weight(self):
437
+ """
438
+ Return the weight of ``self``.
439
+
440
+ EXAMPLES::
441
+
442
+ sage: B = crystals.KirillovReshetikhin(['A',2,1], 1,1)
443
+ sage: P = RootSystem(['A',2,1]).weight_lattice(extended=True)
444
+ sage: La = P.fundamental_weights()
445
+ sage: C = crystals.KyotoPathModel(B, La[0])
446
+ sage: mg = C.module_generators[0]
447
+ sage: mg.weight()
448
+ Lambda[0]
449
+ sage: mg.f_string([0,1,2]).weight()
450
+ Lambda[0] - delta
451
+ """
452
+ wt = TensorProductOfRegularCrystalsElement.weight(self)
453
+ return wt + self[-1].Epsilon()
454
+
455
+ def truncate(self, k=None):
456
+ r"""
457
+ Truncate ``self`` to have length ``k`` and return as an element
458
+ in a (finite) tensor product of crystals.
459
+
460
+ INPUT:
461
+
462
+ - ``k`` -- (optional) the length to truncate to; if not specified,
463
+ then returns one more than the current non-ground-state elements
464
+ (i.e. the current list in ``self``)
465
+
466
+ EXAMPLES::
467
+
468
+ sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1)
469
+ sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1)
470
+ sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights()
471
+ sage: C = crystals.KyotoPathModel([B1,B2,B1], La[0])
472
+ sage: mg = C.highest_weight_vector()
473
+ sage: elt = mg.f_string([0,1,2,2,1,0]); elt
474
+ [[[3]], [[2], [3]], [[1]], [[2]]]
475
+ sage: t = elt.truncate(); t
476
+ [[[3]], [[2], [3]], [[1]], [[2]]]
477
+ sage: t.parent() is C.finite_tensor_product(4)
478
+ True
479
+ sage: elt.truncate(2)
480
+ [[[3]], [[2], [3]]]
481
+ sage: elt.truncate(10)
482
+ [[[3]], [[2], [3]], [[1]], [[2]], [[1], [3]],
483
+ [[2]], [[1]], [[2], [3]], [[1]], [[3]]]
484
+ """
485
+ if k is None:
486
+ k = len(self)
487
+
488
+ P = self.parent().finite_tensor_product(k)
489
+ if k <= len(self):
490
+ l = self[:k]
491
+ else:
492
+ l = list(self)
493
+ N = len(self.parent().crystals)
494
+ while len(l) < k:
495
+ i = len(l) % N
496
+ l.append(self.parent()._phi_dicts[i][ l[-1].Epsilon() ])
497
+ return P(*l)
@@ -0,0 +1,79 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ from sage.structure.element cimport Element
3
+
4
+ cdef class Letter(Element):
5
+ cdef readonly int value
6
+
7
+ cdef class EmptyLetter(Element):
8
+ cdef readonly str value
9
+ cpdef e(self, int i)
10
+ cpdef f(self, int i)
11
+ cpdef int epsilon(self, int i) noexcept
12
+ cpdef int phi(self, int i) noexcept
13
+
14
+ cdef class Crystal_of_letters_type_A_element(Letter):
15
+ cpdef Letter e(self, int i)
16
+ cpdef Letter f(self, int i)
17
+ cpdef int epsilon(self, int i) noexcept
18
+ cpdef int phi(self, int i) noexcept
19
+
20
+ cdef class Crystal_of_letters_type_B_element(Letter):
21
+ cpdef Letter e(self, int i)
22
+ cpdef Letter f(self, int i)
23
+ cpdef int epsilon(self, int i) noexcept
24
+ cpdef int phi(self, int i) noexcept
25
+
26
+ cdef class Crystal_of_letters_type_C_element(Letter):
27
+ cpdef Letter e(self, int i)
28
+ cpdef Letter f(self, int i)
29
+ cpdef int epsilon(self, int i) noexcept
30
+ cpdef int phi(self, int i) noexcept
31
+
32
+ cdef class Crystal_of_letters_type_D_element(Letter):
33
+ cpdef Letter e(self, int i)
34
+ cpdef Letter f(self, int i)
35
+ cpdef int epsilon(self, int i) noexcept
36
+ cpdef int phi(self, int i) noexcept
37
+
38
+ cdef class Crystal_of_letters_type_G_element(Letter):
39
+ cpdef Letter e(self, int i)
40
+ cpdef Letter f(self, int i)
41
+ cpdef int epsilon(self, int i) noexcept
42
+ cpdef int phi(self, int i) noexcept
43
+
44
+ cdef class LetterTuple(Element):
45
+ cdef readonly tuple value
46
+ cpdef int epsilon(self, int i) noexcept
47
+ cpdef int phi(self, int i) noexcept
48
+
49
+ cdef class Crystal_of_letters_type_E6_element(LetterTuple):
50
+ cpdef LetterTuple e(self, int i)
51
+ cpdef LetterTuple f(self, int i)
52
+
53
+ cdef class Crystal_of_letters_type_E6_element_dual(LetterTuple):
54
+ cpdef LetterTuple lift(self)
55
+ cpdef LetterTuple retract(self, LetterTuple p)
56
+ cpdef LetterTuple e(self, int i)
57
+ cpdef LetterTuple f(self, int i)
58
+
59
+ cdef class Crystal_of_letters_type_E7_element(LetterTuple):
60
+ cpdef LetterTuple e(self, int i)
61
+ cpdef LetterTuple f(self, int i)
62
+
63
+ cdef class BKKLetter(Letter):
64
+ cpdef Letter e(self, int i)
65
+ cpdef Letter f(self, int i)
66
+
67
+ cdef class QueerLetter_element(Letter):
68
+ cpdef Letter e(self, int i)
69
+ cpdef Letter f(self, int i)
70
+ cpdef int epsilon(self, int i) noexcept
71
+ cpdef int phi(self, int i) noexcept
72
+
73
+ cdef class LetterWrapped(Element):
74
+ cdef readonly Element value
75
+ cpdef tuple _to_tuple(self)
76
+ cpdef LetterWrapped e(self, int i)
77
+ cpdef LetterWrapped f(self, int i)
78
+ cpdef int epsilon(self, int i) noexcept
79
+ cpdef int phi(self, int i) noexcept