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,539 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Species structures
4
+
5
+ We will illustrate the use of the structure classes using the
6
+ "balls and bars" model for integer compositions. An integer
7
+ composition of 6 such as [2, 1, 3] can be represented in this model
8
+ as 'oooooo' where the 6 o's correspond to the balls and the 2 's
9
+ correspond to the bars. If BB is our species for this model, the it
10
+ satisfies the following recursive definition:
11
+
12
+ BB = o + o\*BB + o\*|\*BB
13
+
14
+ Here we define this species using the default structures::
15
+
16
+ sage: ball = species.SingletonSpecies()
17
+ sage: bar = species.EmptySetSpecies()
18
+ sage: BB = CombinatorialSpecies()
19
+ sage: BB.define(ball + ball*BB + ball*bar*BB)
20
+ sage: o = var('o') # needs sage.symbolic
21
+ sage: BB.isotypes([o]*3).list() # needs sage.symbolic
22
+ [o*(o*o), o*((o*{})*o), (o*{})*(o*o), (o*{})*((o*{})*o)]
23
+
24
+ If we ignore the parentheses, we can read off that the integer
25
+ compositions are [3], [2, 1], [1, 2], and [1, 1, 1].
26
+ """
27
+ #*****************************************************************************
28
+ # Copyright (C) 2008 Mike Hansen <mhansen@gmail.com>,
29
+ #
30
+ # Distributed under the terms of the GNU General Public License (GPL)
31
+ #
32
+ # This code is distributed in the hope that it will be useful,
33
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
34
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
35
+ # General Public License for more details.
36
+ #
37
+ # The full text of the GPL is available at:
38
+ #
39
+ # http://www.gnu.org/licenses/
40
+ #*****************************************************************************
41
+ from sage.categories.enumerated_sets import EnumeratedSets
42
+ from sage.combinat.combinat import CombinatorialObject
43
+ from sage.rings.integer import Integer
44
+ from sage.structure.parent import Parent
45
+ from copy import copy
46
+
47
+
48
+ class GenericSpeciesStructure(CombinatorialObject):
49
+ def __init__(self, parent, labels, list):
50
+ """
51
+ This is a base class from which the classes for the structures inherit.
52
+
53
+ EXAMPLES::
54
+
55
+ sage: from sage.combinat.species.structure import GenericSpeciesStructure
56
+ sage: a = GenericSpeciesStructure(None, [2,3,4], [1,2,3])
57
+ sage: a
58
+ [2, 3, 4]
59
+ sage: a.parent() is None
60
+ True
61
+ sage: a == loads(dumps(a))
62
+ True
63
+ """
64
+ self._parent = parent
65
+ self._labels = labels
66
+ CombinatorialObject.__init__(self, list)
67
+
68
+ def parent(self):
69
+ """
70
+ Return the species that this structure is associated with.
71
+
72
+ EXAMPLES::
73
+
74
+ sage: L = species.LinearOrderSpecies()
75
+ sage: a,b = L.structures([1,2])
76
+ sage: a.parent()
77
+ Linear order species
78
+ """
79
+ try:
80
+ return self._parent
81
+ except AttributeError:
82
+ raise NotImplementedError
83
+
84
+ def __repr__(self):
85
+ """
86
+ EXAMPLES::
87
+
88
+ sage: from sage.combinat.species.structure import GenericSpeciesStructure
89
+ sage: a = GenericSpeciesStructure(None, [2,3,4], [1,2,3])
90
+ sage: a
91
+ [2, 3, 4]
92
+ """
93
+ return repr([self._relabel(i) for i in self._list])
94
+
95
+ def __eq__(self, other):
96
+ """
97
+ Check whether ``self`` is equal to ``other``.
98
+
99
+ EXAMPLES::
100
+
101
+ sage: T = species.BinaryTreeSpecies()
102
+ sage: t = T.structures([1,2,3])[0]; t
103
+ 1*(2*3)
104
+ sage: t[0], t[1][0]
105
+ (1, 2)
106
+ sage: t[0] == t[1][0]
107
+ False
108
+ """
109
+ if not isinstance(other, GenericSpeciesStructure):
110
+ return False
111
+ return self._list == other._list and self.labels() == other.labels()
112
+
113
+ def __ne__(self, other):
114
+ """
115
+ Check whether ``self`` is not equal to ``other``.
116
+
117
+ EXAMPLES::
118
+
119
+ sage: T = species.BinaryTreeSpecies()
120
+ sage: t = T.structures([1,2,3])[0]; t
121
+ 1*(2*3)
122
+ sage: t[0], t[1][0]
123
+ (1, 2)
124
+ sage: t[0] != t[1][0]
125
+ True
126
+ """
127
+ return not (self == other)
128
+
129
+ def labels(self):
130
+ """
131
+ Return the labels used for this structure.
132
+
133
+ .. NOTE::
134
+
135
+ This includes labels which may not "appear" in this
136
+ particular structure.
137
+
138
+ EXAMPLES::
139
+
140
+ sage: P = species.SubsetSpecies()
141
+ sage: s = P.structures(["a", "b", "c"]).random_element()
142
+ sage: s.labels()
143
+ ['a', 'b', 'c']
144
+ """
145
+ return copy(self._labels)
146
+
147
+ def change_labels(self, labels):
148
+ """
149
+ Return a relabelled structure.
150
+
151
+ INPUT:
152
+
153
+ - ``labels`` -- list of labels
154
+
155
+ OUTPUT:
156
+
157
+ A structure with the `i`-th label of ``self`` replaced with the `i`-th
158
+ label of the list.
159
+
160
+ EXAMPLES::
161
+
162
+ sage: P = species.SubsetSpecies()
163
+ sage: S = P.structures(["a", "b", "c"])
164
+ sage: [s.change_labels([1,2,3]) for s in S]
165
+ [{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]
166
+ """
167
+ c = copy(self)
168
+ c._labels = labels
169
+ return c
170
+
171
+ def _relabel(self, i):
172
+ """
173
+ EXAMPLES::
174
+
175
+ sage: from sage.combinat.species.structure import GenericSpeciesStructure
176
+ sage: a = GenericSpeciesStructure(None, [2,3,4], [1,2,3])
177
+ sage: a._relabel(1)
178
+ 2
179
+ sage: a._relabel([1,2,3])
180
+ [1, 2, 3]
181
+ """
182
+ if isinstance(i, (int, Integer)):
183
+ return self._labels[i-1]
184
+ else:
185
+ return i
186
+
187
+ def is_isomorphic(self, x):
188
+ """
189
+ EXAMPLES::
190
+
191
+ sage: S = species.SetSpecies()
192
+ sage: a = S.structures([1,2,3]).random_element(); a
193
+ {1, 2, 3}
194
+ sage: b = S.structures(['a','b','c']).random_element(); b
195
+ {'a', 'b', 'c'}
196
+ sage: a.is_isomorphic(b)
197
+ True
198
+ """
199
+ if self.__class__ != x.__class__:
200
+ return False
201
+ if self.parent() != x.parent():
202
+ return False
203
+
204
+ #We don't care about the labels for isomorphism testing
205
+ if self.canonical_label()._list == x.canonical_label()._list:
206
+ return True
207
+ else:
208
+ return False
209
+
210
+
211
+ #For backward compatibility. This should be removed in the near
212
+ #future since I doubt that there is any code that depends directly on
213
+ #SpeciesStructure.
214
+ SpeciesStructure = GenericSpeciesStructure
215
+
216
+
217
+ class SpeciesStructureWrapper(GenericSpeciesStructure):
218
+ def __init__(self, parent, s, **options):
219
+ """
220
+ This is a class for the structures of species such as the sum
221
+ species that do not provide "additional" structure. For example,
222
+ if you have the sum `C` of species `A` and `B`,
223
+ then a structure of `C` will either be either something from `A` or `B`.
224
+ Instead of just returning one of these directly, a "wrapper" is
225
+ put around them so that they have their parent is `C` rather than `A` or
226
+ `B`::
227
+
228
+ sage: X = species.SingletonSpecies()
229
+ sage: X2 = X+X
230
+ sage: s = X2.structures([1]).random_element(); s
231
+ 1
232
+ sage: s.parent()
233
+ Sum of (Singleton species) and (Singleton species)
234
+ sage: from sage.combinat.species.structure import SpeciesStructureWrapper
235
+ sage: issubclass(type(s), SpeciesStructureWrapper)
236
+ True
237
+
238
+ EXAMPLES::
239
+
240
+ sage: E = species.SetSpecies(); B = E+E
241
+ sage: s = B.structures([1,2,3]).random_element()
242
+ sage: s.parent()
243
+ Sum of (Set species) and (Set species)
244
+ sage: s == loads(dumps(s))
245
+ True
246
+ """
247
+ self._parent = parent
248
+ self._s = s
249
+ self._options = options
250
+ GenericSpeciesStructure.__init__(self, parent, s._labels, s._list)
251
+
252
+ def __getattr__(self, attr):
253
+ """
254
+ EXAMPLES::
255
+
256
+ sage: E = species.SetSpecies(); B = E+E
257
+ sage: s = B.structures([1,2,3]).random_element()
258
+ sage: s
259
+ {1, 2, 3}
260
+ """
261
+ if attr == "_s":
262
+ return None
263
+
264
+ return getattr(self._s, attr)
265
+
266
+ def __repr__(self):
267
+ """
268
+ Return the repr of the object which this one wraps.
269
+
270
+ EXAMPLES::
271
+
272
+ sage: E = species.SetSpecies()
273
+ sage: s = (E+E).structures([1,2,3]).random_element(); s
274
+ {1, 2, 3}
275
+ """
276
+ return repr(self._s)
277
+
278
+ def transport(self, perm):
279
+ """
280
+ EXAMPLES::
281
+
282
+ sage: P = species.PartitionSpecies()
283
+ sage: s = (P+P).structures([1,2,3])[1]; s # needs sage.libs.flint
284
+ {{1, 3}, {2}}
285
+ sage: s.transport(PermutationGroupElement((2,3))) # needs sage.groups sage.libs.flint
286
+ {{1, 2}, {3}}
287
+ """
288
+ return self.__class__(self._parent, self._s.transport(perm), **self._options)
289
+
290
+ def canonical_label(self):
291
+ """
292
+ EXAMPLES::
293
+
294
+ sage: P = species.PartitionSpecies()
295
+ sage: s = (P+P).structures([1,2,3])[1]; s # needs sage.libs.flint
296
+ {{1, 3}, {2}}
297
+ sage: s.canonical_label() # needs sage.libs.flint
298
+ {{1, 2}, {3}}
299
+ """
300
+ return self.__class__(self._parent, self._s.canonical_label(), **self._options)
301
+
302
+ def change_labels(self, labels):
303
+ """
304
+ Return a relabelled structure.
305
+
306
+ INPUT:
307
+
308
+ - ``labels`` -- list of labels
309
+
310
+ OUTPUT:
311
+
312
+ A structure with the `i`-th label of ``self`` replaced with the `i`-th
313
+ label of the list.
314
+
315
+ EXAMPLES::
316
+
317
+ sage: X = species.SingletonSpecies()
318
+ sage: X2 = X+X
319
+ sage: s = X2.structures([1]).random_element(); s
320
+ 1
321
+ sage: s.change_labels(['a'])
322
+ 'a'
323
+ """
324
+ c = GenericSpeciesStructure.change_labels(self, labels)
325
+ c._s = c._s.change_labels(labels)
326
+ return c
327
+
328
+
329
+ ##############################################################
330
+
331
+
332
+ class SpeciesWrapper(Parent):
333
+ def __init__(self, species, labels, iterator, generating_series, name, structure_class):
334
+ """
335
+ This is a abstract base class for the set of structures of a
336
+ species as well as the set of isotypes of the species.
337
+
338
+ .. NOTE::
339
+
340
+ One typically does not use :class:`SpeciesWrapper`
341
+ directly, but instead instantiates one of its subclasses:
342
+ :class:`StructuresWrapper` or :class:`IsotypesWrapper`.
343
+
344
+ EXAMPLES::
345
+
346
+ sage: from sage.combinat.species.structure import SpeciesWrapper
347
+ sage: F = species.SetSpecies()
348
+ sage: S = SpeciesWrapper(F, [1,2,3], "_structures", "generating_series", 'Structures', None)
349
+ sage: S
350
+ Structures for Set species with labels [1, 2, 3]
351
+ sage: S.list()
352
+ [{1, 2, 3}]
353
+ sage: S.cardinality()
354
+ 1
355
+ """
356
+ Parent.__init__(self, category=EnumeratedSets().Finite())
357
+ self._species = species
358
+ self._labels = labels
359
+ self._iterator = iterator
360
+ self._generating_series = generating_series
361
+ self._name = "%s for %s with labels %s" % (name, species, labels)
362
+ self._structure_class = structure_class if structure_class is not None else species._default_structure_class
363
+
364
+ def __eq__(self, other) -> bool:
365
+ r"""
366
+ EXAMPLES::
367
+
368
+ sage: from sage.combinat.species.structure import SpeciesWrapper
369
+ sage: F = species.SetSpecies()
370
+ sage: S = SpeciesWrapper(F, [1,2,3], "_structures", "generating_series", 'Structures', None)
371
+ sage: S == SpeciesWrapper(F, [1,2,3], "_structures", "generating_series", 'Structures', None)
372
+ True
373
+ """
374
+ return ((self._species, self._labels,
375
+ self._iterator, self._generating_series,
376
+ self._name, self._structure_class) == (other._species, other._labels,
377
+ other._iterator, other._generating_series,
378
+ other._name, other._structure_class))
379
+
380
+ def __ne__(self, other) -> bool:
381
+ r"""
382
+ EXAMPLES::
383
+
384
+ sage: from sage.combinat.species.structure import SpeciesWrapper
385
+ sage: F = species.SetSpecies()
386
+ sage: S = SpeciesWrapper(F, [1,2,3], "_structures", "generating_series", 'Structures', None)
387
+ sage: S != SpeciesWrapper(F, [1,2,3], "_structures", "generating_series", 'Structures', None)
388
+ False
389
+ """
390
+ return not (self == other)
391
+
392
+ def _repr_(self) -> str:
393
+ """
394
+ EXAMPLES::
395
+
396
+ sage: from sage.combinat.species.structure import SpeciesWrapper
397
+ sage: F = species.SetSpecies()
398
+ sage: S = SpeciesWrapper(F, [1,2,3], "_structures", "generating_series", 'Structures', None)
399
+ sage: repr(S) # indirect doctest
400
+ 'Structures for Set species with labels [1, 2, 3]'
401
+ """
402
+ return self._name
403
+
404
+ def labels(self):
405
+ """
406
+ Return the labels used on these structures. If `X` is the
407
+ species, then :meth:`labels` returns the preimage of these
408
+ structures under the functor `X`.
409
+
410
+ EXAMPLES::
411
+
412
+ sage: F = species.SetSpecies()
413
+ sage: F.structures([1,2,3]).labels()
414
+ [1, 2, 3]
415
+ """
416
+ return copy(self._labels)
417
+
418
+ def __iter__(self):
419
+ """
420
+ EXAMPLES::
421
+
422
+ sage: F = species.SetSpecies()
423
+ sage: F.structures([1,2,3]).list()
424
+ [{1, 2, 3}]
425
+ """
426
+ #If the min and max are set, then we want to make sure
427
+ #that the iterator respects those bounds.
428
+ if (self._species._min is not None and
429
+ len(self._labels) < self._species._min):
430
+ return iter([])
431
+
432
+ if (self._species._max is not None and
433
+ len(self._labels) >= self._species._max):
434
+ return iter([])
435
+
436
+ #We check to see if the
437
+ try:
438
+ if self.cardinality() == 0:
439
+ return iter([])
440
+ except TypeError:
441
+ raise NotImplementedError
442
+
443
+ return getattr(self._species, self._iterator)(self._structure_class, self._labels)
444
+
445
+ def cardinality(self):
446
+ """
447
+ Return the number of structures in this set.
448
+
449
+ EXAMPLES::
450
+
451
+ sage: F = species.SetSpecies()
452
+ sage: F.structures([1,2,3]).cardinality()
453
+ 1
454
+ """
455
+ return getattr(self._species, self._generating_series)().count(len(self._labels))
456
+
457
+
458
+ class StructuresWrapper(SpeciesWrapper):
459
+ def __init__(self, species, labels, structure_class):
460
+ """
461
+ A base class for the set of structures of a species with given
462
+ set of labels. An object of this type is returned when you
463
+ call the :meth:`structures` method of a species.
464
+
465
+ EXAMPLES::
466
+
467
+ sage: F = species.SetSpecies()
468
+ sage: S = F.structures([1,2,3])
469
+ sage: S == loads(dumps(S))
470
+ True
471
+ """
472
+ SpeciesWrapper.__init__(self, species, labels,
473
+ "_structures",
474
+ "generating_series",
475
+ "Structures",
476
+ structure_class)
477
+
478
+
479
+ class IsotypesWrapper(SpeciesWrapper):
480
+ def __init__(self, species, labels, structure_class):
481
+ """
482
+ A base class for the set of isotypes of a species with given
483
+ set of labels. An object of this type is returned when you
484
+ call the :meth:`isotypes` method of a species.
485
+
486
+ EXAMPLES::
487
+
488
+ sage: F = species.SetSpecies()
489
+ sage: S = F.isotypes([1,2,3])
490
+ sage: S == loads(dumps(S))
491
+ True
492
+ """
493
+ SpeciesWrapper.__init__(self, species, labels,
494
+ "_isotypes",
495
+ "isotype_generating_series",
496
+ "Isomorphism types",
497
+ structure_class)
498
+
499
+
500
+ class SimpleStructuresWrapper(SpeciesWrapper):
501
+ def __init__(self, species, labels, structure_class):
502
+ """
503
+ .. warning::
504
+
505
+ This is deprecated and currently not used for anything.
506
+
507
+ EXAMPLES::
508
+
509
+ sage: F = species.SetSpecies()
510
+ sage: S = F.structures([1,2,3])
511
+ sage: S == loads(dumps(S))
512
+ True
513
+ """
514
+ SpeciesWrapper.__init__(self, species, labels,
515
+ "_simple_structures_selector",
516
+ "generating_series",
517
+ "Simple structures",
518
+ structure_class)
519
+
520
+
521
+ class SimpleIsotypesWrapper(SpeciesWrapper):
522
+ def __init__(self, species, labels, structure_class):
523
+ """
524
+ .. warning::
525
+
526
+ This is deprecated and currently not used for anything.
527
+
528
+ EXAMPLES::
529
+
530
+ sage: F = species.SetSpecies()
531
+ sage: S = F.structures([1,2,3])
532
+ sage: S == loads(dumps(S))
533
+ True
534
+ """
535
+ SpeciesWrapper.__init__(self, species, labels,
536
+ "_simple_isotypes_selector",
537
+ "isotype_generating_series",
538
+ "Simple isomorphism types",
539
+ structure_class)