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,392 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Bijection classes for type `D_4^{(3)}`
5
+
6
+ Part of the (internal) classes which runs the bijection between rigged
7
+ configurations and KR tableaux of type `D_4^{(3)}`.
8
+
9
+ AUTHORS:
10
+
11
+ - Travis Scrimshaw (2014-09-10): Initial version
12
+
13
+ TESTS::
14
+
15
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 3], [[2, 1]])
16
+ sage: from sage.combinat.rigged_configurations.bij_type_D_tri import KRTToRCBijectionTypeDTri
17
+ sage: bijection = KRTToRCBijectionTypeDTri(KRT(pathlist=[[-1,2]]))
18
+ sage: TestSuite(bijection).run()
19
+ sage: RC = RiggedConfigurations(['D', 4, 3], [[2, 1]])
20
+ sage: from sage.combinat.rigged_configurations.bij_type_D_tri import RCToKRTBijectionTypeDTri
21
+ sage: bijection = RCToKRTBijectionTypeDTri(RC(partition_list=[[],[]]))
22
+ sage: TestSuite(bijection).run()
23
+ """
24
+
25
+ # ****************************************************************************
26
+ # Copyright (C) 2014 Travis Scrimshaw <tscrim@ucdavis.edu>
27
+ #
28
+ # Distributed under the terms of the GNU General Public License (GPL)
29
+ #
30
+ # This code is distributed in the hope that it will be useful,
31
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
32
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
33
+ # General Public License for more details.
34
+ #
35
+ # The full text of the GPL is available at:
36
+ #
37
+ # https://www.gnu.org/licenses/
38
+ # ****************************************************************************
39
+
40
+ from sage.combinat.rigged_configurations.bij_type_A import KRTToRCBijectionTypeA
41
+ from sage.combinat.rigged_configurations.bij_type_A import RCToKRTBijectionTypeA
42
+
43
+
44
+ class KRTToRCBijectionTypeDTri(KRTToRCBijectionTypeA):
45
+ r"""
46
+ Specific implementation of the bijection from KR tableaux to rigged
47
+ configurations for type `D_4^{(3)}`.
48
+
49
+ This inherits from type `A_n^{(1)}` because we use the same methods in
50
+ some places.
51
+ """
52
+
53
+ def next_state(self, val):
54
+ r"""
55
+ Build the next state for type `D_4^{(3)}`.
56
+
57
+ TESTS::
58
+
59
+ sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 3], [[2,1]])
60
+ sage: from sage.combinat.rigged_configurations.bij_type_D_tri import KRTToRCBijectionTypeDTri
61
+ sage: bijection = KRTToRCBijectionTypeDTri(KRT(pathlist=[[-1,2]]))
62
+ sage: bijection.cur_path.insert(0, [])
63
+ sage: bijection.cur_dims.insert(0, [0, 1])
64
+ sage: bijection.cur_path[0].insert(0, [2])
65
+ sage: bijection.next_state(2)
66
+ """
67
+ tableau_height = len(self.cur_path[0]) - 1
68
+
69
+ if val == 'E':
70
+ self.ret_rig_con[0].insert_cell(0)
71
+ self.ret_rig_con[1].insert_cell(0)
72
+ if tableau_height == 0:
73
+ self.ret_rig_con[0].insert_cell(0)
74
+ self._update_vacancy_nums(0)
75
+ self._update_vacancy_nums(1)
76
+ self._update_partition_values(0)
77
+ self._update_partition_values(1)
78
+ return
79
+
80
+ if val > 0:
81
+ # If it is a regular value, we follow the A_n rules
82
+ KRTToRCBijectionTypeA.next_state(self, val)
83
+ return
84
+
85
+ pos_val = -val
86
+
87
+ if pos_val == 0:
88
+ if len(self.ret_rig_con[0]) > 0:
89
+ max_width = self.ret_rig_con[0][0]
90
+ else:
91
+ max_width = 1
92
+ max_width = self.ret_rig_con[0].insert_cell(max_width)
93
+ width_n = max_width + 1
94
+
95
+ # Follow regular A_n rules
96
+ for a in reversed(range(tableau_height, 2)):
97
+ max_width = self.ret_rig_con[a].insert_cell(max_width)
98
+ self._update_vacancy_nums(0)
99
+ self._update_partition_values(0)
100
+ self._update_vacancy_nums(1)
101
+ self._update_partition_values(1)
102
+
103
+ # Make the largest string at \nu^{(1)} quasi-singular
104
+ p = self.ret_rig_con[0]
105
+ num_rows = len(p)
106
+ for i in range(num_rows):
107
+ if p._list[i] == width_n:
108
+ j = i+1
109
+ while j < num_rows and p._list[j] == width_n \
110
+ and p.vacancy_numbers[j] == p.rigging[j]:
111
+ j += 1
112
+ p.rigging[j-1] -= 1
113
+ break
114
+ return
115
+
116
+ case_S = [None] * 2
117
+ pos_val = -val
118
+
119
+ if pos_val < 3:
120
+ # Always add a cell to the first singular value in the first
121
+ # tableau we are updating.
122
+ if len(self.ret_rig_con[pos_val - 1]) > 0:
123
+ max_width = self.ret_rig_con[pos_val - 1][0]
124
+ else:
125
+ max_width = 1
126
+
127
+ # Add cells similar to type A_n but we move to the right
128
+ for a in range(pos_val - 1, 2):
129
+ max_width = self.ret_rig_con[a].insert_cell(max_width)
130
+ case_S[a] = max_width
131
+ else:
132
+ if len(self.ret_rig_con[0]) > 0:
133
+ max_width = self.ret_rig_con[0][0]
134
+ else:
135
+ max_width = 1
136
+
137
+ # Special case for going through 0
138
+ # If we find a quasi-singular string first, then we are in case (Q, S)
139
+ # otherwise we will find a singular string and insert 2 cells
140
+ P = self.ret_rig_con[0]
141
+ num_rows = len(P)
142
+ case_QS = False
143
+ for i in range(num_rows + 1):
144
+ if i == num_rows:
145
+ max_width = 0
146
+ if case_QS:
147
+ P._list.append(1)
148
+ P.vacancy_numbers.append(None)
149
+ # Go through our partition until we find a length of greater than 1
150
+ j = len(P._list) - 1
151
+ while j >= 0 and P._list[j] == 1:
152
+ j -= 1
153
+ P.rigging.insert(j + 1, None)
154
+ width_n = 1
155
+ else:
156
+ # Go through our partition until we find a length of greater than 2
157
+ j = len(P._list) - 1
158
+ while j >= 0 and P._list[j] <= 2:
159
+ j -= 1
160
+ P._list.insert(j+1, 2)
161
+ P.vacancy_numbers.insert(j+1, None)
162
+ P.rigging.insert(j+1, None)
163
+ break
164
+ elif P._list[i] <= max_width:
165
+ if P.vacancy_numbers[i] == P.rigging[i]:
166
+ max_width = P._list[i]
167
+ if case_QS:
168
+ P._list[i] += 1
169
+ width_n = P._list[i]
170
+ P.rigging[i] = None
171
+ else:
172
+ j = i - 1
173
+ while j >= 0 and P._list[j] <= max_width + 2:
174
+ P.rigging[j+1] = P.rigging[j] # Shuffle it along
175
+ j -= 1
176
+ P._list.pop(i)
177
+ P._list.insert(j+1, max_width + 2)
178
+ P.rigging[j+1] = None
179
+ break
180
+ elif P.vacancy_numbers[i] - 1 == P.rigging[i] and not case_QS:
181
+ case_QS = True
182
+ P._list[i] += 1
183
+ P.rigging[i] = None
184
+ # No need to set max_width here since we will find a singular string
185
+
186
+ # Now go back following the regular C_n (ish) rules
187
+ if case_S[1] == max_width:
188
+ P = self.ret_rig_con[1]
189
+
190
+ # Special case when adding twice to the first row
191
+ if P.rigging[0] is None:
192
+ P._list[0] += 1
193
+ else:
194
+ for i in reversed(range(1, len(P))):
195
+ if P.rigging[i] is None:
196
+ j = i - 1
197
+ while j >= 0 and P._list[j] == P._list[i]:
198
+ P.rigging[j+1] = P.rigging[j] # Shuffle it along
199
+ j -= 1
200
+ P._list[j+1] += 1
201
+ P.rigging[j+1] = None
202
+ break
203
+ else:
204
+ max_width = self.ret_rig_con[1].insert_cell(max_width)
205
+
206
+ if tableau_height == 0:
207
+ if case_S[0] == max_width:
208
+ P = self.ret_rig_con[0]
209
+ # Since this is on the way back, the added string we want
210
+ # to bump will never be the first (largest) string
211
+ for i in reversed(range(1, len(P))):
212
+ if P.rigging[i] is None:
213
+ j = i - 1
214
+ while j >= 0 and P._list[j] == P._list[i]:
215
+ P.rigging[j+1] = P.rigging[j] # Shuffle it along
216
+ j -= 1
217
+ P._list[j+1] += 1
218
+ P.rigging[j+1] = None
219
+ break
220
+ else:
221
+ max_width = self.ret_rig_con[0].insert_cell(max_width)
222
+
223
+ self._update_vacancy_nums(0)
224
+ self._update_partition_values(0)
225
+ self._update_vacancy_nums(1)
226
+ self._update_partition_values(1)
227
+
228
+ if case_QS:
229
+ # Make the new string quasi-singular
230
+ num_rows = len(P)
231
+ for i in range(num_rows):
232
+ if P._list[i] == width_n:
233
+ j = i+1
234
+ while j < num_rows and P._list[j] == width_n \
235
+ and P.vacancy_numbers[j] == P.rigging[j]:
236
+ j += 1
237
+ P.rigging[j-1] -= 1
238
+ break
239
+
240
+
241
+ class RCToKRTBijectionTypeDTri(RCToKRTBijectionTypeA):
242
+ r"""
243
+ Specific implementation of the bijection from rigged configurations to
244
+ tensor products of KR tableaux for type `D_4^{(3)}`.
245
+ """
246
+
247
+ def next_state(self, height):
248
+ r"""
249
+ Build the next state for type `D_4^{(3)}`.
250
+
251
+ TESTS::
252
+
253
+ sage: RC = RiggedConfigurations(['D', 4, 3], [[2, 1]])
254
+ sage: from sage.combinat.rigged_configurations.bij_type_D_tri import RCToKRTBijectionTypeDTri
255
+ sage: bijection = RCToKRTBijectionTypeDTri(RC(partition_list=[[3],[2]]))
256
+ sage: bijection.next_state(2)
257
+ -3
258
+ """
259
+ height -= 1 # indexing
260
+ ell = [None] * 6
261
+ case_S = [False] * 3
262
+ case_Q = False
263
+ b = None
264
+
265
+ # Calculate the rank and ell values
266
+
267
+ last_size = 0
268
+ for a in range(height, 2):
269
+ ell[a] = self._find_singular_string(self.cur_partitions[a], last_size)
270
+
271
+ if ell[a] is None:
272
+ b = a + 1
273
+ break
274
+ else:
275
+ last_size = self.cur_partitions[a][ell[a]]
276
+
277
+ if b is None:
278
+ partition = self.cur_partitions[0]
279
+ # Modified version of _find_singular_string()
280
+ for i in reversed(range(len(partition))):
281
+ if partition[i] >= last_size:
282
+ if partition.vacancy_numbers[i] == partition.rigging[i] and i != ell[0]:
283
+ if partition[i] == 1:
284
+ b = 'E'
285
+ else:
286
+ last_size = partition[i]
287
+ case_S[2] = True
288
+ ell[3] = i
289
+ break
290
+ elif partition.vacancy_numbers[i] - 1 == partition.rigging[i] and not case_Q:
291
+ case_Q = True
292
+ # Check if the block is singular
293
+ block_size = partition[i]
294
+ for j in reversed(range(i)):
295
+ if partition[j] != block_size:
296
+ break
297
+ elif partition.vacancy_numbers[j] == partition.rigging[j] and j != ell[0]:
298
+ case_Q = False
299
+ break
300
+ if case_Q:
301
+ last_size = partition[i] + 1
302
+ ell[2] = i
303
+
304
+ if ell[3] is None:
305
+ if not case_Q:
306
+ b = 3
307
+ else:
308
+ b = 0
309
+
310
+ if b is None: # Going back
311
+ if self.cur_partitions[1][ell[1]] == last_size:
312
+ ell[4] = ell[1]
313
+ case_S[1] = True
314
+ else:
315
+ ell[4] = self._find_singular_string(self.cur_partitions[1], last_size)
316
+
317
+ if ell[4] is None:
318
+ b = -3
319
+ else:
320
+ last_size = self.cur_partitions[1][ell[4]]
321
+
322
+ if b is None: # Final partition
323
+ P = self.cur_partitions[0]
324
+ if ell[0] is not None and P[ell[0]] == last_size:
325
+ ell[5] = ell[0]
326
+ case_S[0] = True
327
+ else:
328
+ # Modified form of _find_singular_string
329
+ end = ell[3]
330
+ for i in reversed(range(end)):
331
+ if P[i] >= last_size and P.vacancy_numbers[i] == P.rigging[i]:
332
+ ell[5] = i
333
+ break
334
+
335
+ if ell[5] is None:
336
+ b = -2
337
+
338
+ if b is None:
339
+ b = -1
340
+
341
+ # Determine the new rigged configuration by removing boxes from the
342
+ # selected string and then making the new string singular
343
+ if case_S[1]:
344
+ row1 = [self.cur_partitions[1].remove_cell(ell[4], 2)]
345
+ else:
346
+ row1 = [self.cur_partitions[1].remove_cell(ell[1]),
347
+ self.cur_partitions[1].remove_cell(ell[4])]
348
+
349
+ if case_S[0]:
350
+ row0 = [self.cur_partitions[0].remove_cell(ell[5], 2)]
351
+ row0.append(self.cur_partitions[0].remove_cell(ell[3], 2))
352
+ else:
353
+ if case_Q:
354
+ if ell[0] is None or ell[0] < ell[2]:
355
+ row0 = [self.cur_partitions[0].remove_cell(ell[2]),
356
+ self.cur_partitions[0].remove_cell(ell[0])]
357
+ else:
358
+ row0 = [self.cur_partitions[0].remove_cell(ell[0]),
359
+ self.cur_partitions[0].remove_cell(ell[2])]
360
+ if case_S[2]:
361
+ quasi = self.cur_partitions[0].remove_cell(ell[3])
362
+ else:
363
+ row0 = [self.cur_partitions[0].remove_cell(ell[0])]
364
+ if case_S[2]:
365
+ row0.append(self.cur_partitions[0].remove_cell(ell[3], 2))
366
+
367
+ row0.append(self.cur_partitions[0].remove_cell(ell[5]))
368
+
369
+ self._update_vacancy_numbers(0)
370
+ self._update_vacancy_numbers(1)
371
+
372
+ for l in row1:
373
+ if l is not None:
374
+ self.cur_partitions[1].rigging[l] = self.cur_partitions[1].vacancy_numbers[l]
375
+ for l in row0:
376
+ if l is not None:
377
+ self.cur_partitions[0].rigging[l] = self.cur_partitions[0].vacancy_numbers[l]
378
+
379
+ # If case (Q,S) holds, then we must make the larger string quasisingular
380
+ if case_Q and case_S[2]:
381
+ P = self.cur_partitions[0]
382
+ vac_num = P.vacancy_numbers[quasi]
383
+ P.rigging[quasi] = vac_num
384
+ block_len = P[quasi]
385
+ j = quasi + 1
386
+ length = len(P)
387
+ # Find the place for the quasisingular rigging
388
+ while j < length and P[j] == block_len and P.rigging[j] == vac_num:
389
+ j += 1
390
+ P.rigging[j-1] = vac_num - 1
391
+
392
+ return b