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,13 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Path tableaux
4
+
5
+ - :ref:`sage.combinat.path_tableaux.path_tableau`
6
+ - :ref:`sage.combinat.path_tableaux.dyck_path`
7
+ - :ref:`sage.combinat.path_tableaux.frieze`
8
+ - :ref:`sage.combinat.path_tableaux.semistandard`
9
+ """
10
+ # install the docstring of this module to the containing package
11
+ from sage.misc.namespace_package import install_doc
12
+ install_doc(__package__, __doc__)
13
+ del install_doc
@@ -0,0 +1,29 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Catalog of path tableaux
4
+
5
+ The ``path_tableaux`` object may be used to access examples of various path
6
+ tableau objects currently implemented in Sage. Using tab-completion on this
7
+ object is an easy way to discover and quickly create the path tableaux that
8
+ are available (as listed here).
9
+
10
+ Let ``<tab>`` indicate pressing the :kbd:`Tab` key. So begin by typing
11
+ ``path_tableaux.<tab>`` to the see the currently implemented path tableaux.
12
+
13
+ - :class:`~sage.combinat.path_tableaux.path_tableau.CylindricalDiagram`
14
+ - :class:`~sage.combinat.path_tableaux.dyck_path.DyckPath`
15
+ - :class:`~sage.combinat.path_tableaux.dyck_path.DyckPaths`
16
+ - :class:`~sage.combinat.path_tableaux.frieze.FriezePattern`
17
+ - :class:`~sage.combinat.path_tableaux.frieze.FriezePatterns`
18
+ - :class:`~sage.combinat.path_tableaux.semistandard.SemistandardPathTableau`
19
+ - :class:`~sage.combinat.path_tableaux.semistandard.SemistandardPathTableaux`
20
+ """
21
+
22
+ from sage.misc.lazy_import import lazy_import
23
+
24
+ lazy_import('sage.combinat.path_tableaux.path_tableau', ['CylindricalDiagram'])
25
+ lazy_import('sage.combinat.path_tableaux.dyck_path', ['DyckPath', 'DyckPaths'])
26
+ lazy_import('sage.combinat.path_tableaux.frieze', ['FriezePattern','FriezePatterns'])
27
+ lazy_import('sage.combinat.path_tableaux.semistandard', ['SemistandardPathTableau','SemistandardPathTableaux'])
28
+
29
+ del lazy_import
@@ -0,0 +1,380 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Dyck paths
4
+
5
+ This is an implementation of the abstract base class
6
+ :class:`sage.combinat.path_tableaux.path_tableau.PathTableau`.
7
+ This is the simplest implementation of a path tableau and is included
8
+ to provide a convenient test case and for pedagogical purposes.
9
+
10
+ In this implementation we have sequences of nonnegative integers. These
11
+ are required to be the heights Dyck words (except that we do not require
12
+ the sequence to start or end at height zero). These are in bijection
13
+ with skew standard tableaux with at most two rows. Sequences which start
14
+ and end at height zero are in bijection with noncrossing perfect matchings.
15
+
16
+ AUTHORS:
17
+
18
+ - Bruce Westbury (2018): initial version
19
+ """
20
+
21
+ #*****************************************************************************
22
+ # Copyright (C) 2018 Bruce Westbury <bruce.westbury@gmail.com>,
23
+ #
24
+ # This program is free software: you can redistribute it and/or modify
25
+ # it under the terms of the GNU General Public License as published by
26
+ # the Free Software Foundation, either version 2 of the License, or
27
+ # (at your option) any later version.
28
+ # https://www.gnu.org/licenses/
29
+ # ****************************************************************************
30
+
31
+ from sage.combinat.path_tableaux.path_tableau import PathTableau, PathTableaux
32
+ from sage.combinat.combinatorial_map import combinatorial_map
33
+ from sage.combinat.dyck_word import DyckWord
34
+ from sage.combinat.perfect_matching import PerfectMatching
35
+ from sage.combinat.skew_tableau import SkewTableau
36
+ from sage.combinat.tableau import Tableau, StandardTableau
37
+ from sage.rings.integer import Integer
38
+
39
+ ###############################################################################
40
+
41
+
42
+ class DyckPath(PathTableau):
43
+ r"""
44
+ An instance is the sequence of nonnegative
45
+ integers given by the heights of a Dyck word.
46
+
47
+ INPUT:
48
+
49
+ - a sequence of nonnegative integers
50
+ - a two row standard skew tableau
51
+ - a Dyck word
52
+ - a noncrossing perfect matching
53
+
54
+ EXAMPLES::
55
+
56
+ sage: path_tableaux.DyckPath([0,1,2,1,0])
57
+ [0, 1, 2, 1, 0]
58
+
59
+ sage: w = DyckWord([1,1,0,0])
60
+ sage: path_tableaux.DyckPath(w)
61
+ [0, 1, 2, 1, 0]
62
+
63
+ sage: p = PerfectMatching([(1,2), (3,4)])
64
+ sage: path_tableaux.DyckPath(p)
65
+ [0, 1, 0, 1, 0]
66
+
67
+ sage: t = Tableau([[1,2,4],[3,5,6]])
68
+ sage: path_tableaux.DyckPath(t)
69
+ [0, 1, 2, 1, 2, 1, 0]
70
+
71
+ sage: st = SkewTableau([[None, 1,4],[2,3]])
72
+ sage: path_tableaux.DyckPath(st)
73
+ [1, 2, 1, 0, 1]
74
+
75
+ Here we illustrate the slogan that promotion = rotation::
76
+
77
+ sage: t = path_tableaux.DyckPath([0,1,2,3,2,1,0])
78
+ sage: t.to_perfect_matching()
79
+ [(0, 5), (1, 4), (2, 3)]
80
+
81
+ sage: t = t.promotion()
82
+ sage: t.to_perfect_matching()
83
+ [(0, 3), (1, 2), (4, 5)]
84
+
85
+ sage: t = t.promotion()
86
+ sage: t.to_perfect_matching()
87
+ [(0, 1), (2, 5), (3, 4)]
88
+
89
+ sage: t = t.promotion()
90
+ sage: t.to_perfect_matching()
91
+ [(0, 5), (1, 4), (2, 3)]
92
+ """
93
+ @staticmethod
94
+ def __classcall_private__(cls, ot):
95
+ r"""
96
+ This ensures that a tableau is only ever constructed as an
97
+ ``element_class`` call of an appropriate parent.
98
+
99
+ TESTS::
100
+
101
+ sage: t = path_tableaux.DyckPath([0,1,2,1,0])
102
+
103
+ sage: t.parent()
104
+ <sage.combinat.path_tableaux.dyck_path.DyckPaths_with_category object at ...>
105
+ """
106
+ return DyckPaths()(ot)
107
+
108
+ def __init__(self, parent, ot, check=True):
109
+ r"""
110
+ Initialize a Dyck path.
111
+
112
+ TESTS::
113
+
114
+ sage: D = path_tableaux.DyckPath(Tableau([[1,2], [3,4]]))
115
+ sage: TestSuite(D).run()
116
+
117
+ sage: D = path_tableaux.DyckPath(PerfectMatching([(1,4), (2,3), (5,6)]))
118
+ sage: TestSuite(D).run()
119
+
120
+ sage: t = path_tableaux.DyckPath([0,1,2,3,2,1,0])
121
+ sage: TestSuite(t).run()
122
+
123
+ sage: path_tableaux.DyckPath(PerfectMatching([(1, 3), (2, 4), (5, 6)]))
124
+ Traceback (most recent call last):
125
+ ...
126
+ ValueError: the perfect matching must be non crossing
127
+ sage: path_tableaux.DyckPath(Tableau([[1,2,5],[3,5,6]]))
128
+ Traceback (most recent call last):
129
+ ...
130
+ ValueError: the tableau must be standard
131
+ sage: path_tableaux.DyckPath(Tableau([[1,2,4],[3,5,6],[7]]))
132
+ Traceback (most recent call last):
133
+ ...
134
+ ValueError: the tableau must have at most two rows
135
+ sage: path_tableaux.DyckPath(SkewTableau([[None, 1,4],[2,3],[5]]))
136
+ Traceback (most recent call last):
137
+ ...
138
+ ValueError: the skew tableau must have at most two rows
139
+ sage: path_tableaux.DyckPath([0,1,2.5,1,0])
140
+ Traceback (most recent call last):
141
+ ...
142
+ ValueError: [0, 1, 2.5..., 1, 0] is not a sequence of integers
143
+ sage: path_tableaux.DyckPath(Partition([3,2,1]))
144
+ Traceback (most recent call last):
145
+ ...
146
+ ValueError: invalid input [3, 2, 1]
147
+ """
148
+ w = None
149
+
150
+ if isinstance(ot, DyckWord):
151
+ w = ot.heights()
152
+
153
+ elif isinstance(ot, PerfectMatching):
154
+ if ot.is_noncrossing():
155
+ u = [1]*ot.size()
156
+ for a in ot.arcs():
157
+ u[a[1]-1] = 0
158
+ w = DyckWord(u).heights()
159
+ else:
160
+ raise ValueError("the perfect matching must be non crossing")
161
+
162
+ elif isinstance(ot, Tableau):
163
+ if len(ot) > 2:
164
+ raise ValueError("the tableau must have at most two rows")
165
+ if ot.is_standard():
166
+ u = [1] * ot.size()
167
+ for i in ot[1]:
168
+ u[i-1] = 0
169
+ w = DyckWord(u).heights()
170
+ else:
171
+ raise ValueError("the tableau must be standard")
172
+
173
+ elif isinstance(ot, SkewTableau):
174
+ if len(ot) > 2:
175
+ raise ValueError("the skew tableau must have at most two rows")
176
+ # The check that ot is standard is not implemented
177
+ c = ot.to_chain()
178
+ w = [0]*len(c)
179
+ for i,a in enumerate(c):
180
+ if len(a) == 1:
181
+ w[i] = a[0]
182
+ else:
183
+ w[i] = a[0] - a[1]
184
+
185
+ elif isinstance(ot, (list, tuple)):
186
+ try:
187
+ w = tuple([Integer(a) for a in ot])
188
+ except TypeError:
189
+ raise ValueError("%s is not a sequence of integers" % ot)
190
+
191
+ if w is None:
192
+ raise ValueError("invalid input %s" % ot)
193
+
194
+ PathTableau.__init__(self, parent, w, check=check)
195
+
196
+ def check(self):
197
+ """
198
+ Check that ``self`` is a valid path.
199
+
200
+ EXAMPLES::
201
+
202
+ sage: path_tableaux.DyckPath([0,1,0,-1,0]) # indirect doctest
203
+ Traceback (most recent call last):
204
+ ...
205
+ ValueError: [0, 1, 0, -1, 0] has a negative entry
206
+
207
+ sage: path_tableaux.DyckPath([0,1,3,1,0]) # indirect doctest
208
+ Traceback (most recent call last):
209
+ ...
210
+ ValueError: [0, 1, 3, 1, 0] is not a Dyck path
211
+ """
212
+ if any(a < 0 for a in self):
213
+ raise ValueError("%s has a negative entry" % (str(self)))
214
+ for i in range(len(self) - 1):
215
+ if abs(self[i + 1] - self[i]) != 1:
216
+ raise ValueError("%s is not a Dyck path" % str(self))
217
+
218
+ def local_rule(self, i):
219
+ r"""
220
+ This has input a list of objects. This method first takes
221
+ the list of objects of length three consisting of the `(i-1)`-st,
222
+ `i`-th and `(i+1)`-term and applies the rule. It then replaces
223
+ the `i`-th object by the object returned by the rule.
224
+
225
+ EXAMPLES::
226
+
227
+ sage: t = path_tableaux.DyckPath([0,1,2,3,2,1,0])
228
+ sage: t.local_rule(3)
229
+ [0, 1, 2, 1, 2, 1, 0]
230
+
231
+ TESTS::
232
+
233
+ sage: t = path_tableaux.DyckPath([0,1,2,3,2,1,0])
234
+ sage: t.local_rule(0)
235
+ Traceback (most recent call last):
236
+ ...
237
+ ValueError: 0 is not a valid integer
238
+ sage: t.local_rule(5)
239
+ [0, 1, 2, 3, 2, 1, 0]
240
+ sage: t.local_rule(6)
241
+ Traceback (most recent call last):
242
+ ...
243
+ ValueError: 6 is not a valid integer
244
+ """
245
+ def _rule(x):
246
+ """
247
+ This is the rule on a sequence of three letters.
248
+ """
249
+ return abs(x[0]-x[1]+x[2])
250
+
251
+ if not (i > 0 and i < len(self)-1):
252
+ raise ValueError("%d is not a valid integer" % i)
253
+
254
+ with self.clone() as result:
255
+ result[i] = _rule(self[i-1:i+2])
256
+
257
+ return result
258
+
259
+ def is_skew(self):
260
+ r"""
261
+ Return ``True`` if ``self`` is skew and ``False`` if not.
262
+
263
+ EXAMPLES::
264
+
265
+ sage: path_tableaux.DyckPath([0,1,2,1]).is_skew()
266
+ False
267
+
268
+ sage: path_tableaux.DyckPath([1,0,1,2,1]).is_skew()
269
+ True
270
+ """
271
+ return self[0] != 0
272
+
273
+ @combinatorial_map(name='to Dyck word')
274
+ def to_DyckWord(self):
275
+ r"""
276
+ Convert ``self`` to a Dyck word.
277
+
278
+ EXAMPLES::
279
+
280
+ sage: c = path_tableaux.DyckPath([0,1,2,1,0])
281
+ sage: c.to_DyckWord()
282
+ [1, 1, 0, 0]
283
+ """
284
+ return DyckWord(heights_sequence=list(self))
285
+
286
+ def descents(self):
287
+ r"""
288
+ Return the descent set of ``self``.
289
+
290
+ EXAMPLES::
291
+
292
+ sage: path_tableaux.DyckPath([0,1,2,1,2,1,0,1,0]).descents()
293
+ {3, 6}
294
+ """
295
+ result = set()
296
+
297
+ for i in range(1,len(self)-1):
298
+ if self[i] < self[i-1] and self[i] < self[i+1]:
299
+ result.add(i)
300
+
301
+ return result
302
+
303
+ def to_word(self):
304
+ r"""
305
+ Return the word in the alphabet `\{0,1\}` associated to ``self``.
306
+
307
+ EXAMPLES::
308
+
309
+ sage: path_tableaux.DyckPath([1,0,1,2,1]).to_word()
310
+ [0, 1, 1, 0]
311
+ """
312
+ return [(self[i+1] - self[i] + 1) // 2 for i in range(self.size()-1)]
313
+
314
+ def to_perfect_matching(self):
315
+ r"""
316
+ Return the perfect matching associated to ``self``.
317
+
318
+ EXAMPLES::
319
+
320
+ sage: path_tableaux.DyckPath([0,1,2,1,2,1,0,1,0]).to_perfect_matching()
321
+ [(0, 5), (1, 2), (3, 4), (6, 7)]
322
+
323
+ TESTS::
324
+
325
+ sage: path_tableaux.DyckPath([1,2,1,2,1,0,1]).to_perfect_matching()
326
+ Traceback (most recent call last):
327
+ ...
328
+ ValueError: [1, 2, 1, 2, 1, 0, 1] does not start at 0
329
+ """
330
+ if self.is_skew():
331
+ raise ValueError( "%s does not start at 0" % (str(self)) )
332
+ w = self.to_word()
333
+ y = DyckWord(w)
334
+ pairs = set()
335
+ for i, a in enumerate(y):
336
+ c = y.associated_parenthesis(i)
337
+ if i < c:
338
+ pairs.add((i,c))
339
+ return PerfectMatching(pairs)
340
+
341
+ def to_tableau(self):
342
+ r"""
343
+ Return the skew tableau associated to ``self``.
344
+
345
+ EXAMPLES::
346
+
347
+ sage: T = path_tableaux.DyckPath([0,1,2,3,2,3])
348
+ sage: T.to_tableau()
349
+ [[1, 2, 3, 5], [4]]
350
+
351
+ sage: U = path_tableaux.DyckPath([2,3,2,3])
352
+ sage: U.to_tableau()
353
+ [[None, None, 1, 3], [2]]
354
+ """
355
+ w = self.to_word()
356
+ top = [i + 1 for i, a in enumerate(w) if a == 1]
357
+ bot = [i + 1 for i, a in enumerate(w) if a == 0]
358
+ if self.is_skew():
359
+ return SkewTableau([[None]*self[0]+top, bot])
360
+ else:
361
+ return StandardTableau([top, bot])
362
+
363
+
364
+ class DyckPaths(PathTableaux):
365
+ """
366
+ The parent class for DyckPath.
367
+ """
368
+
369
+ def _an_element_(self):
370
+ """
371
+ Return an element of ``self``.
372
+
373
+ EXAMPLES::
374
+
375
+ sage: path_tableaux.DyckPaths()._an_element_()
376
+ [0, 1, 2, 1, 0]
377
+ """
378
+ return DyckPath([0,1,2,1,0])
379
+
380
+ Element = DyckPath