passagemath-combinat 10.6.42__cp314-cp314-musllinux_1_2_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
  3. passagemath_combinat-10.6.42.dist-info/RECORD +400 -0
  4. passagemath_combinat-10.6.42.dist-info/WHEEL +5 -0
  5. passagemath_combinat-10.6.42.dist-info/top_level.txt +3 -0
  6. passagemath_combinat.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  7. passagemath_combinat.libs/libsymmetrica-81fe8739.so.3.0.0 +0 -0
  8. sage/algebras/affine_nil_temperley_lieb.py +263 -0
  9. sage/algebras/all.py +24 -0
  10. sage/algebras/all__sagemath_combinat.py +35 -0
  11. sage/algebras/askey_wilson.py +935 -0
  12. sage/algebras/associated_graded.py +345 -0
  13. sage/algebras/cellular_basis.py +350 -0
  14. sage/algebras/cluster_algebra.py +2766 -0
  15. sage/algebras/down_up_algebra.py +860 -0
  16. sage/algebras/free_algebra.py +1698 -0
  17. sage/algebras/free_algebra_element.py +345 -0
  18. sage/algebras/free_algebra_quotient.py +405 -0
  19. sage/algebras/free_algebra_quotient_element.py +295 -0
  20. sage/algebras/free_zinbiel_algebra.py +885 -0
  21. sage/algebras/hall_algebra.py +783 -0
  22. sage/algebras/hecke_algebras/all.py +4 -0
  23. sage/algebras/hecke_algebras/ariki_koike_algebra.py +1796 -0
  24. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +475 -0
  25. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +3520 -0
  26. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1473 -0
  27. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +1079 -0
  28. sage/algebras/iwahori_hecke_algebra.py +3095 -0
  29. sage/algebras/jordan_algebra.py +1773 -0
  30. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +113 -0
  31. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +156 -0
  32. sage/algebras/lie_conformal_algebras/all.py +18 -0
  33. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +134 -0
  34. sage/algebras/lie_conformal_algebras/examples.py +43 -0
  35. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +131 -0
  36. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +139 -0
  37. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +174 -0
  38. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +167 -0
  39. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +107 -0
  40. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +135 -0
  41. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +353 -0
  42. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +236 -0
  43. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +78 -0
  44. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +328 -0
  45. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +117 -0
  46. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +86 -0
  47. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +82 -0
  48. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +205 -0
  49. sage/algebras/nil_coxeter_algebra.py +191 -0
  50. sage/algebras/q_commuting_polynomials.py +673 -0
  51. sage/algebras/q_system.py +608 -0
  52. sage/algebras/quantum_clifford.py +959 -0
  53. sage/algebras/quantum_groups/ace_quantum_onsager.py +693 -0
  54. sage/algebras/quantum_groups/all.py +9 -0
  55. sage/algebras/quantum_groups/fock_space.py +2219 -0
  56. sage/algebras/quantum_groups/q_numbers.py +207 -0
  57. sage/algebras/quantum_groups/quantum_group_gap.py +2695 -0
  58. sage/algebras/quantum_groups/representations.py +591 -0
  59. sage/algebras/quantum_matrix_coordinate_algebra.py +1006 -0
  60. sage/algebras/quantum_oscillator.py +623 -0
  61. sage/algebras/quaternion_algebra.py +20 -0
  62. sage/algebras/quaternion_algebra_element.py +55 -0
  63. sage/algebras/rational_cherednik_algebra.py +525 -0
  64. sage/algebras/schur_algebra.py +670 -0
  65. sage/algebras/shuffle_algebra.py +1011 -0
  66. sage/algebras/splitting_algebra.py +779 -0
  67. sage/algebras/tensor_algebra.py +709 -0
  68. sage/algebras/yangian.py +1082 -0
  69. sage/algebras/yokonuma_hecke_algebra.py +1018 -0
  70. sage/all__sagemath_combinat.py +35 -0
  71. sage/combinat/SJT.py +255 -0
  72. sage/combinat/affine_permutation.py +2405 -0
  73. sage/combinat/algebraic_combinatorics.py +55 -0
  74. sage/combinat/all.py +53 -0
  75. sage/combinat/all__sagemath_combinat.py +195 -0
  76. sage/combinat/alternating_sign_matrix.py +2063 -0
  77. sage/combinat/baxter_permutations.py +346 -0
  78. sage/combinat/bijectionist.py +3220 -0
  79. sage/combinat/binary_recurrence_sequences.py +1180 -0
  80. sage/combinat/blob_algebra.py +685 -0
  81. sage/combinat/catalog_partitions.py +27 -0
  82. sage/combinat/chas/all.py +23 -0
  83. sage/combinat/chas/fsym.py +1180 -0
  84. sage/combinat/chas/wqsym.py +2601 -0
  85. sage/combinat/cluster_complex.py +326 -0
  86. sage/combinat/colored_permutations.py +2039 -0
  87. sage/combinat/colored_permutations_representations.py +964 -0
  88. sage/combinat/composition_signed.py +142 -0
  89. sage/combinat/composition_tableau.py +855 -0
  90. sage/combinat/constellation.py +1729 -0
  91. sage/combinat/core.py +751 -0
  92. sage/combinat/counting.py +12 -0
  93. sage/combinat/crystals/affine.py +742 -0
  94. sage/combinat/crystals/affine_factorization.py +518 -0
  95. sage/combinat/crystals/affinization.py +331 -0
  96. sage/combinat/crystals/alcove_path.py +2013 -0
  97. sage/combinat/crystals/all.py +22 -0
  98. sage/combinat/crystals/bkk_crystals.py +141 -0
  99. sage/combinat/crystals/catalog.py +115 -0
  100. sage/combinat/crystals/catalog_elementary_crystals.py +18 -0
  101. sage/combinat/crystals/catalog_infinity_crystals.py +33 -0
  102. sage/combinat/crystals/catalog_kirillov_reshetikhin.py +18 -0
  103. sage/combinat/crystals/crystals.py +257 -0
  104. sage/combinat/crystals/direct_sum.py +260 -0
  105. sage/combinat/crystals/elementary_crystals.py +1251 -0
  106. sage/combinat/crystals/fast_crystals.py +441 -0
  107. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +1205 -0
  108. sage/combinat/crystals/generalized_young_walls.py +1076 -0
  109. sage/combinat/crystals/highest_weight_crystals.py +436 -0
  110. sage/combinat/crystals/induced_structure.py +695 -0
  111. sage/combinat/crystals/infinity_crystals.py +730 -0
  112. sage/combinat/crystals/kac_modules.py +863 -0
  113. sage/combinat/crystals/kirillov_reshetikhin.py +4196 -0
  114. sage/combinat/crystals/kyoto_path_model.py +497 -0
  115. sage/combinat/crystals/letters.cpython-314-x86_64-linux-musl.so +0 -0
  116. sage/combinat/crystals/letters.pxd +79 -0
  117. sage/combinat/crystals/letters.pyx +3056 -0
  118. sage/combinat/crystals/littelmann_path.py +1518 -0
  119. sage/combinat/crystals/monomial_crystals.py +1262 -0
  120. sage/combinat/crystals/multisegments.py +462 -0
  121. sage/combinat/crystals/mv_polytopes.py +467 -0
  122. sage/combinat/crystals/pbw_crystal.py +511 -0
  123. sage/combinat/crystals/pbw_datum.cpython-314-x86_64-linux-musl.so +0 -0
  124. sage/combinat/crystals/pbw_datum.pxd +4 -0
  125. sage/combinat/crystals/pbw_datum.pyx +487 -0
  126. sage/combinat/crystals/polyhedral_realization.py +372 -0
  127. sage/combinat/crystals/spins.cpython-314-x86_64-linux-musl.so +0 -0
  128. sage/combinat/crystals/spins.pxd +21 -0
  129. sage/combinat/crystals/spins.pyx +756 -0
  130. sage/combinat/crystals/star_crystal.py +290 -0
  131. sage/combinat/crystals/subcrystal.py +464 -0
  132. sage/combinat/crystals/tensor_product.py +1177 -0
  133. sage/combinat/crystals/tensor_product_element.cpython-314-x86_64-linux-musl.so +0 -0
  134. sage/combinat/crystals/tensor_product_element.pxd +35 -0
  135. sage/combinat/crystals/tensor_product_element.pyx +1870 -0
  136. sage/combinat/crystals/virtual_crystal.py +420 -0
  137. sage/combinat/cyclic_sieving_phenomenon.py +204 -0
  138. sage/combinat/debruijn_sequence.cpython-314-x86_64-linux-musl.so +0 -0
  139. sage/combinat/debruijn_sequence.pyx +355 -0
  140. sage/combinat/decorated_permutation.py +270 -0
  141. sage/combinat/degree_sequences.cpython-314-x86_64-linux-musl.so +0 -0
  142. sage/combinat/degree_sequences.pyx +588 -0
  143. sage/combinat/derangements.py +527 -0
  144. sage/combinat/descent_algebra.py +1008 -0
  145. sage/combinat/diagram.py +1551 -0
  146. sage/combinat/diagram_algebras.py +5886 -0
  147. sage/combinat/dyck_word.py +4349 -0
  148. sage/combinat/e_one_star.py +1623 -0
  149. sage/combinat/enumerated_sets.py +123 -0
  150. sage/combinat/expnums.cpython-314-x86_64-linux-musl.so +0 -0
  151. sage/combinat/expnums.pyx +148 -0
  152. sage/combinat/fast_vector_partitions.cpython-314-x86_64-linux-musl.so +0 -0
  153. sage/combinat/fast_vector_partitions.pyx +346 -0
  154. sage/combinat/fqsym.py +1977 -0
  155. sage/combinat/free_dendriform_algebra.py +954 -0
  156. sage/combinat/free_prelie_algebra.py +1141 -0
  157. sage/combinat/fully_commutative_elements.py +1077 -0
  158. sage/combinat/fully_packed_loop.py +1523 -0
  159. sage/combinat/gelfand_tsetlin_patterns.py +1409 -0
  160. sage/combinat/gray_codes.py +311 -0
  161. sage/combinat/grossman_larson_algebras.py +667 -0
  162. sage/combinat/growth.py +4352 -0
  163. sage/combinat/hall_polynomial.py +188 -0
  164. sage/combinat/hillman_grassl.py +866 -0
  165. sage/combinat/integer_matrices.py +329 -0
  166. sage/combinat/integer_vectors_mod_permgroup.py +1238 -0
  167. sage/combinat/k_tableau.py +4564 -0
  168. sage/combinat/kazhdan_lusztig.py +215 -0
  169. sage/combinat/key_polynomial.py +885 -0
  170. sage/combinat/knutson_tao_puzzles.py +2286 -0
  171. sage/combinat/lr_tableau.py +311 -0
  172. sage/combinat/matrices/all.py +24 -0
  173. sage/combinat/matrices/hadamard_matrix.py +3790 -0
  174. sage/combinat/matrices/latin.py +2912 -0
  175. sage/combinat/misc.py +401 -0
  176. sage/combinat/multiset_partition_into_sets_ordered.py +3541 -0
  177. sage/combinat/ncsf_qsym/all.py +21 -0
  178. sage/combinat/ncsf_qsym/combinatorics.py +317 -0
  179. sage/combinat/ncsf_qsym/generic_basis_code.py +1427 -0
  180. sage/combinat/ncsf_qsym/ncsf.py +5637 -0
  181. sage/combinat/ncsf_qsym/qsym.py +4053 -0
  182. sage/combinat/ncsf_qsym/tutorial.py +447 -0
  183. sage/combinat/ncsym/all.py +21 -0
  184. sage/combinat/ncsym/bases.py +855 -0
  185. sage/combinat/ncsym/dual.py +593 -0
  186. sage/combinat/ncsym/ncsym.py +2076 -0
  187. sage/combinat/necklace.py +551 -0
  188. sage/combinat/non_decreasing_parking_function.py +634 -0
  189. sage/combinat/nu_dyck_word.py +1474 -0
  190. sage/combinat/output.py +861 -0
  191. sage/combinat/parallelogram_polyomino.py +4326 -0
  192. sage/combinat/parking_functions.py +1602 -0
  193. sage/combinat/partition_algebra.py +1998 -0
  194. sage/combinat/partition_kleshchev.py +1982 -0
  195. sage/combinat/partition_shifting_algebras.py +584 -0
  196. sage/combinat/partition_tuple.py +3114 -0
  197. sage/combinat/path_tableaux/all.py +13 -0
  198. sage/combinat/path_tableaux/catalog.py +29 -0
  199. sage/combinat/path_tableaux/dyck_path.py +380 -0
  200. sage/combinat/path_tableaux/frieze.py +476 -0
  201. sage/combinat/path_tableaux/path_tableau.py +728 -0
  202. sage/combinat/path_tableaux/semistandard.py +510 -0
  203. sage/combinat/perfect_matching.py +779 -0
  204. sage/combinat/plane_partition.py +3300 -0
  205. sage/combinat/q_bernoulli.cpython-314-x86_64-linux-musl.so +0 -0
  206. sage/combinat/q_bernoulli.pyx +128 -0
  207. sage/combinat/quickref.py +81 -0
  208. sage/combinat/recognizable_series.py +2051 -0
  209. sage/combinat/regular_sequence.py +4316 -0
  210. sage/combinat/regular_sequence_bounded.py +543 -0
  211. sage/combinat/restricted_growth.py +81 -0
  212. sage/combinat/ribbon.py +20 -0
  213. sage/combinat/ribbon_shaped_tableau.py +489 -0
  214. sage/combinat/ribbon_tableau.py +1180 -0
  215. sage/combinat/rigged_configurations/all.py +46 -0
  216. sage/combinat/rigged_configurations/bij_abstract_class.py +548 -0
  217. sage/combinat/rigged_configurations/bij_infinity.py +370 -0
  218. sage/combinat/rigged_configurations/bij_type_A.py +163 -0
  219. sage/combinat/rigged_configurations/bij_type_A2_dual.py +338 -0
  220. sage/combinat/rigged_configurations/bij_type_A2_even.py +218 -0
  221. sage/combinat/rigged_configurations/bij_type_A2_odd.py +199 -0
  222. sage/combinat/rigged_configurations/bij_type_B.py +900 -0
  223. sage/combinat/rigged_configurations/bij_type_C.py +267 -0
  224. sage/combinat/rigged_configurations/bij_type_D.py +771 -0
  225. sage/combinat/rigged_configurations/bij_type_D_tri.py +392 -0
  226. sage/combinat/rigged_configurations/bij_type_D_twisted.py +576 -0
  227. sage/combinat/rigged_configurations/bij_type_E67.py +402 -0
  228. sage/combinat/rigged_configurations/bijection.py +143 -0
  229. sage/combinat/rigged_configurations/kleber_tree.py +1475 -0
  230. sage/combinat/rigged_configurations/kr_tableaux.py +1898 -0
  231. sage/combinat/rigged_configurations/rc_crystal.py +461 -0
  232. sage/combinat/rigged_configurations/rc_infinity.py +540 -0
  233. sage/combinat/rigged_configurations/rigged_configuration_element.py +2403 -0
  234. sage/combinat/rigged_configurations/rigged_configurations.py +1918 -0
  235. sage/combinat/rigged_configurations/rigged_partition.cpython-314-x86_64-linux-musl.so +0 -0
  236. sage/combinat/rigged_configurations/rigged_partition.pxd +15 -0
  237. sage/combinat/rigged_configurations/rigged_partition.pyx +680 -0
  238. sage/combinat/rigged_configurations/tensor_product_kr_tableaux.py +499 -0
  239. sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py +428 -0
  240. sage/combinat/rsk.py +3438 -0
  241. sage/combinat/schubert_polynomial.py +508 -0
  242. sage/combinat/set_partition.py +3318 -0
  243. sage/combinat/set_partition_iterator.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/combinat/set_partition_iterator.pyx +136 -0
  245. sage/combinat/set_partition_ordered.py +1590 -0
  246. sage/combinat/sf/abreu_nigro.py +346 -0
  247. sage/combinat/sf/all.py +52 -0
  248. sage/combinat/sf/character.py +576 -0
  249. sage/combinat/sf/classical.py +319 -0
  250. sage/combinat/sf/dual.py +996 -0
  251. sage/combinat/sf/elementary.py +549 -0
  252. sage/combinat/sf/hall_littlewood.py +1028 -0
  253. sage/combinat/sf/hecke.py +336 -0
  254. sage/combinat/sf/homogeneous.py +464 -0
  255. sage/combinat/sf/jack.py +1428 -0
  256. sage/combinat/sf/k_dual.py +1458 -0
  257. sage/combinat/sf/kfpoly.py +447 -0
  258. sage/combinat/sf/llt.py +789 -0
  259. sage/combinat/sf/macdonald.py +2019 -0
  260. sage/combinat/sf/monomial.py +525 -0
  261. sage/combinat/sf/multiplicative.py +113 -0
  262. sage/combinat/sf/new_kschur.py +1786 -0
  263. sage/combinat/sf/ns_macdonald.py +964 -0
  264. sage/combinat/sf/orthogonal.py +246 -0
  265. sage/combinat/sf/orthotriang.py +355 -0
  266. sage/combinat/sf/powersum.py +963 -0
  267. sage/combinat/sf/schur.py +880 -0
  268. sage/combinat/sf/sf.py +1653 -0
  269. sage/combinat/sf/sfa.py +7053 -0
  270. sage/combinat/sf/symplectic.py +253 -0
  271. sage/combinat/sf/witt.py +721 -0
  272. sage/combinat/shifted_primed_tableau.py +2735 -0
  273. sage/combinat/shuffle.py +830 -0
  274. sage/combinat/sidon_sets.py +146 -0
  275. sage/combinat/similarity_class_type.py +1721 -0
  276. sage/combinat/sine_gordon.py +618 -0
  277. sage/combinat/six_vertex_model.py +784 -0
  278. sage/combinat/skew_partition.py +2053 -0
  279. sage/combinat/skew_tableau.py +2989 -0
  280. sage/combinat/sloane_functions.py +8935 -0
  281. sage/combinat/specht_module.py +1403 -0
  282. sage/combinat/species/all.py +48 -0
  283. sage/combinat/species/characteristic_species.py +321 -0
  284. sage/combinat/species/composition_species.py +273 -0
  285. sage/combinat/species/cycle_species.py +284 -0
  286. sage/combinat/species/empty_species.py +155 -0
  287. sage/combinat/species/functorial_composition_species.py +148 -0
  288. sage/combinat/species/generating_series.py +673 -0
  289. sage/combinat/species/library.py +148 -0
  290. sage/combinat/species/linear_order_species.py +169 -0
  291. sage/combinat/species/misc.py +83 -0
  292. sage/combinat/species/partition_species.py +290 -0
  293. sage/combinat/species/permutation_species.py +268 -0
  294. sage/combinat/species/product_species.py +423 -0
  295. sage/combinat/species/recursive_species.py +476 -0
  296. sage/combinat/species/set_species.py +192 -0
  297. sage/combinat/species/species.py +820 -0
  298. sage/combinat/species/structure.py +539 -0
  299. sage/combinat/species/subset_species.py +243 -0
  300. sage/combinat/species/sum_species.py +225 -0
  301. sage/combinat/subword.py +564 -0
  302. sage/combinat/subword_complex.py +2122 -0
  303. sage/combinat/subword_complex_c.cpython-314-x86_64-linux-musl.so +0 -0
  304. sage/combinat/subword_complex_c.pyx +119 -0
  305. sage/combinat/super_tableau.py +821 -0
  306. sage/combinat/superpartition.py +1154 -0
  307. sage/combinat/symmetric_group_algebra.py +3774 -0
  308. sage/combinat/symmetric_group_representations.py +1830 -0
  309. sage/combinat/t_sequences.py +877 -0
  310. sage/combinat/tableau.py +9506 -0
  311. sage/combinat/tableau_residues.py +860 -0
  312. sage/combinat/tableau_tuple.py +5353 -0
  313. sage/combinat/tiling.py +2432 -0
  314. sage/combinat/triangles_FHM.py +777 -0
  315. sage/combinat/tutorial.py +1857 -0
  316. sage/combinat/vector_partition.py +337 -0
  317. sage/combinat/words/abstract_word.py +1722 -0
  318. sage/combinat/words/all.py +59 -0
  319. sage/combinat/words/alphabet.py +268 -0
  320. sage/combinat/words/finite_word.py +7201 -0
  321. sage/combinat/words/infinite_word.py +113 -0
  322. sage/combinat/words/lyndon_word.py +652 -0
  323. sage/combinat/words/morphic.py +351 -0
  324. sage/combinat/words/morphism.py +3878 -0
  325. sage/combinat/words/paths.py +2932 -0
  326. sage/combinat/words/shuffle_product.py +278 -0
  327. sage/combinat/words/suffix_trees.py +1873 -0
  328. sage/combinat/words/word.py +769 -0
  329. sage/combinat/words/word_char.cpython-314-x86_64-linux-musl.so +0 -0
  330. sage/combinat/words/word_char.pyx +847 -0
  331. sage/combinat/words/word_datatypes.cpython-314-x86_64-linux-musl.so +0 -0
  332. sage/combinat/words/word_datatypes.pxd +4 -0
  333. sage/combinat/words/word_datatypes.pyx +1067 -0
  334. sage/combinat/words/word_generators.py +2026 -0
  335. sage/combinat/words/word_infinite_datatypes.py +1218 -0
  336. sage/combinat/words/word_options.py +99 -0
  337. sage/combinat/words/words.py +2396 -0
  338. sage/data_structures/all__sagemath_combinat.py +1 -0
  339. sage/databases/all__sagemath_combinat.py +13 -0
  340. sage/databases/findstat.py +4897 -0
  341. sage/databases/oeis.py +2058 -0
  342. sage/databases/sloane.py +393 -0
  343. sage/dynamics/all__sagemath_combinat.py +14 -0
  344. sage/dynamics/cellular_automata/all.py +7 -0
  345. sage/dynamics/cellular_automata/catalog.py +34 -0
  346. sage/dynamics/cellular_automata/elementary.py +612 -0
  347. sage/dynamics/cellular_automata/glca.py +477 -0
  348. sage/dynamics/cellular_automata/solitons.py +1463 -0
  349. sage/dynamics/finite_dynamical_system.py +1249 -0
  350. sage/dynamics/finite_dynamical_system_catalog.py +382 -0
  351. sage/games/all.py +7 -0
  352. sage/games/hexad.py +704 -0
  353. sage/games/quantumino.py +591 -0
  354. sage/games/sudoku.py +889 -0
  355. sage/games/sudoku_backtrack.cpython-314-x86_64-linux-musl.so +0 -0
  356. sage/games/sudoku_backtrack.pyx +189 -0
  357. sage/groups/all__sagemath_combinat.py +1 -0
  358. sage/groups/indexed_free_group.py +489 -0
  359. sage/libs/all__sagemath_combinat.py +6 -0
  360. sage/libs/lrcalc/__init__.py +1 -0
  361. sage/libs/lrcalc/lrcalc.py +525 -0
  362. sage/libs/symmetrica/__init__.py +7 -0
  363. sage/libs/symmetrica/all.py +101 -0
  364. sage/libs/symmetrica/kostka.pxi +168 -0
  365. sage/libs/symmetrica/part.pxi +193 -0
  366. sage/libs/symmetrica/plet.pxi +42 -0
  367. sage/libs/symmetrica/sab.pxi +196 -0
  368. sage/libs/symmetrica/sb.pxi +332 -0
  369. sage/libs/symmetrica/sc.pxi +192 -0
  370. sage/libs/symmetrica/schur.pxi +956 -0
  371. sage/libs/symmetrica/symmetrica.cpython-314-x86_64-linux-musl.so +0 -0
  372. sage/libs/symmetrica/symmetrica.pxi +1172 -0
  373. sage/libs/symmetrica/symmetrica.pyx +39 -0
  374. sage/monoids/all.py +13 -0
  375. sage/monoids/automatic_semigroup.py +1054 -0
  376. sage/monoids/free_abelian_monoid.py +315 -0
  377. sage/monoids/free_abelian_monoid_element.cpython-314-x86_64-linux-musl.so +0 -0
  378. sage/monoids/free_abelian_monoid_element.pxd +16 -0
  379. sage/monoids/free_abelian_monoid_element.pyx +397 -0
  380. sage/monoids/free_monoid.py +335 -0
  381. sage/monoids/free_monoid_element.py +431 -0
  382. sage/monoids/hecke_monoid.py +65 -0
  383. sage/monoids/string_monoid.py +817 -0
  384. sage/monoids/string_monoid_element.py +547 -0
  385. sage/monoids/string_ops.py +143 -0
  386. sage/monoids/trace_monoid.py +972 -0
  387. sage/rings/all__sagemath_combinat.py +2 -0
  388. sage/sat/all.py +4 -0
  389. sage/sat/boolean_polynomials.py +405 -0
  390. sage/sat/converters/__init__.py +6 -0
  391. sage/sat/converters/anf2cnf.py +14 -0
  392. sage/sat/converters/polybori.py +611 -0
  393. sage/sat/solvers/__init__.py +5 -0
  394. sage/sat/solvers/cryptominisat.py +287 -0
  395. sage/sat/solvers/dimacs.py +783 -0
  396. sage/sat/solvers/picosat.py +228 -0
  397. sage/sat/solvers/sat_lp.py +156 -0
  398. sage/sat/solvers/satsolver.cpython-314-x86_64-linux-musl.so +0 -0
  399. sage/sat/solvers/satsolver.pxd +3 -0
  400. sage/sat/solvers/satsolver.pyx +405 -0
@@ -0,0 +1,464 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Subcrystals
5
+
6
+ These are the crystals that are subsets of a larger ambient crystal.
7
+
8
+ AUTHORS:
9
+
10
+ - Travis Scrimshaw (2013-10-16): Initial implementation
11
+ """
12
+
13
+ #*****************************************************************************
14
+ # Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
15
+ #
16
+ # Distributed under the terms of the GNU General Public License (GPL)
17
+ #
18
+ # This code is distributed in the hope that it will be useful,
19
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ # General Public License for more details.
22
+ #
23
+ # The full text of the GPL is available at:
24
+ #
25
+ # http://www.gnu.org/licenses/
26
+ #****************************************************************************
27
+
28
+ import collections.abc
29
+
30
+ from sage.misc.lazy_attribute import lazy_attribute
31
+ from sage.structure.unique_representation import UniqueRepresentation
32
+ from sage.structure.parent import Parent
33
+ from sage.structure.element_wrapper import ElementWrapper
34
+ from sage.categories.crystals import Crystals
35
+ from sage.categories.finite_crystals import FiniteCrystals
36
+ from sage.categories.supercrystals import SuperCrystals
37
+ from sage.combinat.root_system.cartan_type import CartanType
38
+ from sage.rings.integer import Integer
39
+ from sage.rings.infinity import infinity
40
+ from sage.structure.richcmp import richcmp
41
+
42
+
43
+ class Subcrystal(UniqueRepresentation, Parent):
44
+ r"""
45
+ A subcrystal `X` of an ambient crystal `Y` is a crystal formed by taking a
46
+ subset of `Y` and whose crystal structure is induced by `Y`.
47
+
48
+ INPUT:
49
+
50
+ - ``ambient`` -- the ambient crystal
51
+ - ``contained`` -- (optional) a set (or function) which specifies when an
52
+ element is contained in the subcrystal; the default is everything
53
+ possible is included
54
+ - ``generators`` -- (optional) the generators for the subcrystal; the
55
+ default is the generators for the ambient crystal
56
+ - ``virtualization``, ``scaling_factors`` -- (optional)
57
+ dictionaries whose key `i` corresponds to the sets `\sigma_i`
58
+ and `\gamma_i` respectively used to define virtual crystals; see
59
+ :class:`~sage.combinat.crystals.virtual_crystal.VirtualCrystal`
60
+ - ``cartan_type`` -- (optional) the Cartan type for the subcrystal; the
61
+ default is the Cartan type for the ambient crystal
62
+ - ``index_set`` -- (optional) the index set for the subcrystal; the
63
+ default is the index set for the Cartan type
64
+ - ``category`` -- (optional) the category for the subcrystal; the
65
+ default is the :class:`~sage.categories.crystals.Crystals` category
66
+
67
+ .. SEEALSO::
68
+
69
+ :meth:`~sage.categories.crystals.Crystals.ParentMethods.subcrystal`
70
+
71
+ EXAMPLES:
72
+
73
+ We build out a subcrystal starting from an element and only going
74
+ to the lowest weight::
75
+
76
+ sage: B = crystals.Tableaux(['A',3], shape=[2,1])
77
+ sage: S = B.subcrystal(generators=[B(3,1,2)], direction='lower')
78
+ sage: S.cardinality()
79
+ 11
80
+
81
+ Here we build out in both directions starting from an element, but we
82
+ also have restricted ourselves to type `A_2`::
83
+
84
+ sage: T = B.subcrystal(index_set=[1,2], generators=[B(3,1,1)])
85
+ sage: T.cardinality()
86
+ 8
87
+ sage: list(T)
88
+ [[[1, 1], [3]],
89
+ [[1, 2], [3]],
90
+ [[1, 1], [2]],
91
+ [[2, 2], [3]],
92
+ [[1, 2], [2]],
93
+ [[2, 3], [3]],
94
+ [[1, 3], [2]],
95
+ [[1, 3], [3]]]
96
+
97
+ Now we take the crystal corresponding to the intersection of
98
+ the previous two subcrystals::
99
+
100
+ sage: U = B.subcrystal(contained=lambda x: x in S and x in T, generators=B)
101
+ sage: list(U)
102
+ [[[2, 3], [3]], [[1, 2], [3]], [[2, 2], [3]]]
103
+
104
+ .. TODO::
105
+
106
+ Include support for subcrystals which only contains certain arrows.
107
+
108
+ TESTS:
109
+
110
+ Check that the subcrystal respects being in the category
111
+ of supercrystals (:issue:`27368`)::
112
+
113
+ sage: T = crystals.Tableaux(['A',[1,1]], [2,1])
114
+ sage: S = T.subcrystal(max_depth=3)
115
+ sage: S.category()
116
+ Category of finite super crystals
117
+ """
118
+ @staticmethod
119
+ def __classcall_private__(cls, ambient, contained=None, generators=None,
120
+ virtualization=None, scaling_factors=None,
121
+ cartan_type=None, index_set=None, category=None):
122
+ """
123
+ Normalize arguments to ensure a (relatively) unique representation.
124
+
125
+ EXAMPLES::
126
+
127
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
128
+ sage: S1 = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
129
+ sage: S2 = B.subcrystal(generators=[B(2,1,1), B(5,2,4)], cartan_type=['A',4], index_set=(1,2))
130
+ sage: S1 is S2
131
+ True
132
+ """
133
+ if isinstance(contained, (collections.abc.Sequence, collections.abc.Set)):
134
+ contained = frozenset(contained)
135
+ #elif contained in Sets():
136
+
137
+ if cartan_type is None:
138
+ cartan_type = ambient.cartan_type()
139
+ else:
140
+ cartan_type = CartanType(cartan_type)
141
+ if index_set is None:
142
+ index_set = cartan_type.index_set
143
+ if generators is None:
144
+ generators = ambient.module_generators
145
+
146
+ category = Crystals().or_subcategory(category)
147
+ if ambient in SuperCrystals():
148
+ category = category & SuperCrystals()
149
+ if ambient in FiniteCrystals() or isinstance(contained, frozenset):
150
+ category = category.Finite()
151
+
152
+ if virtualization is not None:
153
+ if scaling_factors is None:
154
+ scaling_factors = {i:1 for i in index_set}
155
+ from sage.combinat.crystals.virtual_crystal import VirtualCrystal
156
+ return VirtualCrystal(ambient, virtualization, scaling_factors, contained,
157
+ generators, cartan_type, index_set, category)
158
+ if scaling_factors is not None:
159
+ # virtualization must be None
160
+ virtualization = {i:(i,) for i in index_set}
161
+ from sage.combinat.crystals.virtual_crystal import VirtualCrystal
162
+ return VirtualCrystal(ambient, virtualization, scaling_factors, contained,
163
+ generators, cartan_type, index_set, category)
164
+
165
+ # We need to give these as optional arguments so it unpickles correctly
166
+ return super().__classcall__(cls, ambient, contained,
167
+ tuple(generators),
168
+ cartan_type=cartan_type,
169
+ index_set=tuple(index_set),
170
+ category=category)
171
+
172
+ def __init__(self, ambient, contained, generators, cartan_type, index_set, category):
173
+ """
174
+ Initialize ``self``.
175
+
176
+ EXAMPLES::
177
+
178
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
179
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
180
+ sage: TestSuite(S).run()
181
+ """
182
+ self._ambient = ambient
183
+ self._contained = contained
184
+ self._cardinality = None # ``None`` means currently unknown
185
+ self._cartan_type = cartan_type
186
+ self._index_set = tuple(index_set)
187
+ Parent.__init__(self, category=category)
188
+ self.module_generators = tuple(self.element_class(self, g) for g in generators
189
+ if self._containing(g))
190
+
191
+ if isinstance(contained, frozenset):
192
+ self._cardinality = Integer(len(contained))
193
+ self._list = [self.element_class(self, x) for x in contained]
194
+
195
+ def _repr_(self):
196
+ """
197
+ Return a string representation of ``self``.
198
+
199
+ EXAMPLES::
200
+
201
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
202
+ sage: B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
203
+ Subcrystal of The crystal of tableaux of type ['A', 4] and shape(s) [[2, 1]]
204
+ """
205
+ return "Subcrystal of {}".format(self._ambient)
206
+
207
+ @lazy_attribute
208
+ def _containing(self):
209
+ """
210
+ Check if ``x`` is contained in ``self``.
211
+
212
+ EXAMPLES::
213
+
214
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
215
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
216
+ sage: S._containing(B(5,2,4))
217
+ True
218
+ sage: S._containing(B(4,2,4))
219
+ True
220
+ """
221
+ if self._contained is None:
222
+ return lambda x: True
223
+ if isinstance(self._contained, frozenset):
224
+ return self._contained.__contains__
225
+ return self._contained # Otherwise it should be a function
226
+
227
+ def __contains__(self, x):
228
+ """
229
+ Check if ``x`` is in ``self``.
230
+
231
+ EXAMPLES::
232
+
233
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
234
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
235
+ sage: B(5,2,4) in S
236
+ True
237
+ sage: mg = B.module_generators[0]
238
+ sage: mg in S
239
+ True
240
+ sage: mg.f(2).f(3) in S
241
+ False
242
+ """
243
+ if isinstance(x, Subcrystal.Element) and x.parent() == self:
244
+ return True
245
+
246
+ if x in self._ambient:
247
+ if not self._containing(x):
248
+ return False
249
+ x = self.element_class(self, x)
250
+
251
+ if self in FiniteCrystals():
252
+ return x in self.list()
253
+
254
+ # TODO: make this work for infinite crystals
255
+ import warnings
256
+ warnings.warn("Testing containment in an infinite crystal"
257
+ " defaults to returning True")
258
+ return True
259
+
260
+ def cardinality(self):
261
+ """
262
+ Return the cardinality of ``self``.
263
+
264
+ EXAMPLES::
265
+
266
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
267
+ sage: S = B.subcrystal(generators=[B(2,1,1)], index_set=[1,2])
268
+ sage: S.cardinality()
269
+ 8
270
+ sage: B = crystals.infinity.Tableaux(['A',2])
271
+ sage: S = B.subcrystal(max_depth=4)
272
+ sage: S.cardinality()
273
+ 22
274
+
275
+ TESTS:
276
+
277
+ Check that :issue:`19481` is fixed::
278
+
279
+ sage: from sage.combinat.crystals.virtual_crystal import VirtualCrystal
280
+ sage: A = crystals.infinity.Tableaux(['A',3])
281
+ sage: V = VirtualCrystal(A, {1:(1,3), 2:(2,)}, {1:1, 2:2}, cartan_type=['C',2])
282
+ sage: V.cardinality()
283
+ Traceback (most recent call last):
284
+ ...
285
+ NotImplementedError: unknown cardinality
286
+ """
287
+ if self._cardinality is not None:
288
+ return self._cardinality
289
+
290
+ try:
291
+ card = Integer(len(self._list))
292
+ self._cardinality = card
293
+ return self._cardinality
294
+ except AttributeError:
295
+ if self in FiniteCrystals():
296
+ return Integer(len(self.list()))
297
+ try:
298
+ card = super().cardinality()
299
+ except AttributeError:
300
+ raise NotImplementedError("unknown cardinality")
301
+ if card == infinity:
302
+ self._cardinality = card
303
+ return card
304
+ self._cardinality = Integer(len(self.list()))
305
+ return self._cardinality
306
+
307
+ def index_set(self):
308
+ """
309
+ Return the index set of ``self``.
310
+
311
+ EXAMPLES::
312
+
313
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
314
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
315
+ sage: S.index_set()
316
+ (1, 2)
317
+ """
318
+ return self._index_set
319
+
320
+ class Element(ElementWrapper):
321
+ """
322
+ An element of a subcrystal. Wraps an element in the ambient crystal.
323
+ """
324
+
325
+ def _richcmp_(self, other, op):
326
+ """
327
+ EXAMPLES:
328
+
329
+ For == operator::
330
+
331
+ sage: A = crystals.KirillovReshetikhin(['C',2,1], 1,2).affinization()
332
+ sage: S = A.subcrystal(max_depth=2)
333
+ sage: sorted(S)
334
+ [[[1, 1]](-1),
335
+ [[1, 2]](-1),
336
+ [](0),
337
+ [[1, 1]](0),
338
+ [[1, 2]](0),
339
+ [[1, -2]](0),
340
+ [[2, 2]](0),
341
+ [](1),
342
+ [[2, -1]](1),
343
+ [[-2, -1]](1),
344
+ [[-1, -1]](1),
345
+ [[-1, -1]](2)]
346
+
347
+ For != operator::
348
+
349
+ sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]!=S[j]]
350
+ ....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
351
+ ....: S[i].value!=S[j].value])
352
+ True
353
+
354
+ For < operator::
355
+
356
+ sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]<S[j]]
357
+ ....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
358
+ ....: S[i].value<S[j].value])
359
+ True
360
+
361
+ For <= operator::
362
+
363
+ sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]<=S[j]]
364
+ ....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
365
+ ....: S[i].value<=S[j].value])
366
+ True
367
+
368
+ For > operator::
369
+
370
+ sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]>S[j]]
371
+ ....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
372
+ ....: S[i].value>S[j].value])
373
+ True
374
+
375
+ For >= operator::
376
+
377
+ sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]>=S[j]]
378
+ ....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
379
+ ....: S[i].value>=S[j].value])
380
+ True
381
+ """
382
+ return richcmp(self.value, other.value, op)
383
+
384
+ def e(self, i):
385
+ """
386
+ Return `e_i` of ``self``.
387
+
388
+ EXAMPLES::
389
+
390
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
391
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
392
+ sage: mg = S.module_generators[1]
393
+ sage: mg.e(2)
394
+ sage: mg.e(1)
395
+ [[1, 4], [5]]
396
+ """
397
+ ret = self.value.e(i)
398
+ if ret is None or not self.parent()._containing(ret):
399
+ return None
400
+ return self.__class__(self.parent(), ret)
401
+
402
+ def f(self, i):
403
+ """
404
+ Return `f_i` of ``self``.
405
+
406
+ EXAMPLES::
407
+
408
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
409
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
410
+ sage: mg = S.module_generators[1]
411
+ sage: mg.f(1)
412
+ sage: mg.f(2)
413
+ [[3, 4], [5]]
414
+ """
415
+ ret = self.value.f(i)
416
+ if ret is None or not self.parent()._containing(ret):
417
+ return None
418
+ return self.__class__(self.parent(), ret)
419
+
420
+ def epsilon(self, i):
421
+ r"""
422
+ Return `\varepsilon_i` of ``self``.
423
+
424
+ EXAMPLES::
425
+
426
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
427
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
428
+ sage: mg = S.module_generators[1]
429
+ sage: mg.epsilon(1)
430
+ 1
431
+ sage: mg.epsilon(2)
432
+ 0
433
+ """
434
+ return self.value.epsilon(i)
435
+
436
+ def phi(self, i):
437
+ r"""
438
+ Return `\varphi_i` of ``self``.
439
+
440
+ EXAMPLES::
441
+
442
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
443
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
444
+ sage: mg = S.module_generators[1]
445
+ sage: mg.phi(1)
446
+ 0
447
+ sage: mg.phi(2)
448
+ 1
449
+ """
450
+ return self.value.phi(i)
451
+
452
+ def weight(self):
453
+ """
454
+ Return the weight of ``self``.
455
+
456
+ EXAMPLES::
457
+
458
+ sage: B = crystals.Tableaux(['A',4], shape=[2,1])
459
+ sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
460
+ sage: mg = S.module_generators[1]
461
+ sage: mg.weight()
462
+ (0, 1, 0, 1, 1)
463
+ """
464
+ return self.value.weight()