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,489 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Ribbon shaped tableaux
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>,
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ #
10
+ # This code is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # General Public License for more details.
14
+ #
15
+ # The full text of the GPL is available at:
16
+ #
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ from sage.combinat.skew_tableau import SkewTableau, SkewTableaux, StandardSkewTableaux
21
+ from sage.combinat.tableau import Tableaux
22
+ from sage.combinat.permutation import descents_composition_first, descents_composition_list, descents_composition_last
23
+ from sage.rings.integer import Integer
24
+ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
25
+ from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
26
+ from sage.categories.sets_cat import Sets
27
+
28
+
29
+ class RibbonShapedTableau(SkewTableau):
30
+ r"""
31
+ A ribbon shaped tableau.
32
+
33
+ For the purposes of this class, a ribbon shaped tableau is a skew
34
+ tableau whose shape is a skew partition which:
35
+
36
+ - has at least one cell in row `1`;
37
+
38
+ - has at least one cell in column `1`;
39
+
40
+ - has exactly one cell in each of `q` consecutive diagonals, for
41
+ some nonnegative integer `q`.
42
+
43
+ A ribbon is given by a list of the rows from top to bottom.
44
+
45
+ EXAMPLES::
46
+
47
+ sage: x = RibbonShapedTableau([[None, None, None, 2, 3], [None, 1, 4, 5], [3, 2]]); x
48
+ [[None, None, None, 2, 3], [None, 1, 4, 5], [3, 2]]
49
+ sage: x.pp()
50
+ . . . 2 3
51
+ . 1 4 5
52
+ 3 2
53
+ sage: x.shape()
54
+ [5, 4, 2] / [3, 1]
55
+
56
+ The entries labeled by ``None`` correspond to the inner partition.
57
+ Using ``None`` is optional; the entries will be shifted accordingly. ::
58
+
59
+ sage: x = RibbonShapedTableau([[2,3],[1,4,5],[3,2]]); x.pp()
60
+ . . . 2 3
61
+ . 1 4 5
62
+ 3 2
63
+
64
+ TESTS::
65
+
66
+ sage: r = RibbonShapedTableau([[1], [2,3], [4, 5, 6]])
67
+ sage: r.to_permutation()
68
+ [4, 5, 6, 2, 3, 1]
69
+
70
+ sage: RibbonShapedTableau([[1,2],[3,4]]).evaluation()
71
+ [1, 1, 1, 1]
72
+ """
73
+ @staticmethod
74
+ def __classcall_private__(cls, rows):
75
+ r"""
76
+ Return a ribbon shaped tableau object.
77
+
78
+ EXAMPLES::
79
+
80
+ sage: RibbonShapedTableau([[2,3],[1,4,5]])
81
+ [[None, None, 2, 3], [1, 4, 5]]
82
+
83
+ TESTS::
84
+
85
+ sage: RibbonShapedTableau([4,5])
86
+ Traceback (most recent call last):
87
+ ...
88
+ TypeError: rows must be lists of positive integers
89
+
90
+ sage: RibbonShapedTableau([[2,3],[-4,5]])
91
+ Traceback (most recent call last):
92
+ ...
93
+ TypeError: r must be a list of positive integers
94
+ """
95
+ try:
96
+ r = [tuple(r) for r in rows]
97
+ except TypeError:
98
+ raise TypeError("rows must be lists of positive integers")
99
+ if not r:
100
+ return StandardRibbonShapedTableaux()(r)
101
+ if all(j is None or (isinstance(j, (int, Integer)) and j > 0)
102
+ for i in r for j in i):
103
+ return StandardRibbonShapedTableaux()(r)
104
+ raise TypeError("r must be a list of positive integers")
105
+
106
+ def __init__(self, parent, t):
107
+ """
108
+ Initialize ``self``.
109
+
110
+ EXAMPLES::
111
+
112
+ sage: R = RibbonShapedTableau([[2,3],[1,4,5]])
113
+ sage: TestSuite(R).run()
114
+ """
115
+ if not isinstance(t, SkewTableau):
116
+ # scrubbing None
117
+ t = [[i for i in row if i is not None] for row in t]
118
+
119
+ st = []
120
+ space_count = 0
121
+ for row in reversed(t):
122
+ st.append([None] * space_count + row)
123
+ space_count += len(row) - 1
124
+ st.reverse()
125
+ t = st
126
+ else:
127
+ t = list(t)
128
+
129
+ SkewTableau.__init__(self, parent, t)
130
+
131
+ def height(self):
132
+ """
133
+ Return the height of ``self``.
134
+
135
+ The height is given by the number of rows in the outer partition.
136
+
137
+ EXAMPLES::
138
+
139
+ sage: RibbonShapedTableau([[2,3],[1,4,5]]).height()
140
+ 2
141
+ """
142
+ return len(self.outer_shape())
143
+
144
+ def spin(self):
145
+ """
146
+ Return the spin of ``self``.
147
+
148
+ EXAMPLES::
149
+
150
+ sage: RibbonShapedTableau([[2,3],[1,4,5]]).spin()
151
+ 1/2
152
+ """
153
+ return Integer(self.height() - 1) / 2
154
+
155
+ def width(self):
156
+ """
157
+ Return the width of the ribbon.
158
+
159
+ This is given by the length of the longest row in the outer partition.
160
+
161
+ EXAMPLES::
162
+
163
+ sage: RibbonShapedTableau([[2,3],[1,4,5]]).width()
164
+ 4
165
+ sage: RibbonShapedTableau([]).width()
166
+ 0
167
+ """
168
+ return len(self[0]) if self else 0
169
+
170
+
171
+ class RibbonShapedTableaux(SkewTableaux):
172
+ """
173
+ The set of all ribbon shaped tableaux.
174
+ """
175
+ @staticmethod
176
+ def __classcall_private__(cls, shape=None, **kwds):
177
+ """
178
+ Normalize input to ensure a unique representation and pick the correct
179
+ class based on input.
180
+
181
+ The ``shape`` parameter is currently ignored.
182
+
183
+ EXAMPLES::
184
+
185
+ sage: S1 = RibbonShapedTableaux([4, 2, 2, 1])
186
+ sage: S2 = RibbonShapedTableaux((4, 2, 2, 1))
187
+ sage: S1 is S2
188
+ True
189
+ """
190
+ # if shape is not None:
191
+ # from sage.combinat.partition import Partition
192
+ # return RibbonShapedTableaux_shape(Partition(shape))
193
+
194
+ # Otherwise arg0 takes the place of the category in pickling
195
+ return super().__classcall__(cls, **kwds)
196
+
197
+ def __init__(self, category=None):
198
+ """
199
+ Initialize ``self``.
200
+
201
+ EXAMPLES::
202
+
203
+ sage: S = RibbonShapedTableaux() # needs sage.graphs
204
+ sage: TestSuite(S).run() # needs sage.graphs
205
+ """
206
+ if category is None:
207
+ category = Sets()
208
+
209
+ SkewTableaux.__init__(self, category=category)
210
+
211
+ def _repr_(self):
212
+ """
213
+ TESTS::
214
+
215
+ sage: repr(RibbonShapedTableaux()) # indirect doctest
216
+ 'Ribbon shaped tableaux'
217
+ """
218
+ return "Ribbon shaped tableaux"
219
+
220
+ Element = RibbonShapedTableau
221
+ options = Tableaux.options
222
+
223
+ def from_shape_and_word(self, shape, word):
224
+ """
225
+ Return the ribbon corresponding to the given ribbon shape and word.
226
+
227
+ EXAMPLES::
228
+
229
+ sage: RibbonShapedTableaux().from_shape_and_word([1,3],[1,3,3,7])
230
+ [[None, None, 1], [3, 3, 7]]
231
+ """
232
+ pos = 0
233
+ r = []
234
+ for l in shape:
235
+ r.append(word[pos:pos + l])
236
+ pos += l
237
+ return self.element_class(self, r)
238
+
239
+
240
+ class StandardRibbonShapedTableaux(StandardSkewTableaux):
241
+ """
242
+ The set of all standard ribbon shaped tableaux.
243
+
244
+ INPUT:
245
+
246
+ - ``shape`` -- (optional) the composition shape of the rows
247
+ """
248
+ @staticmethod
249
+ def __classcall_private__(cls, shape=None, **kwds):
250
+ """
251
+ Normalize input to ensure a unique representation and pick the correct
252
+ class based on input.
253
+
254
+ EXAMPLES::
255
+
256
+ sage: S1 = StandardRibbonShapedTableaux([4, 2, 2, 1])
257
+ sage: S2 = StandardRibbonShapedTableaux((4, 2, 2, 1))
258
+ sage: S1 is S2
259
+ True
260
+ """
261
+ if shape is not None:
262
+ from sage.combinat.partition import Partition
263
+ return StandardRibbonShapedTableaux_shape(Partition(shape))
264
+
265
+ # Otherwise arg0 takes the place of the category in pickling
266
+ return super().__classcall__(cls, **kwds)
267
+
268
+ def __init__(self, category=None):
269
+ """
270
+ Initialize ``self``.
271
+
272
+ EXAMPLES::
273
+
274
+ sage: # needs sage.graphs sage.modules
275
+ sage: S = StandardRibbonShapedTableaux()
276
+ sage: TestSuite(S).run()
277
+ """
278
+ if category is None:
279
+ category = InfiniteEnumeratedSets()
280
+
281
+ StandardSkewTableaux.__init__(self, category=category)
282
+
283
+ def _repr_(self):
284
+ """
285
+ TESTS::
286
+
287
+ sage: repr(StandardRibbonShapedTableaux()) # indirect doctest
288
+ 'Standard ribbon shaped tableaux'
289
+ """
290
+ return "Standard ribbon shaped tableaux"
291
+
292
+ def __iter__(self):
293
+ """
294
+ Iterate through ``self``.
295
+
296
+ EXAMPLES::
297
+
298
+ sage: # needs sage.graphs sage.modules
299
+ sage: it = StandardRibbonShapedTableaux().__iter__()
300
+ sage: [next(it) for x in range(10)]
301
+ [[],
302
+ [[1]],
303
+ [[1, 2]],
304
+ [[1], [2]],
305
+ [[1, 2, 3]],
306
+ [[None, 1], [2, 3]],
307
+ [[None, 2], [1, 3]],
308
+ [[1], [2], [3]],
309
+ [[1, 2, 3, 4]],
310
+ [[None, None, 1], [2, 3, 4]]]
311
+ """
312
+ from sage.combinat.partition import _Partitions
313
+ for p in _Partitions:
314
+ for r in StandardRibbonShapedTableaux_shape(p):
315
+ yield self.element_class(self, r)
316
+
317
+ Element = RibbonShapedTableau
318
+ options = Tableaux.options
319
+
320
+ def from_shape_and_word(self, shape, word):
321
+ """
322
+ Return the ribbon corresponding to the given ribbon shape and word.
323
+
324
+ EXAMPLES::
325
+
326
+ sage: StandardRibbonShapedTableaux().from_shape_and_word([2,3],[1,2,3,4,5])
327
+ [[None, None, 1, 2], [3, 4, 5]]
328
+ """
329
+ pos = 0
330
+ r = []
331
+ for l in shape:
332
+ r.append(word[pos:pos + l])
333
+ pos += l
334
+ return self.element_class(self, r)
335
+
336
+ def from_permutation(self, p):
337
+ """
338
+ Return a standard ribbon of size ``len(p)`` from a permutation ``p``. The
339
+ lengths of each row are given by the distance between the descents
340
+ of the permutation ``p``.
341
+
342
+ EXAMPLES::
343
+
344
+ sage: import sage.combinat.ribbon_shaped_tableau as rst
345
+ sage: [StandardRibbonShapedTableaux().from_permutation(p)
346
+ ....: for p in Permutations(3)]
347
+ [[[1, 2, 3]],
348
+ [[None, 2], [1, 3]],
349
+ [[1, 3], [2]],
350
+ [[None, 1], [2, 3]],
351
+ [[1, 2], [3]],
352
+ [[1], [2], [3]]]
353
+ """
354
+ if not p:
355
+ return self.element_class(self, [])
356
+
357
+ comp = p.descents()
358
+
359
+ if not comp:
360
+ return self.element_class(self, [p[:]])
361
+
362
+ r = [[p[j] for j in range(comp[0])]]
363
+ r.extend([p[j] for j in range(comp[i], comp[i + 1])]
364
+ for i in range(len(comp) - 1))
365
+ r.append([p[j] for j in range(comp[-1], len(p))])
366
+ r.reverse()
367
+ return self.element_class(self, r)
368
+
369
+
370
+ class StandardRibbonShapedTableaux_shape(StandardRibbonShapedTableaux):
371
+ """
372
+ Class of standard ribbon shaped tableaux of ribbon shape ``shape``.
373
+
374
+ EXAMPLES::
375
+
376
+ sage: StandardRibbonShapedTableaux([2,2])
377
+ Standard ribbon shaped tableaux of shape [2, 2]
378
+ sage: StandardRibbonShapedTableaux([2,2]).first()
379
+ [[None, 2, 4], [1, 3]]
380
+ sage: StandardRibbonShapedTableaux([2,2]).last()
381
+ [[None, 1, 2], [3, 4]]
382
+
383
+ sage: # needs sage.graphs sage.modules
384
+ sage: StandardRibbonShapedTableaux([2,2]).cardinality()
385
+ 5
386
+ sage: StandardRibbonShapedTableaux([2,2]).list()
387
+ [[[None, 1, 3], [2, 4]],
388
+ [[None, 1, 2], [3, 4]],
389
+ [[None, 2, 3], [1, 4]],
390
+ [[None, 2, 4], [1, 3]],
391
+ [[None, 1, 4], [2, 3]]]
392
+ sage: StandardRibbonShapedTableaux([3,2,2]).cardinality()
393
+ 155
394
+ """
395
+ @staticmethod
396
+ def __classcall_private__(cls, shape):
397
+ """
398
+ Normalize input to ensure a unique representation.
399
+
400
+ EXAMPLES::
401
+
402
+ sage: S = StandardRibbonShapedTableaux([2,2])
403
+ sage: S2 = StandardRibbonShapedTableaux((2,2))
404
+ sage: S is S2
405
+ True
406
+ """
407
+ return super(StandardRibbonShapedTableaux, cls).__classcall__(cls, tuple(shape))
408
+
409
+ def __init__(self, shape):
410
+ """
411
+ TESTS::
412
+
413
+ sage: S = StandardRibbonShapedTableaux([2,2])
414
+ sage: TestSuite(S).run() # needs sage.graphs sage.modules
415
+ """
416
+ self.shape = shape
417
+ StandardRibbonShapedTableaux.__init__(self, FiniteEnumeratedSets())
418
+
419
+ def _repr_(self):
420
+ """
421
+ TESTS::
422
+
423
+ sage: StandardRibbonShapedTableaux([2,2])
424
+ Standard ribbon shaped tableaux of shape [2, 2]
425
+ """
426
+ return "Standard ribbon shaped tableaux of shape %s" % list(self.shape)
427
+
428
+ def first(self):
429
+ """
430
+ Return the first standard ribbon of ``self``.
431
+
432
+ EXAMPLES::
433
+
434
+ sage: StandardRibbonShapedTableaux([2,2]).first()
435
+ [[None, 2, 4], [1, 3]]
436
+ """
437
+ return self.from_permutation(descents_composition_first(self.shape))
438
+
439
+ def last(self):
440
+ """
441
+ Return the last standard ribbon of ``self``.
442
+
443
+ EXAMPLES::
444
+
445
+ sage: StandardRibbonShapedTableaux([2,2]).last()
446
+ [[None, 1, 2], [3, 4]]
447
+ """
448
+ return self.from_permutation(descents_composition_last(self.shape))
449
+
450
+ def __iter__(self):
451
+ """
452
+ An iterator for the standard ribbon of ``self``.
453
+
454
+ EXAMPLES::
455
+
456
+ sage: [t for t in StandardRibbonShapedTableaux([2,2])] # needs sage.graphs sage.modules
457
+ [[[None, 1, 3], [2, 4]],
458
+ [[None, 1, 2], [3, 4]],
459
+ [[None, 2, 3], [1, 4]],
460
+ [[None, 2, 4], [1, 3]],
461
+ [[None, 1, 4], [2, 3]]]
462
+ """
463
+ for p in descents_composition_list(self.shape):
464
+ yield self.from_permutation(p)
465
+
466
+
467
+ class Ribbon_class(RibbonShapedTableau):
468
+ """
469
+ This exists solely for unpickling ``Ribbon_class`` objects.
470
+ """
471
+
472
+ def __setstate__(self, state):
473
+ r"""
474
+ Unpickle old ``Ribbon_class`` objects.
475
+
476
+ EXAMPLES::
477
+
478
+ sage: loads(b'x\x9ck`J.NLO\xd5K\xce\xcfM\xca\xccK,\xd1+\xcaLJ\xca\xcf\xe3\n\x02S\xf1\xc99\x89\xc5\xc5\\\x85\x8c\x9a\x8d\x85L\xb5\x85\xcc\x1a\xa1\xac\xf1\x19\x89\xc5\x19\x85,~@VNfqI!kl!\x9bFl!\xbb\x06\xc4\x9c\xa2\xcc\xbc\xf4b\xbd\xcc\xbc\x92\xd4\xf4\xd4"\xae\xdc\xc4\xec\xd4x\x18\xa7\x90#\x94\xd1\xb05\xa8\x903\x03\xc80\x022\xb8Rc\x0b\xb95@<c \x8f\x07\xc40\x012xSSK\x93\xf4\x00l\x811\x17')
479
+ [[None, 1, 2], [3, 4]]
480
+ sage: loads(dumps( RibbonShapedTableau([[3,2,1], [1,1]]) )) # indirect doctest
481
+ [[None, 3, 2, 1], [1, 1]]
482
+ """
483
+ self.__class__ = RibbonShapedTableau
484
+ self.__init__(RibbonShapedTableaux(), state['_list'])
485
+
486
+
487
+ from sage.misc.persist import register_unpickle_override
488
+ register_unpickle_override('sage.combinat.ribbon', 'Ribbon_class', Ribbon_class)
489
+ register_unpickle_override('sage.combinat.ribbon', 'StandardRibbons_shape', StandardRibbonShapedTableaux)