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,393 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ """
3
+ Local copy of the On-Line Encyclopedia of Integer Sequences
4
+
5
+ The ``SloaneEncyclopedia`` object provides access to a local copy of the database
6
+ containing only the sequences and their names. To use this, you must download
7
+ and install the database using ``SloaneEncyclopedia.install()``, or
8
+ ``SloaneEncyclopedia.install_from_gz()`` if you have already downloaded the
9
+ database manually.
10
+
11
+ To look up a sequence, type
12
+
13
+ ::
14
+
15
+ sage: SloaneEncyclopedia[60843] # optional - sloane_database
16
+ [1, 6, 21, 107, 47176870]
17
+
18
+ To get the name of a sequence, type
19
+
20
+ ::
21
+
22
+ sage: SloaneEncyclopedia.sequence_name(1) # optional - sloane_database
23
+ 'Number of groups of order n.'
24
+
25
+ To search locally for a particular subsequence, type
26
+
27
+ ::
28
+
29
+ sage: SloaneEncyclopedia.find([1,2,3,4,5], 1) # optional - sloane_database
30
+ [(15, [1, 2, 3, 4, 5, 7, 7, 8, 9, 11, 11, 13, 13, 16, 16, 16, 17, 19, 19, 23, 23, 23, 23, 25, 25, 27, 27, 29, 29, 31, 31, 32, 37, 37, 37, 37, 37, 41, 41, 41, 41, 43, 43, 47, 47, 47, 47, 49, 49, 53, 53, 53, 53, 59, 59, 59, 59, 59, 59, 61, 61, 64, 64, 64, 67, 67, 67, 71, 71, 71, 71, 73])]
31
+
32
+ The default maximum number of results is 30, but to return up to
33
+ 100, type
34
+
35
+ ::
36
+
37
+ sage: SloaneEncyclopedia.find([1,2,3,4,5], 100) # optional - sloane_database
38
+ [(15, [1, 2, 3, 4, 5, 7, 7, 8, 9, 11, 11, ...
39
+
40
+ Results in either case are of the form [ (number, list) ].
41
+
42
+
43
+ .. SEEALSO::
44
+
45
+ - If you want to get more informations relative to a sequence (references,
46
+ links, examples, programs, ...), you can use the On-Line Encyclopedia of
47
+ Integer Sequences provided by the :mod:`OEIS <sage.databases.oeis>`
48
+ module.
49
+ - Some infinite OEIS sequences are implemented in Sage, via the
50
+ :mod:`sloane_functions <sage.combinat.sloane_functions>` module.
51
+
52
+
53
+ AUTHORS:
54
+
55
+ - Steven Sivek (2005-12-22): first version
56
+
57
+ - Steven Sivek (2006-02-07): updated to correctly handle the new
58
+ search form on the Sloane website, and it is now also smarter about
59
+ loading the local database in that it does not convert a sequence
60
+ from string form to a list of integers until absolutely necessary.
61
+ This seems to cut the loading time roughly in half.
62
+
63
+ - Steven Sivek (2009-12-22): added the SloaneEncyclopedia functions
64
+ install() and install_from_gz() so users can get the latest versions
65
+ of the OEIS without having to get an updated spkg; added
66
+ sequence_name() to return the description of a sequence; and changed
67
+ the data type for elements of each sequence from int to Integer.
68
+
69
+ - Thierry Monteil (2012-02-10): deprecated dead code and update related doc and
70
+ tests.
71
+ """
72
+
73
+ # ****************************************************************************
74
+ #
75
+ # Sage: Copyright (C) 2005-2006 William Stein <wstein@gmail.com>
76
+ # and Steven Sivek <ssivek@mit.edu>
77
+ #
78
+ # Distributed under the terms of the GNU General Public License (GPL)
79
+ #
80
+ # https://www.gnu.org/licenses/
81
+ # ****************************************************************************
82
+
83
+ import bz2
84
+ import os
85
+ import re
86
+
87
+ from urllib.request import urlretrieve
88
+ import ssl
89
+
90
+ from sage.misc.verbose import verbose
91
+ from sage.env import SAGE_SHARE
92
+ from sage.rings.integer_ring import ZZ
93
+
94
+
95
+ class SloaneEncyclopediaClass:
96
+ """
97
+ A local copy of the Sloane Online Encyclopedia of Integer Sequences
98
+ that contains only the sequence numbers and the sequences
99
+ themselves.
100
+ """
101
+ def __init__(self):
102
+ """
103
+ Initialize the database but do not load any of the data.
104
+ """
105
+ self.__path__ = os.path.join(SAGE_SHARE, 'sloane')
106
+ self.__file__ = os.path.join(self.__path__, 'sloane-oeis.bz2')
107
+ self.__file_names__ = os.path.join(self.__path__, 'sloane-names.bz2')
108
+ self.__loaded__ = False
109
+ self.__loaded_names__ = False
110
+
111
+ def __repr__(self):
112
+ """
113
+ String representation of this database.
114
+
115
+ OUTPUT: string
116
+ """
117
+ return "Local copy of Sloane Online Encyclopedia of Integer Sequences"
118
+
119
+ def __iter__(self):
120
+ """
121
+ Return an iterator through the encyclopedia. Elements are of the
122
+ form [number, sequence].
123
+ """
124
+ for i in self.__data__:
125
+ yield [i, self[i]]
126
+
127
+ def __getitem__(self, N):
128
+ """
129
+ Return sequence N in the encyclopedia. If sequence N does not
130
+ exist, return ``[]``.
131
+
132
+ INPUT:
133
+
134
+ - ``N`` -- integer
135
+
136
+ OUTPUT: list
137
+ """
138
+ self.load()
139
+ if N not in self.__data__: # sequence N does not exist
140
+ return []
141
+ if self.__data__[N][1] is None: # list N has not been created yet
142
+ list = self.__data__[N][2].strip(',').split(',')
143
+ self.__data__[N][1] = [ZZ(n) for n in list]
144
+ return self.__data__[N][1]
145
+
146
+ def __len__(self):
147
+ """
148
+ Return the number of sequences in the encyclopedia.
149
+ """
150
+ self.load()
151
+ return len(self.__data__)
152
+
153
+ def is_installed(self):
154
+ """
155
+ Check if a local copy of the encyclopedia is installed.
156
+
157
+ EXAMPLES::
158
+
159
+ sage: SloaneEncyclopedia.is_installed() # optional - sloane_database
160
+ True
161
+ """
162
+ return os.path.exists(self.__file__) and os.path.exists(self.__file_names__)
163
+
164
+ def find(self, seq, maxresults=30):
165
+ """
166
+ Return a list of all sequences which have seq as a subsequence, up
167
+ to maxresults results. Sequences are returned in the form (number,
168
+ list).
169
+
170
+ INPUT:
171
+
172
+ - ``seq`` -- list
173
+
174
+ - ``maxresults`` -- integer
175
+
176
+ OUTPUT: list of 2-tuples (i, v), where v is a sequence with seq as
177
+ a subsequence.
178
+ """
179
+ self.load()
180
+
181
+ answer, nanswer = [], 0
182
+ pattern = re.sub(r'[\[\]]', ',', str(seq).replace(' ', ''))
183
+ for i in self.__data__:
184
+ if self.__data__[i][2].find(pattern) != -1:
185
+ answer.append((i, self[i]))
186
+ nanswer = nanswer + 1
187
+ if nanswer == maxresults:
188
+ return answer
189
+
190
+ return answer
191
+
192
+ def install(self, oeis_url='https://oeis.org/stripped.gz',
193
+ names_url='https://oeis.org/names.gz', overwrite=False):
194
+ """
195
+ Download and install the online encyclopedia, raising an IOError if
196
+ either step fails.
197
+
198
+ INPUT:
199
+
200
+ - ``oeis_url`` -- string (default: ``'https://oeis.org...'``)
201
+ The URL of the stripped.gz encyclopedia file
202
+
203
+ - ``names_url`` -- string (default: ``'https://oeis.org...'``)
204
+ The URL of the names.gz encyclopedia file. If you do not want to
205
+ download this file, set names_url=None.
206
+
207
+ - ``overwrite`` -- boolean (default: ``False``); if the encyclopedia is
208
+ already installed and overwrite=True, download and install the latest
209
+ version over the installed one
210
+ """
211
+ # See if the encyclopedia already exists
212
+ if not overwrite and os.path.exists(self.__file__):
213
+ raise OSError("Sloane encyclopedia is already installed")
214
+
215
+ tm = verbose("Downloading stripped version of Sloane encyclopedia")
216
+ ssl._create_default_https_context = ssl.create_default_context
217
+ try:
218
+ fname, _ = urlretrieve(oeis_url)
219
+ except OSError as msg:
220
+ raise OSError("%s\nError fetching the following website:\n %s\nTry checking your internet connection." % (msg, oeis_url))
221
+
222
+ if names_url is not None:
223
+ try:
224
+ nname, _ = urlretrieve(names_url)
225
+ except OSError as msg:
226
+ raise OSError("%s\nError fetching the following website:\n %s\nTry checking your internet connection." % (msg, names_url))
227
+ else:
228
+ nname = None
229
+ verbose("Finished downloading", tm)
230
+
231
+ self.install_from_gz(fname, nname, overwrite)
232
+ # Delete the temporary downloaded files
233
+ os.remove(fname)
234
+ if nname is not None:
235
+ os.remove(nname)
236
+
237
+ def install_from_gz(self, stripped_file, names_file, overwrite=False):
238
+ """
239
+ Install the online encyclopedia from a local stripped.gz file.
240
+
241
+ INPUT:
242
+
243
+ - ``stripped_file`` -- string; the name of the stripped.gz OEIS file
244
+
245
+ - ``names_file`` -- string; the name of the names.gz OEIS file, or
246
+ None if the user does not want it installed
247
+
248
+ - ``overwrite`` -- boolean (default: ``False``); if the encyclopedia is
249
+ already installed and ``overwrite=True``, install 'filename' over the
250
+ old encyclopedia
251
+ """
252
+ if not overwrite and os.path.exists(self.__file__):
253
+ raise OSError("Sloane encyclopedia is already installed")
254
+
255
+ copy_gz_file(stripped_file, self.__file__)
256
+
257
+ if names_file is not None:
258
+ copy_gz_file(names_file, self.__file_names__)
259
+ else:
260
+ # Delete old copies of names.gz since their sequence numbers
261
+ # probably will not match the newly installed stripped.gz
262
+ if os.path.exists(self.__file_names__):
263
+ os.remove(self.__file_names__)
264
+
265
+ # Remove the old database from memory so the new one will be
266
+ # automatically loaded next time the user tries to access it
267
+ self.unload()
268
+
269
+ def load(self):
270
+ """
271
+ Load the entire encyclopedia into memory from a file. This is done
272
+ automatically if the user tries to perform a lookup or a search.
273
+ """
274
+ if self.__loaded__:
275
+ return
276
+ try:
277
+ file_seq = bz2.BZ2File(self.__file__, 'r')
278
+ except OSError:
279
+ raise OSError("The Sloane Encyclopedia database must be installed."
280
+ " Use e.g. 'SloaneEncyclopedia.install()' to download and install it.")
281
+
282
+ self.__data__ = {}
283
+
284
+ tm = verbose("Loading Sloane encyclopedia from disk")
285
+ entry = re.compile(r'A(?P<num>\d{6}) ,(?P<body>.*),$')
286
+ for L in file_seq:
287
+ if len(L) == 0:
288
+ continue
289
+ m = entry.search(L.decode('utf-8'))
290
+ if m:
291
+ seqnum = int(m.group('num'))
292
+ msg = m.group('body').strip()
293
+ self.__data__[seqnum] = [seqnum, None, ',' + msg + ',', None]
294
+ file_seq.close()
295
+
296
+ try:
297
+ file_names = bz2.BZ2File(self.__file_names__, 'r')
298
+ entry = re.compile(r'A(?P<num>\d{6}) (?P<body>.*)$')
299
+ for L in file_names:
300
+ if not L:
301
+ continue
302
+ m = entry.search(L.decode('utf-8'))
303
+ if m:
304
+ seqnum = int(m.group('num'))
305
+ if seqnum in self.__data__:
306
+ self.__data__[seqnum][3] = m.group('body').strip()
307
+ else:
308
+ self.__data__[seqnum] = [seqnum, None, 'unknown', m.group('body').strip()]
309
+ file_names.close()
310
+ self.__loaded_names__ = True
311
+ except KeyError:
312
+ # Some sequence in the names file is not in the database
313
+ raise KeyError("Sloane OEIS sequence and name files do not match."
314
+ " Try reinstalling, e.g. SloaneEncyclopedia.install(overwrite=True).")
315
+ except OSError:
316
+ # The names database is not installed
317
+ self.__loaded_names__ = False
318
+
319
+ verbose("Finished loading", tm)
320
+ self.__loaded__ = True
321
+
322
+ def sequence_name(self, N):
323
+ """
324
+ Return the name of sequence ``N`` in the encyclopedia.
325
+
326
+ If sequence ``N`` does not exist, return ``''``. If the names
327
+ database is not installed, raise an :exc:`IOError`.
328
+
329
+ INPUT:
330
+
331
+ - ``N`` -- integer
332
+
333
+ OUTPUT: string
334
+
335
+ EXAMPLES::
336
+
337
+ sage: SloaneEncyclopedia.sequence_name(1) # optional - sloane_database
338
+ 'Number of groups of order n.'
339
+ """
340
+ self.load()
341
+ if not self.__loaded_names__:
342
+ raise OSError("The Sloane OEIS names file is not installed."
343
+ " Try reinstalling, e.g. SloaneEncyclopedia.install(overwrite=True).")
344
+
345
+ if N not in self.__data__: # sequence N does not exist
346
+ return ''
347
+ return self.__data__[N][3]
348
+
349
+ def unload(self):
350
+ """
351
+ Remove the database from memory.
352
+ """
353
+ if not self.__loaded__:
354
+ return
355
+ del self.__data__
356
+ self.__loaded__ = False
357
+ self.__loaded_names__ = False
358
+
359
+
360
+ SloaneEncyclopedia = SloaneEncyclopediaClass()
361
+
362
+
363
+ def copy_gz_file(gz_source, bz_destination):
364
+ """
365
+ Decompress a gzipped file and install the bzipped version.
366
+
367
+ This is used by SloaneEncyclopedia.install_from_gz to install
368
+ several gzipped OEIS database files.
369
+
370
+ INPUT:
371
+
372
+ - ``gz_source`` -- string; the name of the gzipped file
373
+
374
+ - ``bz_destination`` -- string; the name of the newly compressed file
375
+ """
376
+ import gzip
377
+
378
+ # Read the gzipped input
379
+ try:
380
+ gz_input = gzip.open(gz_source, 'r')
381
+ db_text = gz_input.read()
382
+ gz_input.close()
383
+ except OSError as msg:
384
+ raise OSError("Error reading gzipped input file:\n%s" % msg)
385
+
386
+ # Write the bzipped output
387
+ try:
388
+ os.makedirs(os.path.dirname(bz_destination), exist_ok=True)
389
+ bz2_output = bz2.BZ2File(bz_destination, 'w')
390
+ bz2_output.write(db_text)
391
+ bz2_output.close()
392
+ except OSError as msg:
393
+ raise OSError("Error writing bzipped output file:\n%s" % msg)
@@ -0,0 +1,14 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+
3
+ from sage.misc.lazy_import import lazy_import
4
+
5
+ from sage.dynamics.cellular_automata.all import *
6
+
7
+ # Discrete dynamical systems
8
+ lazy_import('sage.dynamics.finite_dynamical_system',
9
+ ['DiscreteDynamicalSystem'])
10
+
11
+ lazy_import('sage.dynamics', 'finite_dynamical_system_catalog',
12
+ 'finite_dynamical_systems')
13
+
14
+ del lazy_import
@@ -0,0 +1,7 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ import sage.dynamics.cellular_automata.catalog as cellular_automata
3
+
4
+ from sage.misc.lazy_import import lazy_import
5
+ lazy_import("sage.dynamics.cellular_automata.solitons",
6
+ ["SolitonCellularAutomata", "PeriodicSolitonCellularAutomata"])
7
+ del lazy_import
@@ -0,0 +1,34 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Catalog of Cellular Automata
4
+
5
+ The ``cellular_automata`` object may be used to access examples of various
6
+ cellular automata currently implemented in Sage. Using tab-completion on
7
+ this object is an easy way to discover and quickly create the cellular
8
+ automata that are available (as listed here).
9
+
10
+ Let ``<tab>`` indicate pressing the :kbd:`Tab` key. So begin by typing
11
+ ``cellular_automata.<tab>`` to the see the currently implemented
12
+ named cellular automata.
13
+
14
+ - :class:`cellular_automata.Elementary
15
+ <sage.dynamics.cellular_automata.elementary.ElementaryCellularAutomata>`
16
+ - :class:`cellular_automata.GraftalLace
17
+ <sage.dynamics.cellular_automata.glca.GraftalLaceCellularAutomata>`
18
+ - :class:`cellular_automata.PeriodicSoliton
19
+ <sage.dynamics.cellular_automata.solitons.PeriodicSolitonCellularAutomata>`
20
+ - :class:`cellular_automata.Soliton
21
+ <sage.dynamics.cellular_automata.solitons.SolitonCellularAutomata>`
22
+ """
23
+
24
+ from sage.misc.lazy_import import lazy_import
25
+ lazy_import('sage.dynamics.cellular_automata.elementary',
26
+ 'ElementaryCellularAutomata', 'Elementary',)
27
+ lazy_import('sage.dynamics.cellular_automata.glca',
28
+ 'GraftalLaceCellularAutomata', 'GraftalLace',)
29
+ lazy_import('sage.dynamics.cellular_automata.solitons',
30
+ 'SolitonCellularAutomata', 'Soliton')
31
+ lazy_import('sage.dynamics.cellular_automata.solitons',
32
+ 'PeriodicSolitonCellularAutomata', 'PeriodicSoliton')
33
+
34
+ del lazy_import # We remove the object from here so it doesn't appear under tab completion