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,525 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs lrcalc_python
3
+ r"""
4
+ An interface to Anders Buch's Littlewood-Richardson Calculator ``lrcalc``
5
+
6
+ The "Littlewood-Richardson Calculator" is a C library for fast
7
+ computation of Littlewood-Richardson (LR) coefficients and products of
8
+ Schubert polynomials. It handles single LR coefficients, products of
9
+ and coproducts of Schur functions, skew Schur functions, and
10
+ fusion products. All of the above are achieved by counting LR
11
+ (skew)-tableaux (also called Yamanouchi (skew)-tableaux) of
12
+ appropriate shape and content by iterating through them.
13
+ Additionally, ``lrcalc`` handles products of Schubert polynomials.
14
+
15
+ The web page of ``lrcalc`` is
16
+ `<http://sites.math.rutgers.edu/~asbuch/lrcalc/>`_.
17
+
18
+ The following describes the Sage interface to this library.
19
+
20
+ EXAMPLES::
21
+
22
+ sage: import sage.libs.lrcalc.lrcalc as lrcalc
23
+
24
+ Compute a single Littlewood-Richardson coefficient::
25
+
26
+ sage: lrcalc.lrcoef([3,2,1],[2,1],[2,1])
27
+ 2
28
+
29
+ Compute a product of Schur functions; return the coefficients in the
30
+ Schur expansion::
31
+
32
+ sage: lrcalc.mult([2,1], [2,1])
33
+ {[2, 2, 1, 1]: 1,
34
+ [2, 2, 2]: 1,
35
+ [3, 1, 1, 1]: 1,
36
+ [3, 2, 1]: 2,
37
+ [3, 3]: 1,
38
+ [4, 1, 1]: 1,
39
+ [4, 2]: 1}
40
+
41
+ Same product, but include only partitions with at most 3 rows. This
42
+ corresponds to computing in the representation ring of `\mathfrak{gl}(3)`::
43
+
44
+ sage: lrcalc.mult([2,1], [2,1], 3)
45
+ {[2, 2, 2]: 1, [3, 2, 1]: 2, [3, 3]: 1, [4, 1, 1]: 1, [4, 2]: 1}
46
+
47
+ We can also compute the fusion product, here for `\mathfrak{sl}(3)`
48
+ and level 2::
49
+
50
+ sage: lrcalc.mult([3,2,1], [3,2,1], 3,2)
51
+ {[4, 4, 4]: 1, [5, 4, 3]: 1}
52
+
53
+ Compute the expansion of a skew Schur function::
54
+
55
+ sage: lrcalc.skew([3,2,1],[2,1])
56
+ {[1, 1, 1]: 1, [2, 1]: 2, [3]: 1}
57
+
58
+ Compute the coproduct of a Schur function::
59
+
60
+ sage: lrcalc.coprod([3,2,1])
61
+ {([1, 1, 1], [2, 1]): 1,
62
+ ([2, 1], [2, 1]): 2,
63
+ ([2, 1], [3]): 1,
64
+ ([2, 1, 1], [1, 1]): 1,
65
+ ([2, 1, 1], [2]): 1,
66
+ ([2, 2], [1, 1]): 1,
67
+ ([2, 2], [2]): 1,
68
+ ([2, 2, 1], [1]): 1,
69
+ ([3, 1], [1, 1]): 1,
70
+ ([3, 1], [2]): 1,
71
+ ([3, 1, 1], [1]): 1,
72
+ ([3, 2], [1]): 1,
73
+ ([3, 2, 1], []): 1}
74
+
75
+ Multiply two Schubert polynomials::
76
+
77
+ sage: lrcalc.mult_schubert([4,2,1,3], [1,4,2,5,3])
78
+ {[4, 5, 1, 3, 2]: 1,
79
+ [5, 3, 1, 4, 2]: 1,
80
+ [5, 4, 1, 2, 3]: 1,
81
+ [6, 2, 1, 4, 3, 5]: 1}
82
+
83
+ Same product, but include only permutations of 5 elements in the result.
84
+ This corresponds to computing in the cohomology ring of `Fl(5)`::
85
+
86
+ sage: lrcalc.mult_schubert([4,2,1,3], [1,4,2,5,3], 5)
87
+ {[4, 5, 1, 3, 2]: 1, [5, 3, 1, 4, 2]: 1, [5, 4, 1, 2, 3]: 1}
88
+
89
+ List all Littlewood-Richardson tableaux of skew shape `\mu/\nu`; in
90
+ this example `\mu=[3,2,1]` and `\nu=[2,1]`. Specifying a third entry
91
+ `M' = ``maxrows`` restricts the alphabet to `\{1,2,\ldots,M\}`::
92
+
93
+ sage: list(lrcalc.lrskew([3,2,1],[2,1]))
94
+ [[[None, None, 1], [None, 1], [1]], [[None, None, 1], [None, 1], [2]],
95
+ [[None, None, 1], [None, 2], [1]], [[None, None, 1], [None, 2], [3]]]
96
+
97
+ sage: list(lrcalc.lrskew([3,2,1],[2,1],maxrows=2))
98
+ [[[None, None, 1], [None, 1], [1]], [[None, None, 1], [None, 1], [2]],
99
+ [[None, None, 1], [None, 2], [1]]]
100
+
101
+ .. TODO::
102
+
103
+ Use this library in the :class:`SymmetricFunctions` code, to
104
+ make it easy to apply it to linear combinations of Schur functions.
105
+
106
+ .. SEEALSO::
107
+
108
+ - :func:`lrcoef`
109
+ - :func:`mult`
110
+ - :func:`coprod`
111
+ - :func:`skew`
112
+ - :func:`lrskew`
113
+ - :func:`mult_schubert`
114
+
115
+ .. RUBRIC:: Underlying algorithmic in lrcalc
116
+
117
+ Here is some additional information regarding the main low-level
118
+ C-functions in `lrcalc`. Given two partitions ``outer`` and ``inner``
119
+ with ``inner`` contained in ``outer``, the function::
120
+
121
+ skewtab *st_new(vector *outer, vector *inner, vector *conts, int maxrows)
122
+
123
+ constructs and returns the (lexicographically) first LR skew tableau
124
+ of shape ``outer / inner``. Further restrictions can be imposed using
125
+ ``conts`` and ``maxrows``.
126
+
127
+ Namely, the integer ``maxrows`` is a bound on the integers that can be
128
+ put in the tableau. The name is chosen because this will limit the
129
+ partitions in the output of :func:`skew` or :func:`mult` to partitions
130
+ with at most this number of rows.
131
+
132
+ The vector ``conts`` is the content of an empty tableau(!!). More
133
+ precisely, this vector is added to the usual content of a tableau
134
+ whenever the content is needed. This affects which tableaux are
135
+ considered LR tableaux (see :func:`mult` below). ``conts`` may also
136
+ be the ``NULL`` pointer, in which case nothing is added.
137
+
138
+ The other function::
139
+
140
+ int *st_next(skewtab *st)
141
+
142
+ computes in place the (lexicographically) next skew tableau with the
143
+ same constraints, or returns 0 if ``st`` is the last one.
144
+
145
+ For a first example, see the :func:`skew` function code in the
146
+ ``lrcalc`` source code. We want to compute a skew Schur function, so
147
+ create a skew LR tableau of the appropriate shape with ``st_new``
148
+ (with ``conts = NULL``), then iterate through all the LR tableaux with
149
+ ``st_next()``. For each skew tableau, we use that ``st->conts`` is the
150
+ content of the skew tableau, find this shape in the ``res`` hash table
151
+ and add one to the value.
152
+
153
+ For a second example, see ``mult(vector *sh1, vector *sh2, maxrows)``.
154
+ Here we call ``st_new()`` with the shape ``sh1 / (0)`` and use ``sh2``
155
+ as the ``conts`` argument. The effect of using ``sh2`` in this way is
156
+ that ``st_next`` will iterate through semistandard tableaux `T` of
157
+ shape ``sh1`` such that the following tableau::
158
+
159
+ 111111
160
+ 22222 <--- minimal tableau of shape sh2
161
+ 333
162
+ *****
163
+ **T**
164
+ ****
165
+ **
166
+
167
+ is a LR skew tableau, and ``st->conts`` contains the content of the
168
+ combined tableaux.
169
+
170
+ More generally, ``st_new(outer, inner, conts, maxrows)`` and
171
+ ``st_next`` can be used to compute the Schur expansion of the product
172
+ ``S_{outer/inner} * S_conts``, restricted to partitions with at most
173
+ ``maxrows`` rows.
174
+
175
+ AUTHORS:
176
+
177
+ - Mike Hansen (2010): core of the interface
178
+
179
+ - Anne Schilling, Nicolas M. Thiéry, and Anders Buch (2011): fusion
180
+ product, iterating through LR tableaux, finalization, documentation
181
+ """
182
+ # ****************************************************************************
183
+ # Copyright (C) 2010 Mike Hansen <mhansen@gmail.com>
184
+ #
185
+ # Distributed under the terms of the GNU General Public License (GPL)
186
+ # https://www.gnu.org/licenses/
187
+ # ****************************************************************************
188
+
189
+ from sage.combinat.partition import _Partitions
190
+ from sage.combinat.permutation import Permutation
191
+ from sage.combinat.skew_tableau import SemistandardSkewTableaux
192
+ from sage.combinat.skew_partition import SkewPartition
193
+ from sage.rings.integer import Integer
194
+ import lrcalc
195
+
196
+
197
+ def _lrcalc_dict_to_sage(result) -> dict:
198
+ r"""
199
+ Translate from lrcalc output format to Sage expected format.
200
+
201
+ TESTS::
202
+
203
+ sage: from sage.libs.lrcalc.lrcalc import mult
204
+ sage: mult([2,1],[3,2,1],3) # indirect doctest
205
+ {[3, 3, 3]: 1, [4, 3, 2]: 2, [4, 4, 1]: 1, [5, 2, 2]: 1, [5, 3, 1]: 1}
206
+ """
207
+ return {_Partitions.element_class(_Partitions, [Integer(p) for p in la]):
208
+ Integer(k) for la, k in result.items()}
209
+
210
+
211
+ def lrcoef_unsafe(outer, inner1, inner2):
212
+ r"""
213
+ Compute a single Littlewood-Richardson coefficient.
214
+
215
+ Return the coefficient of ``outer`` in the product of the Schur
216
+ functions indexed by ``inner1`` and ``inner2``.
217
+
218
+ INPUT:
219
+
220
+ - ``outer`` -- a partition (weakly decreasing list of nonnegative integers)
221
+ - ``inner1`` -- a partition
222
+ - ``inner2`` -- a partition
223
+
224
+ .. WARNING::
225
+
226
+ This function does not do any check on its input. If you want
227
+ to use a safer version, use :func:`lrcoef`.
228
+
229
+ EXAMPLES::
230
+
231
+ sage: from sage.libs.lrcalc.lrcalc import lrcoef_unsafe
232
+ sage: lrcoef_unsafe([3,2,1], [2,1], [2,1])
233
+ 2
234
+ sage: lrcoef_unsafe([3,3], [2,1], [2,1])
235
+ 1
236
+ sage: lrcoef_unsafe([2,1,1,1,1], [2,1], [2,1])
237
+ 0
238
+ """
239
+ return Integer(lrcalc.lrcoef(outer, inner1, inner2))
240
+
241
+
242
+ def lrcoef(outer, inner1, inner2):
243
+ """
244
+ Compute a single Littlewood-Richardson coefficient.
245
+
246
+ Return the coefficient of ``outer`` in the product of the Schur
247
+ functions indexed by ``inner1`` and ``inner2``.
248
+
249
+ INPUT:
250
+
251
+ - ``outer`` -- a partition (weakly decreasing list of nonnegative integers)
252
+ - ``inner1`` -- a partition
253
+ - ``inner2`` -- a partition
254
+
255
+ .. NOTE::
256
+
257
+ This function converts its inputs into :func:`Partition`'s. If
258
+ you don't need these checks and your inputs are valid, then you
259
+ can use :func:`lrcoef_unsafe`.
260
+
261
+ EXAMPLES::
262
+
263
+ sage: from sage.libs.lrcalc.lrcalc import lrcoef
264
+ sage: lrcoef([3,2,1], [2,1], [2,1])
265
+ 2
266
+ sage: lrcoef([3,3], [2,1], [2,1])
267
+ 1
268
+ sage: lrcoef([2,1,1,1,1], [2,1], [2,1])
269
+ 0
270
+ """
271
+ return lrcoef_unsafe(_Partitions(outer), _Partitions(inner1), _Partitions(inner2))
272
+
273
+
274
+ def mult(part1, part2, maxrows=None, level=None, quantum=None) -> dict:
275
+ r"""
276
+ Compute a product of two Schur functions.
277
+
278
+ Return the product of the Schur functions indexed by the
279
+ partitions ``part1`` and ``part2``.
280
+
281
+ INPUT:
282
+
283
+ - ``part1`` -- a partition
284
+ - ``part2`` -- a partition
285
+ - ``maxrows`` -- integer (optional)
286
+ - ``level`` -- integer (optional)
287
+ - ``quantum`` -- an element of a ring (optional)
288
+
289
+ If ``maxrows`` is specified, then only partitions with at most
290
+ this number of rows are included in the result.
291
+
292
+ If both ``maxrows`` and ``level`` are specified, then the function
293
+ calculates the fusion product for `\mathfrak{sl}(\mathrm{maxrows})`
294
+ of the given level.
295
+
296
+ If ``quantum`` is set, then this returns the product in the quantum
297
+ cohomology ring of the Grassmannian. In particular, both ``maxrows``
298
+ and ``level`` need to be specified.
299
+
300
+ EXAMPLES::
301
+
302
+ sage: from sage.libs.lrcalc.lrcalc import mult
303
+ sage: mult([2],[])
304
+ {[2]: 1}
305
+ sage: sorted(mult([2],[2]).items())
306
+ [([2, 2], 1), ([3, 1], 1), ([4], 1)]
307
+ sage: sorted(mult([2,1],[2,1]).items())
308
+ [([2, 2, 1, 1], 1), ([2, 2, 2], 1), ([3, 1, 1, 1], 1),
309
+ ([3, 2, 1], 2), ([3, 3], 1), ([4, 1, 1], 1), ([4, 2], 1)]
310
+ sage: sorted(mult([2,1],[2,1],maxrows=2).items())
311
+ [([3, 3], 1), ([4, 2], 1)]
312
+ sage: mult([2,1],[3,2,1],3)
313
+ {[3, 3, 3]: 1, [4, 3, 2]: 2, [4, 4, 1]: 1, [5, 2, 2]: 1, [5, 3, 1]: 1}
314
+ sage: mult([2,1],[2,1],3,3)
315
+ {[2, 2, 2]: 1, [3, 2, 1]: 2, [3, 3]: 1, [4, 1, 1]: 1}
316
+ sage: mult([2,1],[2,1],None,3)
317
+ Traceback (most recent call last):
318
+ ...
319
+ ValueError: maxrows needs to be specified if you specify the level
320
+
321
+ The quantum product::
322
+
323
+ sage: q = polygen(QQ, 'q')
324
+ sage: sorted(mult([1],[2,1], 2, 2, quantum=q).items())
325
+ [([], q), ([2, 2], 1)]
326
+ sage: sorted(mult([2,1],[2,1], 2, 2, quantum=q).items())
327
+ [([1, 1], q), ([2], q)]
328
+
329
+ sage: mult([2,1],[2,1], quantum=q)
330
+ Traceback (most recent call last):
331
+ ...
332
+ ValueError: missing parameters maxrows or level
333
+ """
334
+ if maxrows is None and level is not None:
335
+ raise ValueError('maxrows needs to be specified if you specify'
336
+ ' the level')
337
+ if quantum is not None and (level is None or maxrows is None):
338
+ raise ValueError('missing parameters maxrows or level')
339
+
340
+ if quantum is None:
341
+ if level is not None:
342
+ return _lrcalc_dict_to_sage(lrcalc.mult_fusion(part1, part2, maxrows, level))
343
+ if maxrows is None:
344
+ maxrows = -1
345
+ return _lrcalc_dict_to_sage(lrcalc.mult(part1, part2, maxrows))
346
+
347
+ # Otherwise do quantum multiplication
348
+ result = lrcalc.mult_quantum(part1, part2, maxrows, level, degrees=True)
349
+ P = quantum.parent()
350
+ output = {}
351
+ for i, k in result.items():
352
+ la = _Partitions(i[0])
353
+ output[la] = output.get(la, P.zero()) + k * quantum**(i[1])
354
+ return output
355
+
356
+
357
+ def skew(outer, inner, maxrows=-1) -> dict:
358
+ """
359
+ Compute the Schur expansion of a skew Schur function.
360
+
361
+ Return a linear combination of partitions representing the Schur
362
+ function of the skew Young diagram ``outer / inner``, consisting
363
+ of boxes in the partition ``outer`` that are not in ``inner``.
364
+
365
+ INPUT:
366
+
367
+ - ``outer`` -- a partition
368
+ - ``inner`` -- a partition
369
+ - ``maxrows`` -- integer or ``None``
370
+
371
+ If ``maxrows`` is specified, then only partitions with at most
372
+ this number of rows are included in the result.
373
+
374
+ EXAMPLES::
375
+
376
+ sage: from sage.libs.lrcalc.lrcalc import skew
377
+ sage: sorted(skew([2,1],[1]).items())
378
+ [([1, 1], 1), ([2], 1)]
379
+ """
380
+ return _lrcalc_dict_to_sage(lrcalc.skew(outer, inner, maxrows))
381
+
382
+
383
+ def coprod(part, all=0) -> dict:
384
+ """
385
+ Compute the coproduct of a Schur function.
386
+
387
+ Return a linear combination of pairs of partitions representing
388
+ the coproduct of the Schur function given by the partition
389
+ ``part``.
390
+
391
+ INPUT:
392
+
393
+ - ``part`` -- a partition
394
+ - ``all`` -- integer
395
+
396
+ If ``all`` is nonzero then all terms are included in the result.
397
+ If ``all`` is zero, then only pairs of partitions ``(part1,
398
+ part2)`` for which the weight of ``part1`` is greater than or
399
+ equal to the weight of ``part2`` are included; the rest of the
400
+ coefficients are redundant because Littlewood-Richardson
401
+ coefficients are symmetric.
402
+
403
+ EXAMPLES::
404
+
405
+ sage: from sage.libs.lrcalc.lrcalc import coprod
406
+ sage: sorted(coprod([2,1]).items())
407
+ [(([1, 1], [1]), 1), (([2], [1]), 1), (([2, 1], []), 1)]
408
+ """
409
+ result = lrcalc.coprod(part, all)
410
+ return {tuple([_Partitions.element_class(_Partitions,
411
+ [Integer(p) for p in mu])
412
+ for mu in la]): Integer(k)
413
+ for la, k in result.items()}
414
+
415
+
416
+ def mult_schubert(w1, w2, rank=0) -> dict:
417
+ r"""
418
+ Compute a product of two Schubert polynomials.
419
+
420
+ Return a linear combination of permutations representing the
421
+ product of the Schubert polynomials indexed by the permutations
422
+ ``w1`` and ``w2``.
423
+
424
+ INPUT:
425
+
426
+ - ``w1`` -- a permutation
427
+ - ``w2`` -- a permutation
428
+ - ``rank`` -- integer
429
+
430
+ If ``rank`` is nonzero, then only permutations from the symmetric
431
+ group `S(\mathrm{rank})` are included in the result.
432
+
433
+ EXAMPLES::
434
+
435
+ sage: from sage.libs.lrcalc.lrcalc import mult_schubert
436
+ sage: result = mult_schubert([3, 1, 5, 2, 4], [3, 5, 2, 1, 4])
437
+ sage: sorted(result.items())
438
+ [([5, 4, 6, 1, 2, 3], 1), ([5, 6, 3, 1, 2, 4], 1),
439
+ ([5, 7, 2, 1, 3, 4, 6], 1), ([6, 3, 5, 1, 2, 4], 1),
440
+ ([6, 4, 3, 1, 2, 5], 1), ([6, 5, 2, 1, 3, 4], 1),
441
+ ([7, 3, 4, 1, 2, 5, 6], 1), ([7, 4, 2, 1, 3, 5, 6], 1)]
442
+ """
443
+ result = lrcalc.schubmult(w1, w2, rank)
444
+ return {Permutation(list(la)): Integer(k) for la, k in result.items()}
445
+
446
+
447
+ def lrskew(outer, inner, weight=None, maxrows=-1):
448
+ r"""
449
+ Iterate over the skew LR tableaux of shape ``outer / inner``.
450
+
451
+ INPUT:
452
+
453
+ - ``outer`` -- a partition
454
+ - ``inner`` -- a partition
455
+ - ``weight`` -- a partition (optional)
456
+ - ``maxrows`` -- positive integer (optional)
457
+
458
+ OUTPUT: an iterator of :class:`SkewTableau`
459
+
460
+ Specifying ``maxrows`` = `M` restricts the alphabet to `\{1,2,\ldots,M\}`.
461
+
462
+ Specifying ``weight`` returns only those tableaux of given content/weight.
463
+
464
+ EXAMPLES::
465
+
466
+ sage: from sage.libs.lrcalc.lrcalc import lrskew
467
+ sage: for st in lrskew([3,2,1],[2]):
468
+ ....: st.pp()
469
+ . . 1
470
+ 1 1
471
+ 2
472
+ . . 1
473
+ 1 2
474
+ 2
475
+ . . 1
476
+ 1 2
477
+ 3
478
+
479
+ sage: for st in lrskew([3,2,1],[2], maxrows=2):
480
+ ....: st.pp()
481
+ . . 1
482
+ 1 1
483
+ 2
484
+ . . 1
485
+ 1 2
486
+ 2
487
+
488
+ sage: list(lrskew([3,2,1],[2], weight=[3,1]))
489
+ [[[None, None, 1], [1, 1], [2]]]
490
+
491
+ TESTS::
492
+
493
+ sage: from sage.libs.lrcalc.lrcalc import lrskew
494
+ sage: list(lrskew([3,2,1],[2], weight=[]))
495
+ []
496
+ sage: list(lrskew([3,2,1],[2], weight=[0]))
497
+ []
498
+ sage: list(lrskew([3,2,1],[3,2,1], weight=[]))
499
+ [[[None, None, None], [None, None], [None]]]
500
+ sage: list(lrskew([3,2,1],[3,2,1], weight=[0]))
501
+ [[[None, None, None], [None, None], [None]]]
502
+ sage: list(lrskew([3,2,1],[3,2,1], weight=[1]))
503
+ []
504
+ """
505
+ iterator = lrcalc.lr_iterator(outer, inner, maxrows)
506
+ shape = SkewPartition([outer, inner])
507
+
508
+ if weight is None:
509
+ ST = SemistandardSkewTableaux(shape)
510
+ for data in iterator:
511
+ yield ST.from_shape_and_word(shape, [i + 1 for i in data])
512
+ else:
513
+ wt = _Partitions(weight)
514
+ ST = SemistandardSkewTableaux(shape, wt)
515
+ m = len(wt)
516
+ for data in iterator:
517
+ w = [0] * m
518
+ for j in data:
519
+ if j >= m:
520
+ # We know they are not equal, so make the check below quick
521
+ w = None
522
+ break
523
+ w[j] += 1
524
+ if w == wt:
525
+ yield ST.from_shape_and_word(shape, [i + 1 for i in data])
@@ -0,0 +1,7 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+
3
+ # Fail early if runtime deps of symmetrica are not available;
4
+ # symmetrica does not handle this well.
5
+
6
+ import sage.combinat.tableau
7
+ import sage.matrix.constructor
@@ -0,0 +1,101 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # from symmetrica import *
3
+
4
+ from sage.libs.symmetrica.symmetrica import start
5
+
6
+ # kostka
7
+ from sage.libs.symmetrica.symmetrica import kostka_number_symmetrica as kostka_number
8
+ from sage.libs.symmetrica.symmetrica import kostka_tab_symmetrica as kostka_tab
9
+ from sage.libs.symmetrica.symmetrica import kostka_tafel_symmetrica as kostka_tafel
10
+
11
+
12
+ # sab
13
+ from sage.libs.symmetrica.symmetrica import dimension_symmetrization_symmetrica as dimension_symmetrization
14
+ from sage.libs.symmetrica.symmetrica import bdg_symmetrica as bdg
15
+ from sage.libs.symmetrica.symmetrica import sdg_symmetrica as sdg
16
+ from sage.libs.symmetrica.symmetrica import odg_symmetrica as odg
17
+ from sage.libs.symmetrica.symmetrica import specht_dg_symmetrica as specht_dg
18
+ from sage.libs.symmetrica.symmetrica import ndg_symmetrica as ndg
19
+ # from symmetrica import glmndg_symmetrica as glmndg
20
+
21
+
22
+ # sc
23
+ from sage.libs.symmetrica.symmetrica import chartafel_symmetrica as chartafel
24
+ from sage.libs.symmetrica.symmetrica import charvalue_symmetrica as charvalue
25
+ from sage.libs.symmetrica.symmetrica import kranztafel_symmetrica as kranztafel
26
+ # from symmetrica import c_ijk_sn_symmetrica as c_ijk_sn
27
+
28
+ # part
29
+ from sage.libs.symmetrica.symmetrica import strict_to_odd_part_symmetrica as strict_to_odd_part
30
+ from sage.libs.symmetrica.symmetrica import odd_to_strict_part_symmetrica as odd_to_strict
31
+ from sage.libs.symmetrica.symmetrica import q_core_symmetrica as q_core
32
+ from sage.libs.symmetrica.symmetrica import gupta_nm_symmetrica as gupta_nm
33
+ from sage.libs.symmetrica.symmetrica import gupta_tafel_symmetrica as gupta_tafel
34
+ from sage.libs.symmetrica.symmetrica import random_partition_symmetrica as random_partition
35
+
36
+
37
+ # schur
38
+ from sage.libs.symmetrica.symmetrica import outerproduct_schur_symmetrica as outerproduct_schur
39
+ from sage.libs.symmetrica.symmetrica import dimension_schur_symmetrica as dimension_schur
40
+ from sage.libs.symmetrica.symmetrica import part_part_skewschur_symmetrica as part_part_skewschur
41
+ from sage.libs.symmetrica.symmetrica import newtrans_symmetrica as newtrans
42
+ from sage.libs.symmetrica.symmetrica import compute_schur_with_alphabet_symmetrica as compute_schur_with_alphabet
43
+ from sage.libs.symmetrica.symmetrica import compute_homsym_with_alphabet_symmetrica as compute_homsym_with_alphabet
44
+ from sage.libs.symmetrica.symmetrica import compute_elmsym_with_alphabet_symmetrica as compute_elmsym_with_alphabet
45
+ from sage.libs.symmetrica.symmetrica import compute_monomial_with_alphabet_symmetrica as compute_monomial_with_alphabet
46
+ from sage.libs.symmetrica.symmetrica import compute_powsym_with_alphabet_symmetrica as compute_powsym_with_alphabet
47
+ from sage.libs.symmetrica.symmetrica import compute_schur_with_alphabet_det_symmetrica as compute_schur_with_alphabet_det
48
+
49
+ from sage.libs.symmetrica.symmetrica import t_SCHUR_MONOMIAL_symmetrica as t_SCHUR_MONOMIAL
50
+ from sage.libs.symmetrica.symmetrica import t_SCHUR_HOMSYM_symmetrica as t_SCHUR_HOMSYM
51
+ from sage.libs.symmetrica.symmetrica import t_SCHUR_POWSYM_symmetrica as t_SCHUR_POWSYM
52
+ from sage.libs.symmetrica.symmetrica import t_SCHUR_ELMSYM_symmetrica as t_SCHUR_ELMSYM
53
+
54
+ from sage.libs.symmetrica.symmetrica import t_MONOMIAL_SCHUR_symmetrica as t_MONOMIAL_SCHUR
55
+ from sage.libs.symmetrica.symmetrica import t_MONOMIAL_HOMSYM_symmetrica as t_MONOMIAL_HOMSYM
56
+ from sage.libs.symmetrica.symmetrica import t_MONOMIAL_POWSYM_symmetrica as t_MONOMIAL_POWSYM
57
+ from sage.libs.symmetrica.symmetrica import t_MONOMIAL_ELMSYM_symmetrica as t_MONOMIAL_ELMSYM
58
+
59
+ from sage.libs.symmetrica.symmetrica import t_ELMSYM_SCHUR_symmetrica as t_ELMSYM_SCHUR
60
+ from sage.libs.symmetrica.symmetrica import t_ELMSYM_MONOMIAL_symmetrica as t_ELMSYM_MONOMIAL
61
+ from sage.libs.symmetrica.symmetrica import t_ELMSYM_HOMSYM_symmetrica as t_ELMSYM_HOMSYM
62
+ from sage.libs.symmetrica.symmetrica import t_ELMSYM_POWSYM_symmetrica as t_ELMSYM_POWSYM
63
+
64
+ from sage.libs.symmetrica.symmetrica import t_HOMSYM_SCHUR_symmetrica as t_HOMSYM_SCHUR
65
+ from sage.libs.symmetrica.symmetrica import t_HOMSYM_MONOMIAL_symmetrica as t_HOMSYM_MONOMIAL
66
+ from sage.libs.symmetrica.symmetrica import t_HOMSYM_POWSYM_symmetrica as t_HOMSYM_POWSYM
67
+ from sage.libs.symmetrica.symmetrica import t_HOMSYM_ELMSYM_symmetrica as t_HOMSYM_ELMSYM
68
+
69
+ from sage.libs.symmetrica.symmetrica import t_POWSYM_SCHUR_symmetrica as t_POWSYM_SCHUR
70
+ from sage.libs.symmetrica.symmetrica import t_POWSYM_HOMSYM_symmetrica as t_POWSYM_HOMSYM
71
+ from sage.libs.symmetrica.symmetrica import t_POWSYM_ELMSYM_symmetrica as t_POWSYM_ELMSYM
72
+ from sage.libs.symmetrica.symmetrica import t_POWSYM_MONOMIAL_symmetrica as t_POWSYM_MONOMIAL
73
+
74
+
75
+ from sage.libs.symmetrica.symmetrica import mult_schur_schur_symmetrica as mult_schur_schur
76
+ from sage.libs.symmetrica.symmetrica import mult_monomial_monomial_symmetrica as mult_monomial_monomial
77
+
78
+
79
+ from sage.libs.symmetrica.symmetrica import hall_littlewood_symmetrica as hall_littlewood
80
+
81
+ from sage.libs.symmetrica.symmetrica import t_POLYNOM_POWER_symmetrica as t_POLYNOM_POWER
82
+ from sage.libs.symmetrica.symmetrica import t_POLYNOM_SCHUR_symmetrica as t_POLYNOM_SCHUR
83
+ from sage.libs.symmetrica.symmetrica import t_POLYNOM_ELMSYM_symmetrica as t_POLYNOM_ELMSYM
84
+ from sage.libs.symmetrica.symmetrica import t_POLYNOM_MONOMIAL_symmetrica as t_POLYNOM_MONOMIAL
85
+
86
+ from sage.libs.symmetrica.symmetrica import scalarproduct_schur_symmetrica as scalarproduct_schur
87
+
88
+ # plet
89
+ from sage.libs.symmetrica.symmetrica import plethysm_symmetrica as plethysm
90
+ from sage.libs.symmetrica.symmetrica import schur_schur_plet_symmetrica as schur_schur_plet
91
+
92
+ # sb
93
+ from sage.libs.symmetrica.symmetrica import mult_schubert_schubert_symmetrica as mult_schubert_schubert
94
+ from sage.libs.symmetrica.symmetrica import t_SCHUBERT_POLYNOM_symmetrica as t_SCHUBERT_POLYNOM
95
+ from sage.libs.symmetrica.symmetrica import t_POLYNOM_SCHUBERT_symmetrica as t_POLYNOM_SCHUBERT
96
+ from sage.libs.symmetrica.symmetrica import mult_schubert_variable_symmetrica as mult_schubert_variable
97
+ from sage.libs.symmetrica.symmetrica import divdiff_perm_schubert_symmetrica as divdiff_perm_schubert
98
+ from sage.libs.symmetrica.symmetrica import scalarproduct_schubert_symmetrica as scalarproduct_schubert
99
+ from sage.libs.symmetrica.symmetrica import divdiff_schubert_symmetrica as divdiff_schubert
100
+
101
+ start()