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,821 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Super tableaux
4
+
5
+ AUTHORS:
6
+
7
+ - Matthew Lancellotti (2007): initial version
8
+ - Chaman Agrawal (2019-07-23): modify standard and semistandard tableaux for
9
+ super tableaux
10
+ """
11
+
12
+ # ****************************************************************************
13
+ # Copyright (C) 2019 Matthew Lancellotti <mareoraft at gmail.com>
14
+ # 2019 Chaman Agrawal <chaman.ag at gmail.com>
15
+ #
16
+ # This program is free software: you can redistribute it and/or modify
17
+ # it under the terms of the GNU General Public License as published by
18
+ # the Free Software Foundation, either version 2 of the License, or
19
+ # (at your option) any later version.
20
+ # https://www.gnu.org/licenses/
21
+ # ****************************************************************************
22
+ from __future__ import annotations
23
+
24
+ from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
25
+ from sage.sets.non_negative_integers import NonNegativeIntegers
26
+ from sage.rings.integer_ring import ZZ
27
+ from sage.sets.family import Family
28
+ from sage.structure.parent import Parent
29
+ from sage.rings.integer import Integer
30
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
31
+ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
32
+ from sage.combinat.shifted_primed_tableau import PrimedEntry
33
+ from sage.combinat.tableau import (Tableau, Tableaux, SemistandardTableaux,
34
+ StandardTableaux)
35
+
36
+
37
+ class SemistandardSuperTableau(Tableau):
38
+ """
39
+ A semistandard super tableau.
40
+
41
+ A semistandard super tableau is a tableau with primed positive integer entries.
42
+ As defined in [Muth2019]_, a semistandard super tableau weakly increases along
43
+ the rows and down the columns. Also, the letters of even parity (unprimed)
44
+ strictly increases down the columns, and letters of oddd parity (primed)
45
+ strictly increases along the rows. Note that Sage uses the English convention
46
+ for partitions and tableaux; the longer rows are displayed on top.
47
+
48
+ INPUT:
49
+
50
+ - ``t`` -- a tableau, a list of iterables, or an empty list
51
+
52
+ EXAMPLES::
53
+
54
+ sage: t = SemistandardSuperTableau([['1p',2,"3'"],[2,3]]); t
55
+ [[1', 2, 3'], [2, 3]]
56
+ sage: t.shape()
57
+ [3, 2]
58
+ sage: t.pp() # pretty printing
59
+ 1' 2 3'
60
+ 2 3
61
+ sage: t = Tableau([["1p",2],[2]])
62
+ sage: s = SemistandardSuperTableau(t); s
63
+ [[1', 2], [2]]
64
+ sage: SemistandardSuperTableau([]) # The empty tableau
65
+ []
66
+
67
+ TESTS::
68
+
69
+ sage: from sage.combinat.shifted_primed_tableau import PrimedEntry
70
+ sage: t = Tableaux()([[1,1],[2]])
71
+ sage: s = SemistandardSuperTableaux()([[PrimedEntry(1),PrimedEntry(1)],
72
+ ....: [PrimedEntry(2)]])
73
+ sage: s == t
74
+ True
75
+ sage: s.parent()
76
+ Semistandard super tableaux
77
+ sage: r = SemistandardSuperTableaux()(t); r.parent()
78
+ Semistandard super tableaux
79
+ sage: isinstance(r, Tableau)
80
+ True
81
+ sage: s2 = SemistandardSuperTableaux()([[PrimedEntry(1),
82
+ ....: PrimedEntry(1)], [PrimedEntry(2)]])
83
+ sage: s2 == s
84
+ True
85
+ sage: s2.parent()
86
+ Semistandard super tableaux
87
+ """
88
+ @staticmethod
89
+ def __classcall_private__(cls, t):
90
+ r"""
91
+ This ensures that a SemistandardSuperTableau is only ever constructed
92
+ as an element_class call of an appropriate parent.
93
+
94
+ TESTS::
95
+
96
+ sage: t = SemistandardSuperTableau([[1,1],[2]])
97
+ sage: TestSuite(t).run()
98
+ sage: t.parent()
99
+ Semistandard super tableaux
100
+ sage: t.category()
101
+ Category of elements of Semistandard super tableaux
102
+ sage: type(t)
103
+ <class 'sage.combinat.super_tableau.SemistandardSuperTableaux_all_with_category.element_class'>
104
+ """
105
+ if isinstance(t, cls):
106
+ return t
107
+
108
+ # We must verify ``t`` is a list of iterables, and also
109
+ # normalize it to be a list of tuples.
110
+ try:
111
+ t = [tuple(it) for it in t]
112
+ except TypeError:
113
+ raise ValueError("a tableau must be a list of iterables")
114
+ SST = SemistandardSuperTableaux_all()
115
+ return SST.element_class(SST, t)
116
+
117
+ def __init__(self, parent, t, check=True, preprocessed=False):
118
+ r"""
119
+ Initialize a semistandard super tableau for given tableau ``t``.
120
+
121
+ TESTS::
122
+
123
+ sage: s = SemistandardSuperTableau([[1,"2'","3'",3], [2,"3'"]])
124
+ sage: t = SemistandardSuperTableaux()([[1,"2p","3p",3], [2,"3p"]])
125
+ sage: s == t
126
+ True
127
+ sage: s.parent()
128
+ Semistandard super tableaux
129
+ sage: TestSuite(t).run()
130
+ sage: r = SemistandardSuperTableaux()(s); r.parent()
131
+ Semistandard super tableaux
132
+ sage: s is t # identical super tableaux are distinct objects
133
+ False
134
+ """
135
+ if not preprocessed:
136
+ t = self._preprocess(t)
137
+ super().__init__(parent, t, check=check)
138
+
139
+ @staticmethod
140
+ def _preprocess(t):
141
+ """
142
+ Preprocessing list ``T`` to initialize the tableau.
143
+
144
+ The output is a list of rows as tuples, with entries being
145
+ ``PrimedEntry`` instances.
146
+
147
+ TESTS::
148
+
149
+ sage: SemistandardSuperTableau._preprocess([["2'", "3p", 3.5]])
150
+ [[2', 3', 4']]
151
+ sage: SemistandardSuperTableau._preprocess([[None]])
152
+ [[None]]
153
+ sage: SemistandardSuperTableau._preprocess([])
154
+ []
155
+ """
156
+ if isinstance(t, SemistandardSuperTableau):
157
+ return t
158
+ # Preprocessing list t for primes and other symbols
159
+ t = [[PrimedEntry(entry) if entry is not None else entry for entry in row]
160
+ for row in t]
161
+ while t and not t[-1]:
162
+ t = t[:-1]
163
+ return t
164
+
165
+ def check(self):
166
+ """
167
+ Check that ``self`` is a valid semistandard super tableau.
168
+
169
+ TESTS::
170
+
171
+ sage: SemistandardSuperTableau([[1,2,3],[1]]) # indirect doctest
172
+ Traceback (most recent call last):
173
+ ...
174
+ ValueError: the unprimed entries of each column must
175
+ be strictly increasing
176
+
177
+ sage: SemistandardSuperTableau([[1,2,1]]) # indirect doctest
178
+ Traceback (most recent call last):
179
+ ...
180
+ ValueError: the entries in each row of a semistandard super
181
+ tableau must be weakly increasing
182
+
183
+ sage: SemistandardSuperTableau([[0,1]]) # indirect doctest
184
+ Traceback (most recent call last):
185
+ ...
186
+ ValueError: the entries of a semistandard super tableau must be
187
+ nonnegative primed integers
188
+ """
189
+ super().check()
190
+ for row in self:
191
+ if not all(isinstance(c, PrimedEntry) and c > 0 for c in row):
192
+ raise ValueError("the entries of a semistandard super tableau"
193
+ " must be nonnegative primed integers")
194
+ if any(row[c] > row[c + 1] for c in range(len(row) - 1)):
195
+ raise ValueError("the entries in each row of a semistandard"
196
+ " super tableau must be weakly increasing")
197
+
198
+ if self:
199
+ for row, next in zip(self, self[1:]):
200
+ # Check that letters are weakly increasing down columns
201
+ if any(row[c] > next[c] for c in range(len(next))):
202
+ raise ValueError("the entries of each column of a "
203
+ "semistandard super tableau must be "
204
+ "weakly increasing")
205
+ # Check that unprimed letters are column strict
206
+ if not all(row[c] < next[c]
207
+ for c in range(len(next))
208
+ if (row[c].is_unprimed() or next[c].is_unprimed())):
209
+ raise ValueError("the unprimed entries of each column"
210
+ " must be strictly increasing")
211
+
212
+ # Check that primed letters are row strict
213
+ for row in self:
214
+ if not all(row[c] < row[c + 1]
215
+ for c in range(len(row) - 1)
216
+ if (row[c].is_primed() or row[c + 1].is_primed())):
217
+ raise ValueError("the primed entries in each row must be"
218
+ " strictly increasing")
219
+
220
+
221
+ class StandardSuperTableau(SemistandardSuperTableau):
222
+ r"""
223
+ A standard super tableau.
224
+
225
+ A standard super tableau is a semistandard super tableau whose entries
226
+ are in bijection with positive primed integers `1', 1, 2' \ldots n`.
227
+
228
+ For more information refer [Muth2019]_.
229
+
230
+ INPUT:
231
+
232
+ - ``t`` -- a Tableau, a list of iterables, or an empty list
233
+
234
+ EXAMPLES::
235
+
236
+ sage: t = StandardSuperTableau([["1'",1,"2'",2,"3'"],[3,"4'"]]); t
237
+ [[1', 1, 2', 2, 3'], [3, 4']]
238
+ sage: t.shape()
239
+ [5, 2]
240
+ sage: t.pp() # pretty printing
241
+ 1' 1 2' 2 3'
242
+ 3 4'
243
+ sage: t.is_standard()
244
+ True
245
+ sage: StandardSuperTableau([]) # The empty tableau
246
+ []
247
+
248
+ TESTS::
249
+
250
+ sage: from sage.combinat.shifted_primed_tableau import PrimedEntry
251
+ sage: t = Tableaux()([[PrimedEntry('1p'), PrimedEntry('2p')],
252
+ ....: [PrimedEntry(1)]])
253
+ sage: s = StandardSuperTableaux()([['1p','2p'],[1]])
254
+ sage: s == t
255
+ True
256
+ sage: s.parent()
257
+ Standard super tableaux
258
+ sage: r = StandardSuperTableaux()([]); r.parent()
259
+ Standard super tableaux
260
+ sage: isinstance(r, Tableau)
261
+ True
262
+ """
263
+ @staticmethod
264
+ def __classcall_private__(self, t):
265
+ r"""
266
+ This ensures that a :class:`StandardSuperTableau` is only ever
267
+ constructed as an ``element_class`` call of an appropriate parent.
268
+
269
+ TESTS::
270
+
271
+ sage: t = StandardSuperTableau([['1p','2p'],[1]])
272
+ sage: TestSuite(t).run()
273
+ sage: t.parent()
274
+ Standard super tableaux
275
+ sage: type(t)
276
+ <class 'sage.combinat.super_tableau.StandardSuperTableaux_all_with_category.element_class'>
277
+ """
278
+ if isinstance(t, StandardSuperTableau):
279
+ return t
280
+
281
+ SST = StandardSuperTableaux_all()
282
+ return SST.element_class(SST, t)
283
+
284
+ def check(self):
285
+ r"""
286
+ Check that ``self`` is a standard tableau.
287
+
288
+ TESTS::
289
+
290
+ sage: StandardSuperTableau([[1,2,3],[4,5]]) # indirect doctest
291
+ Traceback (most recent call last):
292
+ ...
293
+ ValueError: the entries in a standard tableau must be in
294
+ bijection with 1',1,2',2,...,n
295
+
296
+ sage: StandardSuperTableau([[1,3,2]]) # indirect doctest
297
+ Traceback (most recent call last):
298
+ ...
299
+ ValueError: the entries in each row of a semistandard super
300
+ tableau must be weakly increasing
301
+ """
302
+ super().check()
303
+ # t is semistandard so we only need to check
304
+ # that its entries are in bijection with {1',1,2', 2, ..., n}
305
+ flattened_list = [i for row in self for i in row]
306
+ a = PrimedEntry('1p')
307
+ primed_list = []
308
+ for i in range(len(flattened_list)):
309
+ primed_list.append(a)
310
+ a = a.increase_half()
311
+
312
+ if sorted(flattened_list) != primed_list:
313
+ raise ValueError("the entries in a standard tableau must be in"
314
+ " bijection with 1',1,2',2,...,n")
315
+
316
+ def is_standard(self) -> bool:
317
+ """
318
+ Return ``True`` since ``self`` is a standard super tableau.
319
+
320
+ EXAMPLES::
321
+
322
+ sage: StandardSuperTableau([['1p', 1], ['2p', 2]]).is_standard()
323
+ True
324
+ """
325
+ return True
326
+
327
+
328
+ ################################
329
+ # Semi-standard Super tableaux #
330
+ ################################
331
+ class SemistandardSuperTableaux(SemistandardTableaux):
332
+ r"""
333
+ The set of semistandard super tableaux.
334
+
335
+ A semistandard super tableau is a tableau with primed positive integer entries.
336
+ As defined in [Muth2019]_, a semistandard super tableau weakly increases along
337
+ the rows and down the columns. Also, the letters of even parity (unprimed)
338
+ strictly increases down the columns, and letters of oddd parity (primed)
339
+ strictly increases along the rows. Note that Sage uses the English convention
340
+ for partitions and tableaux; the longer rows are displayed on top.
341
+
342
+ EXAMPLES::
343
+
344
+ sage: SST = SemistandardSuperTableaux(); SST
345
+ Semistandard super tableaux
346
+ """
347
+ @staticmethod
348
+ def __classcall_private__(cls):
349
+ r"""
350
+ Normalize and process input to return the correct parent and
351
+ ensure a unique representation.
352
+
353
+ TESTS::
354
+
355
+ sage: SemistandardSuperTableaux()
356
+ Semistandard super tableaux
357
+ """
358
+ return SemistandardSuperTableaux_all()
359
+
360
+ Element = SemistandardSuperTableau
361
+
362
+ def __contains__(self, x) -> bool:
363
+ """
364
+ Return ``True`` if ``t`` can be interpreted as a
365
+ :class:`SemistandardSuperTableau`.
366
+
367
+ TESTS::
368
+
369
+ sage: from sage.combinat.shifted_primed_tableau import PrimedEntry
370
+ sage: T = sage.combinat.super_tableau.SemistandardSuperTableaux_all()
371
+ sage: [[1,2],[2]] in T
372
+ True
373
+ sage: [[PrimedEntry('1p'),PrimedEntry(2)],[PrimedEntry(2)]] in T
374
+ True
375
+ sage: [] in T
376
+ True
377
+ sage: Tableau([[1]]) in T
378
+ True
379
+ sage: StandardSuperTableau([[1]]) in T
380
+ Traceback (most recent call last):
381
+ ...
382
+ ValueError: the entries in a standard tableau must be in bijection
383
+ with 1',1,2',2,...,n
384
+
385
+ sage: [[1,2],[1]] in T
386
+ False
387
+ sage: [[1,1],[5]] in T
388
+ True
389
+ sage: [[1,3,2]] in T
390
+ False
391
+ """
392
+ if isinstance(x, SemistandardSuperTableau):
393
+ return True
394
+ elif Tableaux.__contains__(self, x):
395
+ x = SemistandardSuperTableau._preprocess(x)
396
+ for row in x:
397
+ if any(row[c] > row[c + 1] for c in range(len(row) - 1)):
398
+ return False
399
+ if not all(row[c] < row[c + 1]
400
+ for c in range(len(row) - 1)
401
+ if (row[c].is_primed() or row[c + 1].is_primed())):
402
+ return False
403
+ for row, next in zip(x, x[1:]):
404
+ if any(row[c] > next[c] for c in range(len(next))):
405
+ return False
406
+ if not all(row[c] < next[c]
407
+ for c in range(len(next))
408
+ if (row[c].is_unprimed() or next[c].is_unprimed())):
409
+ return False
410
+ return True
411
+ else:
412
+ return False
413
+
414
+
415
+ class SemistandardSuperTableaux_all(SemistandardSuperTableaux):
416
+ """
417
+ All semistandard super tableaux.
418
+ """
419
+
420
+ def __init__(self):
421
+ r"""
422
+ Initialize the class of all semistandard super tableaux.
423
+
424
+ TESTS::
425
+
426
+ sage: from sage.combinat.super_tableau import SemistandardSuperTableaux_all
427
+ sage: SST = SemistandardSuperTableaux_all(); SST
428
+ Semistandard super tableaux
429
+ """
430
+ Parent.__init__(self, category=InfiniteEnumeratedSets())
431
+ SemistandardSuperTableaux.__init__(self)
432
+
433
+ def _repr_(self) -> str:
434
+ """
435
+ TESTS::
436
+
437
+ sage: repr(SemistandardSuperTableaux())
438
+ 'Semistandard super tableaux'
439
+ """
440
+ return "Semistandard super tableaux"
441
+
442
+
443
+ ################################
444
+ # Standard Super tableaux #
445
+ ################################
446
+ class StandardSuperTableaux(SemistandardSuperTableaux, Parent):
447
+ r"""
448
+ The set of standard super tableaux.
449
+
450
+ A standard super tableau is a tableau whose entries are primed positive
451
+ integers, which are strictly increasing in rows and down columns and
452
+ contains each letters from 1',1,2'...n exactly once.
453
+
454
+ For more information refer [Muth2019]_.
455
+
456
+ INPUT:
457
+
458
+ - ``n`` -- a nonnegative integer or a partition
459
+
460
+ EXAMPLES::
461
+
462
+ sage: SST = StandardSuperTableaux()
463
+ sage: SST
464
+ Standard super tableaux
465
+ sage: SST([["1'",1,"2'",2,"3'"],[3,"4'"]])
466
+ [[1', 1, 2', 2, 3'], [3, 4']]
467
+ sage: SST = StandardSuperTableaux(3)
468
+ sage: SST
469
+ Standard super tableaux of size 3
470
+ sage: SST.first()
471
+ [[1', 1, 2']]
472
+ sage: SST.last()
473
+ [[1'], [1], [2']]
474
+ sage: SST.cardinality()
475
+ 4
476
+ sage: SST.list()
477
+ [[[1', 1, 2']], [[1', 2'], [1]], [[1', 1], [2']], [[1'], [1], [2']]]
478
+ sage: SST = StandardSuperTableaux([3,2])
479
+ sage: SST
480
+ Standard super tableaux of shape [3, 2]
481
+
482
+ TESTS::
483
+
484
+ sage: StandardSuperTableaux()([])
485
+ []
486
+ sage: SST = StandardSuperTableaux([3,2]); SST
487
+ Standard super tableaux of shape [3, 2]
488
+ sage: SST.first()
489
+ [[1', 2', 3'], [1, 2]]
490
+ sage: SST.last()
491
+ [[1', 1, 2'], [2, 3']]
492
+ sage: SST.cardinality()
493
+ 5
494
+ sage: SST.cardinality() == StandardTableaux([3,2]).cardinality()
495
+ True
496
+ sage: SST.list()
497
+ [[[1', 2', 3'], [1, 2]],
498
+ [[1', 1, 3'], [2', 2]],
499
+ [[1', 2', 2], [1, 3']],
500
+ [[1', 1, 2], [2', 3']],
501
+ [[1', 1, 2'], [2, 3']]]
502
+ sage: TestSuite(SST).run()
503
+ """
504
+ @staticmethod
505
+ def __classcall_private__(cls, n=None):
506
+ r"""
507
+ This class returns the appropriate parent based on arguments.
508
+ See the documentation for :class:`StandardTableaux` for more
509
+ information.
510
+
511
+ TESTS::
512
+
513
+ sage: SST = StandardSuperTableaux(); SST
514
+ Standard super tableaux
515
+ sage: StandardSuperTableaux(3)
516
+ Standard super tableaux of size 3
517
+ sage: StandardSuperTableaux([2,2])
518
+ Standard super tableaux of shape [2, 2]
519
+ sage: StandardSuperTableaux(-1)
520
+ Traceback (most recent call last):
521
+ ...
522
+ ValueError: the argument must be a nonnegative integer or a
523
+ partition
524
+ sage: StandardSuperTableaux([[1]])
525
+ Traceback (most recent call last):
526
+ ...
527
+ ValueError: the argument must be a nonnegative integer or a
528
+ partition
529
+ """
530
+ from sage.combinat.partition import _Partitions
531
+ from sage.combinat.skew_partition import SkewPartitions
532
+
533
+ if n is None:
534
+ return StandardSuperTableaux_all()
535
+
536
+ elif n in _Partitions:
537
+ return StandardSuperTableaux_shape(_Partitions(n))
538
+
539
+ elif n in SkewPartitions():
540
+ raise NotImplementedError("standard super tableau for skew "
541
+ "partitions is not implemented yet")
542
+
543
+ if not isinstance(n, (int, Integer)) or n < 0:
544
+ raise ValueError("the argument must be a nonnegative integer"
545
+ " or a partition")
546
+
547
+ return StandardSuperTableaux_size(n)
548
+
549
+ Element = StandardSuperTableau
550
+
551
+ def __contains__(self, x) -> bool:
552
+ """
553
+ Return ``True`` if ``t`` can be interpreted as a
554
+ :class:`StandardSuperTableau`.
555
+
556
+ TESTS::
557
+
558
+ sage: from sage.combinat.shifted_primed_tableau import PrimedEntry
559
+ sage: T = sage.combinat.super_tableau.StandardSuperTableaux_all()
560
+ sage: [[0.5,1],[1.5]] in T
561
+ True
562
+ sage: [[PrimedEntry('1p'),PrimedEntry('2p')],[PrimedEntry(1)]] in T
563
+ True
564
+ sage: [] in T
565
+ True
566
+ sage: Tableau([['1p']]) in T
567
+ True
568
+ sage: StandardSuperTableau([['1p']]) in T
569
+ True
570
+ sage: [[1,2],[1]] in T
571
+ False
572
+ sage: [[1,1],[5]] in T
573
+ False
574
+ sage: [[1,3,2]] in T
575
+ False
576
+ """
577
+ if isinstance(x, StandardSuperTableau):
578
+ return True
579
+ elif Tableaux.__contains__(self, x):
580
+ x = SemistandardSuperTableau._preprocess(x)
581
+ flattened_list = [i for row in x for i in row]
582
+ a = PrimedEntry('1p')
583
+ primed_list = []
584
+ for i in range(len(flattened_list)):
585
+ primed_list.append(a)
586
+ a = a.increase_half()
587
+ # return True
588
+ return sorted(flattened_list) == primed_list and (x or
589
+ (all(row[i] < row[i + 1] for row in x for i in range(len(row) - 1)) and
590
+ all(x[r][c] < x[r + 1][c] for r in range(len(x) - 1)
591
+ for c in range(len(x[r + 1])))))
592
+ else:
593
+ return False
594
+
595
+
596
+ class StandardSuperTableaux_all(StandardSuperTableaux,
597
+ DisjointUnionEnumeratedSets):
598
+ """
599
+ All standard super tableaux.
600
+ """
601
+
602
+ def __init__(self):
603
+ r"""
604
+ Initialize the class of all standard super tableaux.
605
+
606
+ TESTS::
607
+
608
+ sage: from sage.combinat.super_tableau import StandardSuperTableaux_all
609
+ sage: SST = StandardSuperTableaux_all(); SST
610
+ Standard super tableaux
611
+ sage: TestSuite(SST).run()
612
+ """
613
+ StandardSuperTableaux.__init__(self)
614
+ DisjointUnionEnumeratedSets.__init__(self,
615
+ Family(NonNegativeIntegers(),
616
+ StandardSuperTableaux_size),
617
+ facade=True, keepkey=False)
618
+
619
+ def _repr_(self) -> str:
620
+ """
621
+ TESTS::
622
+
623
+ sage: repr(StandardSuperTableaux())
624
+ 'Standard super tableaux'
625
+ """
626
+ return "Standard super tableaux"
627
+
628
+
629
+ class StandardSuperTableaux_size(StandardSuperTableaux,
630
+ DisjointUnionEnumeratedSets):
631
+ """
632
+ Standard super tableaux of fixed size `n`.
633
+
634
+ EXAMPLES::
635
+
636
+ sage: [ t for t in StandardSuperTableaux(1) ]
637
+ [[[1']]]
638
+ sage: [ t for t in StandardSuperTableaux(2) ]
639
+ [[[1', 1]], [[1'], [1]]]
640
+ sage: [ t for t in StandardSuperTableaux(3) ]
641
+ [[[1', 1, 2']], [[1', 2'], [1]], [[1', 1], [2']], [[1'], [1], [2']]]
642
+ sage: StandardSuperTableaux(4)[:]
643
+ [[[1', 1, 2', 2]],
644
+ [[1', 2', 2], [1]],
645
+ [[1', 1, 2], [2']],
646
+ [[1', 1, 2'], [2]],
647
+ [[1', 2'], [1, 2]],
648
+ [[1', 1], [2', 2]],
649
+ [[1', 2], [1], [2']],
650
+ [[1', 2'], [1], [2]],
651
+ [[1', 1], [2'], [2]],
652
+ [[1'], [1], [2'], [2]]]
653
+ """
654
+
655
+ def __init__(self, n):
656
+ r"""
657
+ Initialize the class of all standard super tableaux of size ``n``.
658
+
659
+ TESTS::
660
+
661
+ sage: TestSuite( StandardSuperTableaux(4) ).run()
662
+ """
663
+ StandardSuperTableaux.__init__(self)
664
+ from sage.combinat.partition import Partitions_n
665
+ DisjointUnionEnumeratedSets.__init__(self,
666
+ Family(Partitions_n(n),
667
+ StandardSuperTableaux_shape),
668
+ category=FiniteEnumeratedSets(),
669
+ facade=True, keepkey=False)
670
+ self.size = Integer(n)
671
+
672
+ def _repr_(self) -> str:
673
+ """
674
+ TESTS::
675
+
676
+ sage: StandardSuperTableaux(3)
677
+ Standard super tableaux of size 3
678
+ """
679
+ return "Standard super tableaux of size %s" % self.size
680
+
681
+ def __contains__(self, x) -> bool:
682
+ """
683
+ TESTS::
684
+
685
+ sage: SST3 = StandardSuperTableaux(3)
686
+ sage: all(st in SST3 for st in SST3)
687
+ True
688
+ sage: SST4 = StandardSuperTableaux(4)
689
+ sage: [x for x in SST4 if x in SST3]
690
+ []
691
+ sage: 1 in StandardSuperTableaux(4)
692
+ False
693
+ """
694
+ return (StandardSuperTableaux.__contains__(self, x) and
695
+ sum(map(len, x)) == self.size)
696
+
697
+ def cardinality(self):
698
+ r"""
699
+ Return the number of all standard super tableaux of size ``n``.
700
+
701
+ The standard super tableaux of size `n` are in bijection with the
702
+ corresponding standard tableaux (under the alphabet relabeling). Refer
703
+ :class:`sage.combinat.tableau.StandardTableaux_size` for more details.
704
+
705
+ EXAMPLES::
706
+
707
+ sage: StandardSuperTableaux(3).cardinality()
708
+ 4
709
+ sage: ns = [1,2,3,4,5,6]
710
+ sage: sts = [StandardSuperTableaux(n) for n in ns]
711
+ sage: all(st.cardinality() == len(st.list()) for st in sts)
712
+ True
713
+ sage: StandardSuperTableaux(50).cardinality() # long time
714
+ 27886995605342342839104615869259776
715
+
716
+ TESTS::
717
+
718
+ sage: def cardinality_using_hook_formula(n):
719
+ ....: c = 0
720
+ ....: for p in Partitions(n):
721
+ ....: c += StandardSuperTableaux(p).cardinality()
722
+ ....: return c
723
+ sage: all(cardinality_using_hook_formula(i) ==
724
+ ....: StandardSuperTableaux(i).cardinality()
725
+ ....: for i in range(10))
726
+ True
727
+ """
728
+ return StandardTableaux(self.size).cardinality()
729
+
730
+
731
+ class StandardSuperTableaux_shape(StandardSuperTableaux):
732
+ """
733
+ Standard super tableaux of a fixed shape `p`.
734
+ """
735
+
736
+ def __init__(self, p):
737
+ r"""
738
+ Initialize the class of all standard super tableaux of a given shape.
739
+
740
+ TESTS::
741
+
742
+ sage: TestSuite( StandardSuperTableaux([2,2,1]) ).run()
743
+ """
744
+ super().__init__(category=FiniteEnumeratedSets())
745
+ StandardSuperTableaux.__init__(self)
746
+ self.shape = p
747
+
748
+ def __contains__(self, x) -> bool:
749
+ """
750
+ EXAMPLES::
751
+
752
+ sage: ST = StandardSuperTableaux([2,1,1])
753
+ sage: all(st in ST for st in ST)
754
+ True
755
+ sage: len([x for x in StandardSuperTableaux(4) if x in ST])
756
+ 3
757
+ sage: ST.cardinality()
758
+ 3
759
+ sage: 1 in StandardSuperTableaux([2,1,1])
760
+ False
761
+ """
762
+ return (StandardSuperTableaux.__contains__(self, x) and
763
+ [len(w) for w in x] == self.shape)
764
+
765
+ def _repr_(self) -> str:
766
+ """
767
+ TESTS::
768
+
769
+ sage: repr(StandardSuperTableaux([2,1,1]))
770
+ 'Standard super tableaux of shape [2, 1, 1]'
771
+ """
772
+ return "Standard super tableaux of shape %s" % str(self.shape)
773
+
774
+ def cardinality(self):
775
+ r"""
776
+ Return the number of standard super tableaux of given shape.
777
+
778
+ The standard super tableaux of a fixed shape `p` are in bijection with
779
+ the corresponding standard tableaux (under the alphabet relabeling).
780
+ Refer :class:`sage.combinat.tableau.StandardTableaux_shape` for more
781
+ details.
782
+
783
+ EXAMPLES::
784
+
785
+ sage: StandardSuperTableaux([3,2,1]).cardinality()
786
+ 16
787
+ sage: StandardSuperTableaux([2,2]).cardinality()
788
+ 2
789
+ sage: StandardSuperTableaux([5]).cardinality()
790
+ 1
791
+ sage: StandardSuperTableaux([6,5,5,3]).cardinality()
792
+ 6651216
793
+ sage: StandardSuperTableaux([]).cardinality()
794
+ 1
795
+ """
796
+ pi = self.shape
797
+ return StandardTableaux(pi).cardinality()
798
+
799
+ def __iter__(self):
800
+ r"""
801
+ An iterator for the standard super tableaux associated to the
802
+ shape `p` of ``self``.
803
+
804
+ EXAMPLES::
805
+
806
+ sage: [t for t in StandardSuperTableaux([2,2])]
807
+ [[[1', 2'], [1, 2]], [[1', 1], [2', 2]]]
808
+ sage: [t for t in StandardSuperTableaux([3,2])]
809
+ [[[1', 2', 3'], [1, 2]],
810
+ [[1', 1, 3'], [2', 2]],
811
+ [[1', 2', 2], [1, 3']],
812
+ [[1', 1, 2], [2', 3']],
813
+ [[1', 1, 2'], [2, 3']]]
814
+ sage: st = StandardSuperTableaux([2,1])
815
+ sage: st[0].parent() is st
816
+ True
817
+ """
818
+ pi = self.shape
819
+ for tableau in StandardTableaux(pi):
820
+ yield self.element_class(self, [[PrimedEntry(ZZ(val) / 2) for val in row]
821
+ for row in tableau])