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,48 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ r"""
3
+ Combinatorial species
4
+
5
+ Introductory material
6
+ ---------------------
7
+
8
+ - :ref:`section-examples-catalan`
9
+ - :ref:`section-generic-species`
10
+
11
+ Basic Species
12
+ -------------
13
+
14
+ - :ref:`sage.combinat.species.species`
15
+ - :ref:`sage.combinat.species.empty_species`
16
+ - :ref:`sage.combinat.species.recursive_species`
17
+ - :ref:`sage.combinat.species.characteristic_species`
18
+ - :ref:`sage.combinat.species.cycle_species`
19
+ - :ref:`sage.combinat.species.partition_species`
20
+ - :ref:`sage.combinat.species.permutation_species`
21
+ - :ref:`sage.combinat.species.linear_order_species`
22
+ - :ref:`sage.combinat.species.set_species`
23
+ - :ref:`sage.combinat.species.subset_species`
24
+ - :ref:`sage.combinat.species.library`
25
+
26
+ Operations on Species
27
+ ---------------------
28
+
29
+ - :ref:`sage.combinat.species.sum_species`
30
+ - :ref:`sage.combinat.species.product_species`
31
+ - :ref:`sage.combinat.species.composition_species`
32
+ - :ref:`sage.combinat.species.functorial_composition_species`
33
+
34
+ Miscellaneous
35
+ -------------
36
+
37
+ - :ref:`sage.combinat.species.structure`
38
+ - :ref:`sage.combinat.species.misc`
39
+ """
40
+ # install the docstring of this module to the containing package
41
+ from sage.misc.namespace_package import install_doc
42
+ install_doc(__package__, __doc__)
43
+
44
+ from sage.misc.lazy_import import lazy_import
45
+ lazy_import("sage.combinat.species.recursive_species", "CombinatorialSpecies")
46
+ lazy_import("sage.combinat.species", "library", as_='species')
47
+ del lazy_import
48
+ del install_doc
@@ -0,0 +1,321 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ """
3
+ Characteristic species
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2008 Mike Hansen <mhansen@gmail.com>,
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ #
10
+ # This code is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # General Public License for more details.
14
+ #
15
+ # The full text of the GPL is available at:
16
+ #
17
+ # http://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ from .species import GenericCombinatorialSpecies
21
+ from sage.arith.misc import factorial
22
+ from .structure import GenericSpeciesStructure
23
+ from .set_species import SetSpecies
24
+ from sage.structure.unique_representation import UniqueRepresentation
25
+
26
+
27
+ class CharacteristicSpeciesStructure(GenericSpeciesStructure):
28
+ def __repr__(self):
29
+ """
30
+ EXAMPLES::
31
+
32
+ sage: F = species.CharacteristicSpecies(3)
33
+ sage: a = F.structures([1, 2, 3]).random_element(); a
34
+ {1, 2, 3}
35
+ sage: F = species.SingletonSpecies()
36
+ sage: F.structures([1]).list()
37
+ [1]
38
+ sage: F = species.EmptySetSpecies()
39
+ sage: F.structures([]).list()
40
+ [{}]
41
+ """
42
+ s = GenericSpeciesStructure.__repr__(self)
43
+ if self.parent()._n == 1:
44
+ return s[1:-1]
45
+ else:
46
+ return "{" + s[1:-1] + "}"
47
+
48
+ def canonical_label(self):
49
+ """
50
+ EXAMPLES::
51
+
52
+ sage: F = species.CharacteristicSpecies(3)
53
+ sage: a = F.structures(["a", "b", "c"]).random_element(); a
54
+ {'a', 'b', 'c'}
55
+ sage: a.canonical_label()
56
+ {'a', 'b', 'c'}
57
+ """
58
+ P = self.parent()
59
+ rng = list(range(1, P._n + 1))
60
+ return CharacteristicSpeciesStructure(P, self._labels, rng)
61
+
62
+ def transport(self, perm):
63
+ """
64
+ Return the transport of this structure along the permutation ``perm``.
65
+
66
+ EXAMPLES::
67
+
68
+ sage: F = species.CharacteristicSpecies(3)
69
+ sage: a = F.structures(["a", "b", "c"]).random_element(); a
70
+ {'a', 'b', 'c'}
71
+ sage: p = PermutationGroupElement((1,2)) # needs sage.groups
72
+ sage: a.transport(p) # needs sage.groups
73
+ {'a', 'b', 'c'}
74
+ """
75
+ return self
76
+
77
+ def automorphism_group(self):
78
+ """
79
+ Return the group of permutations whose action on this structure
80
+ leave it fixed. For the characteristic species, there is only one
81
+ structure, so every permutation is in its automorphism group.
82
+
83
+ EXAMPLES::
84
+
85
+ sage: F = species.CharacteristicSpecies(3)
86
+ sage: a = F.structures(["a", "b", "c"]).random_element(); a
87
+ {'a', 'b', 'c'}
88
+ sage: a.automorphism_group() # needs sage.groups
89
+ Symmetric group of order 3! as a permutation group
90
+ """
91
+ from sage.groups.perm_gps.permgroup_named import SymmetricGroup
92
+ return SymmetricGroup(len(self._labels))
93
+
94
+
95
+ class CharacteristicSpecies(GenericCombinatorialSpecies, UniqueRepresentation):
96
+ def __init__(self, n, min=None, max=None, weight=None):
97
+ """
98
+ Return the characteristic species of order `n`.
99
+
100
+ This species has exactly one structure on a set of size `n`
101
+ and no structures on sets of any other size.
102
+
103
+ EXAMPLES::
104
+
105
+ sage: X = species.CharacteristicSpecies(1)
106
+ sage: X.structures([1]).list()
107
+ [1]
108
+ sage: X.structures([1,2]).list()
109
+ []
110
+ sage: X.generating_series()[0:4]
111
+ [0, 1, 0, 0]
112
+ sage: X.isotype_generating_series()[0:4]
113
+ [0, 1, 0, 0]
114
+ sage: X.cycle_index_series()[0:4] # needs sage.modules
115
+ [0, p[1], 0, 0]
116
+
117
+ sage: F = species.CharacteristicSpecies(3)
118
+ sage: c = F.generating_series()[0:4]
119
+ sage: F._check()
120
+ True
121
+ sage: F == loads(dumps(F))
122
+ True
123
+
124
+ TESTS::
125
+
126
+ sage: S1 = species.CharacteristicSpecies(1)
127
+ sage: S2 = species.CharacteristicSpecies(1)
128
+ sage: S3 = species.CharacteristicSpecies(2)
129
+ sage: S4 = species.CharacteristicSpecies(2, weight=2)
130
+ sage: S1 is S2
131
+ True
132
+ sage: S1 == S3
133
+ False
134
+ """
135
+ self._n = n
136
+ self._name = "Characteristic species of order %s" % n
137
+ self._state_info = [n]
138
+ GenericCombinatorialSpecies.__init__(self, min=min, max=max, weight=weight)
139
+
140
+ _default_structure_class = CharacteristicSpeciesStructure
141
+
142
+ def _structures(self, structure_class, labels):
143
+ """
144
+ EXAMPLES::
145
+
146
+ sage: F = species.CharacteristicSpecies(2)
147
+ sage: l = [1, 2, 3]
148
+ sage: F.structures(l).list()
149
+ []
150
+ sage: F = species.CharacteristicSpecies(3)
151
+ sage: F.structures(l).list()
152
+ [{1, 2, 3}]
153
+ """
154
+ if len(labels) == self._n:
155
+ yield structure_class(self, labels, range(1,self._n+1))
156
+
157
+ _isotypes = _structures
158
+
159
+ def _gs_term(self, base_ring):
160
+ """
161
+ EXAMPLES::
162
+
163
+ sage: F = species.CharacteristicSpecies(2)
164
+ sage: F.generating_series()[0:5]
165
+ [0, 0, 1/2, 0, 0]
166
+ sage: F.generating_series().count(2)
167
+ 1
168
+ """
169
+ return base_ring(self._weight) / base_ring(factorial(self._n))
170
+
171
+ def _order(self):
172
+ """
173
+ Return the order of the generating series.
174
+
175
+ EXAMPLES::
176
+
177
+ sage: F = species.CharacteristicSpecies(2)
178
+ sage: F._order()
179
+ 2
180
+ """
181
+ return self._n
182
+
183
+ def _itgs_term(self, base_ring):
184
+ """
185
+ EXAMPLES::
186
+
187
+ sage: F = species.CharacteristicSpecies(2)
188
+ sage: F.isotype_generating_series()[0:5]
189
+ [0, 0, 1, 0, 0]
190
+
191
+ Here we test out weighting each structure by q.
192
+
193
+ ::
194
+
195
+ sage: R.<q> = ZZ[]
196
+ sage: Fq = species.CharacteristicSpecies(2, weight=q)
197
+ sage: Fq.isotype_generating_series()[0:5]
198
+ [0, 0, q, 0, 0]
199
+ """
200
+ return base_ring(self._weight)
201
+
202
+ def _cis_term(self, base_ring):
203
+ """
204
+ EXAMPLES::
205
+
206
+ sage: F = species.CharacteristicSpecies(2)
207
+ sage: g = F.cycle_index_series() # needs sage.modules
208
+ sage: g[0:5] # needs sage.modules
209
+ [0, 0, 1/2*p[1, 1] + 1/2*p[2], 0, 0]
210
+ """
211
+ cis = SetSpecies(weight=self._weight).cycle_index_series(base_ring)
212
+ return cis.coefficient(self._n)
213
+
214
+ def _equation(self, var_mapping):
215
+ """
216
+ Return the right hand side of an algebraic equation satisfied by
217
+ this species. This is a utility function called by the
218
+ algebraic_equation_system method.
219
+
220
+ EXAMPLES::
221
+
222
+ sage: C = species.CharacteristicSpecies(2)
223
+ sage: Qz = QQ['z']
224
+ sage: R.<node0> = Qz[]
225
+ sage: var_mapping = {'z':Qz.gen(), 'node0':R.gen()}
226
+ sage: C._equation(var_mapping)
227
+ z^2
228
+ """
229
+ return var_mapping['z']**(self._n)
230
+
231
+
232
+ #Backward compatibility
233
+ CharacteristicSpecies_class = CharacteristicSpecies
234
+
235
+
236
+ class EmptySetSpecies(CharacteristicSpecies):
237
+ def __init__(self, min=None, max=None, weight=None):
238
+ """
239
+ Return the empty set species.
240
+
241
+ This species has exactly one structure on the empty set. It is
242
+ the same (and is implemented) as ``CharacteristicSpecies(0)``.
243
+
244
+ EXAMPLES::
245
+
246
+ sage: X = species.EmptySetSpecies()
247
+ sage: X.structures([]).list()
248
+ [{}]
249
+ sage: X.structures([1,2]).list()
250
+ []
251
+ sage: X.generating_series()[0:4]
252
+ [1, 0, 0, 0]
253
+ sage: X.isotype_generating_series()[0:4]
254
+ [1, 0, 0, 0]
255
+ sage: X.cycle_index_series()[0:4] # needs sage.modules
256
+ [p[], 0, 0, 0]
257
+
258
+ TESTS::
259
+
260
+ sage: E1 = species.EmptySetSpecies()
261
+ sage: E2 = species.EmptySetSpecies()
262
+ sage: E1 is E2
263
+ True
264
+
265
+ sage: E = species.EmptySetSpecies()
266
+ sage: E._check()
267
+ True
268
+ sage: E == loads(dumps(E))
269
+ True
270
+ """
271
+ CharacteristicSpecies_class.__init__(self, 0, min=min, max=max, weight=weight)
272
+ self._name = "Empty set species"
273
+ self._state_info = []
274
+
275
+
276
+ #Backward compatibility
277
+ EmptySetSpecies_class = EmptySetSpecies._cached_constructor = EmptySetSpecies
278
+
279
+
280
+ class SingletonSpecies(CharacteristicSpecies):
281
+ def __init__(self, min=None, max=None, weight=None):
282
+ """
283
+ Return the species of singletons.
284
+
285
+ This species has exactly one structure on a set of size `1`. It
286
+ is the same (and is implemented) as ``CharacteristicSpecies(1)``.
287
+
288
+ EXAMPLES::
289
+
290
+ sage: X = species.SingletonSpecies()
291
+ sage: X.structures([1]).list()
292
+ [1]
293
+ sage: X.structures([1,2]).list()
294
+ []
295
+ sage: X.generating_series()[0:4]
296
+ [0, 1, 0, 0]
297
+ sage: X.isotype_generating_series()[0:4]
298
+ [0, 1, 0, 0]
299
+ sage: X.cycle_index_series()[0:4] # needs sage.modules
300
+ [0, p[1], 0, 0]
301
+
302
+ TESTS::
303
+
304
+ sage: S1 = species.SingletonSpecies()
305
+ sage: S2 = species.SingletonSpecies()
306
+ sage: S1 is S2
307
+ True
308
+
309
+ sage: S = species.SingletonSpecies()
310
+ sage: S._check()
311
+ True
312
+ sage: S == loads(dumps(S))
313
+ True
314
+ """
315
+ CharacteristicSpecies_class.__init__(self, 1, min=min, max=max, weight=weight)
316
+ self._name = "Singleton species"
317
+ self._state_info = []
318
+
319
+
320
+ #Backward compatibility
321
+ SingletonSpecies_class = SingletonSpecies
@@ -0,0 +1,273 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ """
3
+ Composition species
4
+ """
5
+ #*****************************************************************************
6
+ # Copyright (C) 2008 Mike Hansen <mhansen@gmail.com>,
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ #
10
+ # This code is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # General Public License for more details.
14
+ #
15
+ # The full text of the GPL is available at:
16
+ #
17
+ # http://www.gnu.org/licenses/
18
+ #*****************************************************************************
19
+ from .species import GenericCombinatorialSpecies
20
+ from .structure import GenericSpeciesStructure
21
+ from .partition_species import PartitionSpecies
22
+ from sage.structure.unique_representation import UniqueRepresentation
23
+
24
+
25
+ class CompositionSpeciesStructure(GenericSpeciesStructure):
26
+ def __init__(self, parent, labels, pi, f, gs):
27
+ """
28
+ TESTS::
29
+
30
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
31
+ sage: L = E(C)
32
+ sage: a = L.structures(['a','b','c']).random_element() # needs sage.libs.flint
33
+ sage: a == loads(dumps(a)) # needs sage.libs.flint
34
+ True
35
+ """
36
+ self._partition = pi
37
+ GenericSpeciesStructure.__init__(self, parent, labels, [f, gs])
38
+
39
+ def __repr__(self):
40
+ """
41
+ EXAMPLES::
42
+
43
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
44
+ sage: L = E(C)
45
+ sage: L.structures(['a','b','c'])[0] # needs sage.libs.flint
46
+ F-structure: {{'a', 'b', 'c'}}; G-structures: (('a', 'b', 'c'),)
47
+ """
48
+ f, gs = self._list
49
+ return "F-structure: %s; G-structures: %s" % (repr(f), repr(gs))
50
+
51
+ def transport(self, perm):
52
+ """
53
+ EXAMPLES::
54
+
55
+ sage: p = PermutationGroupElement((2,3)) # needs sage.groups
56
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
57
+ sage: L = E(C)
58
+ sage: S = L.structures(['a','b','c']).list() # needs sage.libs.flint
59
+ sage: a = S[2]; a # needs sage.libs.flint
60
+ F-structure: {{'a', 'c'}, {'b'}}; G-structures: (('a', 'c'), ('b'))
61
+ sage: a.transport(p) # needs sage.groups sage.libs.flint
62
+ F-structure: {{'a', 'b'}, {'c'}}; G-structures: (('a', 'c'), ('b'))
63
+ """
64
+ f, gs = self._list
65
+ pi = self._partition.transport(perm)
66
+ f = f.change_labels(pi._list)
67
+ _ = [g.change_labels(part) for g, part in zip(gs, pi)] # TODO: BUG HERE ?
68
+ return self.__class__(self, self._labels, pi, f, gs)
69
+
70
+ def change_labels(self, labels):
71
+ """
72
+ Return a relabelled structure.
73
+
74
+ INPUT:
75
+
76
+ - ``labels`` -- list of labels
77
+
78
+ OUTPUT:
79
+
80
+ A structure with the `i`-th label of ``self`` replaced with the `i`-th
81
+ label of the list.
82
+
83
+ EXAMPLES::
84
+
85
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
86
+ sage: L = E(C)
87
+ sage: S = L.structures(['a','b','c']).list() # needs sage.libs.flint
88
+ sage: a = S[2]; a # needs sage.libs.flint
89
+ F-structure: {{'a', 'c'}, {'b'}}; G-structures: (('a', 'c'), ('b'))
90
+ sage: a.change_labels([1,2,3]) # needs sage.libs.flint
91
+ F-structure: {{1, 3}, {2}}; G-structures: [(1, 3), (2)]
92
+ """
93
+ f, gs = self._list
94
+ pi = self._partition.change_labels(labels)
95
+ f = f.change_labels(list(pi))
96
+ g = [g.change_labels(part) for g, part in zip(gs, pi)]
97
+ return self.__class__(self, labels, pi, f, g)
98
+
99
+
100
+ class CompositionSpecies(GenericCombinatorialSpecies, UniqueRepresentation):
101
+ def __init__(self, F, G, min=None, max=None, weight=None):
102
+ """
103
+ Return the composition of two species.
104
+
105
+ EXAMPLES::
106
+
107
+ sage: E = species.SetSpecies()
108
+ sage: C = species.CycleSpecies()
109
+ sage: S = E(C)
110
+ sage: S.generating_series()[:5]
111
+ [1, 1, 1, 1, 1]
112
+ sage: E(C) is S
113
+ True
114
+
115
+ TESTS::
116
+
117
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
118
+ sage: L = E(C)
119
+ sage: c = L.generating_series()[:3]
120
+ sage: L._check() #False due to isomorphism types not being implemented # needs sage.libs.flint
121
+ False
122
+ sage: L == loads(dumps(L))
123
+ True
124
+ """
125
+ self._F = F
126
+ self._G = G
127
+ self._name = "Composition of (%s) and (%s)" % (F, G)
128
+ self._state_info = [F, G]
129
+ GenericCombinatorialSpecies.__init__(self, min=None, max=None, weight=None)
130
+
131
+ _default_structure_class = CompositionSpeciesStructure
132
+
133
+ def _structures(self, structure_class, labels):
134
+ """
135
+ EXAMPLES::
136
+
137
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
138
+ sage: L = E(C)
139
+ sage: L.structures(['a','b','c']).list() # needs sage.libs.flint
140
+ [F-structure: {{'a', 'b', 'c'}}; G-structures: (('a', 'b', 'c'),),
141
+ F-structure: {{'a', 'b', 'c'}}; G-structures: (('a', 'c', 'b'),),
142
+ F-structure: {{'a', 'c'}, {'b'}}; G-structures: (('a', 'c'), ('b')),
143
+ F-structure: {{'a', 'b'}, {'c'}}; G-structures: (('a', 'b'), ('c')),
144
+ F-structure: {{'b', 'c'}, {'a'}}; G-structures: (('b', 'c'), ('a')),
145
+ F-structure: {{'a'}, {'b'}, {'c'}}; G-structures: (('a'), ('b'), ('c'))]
146
+
147
+ TESTS::
148
+
149
+ sage: # needs sage.libs.flint
150
+ sage: a = _[2]
151
+ sage: f, gs = a._list
152
+ sage: f
153
+ {{'a', 'c'}, {'b'}}
154
+ sage: f.parent()
155
+ Set species
156
+ sage: f._list
157
+ [1, 2]
158
+ sage: f._labels
159
+ [{'a', 'c'}, {'b'}]
160
+ sage: [g.parent() for g in gs]
161
+ [Cyclic permutation species, Cyclic permutation species]
162
+ sage: [g._labels for g in gs]
163
+ [['a', 'c'], ['b']]
164
+ sage: [g._list for g in gs]
165
+ [[1, 2], [1]]
166
+ """
167
+ from itertools import product
168
+ P = PartitionSpecies()
169
+ for pi in P.structures(labels):
170
+ # The labels of the G-structures will be just be the things
171
+ # in labels
172
+ gs = product(*[self._G.structures(part.label_subset()) for part in pi])
173
+
174
+ # The labels of the F-structure will be set objects
175
+ fs = self._F.structures(list(pi))
176
+ for f, gg in product(fs, gs):
177
+ yield structure_class(self, labels, pi, f, gg)
178
+
179
+ def _isotypes(self, structure_class, labels):
180
+ """
181
+ EXAMPLES::
182
+
183
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
184
+ sage: L = E(C)
185
+ sage: L.isotypes(['a','b','c']).list() # needs sage.modules
186
+ Traceback (most recent call last):
187
+ ...
188
+ NotImplementedError
189
+ """
190
+ raise NotImplementedError
191
+
192
+ def _gs(self, series_ring, base_ring):
193
+ """
194
+ EXAMPLES::
195
+
196
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
197
+ sage: L = E(C)
198
+ sage: L.generating_series()[:5]
199
+ [1, 1, 1, 1, 1]
200
+ """
201
+ return self._F.generating_series(base_ring)(self._G.generating_series(base_ring))
202
+
203
+ def _itgs(self, series_ring, base_ring):
204
+ """
205
+ EXAMPLES::
206
+
207
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
208
+ sage: L = E(C)
209
+ sage: L.isotype_generating_series()[:10] # needs sage.modules
210
+ [1, 1, 2, 3, 5, 7, 11, 15, 22, 30]
211
+ """
212
+ cis = self.cycle_index_series(base_ring)
213
+ return cis.isotype_generating_series()
214
+
215
+ def _cis(self, series_ring, base_ring):
216
+ """
217
+ EXAMPLES::
218
+
219
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
220
+ sage: L = E(C)
221
+ sage: L.cycle_index_series()[:5] # needs sage.modules
222
+ [p[],
223
+ p[1],
224
+ p[1, 1] + p[2],
225
+ p[1, 1, 1] + p[2, 1] + p[3],
226
+ p[1, 1, 1, 1] + p[2, 1, 1] + p[2, 2] + p[3, 1] + p[4]]
227
+
228
+ Here we (indirectly) check that the cycle index series for
229
+ permutations weighted by the number of cycles is correctly
230
+ computed.
231
+
232
+ ::
233
+
234
+ sage: t = QQ['t'].gen()
235
+ sage: E = species.SetSpecies()
236
+ sage: C = species.CycleSpecies(weight=t)
237
+ sage: S = E(C)
238
+ sage: S.isotype_generating_series()[:5] #indirect # needs sage.modules
239
+ [1, t, t^2 + t, t^3 + t^2 + t, t^4 + t^3 + 2*t^2 + t]
240
+
241
+ We do the same thing with set partitions weighted by the number of
242
+ blocks.
243
+
244
+ ::
245
+
246
+ sage: t = QQ['t'].gen()
247
+ sage: E = species.SetSpecies()
248
+ sage: E_t = species.SetSpecies(min=1,weight=t)
249
+ sage: Par = E(E_t)
250
+ sage: Par.isotype_generating_series()[:5] # needs sage.modules
251
+ [1, t, t^2 + t, t^3 + t^2 + t, t^4 + t^3 + 2*t^2 + t]
252
+ """
253
+ f_cis = self._F.cycle_index_series(base_ring)
254
+ g_cis = self._G.cycle_index_series(base_ring)
255
+ return f_cis(g_cis)
256
+
257
+ def weight_ring(self):
258
+ """
259
+ Return the weight ring for this species. This is determined by
260
+ asking Sage's coercion model what the result is when you multiply
261
+ (and add) elements of the weight rings for each of the operands.
262
+
263
+ EXAMPLES::
264
+
265
+ sage: E = species.SetSpecies(); C = species.CycleSpecies()
266
+ sage: L = E(C)
267
+ sage: L.weight_ring()
268
+ Rational Field
269
+ """
270
+ return self._common_parent([self._F.weight_ring(), self._G.weight_ring()])
271
+
272
+
273
+ CompositionSpecies_class = CompositionSpecies