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,499 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Tensor product of Kirillov-Reshetikhin tableaux
5
+
6
+ A tensor product of
7
+ :class:`~sage.combinat.rigged_configurations.kr_tableaux.KirillovReshetikhinTableaux`
8
+ which are tableaux of `r` rows and `s` columns which naturally arise in the
9
+ bijection between rigged configurations and tableaux and which are in
10
+ bijection with the elements of the Kirillov-Reshetikhin crystal `B^{r,s}`, see
11
+ :func:`~sage.combinat.crystals.kirillov_reshetikhin.KirillovReshetikhinCrystal`.
12
+
13
+ EXAMPLES:
14
+
15
+ Type `A_n^{(1)}` examples::
16
+
17
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1], [2,1]])
18
+ sage: KRT
19
+ Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((3, 1), (2, 1))
20
+ sage: KRT.cardinality()
21
+ 24
22
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[1,1], [2,1], [3,1]])
23
+ sage: KRT
24
+ Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((1, 1), (2, 1), (3, 1))
25
+ sage: len(KRT.module_generators)
26
+ 5
27
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[1,1], [2,1], [3,1]])
28
+ sage: KRT.cardinality()
29
+ 96
30
+
31
+ Type `D_n^{(1)}` examples::
32
+
33
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[1, 1], [2, 1], [1, 1]])
34
+ sage: KRT
35
+ Tensor product of Kirillov-Reshetikhin tableaux of type ['D', 4, 1] and factor(s) ((1, 1), (2, 1), (1, 1))
36
+ sage: T = KRT(pathlist=[[1], [-2, 2], [1]])
37
+ sage: T
38
+ [[1]] (X) [[2], [-2]] (X) [[1]]
39
+ sage: T2 = KRT(pathlist=[[1], [2, -2], [1]])
40
+ sage: T2
41
+ [[1]] (X) [[-2], [2]] (X) [[1]]
42
+ sage: T == T2
43
+ False
44
+
45
+ AUTHORS:
46
+
47
+ - Travis Scrimshaw (2010-09-26): initial version
48
+ """
49
+
50
+ # ****************************************************************************
51
+ # Copyright (C) 2010-2012 Travis Scrimshaw <tscrim@ucdavis.edu>
52
+ #
53
+ # Distributed under the terms of the GNU General Public License (GPL)
54
+ #
55
+ # This code is distributed in the hope that it will be useful,
56
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
57
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
58
+ # General Public License for more details.
59
+ #
60
+ # The full text of the GPL is available at:
61
+ #
62
+ # https://www.gnu.org/licenses/
63
+ # ****************************************************************************
64
+
65
+ from sage.misc.cachefunc import cached_method
66
+ from sage.structure.unique_representation import UniqueRepresentation
67
+
68
+ from sage.combinat.crystals.tensor_product import FullTensorProductOfRegularCrystals
69
+ from sage.combinat.crystals.letters import CrystalOfLetters
70
+ from sage.combinat.root_system.cartan_type import CartanType
71
+
72
+ from sage.combinat.rigged_configurations.tensor_product_kr_tableaux_element \
73
+ import TensorProductOfKirillovReshetikhinTableauxElement
74
+ from sage.combinat.rigged_configurations.kr_tableaux import KirillovReshetikhinTableaux, \
75
+ KirillovReshetikhinTableauxElement
76
+
77
+ from sage.rings.integer import Integer
78
+
79
+
80
+ class HighestWeightTensorKRT(UniqueRepresentation):
81
+ """
82
+ Class so we do not have to build the module generators for
83
+ :class:`~sage.combinat.rigged_configurations.tensor_product_kr_tableaux.TensorProductOfKirillovReshetikhinTableaux`
84
+ at initialization.
85
+
86
+ .. WARNING::
87
+
88
+ This class is for internal use only!
89
+ """
90
+
91
+ def __init__(self, tp_krt):
92
+ """
93
+ Initialize ``self``.
94
+
95
+ EXAMPLES::
96
+
97
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2]])
98
+ sage: from sage.combinat.rigged_configurations.tensor_product_kr_tableaux import HighestWeightTensorKRT
99
+ sage: hw = HighestWeightTensorKRT(KRT)
100
+ sage: hw2 = HighestWeightTensorKRT(KRT)
101
+ sage: hw is hw2
102
+ True
103
+ """
104
+ self.tp_krt = tp_krt
105
+ self._cache = None
106
+
107
+ def __getitem__(self, i):
108
+ """
109
+ Return the `i`-th highest weight element in the cache.
110
+
111
+ TESTS::
112
+
113
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1], [2,1]])
114
+ sage: KRT.module_generators[0]
115
+ [[1], [2], [3]] (X) [[1], [2]]
116
+ """
117
+ if self._cache is None:
118
+ self._cache = tuple([x.to_tensor_product_of_kirillov_reshetikhin_tableaux()
119
+ for x in self.tp_krt.rigged_configurations().module_generators])
120
+ return self._cache[i]
121
+
122
+ def __iter__(self):
123
+ """
124
+ Iterate over the highest weight elements.
125
+
126
+ EXAMPLES::
127
+
128
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,1]])
129
+ sage: from sage.combinat.rigged_configurations.tensor_product_kr_tableaux import HighestWeightTensorKRT
130
+ sage: for x in HighestWeightTensorKRT(KRT): x
131
+ [[1], [2]]
132
+ [[1], [-1]]
133
+ """
134
+ if self._cache is None:
135
+ self._cache = tuple([x.to_tensor_product_of_kirillov_reshetikhin_tableaux()
136
+ for x in self.tp_krt.rigged_configurations().module_generators])
137
+ yield from self._cache
138
+
139
+ def __repr__(self):
140
+ """
141
+ Return a string representation of ``self``.
142
+
143
+ EXAMPLES::
144
+
145
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,1]])
146
+ sage: from sage.combinat.rigged_configurations.tensor_product_kr_tableaux import HighestWeightTensorKRT
147
+ sage: HighestWeightTensorKRT(KRT)
148
+ Highest weight elements of Tensor product of Kirillov-Reshetikhin tableaux of type ['D', 4, 1] and factor(s) ((2, 1),)
149
+ """
150
+ return "Highest weight elements of {}".format(self.tp_krt)
151
+
152
+ @cached_method
153
+ def cardinality(self):
154
+ """
155
+ Return the cardinality of ``self``, which is the number of
156
+ highest weight elements.
157
+
158
+ EXAMPLES::
159
+
160
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2]])
161
+ sage: from sage.combinat.rigged_configurations.tensor_product_kr_tableaux import HighestWeightTensorKRT
162
+ sage: HW = HighestWeightTensorKRT(KRT)
163
+ sage: HW.cardinality()
164
+ 3
165
+ sage: len(HW)
166
+ 3
167
+ sage: len(KRT.module_generators)
168
+ 3
169
+ """
170
+ count = 0
171
+ for x in self:
172
+ count += 1
173
+ return Integer(count)
174
+
175
+ __len__ = cardinality
176
+
177
+
178
+ class TensorProductOfKirillovReshetikhinTableaux(FullTensorProductOfRegularCrystals):
179
+ r"""
180
+ A tensor product of
181
+ :class:`~sage.combinat.rigged_configurations.kr_tableaux.KirillovReshetikhinTableaux`.
182
+
183
+ Through the bijection with rigged configurations, the tableaux that are
184
+ produced in all nonexceptional types are all of rectangular shapes and do
185
+ not necessarily obey the usual strict increase in columns and weak
186
+ increase in rows. The relation between the elements of the
187
+ Kirillov-Reshetikhin crystal, given by the Kashiwara-Nakashima tableaux,
188
+ and the Kirillov-Reshetikhin tableaux is given by a filling map.
189
+
190
+ .. NOTE::
191
+
192
+ The tableaux for all non-simply-laced types are provably correct if the
193
+ bijection with :class:`rigged configurations
194
+ <sage.combinat.rigged_configurations.rigged_configurations.RiggedConfigurations>`
195
+ holds. Therefore this is currently only proven for `B^{r,1}` or
196
+ `B^{1,s}` and in general for types `A_n^{(1)}` and `D_n^{(1)}`.
197
+
198
+ For more information see [OSS2011]_ and
199
+ :class:`~sage.combinat.rigged_configurations.kr_tableaux.KirillovReshetikhinTableaux`.
200
+
201
+ For more information on KR crystals, see
202
+ :mod:`sage.combinat.crystals.kirillov_reshetikhin`.
203
+
204
+ INPUT:
205
+
206
+ - ``cartan_type`` -- a Cartan type
207
+
208
+ - ``B`` -- an (ordered) list of pairs `(r,s)` which give the dimension
209
+ of a rectangle with `r` rows and `s` columns and corresponds to a
210
+ Kirillov-Reshetikhin tableaux factor of `B^{r,s}`.
211
+
212
+ REFERENCES:
213
+
214
+ .. [OSS2011] Masato Okado, Reiho Sakamoto, Anne Schilling,
215
+ Affine crystal structure on rigged configurations of type `D_n^{(1)}`,
216
+ J. Algebraic Combinatorics 37(3) (2013) 571-599 (:arxiv:`1109.3523` [math.QA])
217
+
218
+ EXAMPLES:
219
+
220
+ We can go between tensor products of KR crystals and rigged
221
+ configurations::
222
+
223
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1],[2,2]])
224
+ sage: tp_krt = KRT(pathlist=[[3,2,1],[3,2,3,2]]); tp_krt
225
+ [[1], [2], [3]] (X) [[2, 2], [3, 3]]
226
+ sage: RC = RiggedConfigurations(['A',3,1], [[3,1],[2,2]])
227
+ sage: rc_elt = tp_krt.to_rigged_configuration(); rc_elt
228
+ <BLANKLINE>
229
+ -2[ ][ ]-2
230
+ <BLANKLINE>
231
+ 0[ ][ ]0
232
+ <BLANKLINE>
233
+ (/)
234
+ <BLANKLINE>
235
+ sage: tp_krc = tp_krt.to_tensor_product_of_kirillov_reshetikhin_crystals(); tp_krc
236
+ [[[1], [2], [3]], [[2, 2], [3, 3]]]
237
+ sage: KRT(tp_krc) == tp_krt
238
+ True
239
+ sage: rc_elt == tp_krt.to_rigged_configuration()
240
+ True
241
+ sage: KR1 = crystals.KirillovReshetikhin(['A',3,1], 3,1)
242
+ sage: KR2 = crystals.KirillovReshetikhin(['A',3,1], 2,2)
243
+ sage: T = crystals.TensorProduct(KR1, KR2)
244
+ sage: t = T(KR1(3,2,1), KR2(3,2,3,2))
245
+ sage: KRT(t) == tp_krt
246
+ True
247
+ sage: t == tp_krc
248
+ True
249
+
250
+ We can get the highest weight elements by using the attribute
251
+ ``module_generators``::
252
+
253
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1], [2,1]])
254
+ sage: list(KRT.module_generators)
255
+ [[[1], [2], [3]] (X) [[1], [2]], [[1], [3], [4]] (X) [[1], [2]]]
256
+
257
+ To create elements directly (i.e. not passing in KR tableaux elements),
258
+ there is the **pathlist** option will receive a list of lists which
259
+ contain the reversed far-eastern reading word of the tableau. That is to
260
+ say, in English notation, the word obtain from reading bottom-to-top,
261
+ left-to-right. ::
262
+
263
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,2], [1,2], [2,1]])
264
+ sage: elt = KRT(pathlist=[[3, 2, 1, 4, 2, 1], [1, 3], [3, 1]])
265
+ sage: elt.pp()
266
+ 1 1 (X) 1 3 (X) 1
267
+ 2 2 3
268
+ 3 4
269
+
270
+ One can still create elements in the same way as tensor product of
271
+ crystals::
272
+
273
+ sage: K1 = crystals.KirillovReshetikhin(['A',3,1], 3, 2, model='KR')
274
+ sage: K2 = crystals.KirillovReshetikhin(['A',3,1], 1, 2, model='KR')
275
+ sage: K3 = crystals.KirillovReshetikhin(['A',3,1], 2, 1, model='KR')
276
+ sage: eltlong = KRT(K1(3, 2, 1, 4, 2, 1), K2(1, 3), K3(3, 1))
277
+ sage: eltlong == elt
278
+ True
279
+ """
280
+ @staticmethod
281
+ def __classcall_private__(cls, cartan_type, B):
282
+ """
283
+ Normalize the input arguments to ensure unique representation.
284
+
285
+ EXAMPLES::
286
+
287
+ sage: T1 = crystals.TensorProductOfKirillovReshetikhinTableaux(CartanType(['A',3,1]), [[2,2]])
288
+ sage: T2 = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [(2,2)])
289
+ sage: T3 = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], ((2,2),))
290
+ sage: T2 is T1, T3 is T1
291
+ (True, True)
292
+ """
293
+ cartan_type = CartanType(cartan_type)
294
+ if not cartan_type.is_affine():
295
+ raise ValueError("The Cartan type must be affine")
296
+
297
+ # Standardize B input into a tuple of tuples
298
+ B = tuple(tuple(dim) for dim in B)
299
+ return super().__classcall__(cls, cartan_type, B)
300
+
301
+ def __init__(self, cartan_type, B):
302
+ r"""
303
+ Initialize ``self``.
304
+
305
+ EXAMPLES::
306
+
307
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1],[2,2]]); KRT
308
+ Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((3, 1), (2, 2))
309
+ sage: TestSuite(KRT).run() # long time
310
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2]])
311
+ sage: TestSuite(KRT).run() # long time
312
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[3,1]])
313
+ sage: TestSuite(KRT).run() # long time
314
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[4,3]])
315
+ sage: TestSuite(KRT).run() # long time
316
+ """
317
+ self.dims = B
318
+ self.letters = CrystalOfLetters(cartan_type.classical())
319
+ tensor_prod = tuple(KirillovReshetikhinTableaux(cartan_type, rect_dims[0], rect_dims[1])
320
+ for rect_dims in B)
321
+ FullTensorProductOfRegularCrystals.__init__(self, tensor_prod, cartan_type=cartan_type)
322
+ # This is needed to override the module_generators set in FullTensorProductOfRegularCrystals
323
+ self.module_generators = HighestWeightTensorKRT(self)
324
+ self.rename("Tensor product of Kirillov-Reshetikhin tableaux "
325
+ f"of type {cartan_type} and factor(s) {B}")
326
+
327
+ def __iter__(self):
328
+ """
329
+ Return the iterator of ``self``.
330
+
331
+ EXAMPLES::
332
+
333
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 3, 1], [[2,1], [1,1]])
334
+ sage: g = KRT.__iter__()
335
+ sage: next(g) # random
336
+ [[2], [3]] (X) [[1]]
337
+ sage: next(g) # random
338
+ [[2], [4]] (X) [[1]]
339
+ """
340
+ index_set = self._cartan_type.classical().index_set()
341
+ from sage.sets.recursively_enumerated_set import RecursivelyEnumeratedSet
342
+ return RecursivelyEnumeratedSet(self.module_generators,
343
+ lambda x: [x.f(i) for i in index_set],
344
+ structure=None).naive_search_iterator()
345
+
346
+ def _test_bijection(self, **options):
347
+ r"""
348
+ Test function to make sure that the bijection between rigged
349
+ configurations and Kirillov-Reshetikhin tableaux is correct.
350
+
351
+ EXAMPLES::
352
+
353
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 4, 1], [[3,2],[4,1]])
354
+ sage: KRT._test_bijection()
355
+ """
356
+ tester = self._tester(**options)
357
+ rejects = []
358
+ for x in self:
359
+ y = x.to_rigged_configuration()
360
+ z = y.to_tensor_product_of_kirillov_reshetikhin_tableaux()
361
+ if z != x:
362
+ rejects.append((x, z))
363
+
364
+ tester.assertEqual(len(rejects), 0, "Bijection is not correct: %s" % rejects)
365
+ if rejects:
366
+ return rejects
367
+
368
+ def _element_constructor_(self, *path, **options):
369
+ r"""
370
+ Construct an element of ``self``.
371
+
372
+ Typically the user will call this with the option **pathlist** which
373
+ will receive a list of lists of reversed far-eastern reading words.
374
+
375
+ EXAMPLES::
376
+
377
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1], [2,1]])
378
+ sage: KRT(pathlist=[[4, 2, 1], [2, 1]])
379
+ [[1], [2], [4]] (X) [[1], [2]]
380
+ """
381
+ if isinstance(path[0], KirillovReshetikhinTableauxElement):
382
+ return self.element_class(self, path)
383
+ if isinstance(path[0], TensorProductOfKirillovReshetikhinTableauxElement):
384
+ return path[0]
385
+
386
+ from sage.combinat.crystals.kirillov_reshetikhin import KirillovReshetikhinGenericCrystalElement
387
+ if isinstance(path[0], KirillovReshetikhinGenericCrystalElement):
388
+ return self.element_class(self, [x.to_kirillov_reshetikhin_tableau() for x in path])
389
+
390
+ from sage.combinat.crystals.tensor_product import TensorProductOfRegularCrystalsElement
391
+ if isinstance(path[0], TensorProductOfRegularCrystalsElement) and \
392
+ isinstance(path[0][0], KirillovReshetikhinGenericCrystalElement):
393
+ return self.element_class(self, [x.to_kirillov_reshetikhin_tableau() for x in path[0]])
394
+
395
+ from sage.combinat.rigged_configurations.rigged_configuration_element import RiggedConfigurationElement
396
+ if isinstance(path[0], RiggedConfigurationElement):
397
+ if self.rigged_configurations() != path[0].parent():
398
+ raise ValueError("incorrect bijection image")
399
+ return path[0].to_tensor_product_of_kirillov_reshetikhin_tableaux()
400
+
401
+ return self.element_class(self, list(path), **options)
402
+
403
+ @cached_method
404
+ def _module_generators_brute_force(self):
405
+ """
406
+ Return the module generators of ``self`` by brute force searching
407
+ through all elements of ``self`` as a Cartesian product.
408
+
409
+ EXAMPLES::
410
+
411
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[1,3], [2,1]])
412
+ sage: tuple(KRT.module_generators)
413
+ ([[1, 1, 1]] (X) [[1], [2]], [[1, 1, 3]] (X) [[1], [2]])
414
+ sage: KRT._module_generators_brute_force()
415
+ ([[1, 1, 1]] (X) [[1], [2]], [[1, 1, 3]] (X) [[1], [2]])
416
+ """
417
+ index_set = self.cartan_type().classical().index_set()
418
+ return tuple(x for x in FullTensorProductOfRegularCrystals.__iter__(self)
419
+ if x.is_highest_weight(index_set))
420
+
421
+ @cached_method
422
+ def rigged_configurations(self):
423
+ """
424
+ Return the corresponding set of rigged configurations.
425
+
426
+ EXAMPLES::
427
+
428
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[1,3], [2,1]])
429
+ sage: KRT.rigged_configurations()
430
+ Rigged configurations of type ['A', 3, 1] and factor(s) ((1, 3), (2, 1))
431
+ """
432
+ from sage.combinat.rigged_configurations.rigged_configurations import RiggedConfigurations
433
+ return RiggedConfigurations(self.cartan_type(), self.dims)
434
+
435
+ @cached_method
436
+ def tensor_product_of_kirillov_reshetikhin_crystals(self):
437
+ """
438
+ Return the corresponding tensor product of Kirillov-Reshetikhin
439
+ crystals.
440
+
441
+ EXAMPLES::
442
+
443
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1],[2,2]])
444
+ sage: KRT.tensor_product_of_kirillov_reshetikhin_crystals()
445
+ Full tensor product of the crystals [Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(3,1),
446
+ Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(2,2)]
447
+
448
+ TESTS::
449
+
450
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[4,1], [3,3]])
451
+ sage: KR1 = crystals.KirillovReshetikhin(['D', 4, 1], 4, 1)
452
+ sage: KR2 = crystals.KirillovReshetikhin(['D', 4, 1], 3, 3)
453
+ sage: T = crystals.TensorProduct(KR1, KR2)
454
+ sage: T == KRT.tensor_product_of_kirillov_reshetikhin_crystals()
455
+ True
456
+ sage: T is KRT.tensor_product_of_kirillov_reshetikhin_crystals()
457
+ True
458
+ """
459
+ return FullTensorProductOfRegularCrystals(tuple(x.kirillov_reshetikhin_crystal() for x in self.crystals),
460
+ cartan_type=self.cartan_type())
461
+
462
+ def tensor(self, *crystals, **options):
463
+ """
464
+ Return the tensor product of ``self`` with ``crystals``.
465
+
466
+ If ``crystals`` is a list of (a tensor product of) KR tableaux, this
467
+ returns a :class:`TensorProductOfKirillovReshetikhinTableaux`.
468
+
469
+ EXAMPLES::
470
+
471
+ sage: TP = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 3, 1], [[1,3],[3,1]])
472
+ sage: K = crystals.KirillovReshetikhin(['A', 3, 1], 2, 2, model='KR')
473
+ sage: TP.tensor(K, TP)
474
+ Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1]
475
+ and factor(s) ((1, 3), (3, 1), (2, 2), (1, 3), (3, 1))
476
+
477
+ sage: C = crystals.KirillovReshetikhin(['A',3,1], 3, 1, model='KN')
478
+ sage: TP.tensor(K, C)
479
+ Full tensor product of the crystals
480
+ [Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and shape (1, 3),
481
+ Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and shape (3, 1),
482
+ Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and shape (2, 2),
483
+ Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(3,1)]
484
+ """
485
+ ct = self._cartan_type
486
+ from sage.combinat.rigged_configurations.kr_tableaux import KirillovReshetikhinTableaux
487
+ if all(isinstance(B, (KirillovReshetikhinTableaux, TensorProductOfKirillovReshetikhinTableaux))
488
+ and B.cartan_type() == ct for B in crystals):
489
+ dims = list(self.dims)
490
+ for B in crystals:
491
+ if isinstance(B, TensorProductOfKirillovReshetikhinTableaux):
492
+ dims += B.dims
493
+ elif isinstance(B, KirillovReshetikhinTableaux):
494
+ dims.append([B._r, B._s])
495
+ return TensorProductOfKirillovReshetikhinTableaux(ct, dims)
496
+ return super().tensor(*crystals, **options)
497
+
498
+
499
+ TensorProductOfKirillovReshetikhinTableaux.Element = TensorProductOfKirillovReshetikhinTableauxElement