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,228 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ PicoSAT Solver
4
+
5
+ This solver relies on the ``pycosat`` Python bindings to ``PicoSAT``.
6
+
7
+ The ``pycosat`` package should be installed on your Sage installation.
8
+
9
+ AUTHORS:
10
+
11
+ - Thierry Monteil (2018): initial version.
12
+ """
13
+
14
+ # ****************************************************************************
15
+ # Copyright (C) 2018 Thierry Monteil <sage!lma.metelu.net>
16
+ #
17
+ # Distributed under the terms of the GNU General Public License (GPL)
18
+ # as published by the Free Software Foundation; either version 2 of
19
+ # the License, or (at your option) any later version.
20
+ # https://www.gnu.org/licenses/
21
+ # ****************************************************************************
22
+ from .satsolver import SatSolver
23
+
24
+ from sage.misc.lazy_import import lazy_import
25
+ from sage.features.sat import Pycosat
26
+
27
+ lazy_import('pycosat', ['solve'], feature=Pycosat())
28
+
29
+
30
+ class PicoSAT(SatSolver):
31
+ r"""
32
+ PicoSAT Solver.
33
+
34
+ INPUT:
35
+
36
+ - ``verbosity`` -- integer between 0 and 2 (default: 0)
37
+
38
+ - ``prop_limit`` -- integer (default: 0); the propagation limit
39
+
40
+ EXAMPLES::
41
+
42
+ sage: from sage.sat.solvers.picosat import PicoSAT
43
+ sage: solver = PicoSAT() # optional - pycosat
44
+ """
45
+ def __init__(self, verbosity=0, prop_limit=0):
46
+ r"""
47
+ Construct a new PicoSAT instance.
48
+
49
+ See the documentation class for the description of inputs.
50
+
51
+ EXAMPLES::
52
+
53
+ sage: from sage.sat.solvers.picosat import PicoSAT
54
+ sage: solver = PicoSAT() # optional - pycosat
55
+ """
56
+ self._verbosity = int(verbosity)
57
+ if prop_limit is None:
58
+ self._prop_limit = 0
59
+ else:
60
+ self._prop_limit = int(prop_limit)
61
+ self._solve = solve
62
+ self._nvars = 0
63
+ self._clauses = []
64
+
65
+ def var(self, decision=None):
66
+ r"""
67
+ Return a *new* variable.
68
+
69
+ INPUT:
70
+
71
+ - ``decision`` -- ignored; accepted for compatibility with other solvers
72
+
73
+ EXAMPLES::
74
+
75
+ sage: from sage.sat.solvers.picosat import PicoSAT
76
+ sage: solver = PicoSAT() # optional - pycosat
77
+ sage: solver.var() # optional - pycosat
78
+ 1
79
+
80
+ sage: solver.add_clause((-1,2,-4)) # optional - pycosat
81
+ sage: solver.var() # optional - pycosat
82
+ 5
83
+ """
84
+ self._nvars += 1
85
+ return self._nvars
86
+
87
+ def nvars(self):
88
+ r"""
89
+ Return the number of variables.
90
+
91
+ Note that for compatibility with DIMACS convention, the number
92
+ of variables corresponds to the maximal index of the variables used.
93
+
94
+ EXAMPLES::
95
+
96
+ sage: from sage.sat.solvers.picosat import PicoSAT
97
+ sage: solver = PicoSAT() # optional - pycosat
98
+ sage: solver.nvars() # optional - pycosat
99
+ 0
100
+
101
+ If a variable with intermediate index is not used, it is still
102
+ considered as a variable::
103
+
104
+ sage: solver.add_clause((1,-2,4)) # optional - pycosat
105
+ sage: solver.nvars() # optional - pycosat
106
+ 4
107
+ """
108
+ return self._nvars
109
+
110
+ def add_clause(self, lits):
111
+ r"""
112
+ Add a new clause to set of clauses.
113
+
114
+ INPUT:
115
+
116
+ - ``lits`` -- tuple of nonzero integers
117
+
118
+ .. NOTE::
119
+
120
+ If any element ``e`` in ``lits`` has ``abs(e)`` greater
121
+ than the number of variables generated so far, then new
122
+ variables are created automatically.
123
+
124
+ EXAMPLES::
125
+
126
+ sage: from sage.sat.solvers.picosat import PicoSAT
127
+ sage: solver = PicoSAT() # optional - pycosat
128
+ sage: solver.add_clause((1, -2 , 3)) # optional - pycosat
129
+ """
130
+ if 0 in lits:
131
+ raise ValueError("0 should not appear in the clause: {}".format(lits))
132
+ # pycosat does not handle Sage integers
133
+ lits = [int(i) for i in lits]
134
+ self._nvars = max(self._nvars, *(abs(i) for i in lits))
135
+ self._clauses.append(lits)
136
+
137
+ def __call__(self, assumptions=None):
138
+ r"""
139
+ Solve this instance.
140
+
141
+ OUTPUT:
142
+
143
+ - If this instance is SAT: A tuple of length ``nvars() + 1``,
144
+ where the ``i``-th entry holds an assignment for the
145
+ ``i``-th variables (the ``0``-th entry is always ``None``).
146
+
147
+ - If this instance is UNSAT: ``False``.
148
+
149
+ EXAMPLES::
150
+
151
+ sage: # optional - pycosat
152
+ sage: from sage.sat.solvers.picosat import PicoSAT
153
+ sage: solver = PicoSAT()
154
+ sage: solver.add_clause((1,2))
155
+ sage: solver.add_clause((-1,2))
156
+ sage: solver.add_clause((-1,-2))
157
+ sage: solver()
158
+ (None, False, True)
159
+
160
+ sage: solver.add_clause((1,-2)) # optional - pycosat
161
+ sage: solver() # optional - pycosat
162
+ False
163
+ """
164
+ # import pycosat
165
+ # self._solve = pycosat.solve
166
+ sol = self._solve(self._clauses, verbose=self._verbosity,
167
+ prop_limit=self._prop_limit, vars=self._nvars)
168
+ # sol = pycosat.solve(self._clauses)
169
+ if sol == 'UNSAT':
170
+ return False
171
+ else:
172
+ return (None,) + tuple([s > 0 for s in sol])
173
+
174
+ def __repr__(self):
175
+ r"""
176
+ TESTS::
177
+
178
+ sage: from sage.sat.solvers.picosat import PicoSAT
179
+ sage: solver = PicoSAT() # optional - pycosat
180
+ sage: solver # optional - pycosat
181
+ PicoSAT solver: 0 variables, 0 clauses.
182
+ """
183
+ return "PicoSAT solver: {} variables, {} clauses.".format(self.nvars(), len(self.clauses()))
184
+
185
+ def clauses(self, filename=None):
186
+ r"""
187
+ Return original clauses.
188
+
189
+ INPUT:
190
+
191
+ - ``filename`` -- (optional) if given, clauses are written to
192
+ ``filename`` in DIMACS format
193
+
194
+ OUTPUT:
195
+
196
+ If ``filename`` is ``None`` then a list of ``lits`` is returned,
197
+ where ``lits`` is a list of literals.
198
+
199
+ If ``filename`` points to a writable file, then the list of original
200
+ clauses is written to that file in DIMACS format.
201
+
202
+ EXAMPLES::
203
+
204
+ sage: from sage.sat.solvers.picosat import PicoSAT
205
+ sage: solver = PicoSAT() # optional - pycosat
206
+ sage: solver.add_clause((1,2,3,4,5,6,7,8,-9)) # optional - pycosat
207
+ sage: solver.clauses() # optional - pycosat
208
+ [[1, 2, 3, 4, 5, 6, 7, 8, -9]]
209
+
210
+ DIMACS format output::
211
+
212
+ sage: # optional - pycosat
213
+ sage: from sage.sat.solvers.picosat import PicoSAT
214
+ sage: solver = PicoSAT()
215
+ sage: solver.add_clause((1, 2, 4))
216
+ sage: solver.add_clause((1, 2, -4))
217
+ sage: fn = tmp_filename()
218
+ sage: solver.clauses(fn)
219
+ sage: print(open(fn).read())
220
+ p cnf 4 2
221
+ 1 2 4 0
222
+ 1 2 -4 0
223
+ <BLANKLINE>
224
+ """
225
+ if filename is None:
226
+ return self._clauses
227
+ from sage.sat.solvers.dimacs import DIMACS
228
+ DIMACS.render_dimacs(self._clauses, filename, self.nvars())
@@ -0,0 +1,156 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.numerical.mip
3
+ r"""
4
+ Solve SAT problems Integer Linear Programming
5
+
6
+ The class defined here is a :class:`~sage.sat.solvers.satsolver.SatSolver` that
7
+ solves its instance using :class:`MixedIntegerLinearProgram`. Its performance
8
+ can be expected to be slower than when using
9
+ :class:`~sage.sat.solvers.cryptominisat.cryptominisat.CryptoMiniSat`.
10
+ """
11
+ from .satsolver import SatSolver
12
+ from sage.numerical.mip import MixedIntegerLinearProgram, MIPSolverException
13
+
14
+
15
+ class SatLP(SatSolver):
16
+ def __init__(self, solver=None, verbose=0, *, integrality_tolerance=1e-3):
17
+ r"""
18
+ Initialize the instance.
19
+
20
+ INPUT:
21
+
22
+ - ``solver`` -- (default: ``None``) specify a Mixed Integer Linear Programming
23
+ (MILP) solver to be used. If set to ``None``, the default one is used. For
24
+ more information on MILP solvers and which default solver is used, see
25
+ the method
26
+ :meth:`solve <sage.numerical.mip.MixedIntegerLinearProgram.solve>`
27
+ of the class
28
+ :class:`MixedIntegerLinearProgram <sage.numerical.mip.MixedIntegerLinearProgram>`.
29
+
30
+ - ``verbose`` -- integer (default: 0); sets the level of verbosity
31
+ of the LP solver. Set to 0 by default, which means quiet.
32
+
33
+ - ``integrality_tolerance`` -- parameter for use with MILP solvers over an
34
+ inexact base ring; see :meth:`MixedIntegerLinearProgram.get_values`
35
+
36
+ EXAMPLES::
37
+
38
+ sage: S=SAT(solver='LP'); S
39
+ an ILP-based SAT Solver
40
+ """
41
+ SatSolver.__init__(self)
42
+ self._LP = MixedIntegerLinearProgram(solver=solver)
43
+ self._LP_verbose = verbose
44
+ self._vars = self._LP.new_variable(binary=True)
45
+ self._integrality_tolerance = integrality_tolerance
46
+
47
+ def var(self):
48
+ """
49
+ Return a *new* variable.
50
+
51
+ EXAMPLES::
52
+
53
+ sage: S=SAT(solver='LP'); S
54
+ an ILP-based SAT Solver
55
+ sage: S.var()
56
+ 1
57
+ """
58
+ nvars = n = self._LP.number_of_variables()
59
+ while nvars == self._LP.number_of_variables():
60
+ n += 1
61
+ self._vars[n] # creates the variable if needed
62
+ return n
63
+
64
+ def nvars(self):
65
+ """
66
+ Return the number of variables.
67
+
68
+ EXAMPLES::
69
+
70
+ sage: S=SAT(solver='LP'); S
71
+ an ILP-based SAT Solver
72
+ sage: S.var()
73
+ 1
74
+ sage: S.var()
75
+ 2
76
+ sage: S.nvars()
77
+ 2
78
+ """
79
+ return self._LP.number_of_variables()
80
+
81
+ def add_clause(self, lits):
82
+ """
83
+ Add a new clause to set of clauses.
84
+
85
+ INPUT:
86
+
87
+ - ``lits`` -- tuple of nonzero integers
88
+
89
+ .. NOTE::
90
+
91
+ If any element ``e`` in ``lits`` has ``abs(e)`` greater
92
+ than the number of variables generated so far, then new
93
+ variables are created automatically.
94
+
95
+ EXAMPLES::
96
+
97
+ sage: S=SAT(solver='LP'); S
98
+ an ILP-based SAT Solver
99
+ sage: for u,v in graphs.CycleGraph(6).edges(sort=False, labels=False):
100
+ ....: u,v = u+1,v+1
101
+ ....: S.add_clause((u,v))
102
+ ....: S.add_clause((-u,-v))
103
+ """
104
+ if 0 in lits:
105
+ raise ValueError("0 should not appear in the clause: {}".format(lits))
106
+ p = self._LP
107
+ p.add_constraint(p.sum(self._vars[x] if x > 0 else 1-self._vars[-x] for x in lits)
108
+ >= 1)
109
+
110
+ def __call__(self):
111
+ """
112
+ Solve this instance.
113
+
114
+ OUTPUT:
115
+
116
+ - If this instance is SAT: A tuple of length ``nvars()+1``
117
+ where the ``i``-th entry holds an assignment for the
118
+ ``i``-th variables (the ``0``-th entry is always ``None``).
119
+
120
+ - If this instance is UNSAT: ``False``
121
+
122
+ EXAMPLES::
123
+
124
+ sage: def is_bipartite_SAT(G):
125
+ ....: S=SAT(solver='LP'); S
126
+ ....: for u,v in G.edges(sort=False, labels=False):
127
+ ....: u,v = u+1,v+1
128
+ ....: S.add_clause((u,v))
129
+ ....: S.add_clause((-u,-v))
130
+ ....: return S
131
+ sage: S = is_bipartite_SAT(graphs.CycleGraph(6))
132
+ sage: S() # random
133
+ [None, True, False, True, False, True, False]
134
+ sage: True in S()
135
+ True
136
+ sage: S = is_bipartite_SAT(graphs.CycleGraph(7))
137
+ sage: S()
138
+ False
139
+ """
140
+ try:
141
+ self._LP.solve(log=self._LP_verbose)
142
+ except MIPSolverException:
143
+ return False
144
+
145
+ b = self._LP.get_values(self._vars, convert=bool, tolerance=self._integrality_tolerance)
146
+ n = max(b)
147
+ return [None] + [b.get(i, False) for i in range(1, n + 1)]
148
+
149
+ def __repr__(self):
150
+ """
151
+ TESTS::
152
+
153
+ sage: S=SAT(solver='LP'); S
154
+ an ILP-based SAT Solver
155
+ """
156
+ return "an ILP-based SAT Solver"
@@ -0,0 +1,3 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ cdef class SatSolver:
3
+ pass