passagemath-categories 10.6.31rc3__cp314-cp314-macosx_13_0_arm64.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 (717) hide show
  1. passagemath_categories-10.6.31rc3.dist-info/METADATA +156 -0
  2. passagemath_categories-10.6.31rc3.dist-info/RECORD +717 -0
  3. passagemath_categories-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_categories-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_categories.dylibs/libgmp.10.dylib +0 -0
  6. sage/all__sagemath_categories.py +28 -0
  7. sage/arith/all.py +38 -0
  8. sage/arith/constants.pxd +27 -0
  9. sage/arith/functions.cpython-314-darwin.so +0 -0
  10. sage/arith/functions.pxd +4 -0
  11. sage/arith/functions.pyx +221 -0
  12. sage/arith/misc.py +6552 -0
  13. sage/arith/multi_modular.cpython-314-darwin.so +0 -0
  14. sage/arith/multi_modular.pxd +39 -0
  15. sage/arith/multi_modular.pyx +994 -0
  16. sage/arith/rational_reconstruction.cpython-314-darwin.so +0 -0
  17. sage/arith/rational_reconstruction.pxd +4 -0
  18. sage/arith/rational_reconstruction.pyx +115 -0
  19. sage/arith/srange.cpython-314-darwin.so +0 -0
  20. sage/arith/srange.pyx +571 -0
  21. sage/calculus/all__sagemath_categories.py +2 -0
  22. sage/calculus/functional.py +481 -0
  23. sage/calculus/functions.py +151 -0
  24. sage/categories/additive_groups.py +73 -0
  25. sage/categories/additive_magmas.py +1044 -0
  26. sage/categories/additive_monoids.py +114 -0
  27. sage/categories/additive_semigroups.py +184 -0
  28. sage/categories/affine_weyl_groups.py +238 -0
  29. sage/categories/algebra_ideals.py +95 -0
  30. sage/categories/algebra_modules.py +96 -0
  31. sage/categories/algebras.py +349 -0
  32. sage/categories/algebras_with_basis.py +377 -0
  33. sage/categories/all.py +160 -0
  34. sage/categories/aperiodic_semigroups.py +29 -0
  35. sage/categories/associative_algebras.py +47 -0
  36. sage/categories/bialgebras.py +101 -0
  37. sage/categories/bialgebras_with_basis.py +414 -0
  38. sage/categories/bimodules.py +206 -0
  39. sage/categories/chain_complexes.py +268 -0
  40. sage/categories/classical_crystals.py +480 -0
  41. sage/categories/coalgebras.py +405 -0
  42. sage/categories/coalgebras_with_basis.py +232 -0
  43. sage/categories/coercion_methods.cpython-314-darwin.so +0 -0
  44. sage/categories/coercion_methods.pyx +52 -0
  45. sage/categories/commutative_additive_groups.py +104 -0
  46. sage/categories/commutative_additive_monoids.py +45 -0
  47. sage/categories/commutative_additive_semigroups.py +48 -0
  48. sage/categories/commutative_algebra_ideals.py +87 -0
  49. sage/categories/commutative_algebras.py +94 -0
  50. sage/categories/commutative_ring_ideals.py +58 -0
  51. sage/categories/commutative_rings.py +736 -0
  52. sage/categories/complete_discrete_valuation.py +293 -0
  53. sage/categories/complex_reflection_groups.py +145 -0
  54. sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
  55. sage/categories/coxeter_group_algebras.py +186 -0
  56. sage/categories/coxeter_groups.py +3402 -0
  57. sage/categories/crystals.py +2628 -0
  58. sage/categories/cw_complexes.py +216 -0
  59. sage/categories/dedekind_domains.py +137 -0
  60. sage/categories/discrete_valuation.py +325 -0
  61. sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
  62. sage/categories/division_rings.py +114 -0
  63. sage/categories/domains.py +95 -0
  64. sage/categories/drinfeld_modules.py +789 -0
  65. sage/categories/dual.py +42 -0
  66. sage/categories/enumerated_sets.py +1146 -0
  67. sage/categories/euclidean_domains.py +271 -0
  68. sage/categories/examples/algebras_with_basis.py +102 -0
  69. sage/categories/examples/all.py +1 -0
  70. sage/categories/examples/commutative_additive_monoids.py +130 -0
  71. sage/categories/examples/commutative_additive_semigroups.py +199 -0
  72. sage/categories/examples/coxeter_groups.py +8 -0
  73. sage/categories/examples/crystals.py +236 -0
  74. sage/categories/examples/cw_complexes.py +163 -0
  75. sage/categories/examples/facade_sets.py +187 -0
  76. sage/categories/examples/filtered_algebras_with_basis.py +204 -0
  77. sage/categories/examples/filtered_modules_with_basis.py +154 -0
  78. sage/categories/examples/finite_coxeter_groups.py +252 -0
  79. sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
  80. sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
  81. sage/categories/examples/finite_enumerated_sets.py +208 -0
  82. sage/categories/examples/finite_monoids.py +150 -0
  83. sage/categories/examples/finite_semigroups.py +190 -0
  84. sage/categories/examples/finite_weyl_groups.py +191 -0
  85. sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
  86. sage/categories/examples/graded_modules_with_basis.py +168 -0
  87. sage/categories/examples/graphs.py +122 -0
  88. sage/categories/examples/hopf_algebras_with_basis.py +145 -0
  89. sage/categories/examples/infinite_enumerated_sets.py +190 -0
  90. sage/categories/examples/lie_algebras.py +352 -0
  91. sage/categories/examples/lie_algebras_with_basis.py +196 -0
  92. sage/categories/examples/magmas.py +162 -0
  93. sage/categories/examples/manifolds.py +94 -0
  94. sage/categories/examples/monoids.py +144 -0
  95. sage/categories/examples/posets.py +178 -0
  96. sage/categories/examples/semigroups.py +580 -0
  97. sage/categories/examples/semigroups_cython.cpython-314-darwin.so +0 -0
  98. sage/categories/examples/semigroups_cython.pyx +221 -0
  99. sage/categories/examples/semirings.py +249 -0
  100. sage/categories/examples/sets_cat.py +706 -0
  101. sage/categories/examples/sets_with_grading.py +101 -0
  102. sage/categories/examples/with_realizations.py +542 -0
  103. sage/categories/fields.py +991 -0
  104. sage/categories/filtered_algebras.py +63 -0
  105. sage/categories/filtered_algebras_with_basis.py +548 -0
  106. sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
  107. sage/categories/filtered_modules.py +210 -0
  108. sage/categories/filtered_modules_with_basis.py +1209 -0
  109. sage/categories/finite_complex_reflection_groups.py +1506 -0
  110. sage/categories/finite_coxeter_groups.py +1138 -0
  111. sage/categories/finite_crystals.py +103 -0
  112. sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
  113. sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
  114. sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
  115. sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
  116. sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
  117. sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
  118. sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
  119. sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
  120. sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
  121. sage/categories/finite_enumerated_sets.py +769 -0
  122. sage/categories/finite_fields.py +252 -0
  123. sage/categories/finite_groups.py +256 -0
  124. sage/categories/finite_lattice_posets.py +242 -0
  125. sage/categories/finite_monoids.py +316 -0
  126. sage/categories/finite_permutation_groups.py +339 -0
  127. sage/categories/finite_posets.py +1994 -0
  128. sage/categories/finite_semigroups.py +136 -0
  129. sage/categories/finite_sets.py +93 -0
  130. sage/categories/finite_weyl_groups.py +39 -0
  131. sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
  132. sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
  133. sage/categories/finitely_generated_magmas.py +57 -0
  134. sage/categories/finitely_generated_semigroups.py +214 -0
  135. sage/categories/function_fields.py +76 -0
  136. sage/categories/g_sets.py +77 -0
  137. sage/categories/gcd_domains.py +65 -0
  138. sage/categories/generalized_coxeter_groups.py +94 -0
  139. sage/categories/graded_algebras.py +85 -0
  140. sage/categories/graded_algebras_with_basis.py +258 -0
  141. sage/categories/graded_bialgebras.py +32 -0
  142. sage/categories/graded_bialgebras_with_basis.py +32 -0
  143. sage/categories/graded_coalgebras.py +65 -0
  144. sage/categories/graded_coalgebras_with_basis.py +51 -0
  145. sage/categories/graded_hopf_algebras.py +41 -0
  146. sage/categories/graded_hopf_algebras_with_basis.py +169 -0
  147. sage/categories/graded_lie_algebras.py +91 -0
  148. sage/categories/graded_lie_algebras_with_basis.py +44 -0
  149. sage/categories/graded_lie_conformal_algebras.py +74 -0
  150. sage/categories/graded_modules.py +133 -0
  151. sage/categories/graded_modules_with_basis.py +329 -0
  152. sage/categories/graphs.py +138 -0
  153. sage/categories/group_algebras.py +430 -0
  154. sage/categories/groupoid.py +94 -0
  155. sage/categories/groups.py +667 -0
  156. sage/categories/h_trivial_semigroups.py +64 -0
  157. sage/categories/hecke_modules.py +185 -0
  158. sage/categories/highest_weight_crystals.py +980 -0
  159. sage/categories/hopf_algebras.py +219 -0
  160. sage/categories/hopf_algebras_with_basis.py +309 -0
  161. sage/categories/infinite_enumerated_sets.py +115 -0
  162. sage/categories/integral_domains.py +203 -0
  163. sage/categories/j_trivial_semigroups.py +29 -0
  164. sage/categories/kac_moody_algebras.py +82 -0
  165. sage/categories/kahler_algebras.py +203 -0
  166. sage/categories/l_trivial_semigroups.py +63 -0
  167. sage/categories/lambda_bracket_algebras.py +280 -0
  168. sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
  169. sage/categories/lattice_posets.py +89 -0
  170. sage/categories/left_modules.py +49 -0
  171. sage/categories/lie_algebras.py +1070 -0
  172. sage/categories/lie_algebras_with_basis.py +261 -0
  173. sage/categories/lie_conformal_algebras.py +350 -0
  174. sage/categories/lie_conformal_algebras_with_basis.py +147 -0
  175. sage/categories/lie_groups.py +73 -0
  176. sage/categories/loop_crystals.py +1290 -0
  177. sage/categories/magmas.py +1189 -0
  178. sage/categories/magmas_and_additive_magmas.py +149 -0
  179. sage/categories/magmatic_algebras.py +365 -0
  180. sage/categories/manifolds.py +352 -0
  181. sage/categories/matrix_algebras.py +40 -0
  182. sage/categories/metric_spaces.py +387 -0
  183. sage/categories/modular_abelian_varieties.py +78 -0
  184. sage/categories/modules.py +989 -0
  185. sage/categories/modules_with_basis.py +2794 -0
  186. sage/categories/monoid_algebras.py +38 -0
  187. sage/categories/monoids.py +739 -0
  188. sage/categories/noetherian_rings.py +87 -0
  189. sage/categories/number_fields.py +242 -0
  190. sage/categories/ore_modules.py +189 -0
  191. sage/categories/partially_ordered_monoids.py +49 -0
  192. sage/categories/permutation_groups.py +63 -0
  193. sage/categories/pointed_sets.py +42 -0
  194. sage/categories/polyhedra.py +74 -0
  195. sage/categories/poor_man_map.py +270 -0
  196. sage/categories/posets.py +722 -0
  197. sage/categories/principal_ideal_domains.py +270 -0
  198. sage/categories/quantum_group_representations.py +543 -0
  199. sage/categories/quotient_fields.py +728 -0
  200. sage/categories/r_trivial_semigroups.py +45 -0
  201. sage/categories/regular_crystals.py +898 -0
  202. sage/categories/regular_supercrystals.py +170 -0
  203. sage/categories/right_modules.py +49 -0
  204. sage/categories/ring_ideals.py +74 -0
  205. sage/categories/rings.py +1904 -0
  206. sage/categories/rngs.py +175 -0
  207. sage/categories/schemes.py +393 -0
  208. sage/categories/semigroups.py +1060 -0
  209. sage/categories/semirings.py +71 -0
  210. sage/categories/semisimple_algebras.py +114 -0
  211. sage/categories/sets_with_grading.py +235 -0
  212. sage/categories/shephard_groups.py +43 -0
  213. sage/categories/signed_tensor.py +120 -0
  214. sage/categories/simplicial_complexes.py +134 -0
  215. sage/categories/simplicial_sets.py +1206 -0
  216. sage/categories/super_algebras.py +149 -0
  217. sage/categories/super_algebras_with_basis.py +144 -0
  218. sage/categories/super_hopf_algebras_with_basis.py +126 -0
  219. sage/categories/super_lie_conformal_algebras.py +193 -0
  220. sage/categories/super_modules.py +229 -0
  221. sage/categories/super_modules_with_basis.py +193 -0
  222. sage/categories/supercommutative_algebras.py +99 -0
  223. sage/categories/supercrystals.py +406 -0
  224. sage/categories/tensor.py +110 -0
  225. sage/categories/topological_spaces.py +170 -0
  226. sage/categories/triangular_kac_moody_algebras.py +439 -0
  227. sage/categories/tutorial.py +58 -0
  228. sage/categories/unique_factorization_domains.py +318 -0
  229. sage/categories/unital_algebras.py +426 -0
  230. sage/categories/vector_bundles.py +159 -0
  231. sage/categories/vector_spaces.py +357 -0
  232. sage/categories/weyl_groups.py +853 -0
  233. sage/combinat/all__sagemath_categories.py +34 -0
  234. sage/combinat/backtrack.py +180 -0
  235. sage/combinat/combinat.py +2269 -0
  236. sage/combinat/combinat_cython.cpython-314-darwin.so +0 -0
  237. sage/combinat/combinat_cython.pxd +6 -0
  238. sage/combinat/combinat_cython.pyx +390 -0
  239. sage/combinat/combination.py +796 -0
  240. sage/combinat/combinatorial_map.py +416 -0
  241. sage/combinat/composition.py +2192 -0
  242. sage/combinat/dlx.py +510 -0
  243. sage/combinat/integer_lists/__init__.py +7 -0
  244. sage/combinat/integer_lists/base.cpython-314-darwin.so +0 -0
  245. sage/combinat/integer_lists/base.pxd +16 -0
  246. sage/combinat/integer_lists/base.pyx +713 -0
  247. sage/combinat/integer_lists/invlex.cpython-314-darwin.so +0 -0
  248. sage/combinat/integer_lists/invlex.pxd +4 -0
  249. sage/combinat/integer_lists/invlex.pyx +1650 -0
  250. sage/combinat/integer_lists/lists.py +328 -0
  251. sage/combinat/integer_lists/nn.py +48 -0
  252. sage/combinat/integer_vector.py +1818 -0
  253. sage/combinat/integer_vector_weighted.py +413 -0
  254. sage/combinat/matrices/all__sagemath_categories.py +5 -0
  255. sage/combinat/matrices/dancing_links.cpython-314-darwin.so +0 -0
  256. sage/combinat/matrices/dancing_links.pyx +1159 -0
  257. sage/combinat/matrices/dancing_links_c.h +380 -0
  258. sage/combinat/matrices/dlxcpp.py +136 -0
  259. sage/combinat/partition.py +10070 -0
  260. sage/combinat/partitions.cpython-314-darwin.so +0 -0
  261. sage/combinat/partitions.pyx +743 -0
  262. sage/combinat/permutation.py +10168 -0
  263. sage/combinat/permutation_cython.cpython-314-darwin.so +0 -0
  264. sage/combinat/permutation_cython.pxd +11 -0
  265. sage/combinat/permutation_cython.pyx +407 -0
  266. sage/combinat/q_analogues.py +1090 -0
  267. sage/combinat/ranker.py +268 -0
  268. sage/combinat/subset.py +1561 -0
  269. sage/combinat/subsets_hereditary.py +202 -0
  270. sage/combinat/subsets_pairwise.py +184 -0
  271. sage/combinat/tools.py +63 -0
  272. sage/combinat/tuple.py +348 -0
  273. sage/data_structures/all.py +2 -0
  274. sage/data_structures/all__sagemath_categories.py +2 -0
  275. sage/data_structures/binary_matrix.pxd +138 -0
  276. sage/data_structures/binary_search.cpython-314-darwin.so +0 -0
  277. sage/data_structures/binary_search.pxd +3 -0
  278. sage/data_structures/binary_search.pyx +66 -0
  279. sage/data_structures/bitset.cpython-314-darwin.so +0 -0
  280. sage/data_structures/bitset.pxd +40 -0
  281. sage/data_structures/bitset.pyx +2385 -0
  282. sage/data_structures/bitset_base.cpython-314-darwin.so +0 -0
  283. sage/data_structures/bitset_base.pxd +926 -0
  284. sage/data_structures/bitset_base.pyx +117 -0
  285. sage/data_structures/bitset_intrinsics.h +487 -0
  286. sage/data_structures/blas_dict.cpython-314-darwin.so +0 -0
  287. sage/data_structures/blas_dict.pxd +12 -0
  288. sage/data_structures/blas_dict.pyx +469 -0
  289. sage/data_structures/list_of_pairs.cpython-314-darwin.so +0 -0
  290. sage/data_structures/list_of_pairs.pxd +16 -0
  291. sage/data_structures/list_of_pairs.pyx +122 -0
  292. sage/data_structures/mutable_poset.py +3312 -0
  293. sage/data_structures/pairing_heap.cpython-314-darwin.so +0 -0
  294. sage/data_structures/pairing_heap.h +346 -0
  295. sage/data_structures/pairing_heap.pxd +88 -0
  296. sage/data_structures/pairing_heap.pyx +1464 -0
  297. sage/data_structures/sparse_bitset.pxd +62 -0
  298. sage/data_structures/stream.py +5070 -0
  299. sage/databases/all__sagemath_categories.py +7 -0
  300. sage/databases/sql_db.py +2236 -0
  301. sage/ext/all__sagemath_categories.py +3 -0
  302. sage/ext/fast_callable.cpython-314-darwin.so +0 -0
  303. sage/ext/fast_callable.pxd +4 -0
  304. sage/ext/fast_callable.pyx +2746 -0
  305. sage/ext/fast_eval.cpython-314-darwin.so +0 -0
  306. sage/ext/fast_eval.pxd +1 -0
  307. sage/ext/fast_eval.pyx +102 -0
  308. sage/ext/interpreters/__init__.py +1 -0
  309. sage/ext/interpreters/all__sagemath_categories.py +2 -0
  310. sage/ext/interpreters/wrapper_el.cpython-314-darwin.so +0 -0
  311. sage/ext/interpreters/wrapper_el.pxd +18 -0
  312. sage/ext/interpreters/wrapper_el.pyx +148 -0
  313. sage/ext/interpreters/wrapper_py.cpython-314-darwin.so +0 -0
  314. sage/ext/interpreters/wrapper_py.pxd +17 -0
  315. sage/ext/interpreters/wrapper_py.pyx +133 -0
  316. sage/functions/airy.py +937 -0
  317. sage/functions/all.py +97 -0
  318. sage/functions/bessel.py +2102 -0
  319. sage/functions/error.py +784 -0
  320. sage/functions/exp_integral.py +1529 -0
  321. sage/functions/gamma.py +1087 -0
  322. sage/functions/generalized.py +672 -0
  323. sage/functions/hyperbolic.py +747 -0
  324. sage/functions/hypergeometric.py +1156 -0
  325. sage/functions/jacobi.py +1705 -0
  326. sage/functions/log.py +1402 -0
  327. sage/functions/min_max.py +338 -0
  328. sage/functions/orthogonal_polys.py +3106 -0
  329. sage/functions/other.py +2303 -0
  330. sage/functions/piecewise.py +1505 -0
  331. sage/functions/prime_pi.cpython-314-darwin.so +0 -0
  332. sage/functions/prime_pi.pyx +262 -0
  333. sage/functions/special.py +1212 -0
  334. sage/functions/spike_function.py +278 -0
  335. sage/functions/transcendental.py +690 -0
  336. sage/functions/trig.py +1062 -0
  337. sage/functions/wigner.py +726 -0
  338. sage/geometry/abc.cpython-314-darwin.so +0 -0
  339. sage/geometry/abc.pyx +82 -0
  340. sage/geometry/all__sagemath_categories.py +1 -0
  341. sage/groups/all__sagemath_categories.py +11 -0
  342. sage/groups/generic.py +1733 -0
  343. sage/groups/groups_catalog.py +113 -0
  344. sage/groups/perm_gps/all__sagemath_categories.py +1 -0
  345. sage/groups/perm_gps/partn_ref/all.py +1 -0
  346. sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
  347. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314-darwin.so +0 -0
  348. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
  349. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
  350. sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314-darwin.so +0 -0
  351. sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
  352. sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
  353. sage/groups/perm_gps/partn_ref/data_structures.cpython-314-darwin.so +0 -0
  354. sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
  355. sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
  356. sage/groups/perm_gps/partn_ref/double_coset.cpython-314-darwin.so +0 -0
  357. sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
  358. sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
  359. sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314-darwin.so +0 -0
  360. sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
  361. sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
  362. sage/groups/perm_gps/partn_ref/refinement_python.cpython-314-darwin.so +0 -0
  363. sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
  364. sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
  365. sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314-darwin.so +0 -0
  366. sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
  367. sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
  368. sage/interfaces/abc.py +140 -0
  369. sage/interfaces/all.py +58 -0
  370. sage/interfaces/all__sagemath_categories.py +1 -0
  371. sage/interfaces/expect.py +1643 -0
  372. sage/interfaces/interface.py +1682 -0
  373. sage/interfaces/process.cpython-314-darwin.so +0 -0
  374. sage/interfaces/process.pxd +5 -0
  375. sage/interfaces/process.pyx +288 -0
  376. sage/interfaces/quit.py +167 -0
  377. sage/interfaces/sage0.py +604 -0
  378. sage/interfaces/sagespawn.cpython-314-darwin.so +0 -0
  379. sage/interfaces/sagespawn.pyx +308 -0
  380. sage/interfaces/tab_completion.py +101 -0
  381. sage/misc/all__sagemath_categories.py +78 -0
  382. sage/misc/allocator.cpython-314-darwin.so +0 -0
  383. sage/misc/allocator.pxd +6 -0
  384. sage/misc/allocator.pyx +47 -0
  385. sage/misc/binary_tree.cpython-314-darwin.so +0 -0
  386. sage/misc/binary_tree.pxd +29 -0
  387. sage/misc/binary_tree.pyx +537 -0
  388. sage/misc/callable_dict.cpython-314-darwin.so +0 -0
  389. sage/misc/callable_dict.pyx +89 -0
  390. sage/misc/citation.cpython-314-darwin.so +0 -0
  391. sage/misc/citation.pyx +159 -0
  392. sage/misc/converting_dict.py +293 -0
  393. sage/misc/defaults.py +129 -0
  394. sage/misc/derivative.cpython-314-darwin.so +0 -0
  395. sage/misc/derivative.pyx +223 -0
  396. sage/misc/functional.py +2005 -0
  397. sage/misc/html.py +589 -0
  398. sage/misc/latex.py +2673 -0
  399. sage/misc/latex_macros.py +236 -0
  400. sage/misc/latex_standalone.py +1833 -0
  401. sage/misc/map_threaded.py +38 -0
  402. sage/misc/mathml.py +76 -0
  403. sage/misc/method_decorator.py +88 -0
  404. sage/misc/mrange.py +755 -0
  405. sage/misc/multireplace.py +41 -0
  406. sage/misc/object_multiplexer.py +92 -0
  407. sage/misc/parser.cpython-314-darwin.so +0 -0
  408. sage/misc/parser.pyx +1107 -0
  409. sage/misc/random_testing.py +264 -0
  410. sage/misc/rest_index_of_methods.py +377 -0
  411. sage/misc/search.cpython-314-darwin.so +0 -0
  412. sage/misc/search.pxd +2 -0
  413. sage/misc/search.pyx +68 -0
  414. sage/misc/stopgap.cpython-314-darwin.so +0 -0
  415. sage/misc/stopgap.pyx +95 -0
  416. sage/misc/table.py +853 -0
  417. sage/monoids/all__sagemath_categories.py +1 -0
  418. sage/monoids/indexed_free_monoid.py +1071 -0
  419. sage/monoids/monoid.py +82 -0
  420. sage/numerical/all__sagemath_categories.py +1 -0
  421. sage/numerical/backends/all__sagemath_categories.py +1 -0
  422. sage/numerical/backends/generic_backend.cpython-314-darwin.so +0 -0
  423. sage/numerical/backends/generic_backend.pxd +61 -0
  424. sage/numerical/backends/generic_backend.pyx +1893 -0
  425. sage/numerical/backends/generic_sdp_backend.cpython-314-darwin.so +0 -0
  426. sage/numerical/backends/generic_sdp_backend.pxd +38 -0
  427. sage/numerical/backends/generic_sdp_backend.pyx +755 -0
  428. sage/parallel/all.py +6 -0
  429. sage/parallel/decorate.py +575 -0
  430. sage/parallel/map_reduce.py +1997 -0
  431. sage/parallel/multiprocessing_sage.py +76 -0
  432. sage/parallel/ncpus.py +35 -0
  433. sage/parallel/parallelism.py +364 -0
  434. sage/parallel/reference.py +47 -0
  435. sage/parallel/use_fork.py +333 -0
  436. sage/rings/abc.cpython-314-darwin.so +0 -0
  437. sage/rings/abc.pxd +31 -0
  438. sage/rings/abc.pyx +526 -0
  439. sage/rings/algebraic_closure_finite_field.py +1154 -0
  440. sage/rings/all__sagemath_categories.py +91 -0
  441. sage/rings/big_oh.py +227 -0
  442. sage/rings/continued_fraction.py +2754 -0
  443. sage/rings/continued_fraction_gosper.py +220 -0
  444. sage/rings/factorint.cpython-314-darwin.so +0 -0
  445. sage/rings/factorint.pyx +295 -0
  446. sage/rings/fast_arith.cpython-314-darwin.so +0 -0
  447. sage/rings/fast_arith.pxd +21 -0
  448. sage/rings/fast_arith.pyx +535 -0
  449. sage/rings/finite_rings/all__sagemath_categories.py +9 -0
  450. sage/rings/finite_rings/conway_polynomials.py +542 -0
  451. sage/rings/finite_rings/element_base.cpython-314-darwin.so +0 -0
  452. sage/rings/finite_rings/element_base.pxd +12 -0
  453. sage/rings/finite_rings/element_base.pyx +1176 -0
  454. sage/rings/finite_rings/finite_field_base.cpython-314-darwin.so +0 -0
  455. sage/rings/finite_rings/finite_field_base.pxd +7 -0
  456. sage/rings/finite_rings/finite_field_base.pyx +2171 -0
  457. sage/rings/finite_rings/finite_field_constructor.py +827 -0
  458. sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
  459. sage/rings/finite_rings/galois_group.py +154 -0
  460. sage/rings/finite_rings/hom_finite_field.cpython-314-darwin.so +0 -0
  461. sage/rings/finite_rings/hom_finite_field.pxd +23 -0
  462. sage/rings/finite_rings/hom_finite_field.pyx +856 -0
  463. sage/rings/finite_rings/hom_prime_finite_field.cpython-314-darwin.so +0 -0
  464. sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
  465. sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
  466. sage/rings/finite_rings/homset.py +357 -0
  467. sage/rings/finite_rings/integer_mod.cpython-314-darwin.so +0 -0
  468. sage/rings/finite_rings/integer_mod.pxd +56 -0
  469. sage/rings/finite_rings/integer_mod.pyx +4586 -0
  470. sage/rings/finite_rings/integer_mod_limits.h +11 -0
  471. sage/rings/finite_rings/integer_mod_ring.py +2044 -0
  472. sage/rings/finite_rings/residue_field.cpython-314-darwin.so +0 -0
  473. sage/rings/finite_rings/residue_field.pxd +30 -0
  474. sage/rings/finite_rings/residue_field.pyx +1811 -0
  475. sage/rings/finite_rings/stdint.pxd +19 -0
  476. sage/rings/fraction_field.py +1452 -0
  477. sage/rings/fraction_field_element.cpython-314-darwin.so +0 -0
  478. sage/rings/fraction_field_element.pyx +1357 -0
  479. sage/rings/function_field/all.py +7 -0
  480. sage/rings/function_field/all__sagemath_categories.py +2 -0
  481. sage/rings/function_field/constructor.py +218 -0
  482. sage/rings/function_field/element.cpython-314-darwin.so +0 -0
  483. sage/rings/function_field/element.pxd +11 -0
  484. sage/rings/function_field/element.pyx +1008 -0
  485. sage/rings/function_field/element_rational.cpython-314-darwin.so +0 -0
  486. sage/rings/function_field/element_rational.pyx +513 -0
  487. sage/rings/function_field/extensions.py +230 -0
  488. sage/rings/function_field/function_field.py +1468 -0
  489. sage/rings/function_field/function_field_rational.py +1005 -0
  490. sage/rings/function_field/ideal.py +1155 -0
  491. sage/rings/function_field/ideal_rational.py +629 -0
  492. sage/rings/function_field/jacobian_base.py +826 -0
  493. sage/rings/function_field/jacobian_hess.py +1053 -0
  494. sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
  495. sage/rings/function_field/maps.py +1039 -0
  496. sage/rings/function_field/order.py +281 -0
  497. sage/rings/function_field/order_basis.py +586 -0
  498. sage/rings/function_field/order_rational.py +576 -0
  499. sage/rings/function_field/place.py +426 -0
  500. sage/rings/function_field/place_rational.py +181 -0
  501. sage/rings/generic.py +320 -0
  502. sage/rings/homset.py +332 -0
  503. sage/rings/ideal.py +1885 -0
  504. sage/rings/ideal_monoid.py +215 -0
  505. sage/rings/infinity.py +1890 -0
  506. sage/rings/integer.cpython-314-darwin.so +0 -0
  507. sage/rings/integer.pxd +45 -0
  508. sage/rings/integer.pyx +7871 -0
  509. sage/rings/integer_ring.cpython-314-darwin.so +0 -0
  510. sage/rings/integer_ring.pxd +8 -0
  511. sage/rings/integer_ring.pyx +1693 -0
  512. sage/rings/laurent_series_ring.py +931 -0
  513. sage/rings/laurent_series_ring_element.cpython-314-darwin.so +0 -0
  514. sage/rings/laurent_series_ring_element.pxd +11 -0
  515. sage/rings/laurent_series_ring_element.pyx +1927 -0
  516. sage/rings/lazy_series.py +7815 -0
  517. sage/rings/lazy_series_ring.py +4356 -0
  518. sage/rings/localization.py +1043 -0
  519. sage/rings/morphism.cpython-314-darwin.so +0 -0
  520. sage/rings/morphism.pxd +39 -0
  521. sage/rings/morphism.pyx +3299 -0
  522. sage/rings/multi_power_series_ring.py +1145 -0
  523. sage/rings/multi_power_series_ring_element.py +2184 -0
  524. sage/rings/noncommutative_ideals.cpython-314-darwin.so +0 -0
  525. sage/rings/noncommutative_ideals.pyx +423 -0
  526. sage/rings/number_field/all__sagemath_categories.py +1 -0
  527. sage/rings/number_field/number_field_base.cpython-314-darwin.so +0 -0
  528. sage/rings/number_field/number_field_base.pxd +8 -0
  529. sage/rings/number_field/number_field_base.pyx +507 -0
  530. sage/rings/number_field/number_field_element_base.cpython-314-darwin.so +0 -0
  531. sage/rings/number_field/number_field_element_base.pxd +6 -0
  532. sage/rings/number_field/number_field_element_base.pyx +36 -0
  533. sage/rings/number_field/number_field_ideal.py +3550 -0
  534. sage/rings/padics/all__sagemath_categories.py +4 -0
  535. sage/rings/padics/local_generic.py +1670 -0
  536. sage/rings/padics/local_generic_element.cpython-314-darwin.so +0 -0
  537. sage/rings/padics/local_generic_element.pxd +5 -0
  538. sage/rings/padics/local_generic_element.pyx +1017 -0
  539. sage/rings/padics/misc.py +256 -0
  540. sage/rings/padics/padic_generic.py +1911 -0
  541. sage/rings/padics/pow_computer.cpython-314-darwin.so +0 -0
  542. sage/rings/padics/pow_computer.pxd +38 -0
  543. sage/rings/padics/pow_computer.pyx +671 -0
  544. sage/rings/padics/precision_error.py +24 -0
  545. sage/rings/polynomial/all__sagemath_categories.py +25 -0
  546. sage/rings/polynomial/commutative_polynomial.cpython-314-darwin.so +0 -0
  547. sage/rings/polynomial/commutative_polynomial.pxd +6 -0
  548. sage/rings/polynomial/commutative_polynomial.pyx +24 -0
  549. sage/rings/polynomial/cyclotomic.cpython-314-darwin.so +0 -0
  550. sage/rings/polynomial/cyclotomic.pyx +404 -0
  551. sage/rings/polynomial/flatten.py +711 -0
  552. sage/rings/polynomial/ideal.py +102 -0
  553. sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
  554. sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
  555. sage/rings/polynomial/laurent_polynomial.cpython-314-darwin.so +0 -0
  556. sage/rings/polynomial/laurent_polynomial.pxd +18 -0
  557. sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
  558. sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
  559. sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
  560. sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
  561. sage/rings/polynomial/multi_polynomial.cpython-314-darwin.so +0 -0
  562. sage/rings/polynomial/multi_polynomial.pxd +12 -0
  563. sage/rings/polynomial/multi_polynomial.pyx +3082 -0
  564. sage/rings/polynomial/multi_polynomial_element.py +2570 -0
  565. sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
  566. sage/rings/polynomial/multi_polynomial_ring.py +947 -0
  567. sage/rings/polynomial/multi_polynomial_ring_base.cpython-314-darwin.so +0 -0
  568. sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
  569. sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
  570. sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
  571. sage/rings/polynomial/polydict.cpython-314-darwin.so +0 -0
  572. sage/rings/polynomial/polydict.pxd +45 -0
  573. sage/rings/polynomial/polydict.pyx +2701 -0
  574. sage/rings/polynomial/polynomial_compiled.cpython-314-darwin.so +0 -0
  575. sage/rings/polynomial/polynomial_compiled.pxd +59 -0
  576. sage/rings/polynomial/polynomial_compiled.pyx +509 -0
  577. sage/rings/polynomial/polynomial_element.cpython-314-darwin.so +0 -0
  578. sage/rings/polynomial/polynomial_element.pxd +64 -0
  579. sage/rings/polynomial/polynomial_element.pyx +13255 -0
  580. sage/rings/polynomial/polynomial_element_generic.py +1637 -0
  581. sage/rings/polynomial/polynomial_fateman.py +97 -0
  582. sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
  583. sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
  584. sage/rings/polynomial/polynomial_ring.py +3784 -0
  585. sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
  586. sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314-darwin.so +0 -0
  587. sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
  588. sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
  589. sage/rings/polynomial/polynomial_singular_interface.py +549 -0
  590. sage/rings/polynomial/symmetric_ideal.py +989 -0
  591. sage/rings/polynomial/symmetric_reduction.cpython-314-darwin.so +0 -0
  592. sage/rings/polynomial/symmetric_reduction.pxd +8 -0
  593. sage/rings/polynomial/symmetric_reduction.pyx +669 -0
  594. sage/rings/polynomial/term_order.py +2279 -0
  595. sage/rings/polynomial/toy_buchberger.py +449 -0
  596. sage/rings/polynomial/toy_d_basis.py +387 -0
  597. sage/rings/polynomial/toy_variety.py +362 -0
  598. sage/rings/power_series_mpoly.cpython-314-darwin.so +0 -0
  599. sage/rings/power_series_mpoly.pxd +9 -0
  600. sage/rings/power_series_mpoly.pyx +161 -0
  601. sage/rings/power_series_poly.cpython-314-darwin.so +0 -0
  602. sage/rings/power_series_poly.pxd +10 -0
  603. sage/rings/power_series_poly.pyx +1317 -0
  604. sage/rings/power_series_ring.py +1441 -0
  605. sage/rings/power_series_ring_element.cpython-314-darwin.so +0 -0
  606. sage/rings/power_series_ring_element.pxd +12 -0
  607. sage/rings/power_series_ring_element.pyx +3028 -0
  608. sage/rings/puiseux_series_ring.py +487 -0
  609. sage/rings/puiseux_series_ring_element.cpython-314-darwin.so +0 -0
  610. sage/rings/puiseux_series_ring_element.pxd +7 -0
  611. sage/rings/puiseux_series_ring_element.pyx +1055 -0
  612. sage/rings/qqbar_decorators.py +167 -0
  613. sage/rings/quotient_ring.py +1598 -0
  614. sage/rings/quotient_ring_element.py +979 -0
  615. sage/rings/rational.cpython-314-darwin.so +0 -0
  616. sage/rings/rational.pxd +20 -0
  617. sage/rings/rational.pyx +4284 -0
  618. sage/rings/rational_field.py +1730 -0
  619. sage/rings/real_double.cpython-314-darwin.so +0 -0
  620. sage/rings/real_double.pxd +16 -0
  621. sage/rings/real_double.pyx +2215 -0
  622. sage/rings/real_lazy.cpython-314-darwin.so +0 -0
  623. sage/rings/real_lazy.pxd +30 -0
  624. sage/rings/real_lazy.pyx +1773 -0
  625. sage/rings/ring.cpython-314-darwin.so +0 -0
  626. sage/rings/ring.pxd +30 -0
  627. sage/rings/ring.pyx +850 -0
  628. sage/rings/semirings/all.py +3 -0
  629. sage/rings/semirings/non_negative_integer_semiring.py +107 -0
  630. sage/rings/semirings/tropical_mpolynomial.py +972 -0
  631. sage/rings/semirings/tropical_polynomial.py +997 -0
  632. sage/rings/semirings/tropical_semiring.cpython-314-darwin.so +0 -0
  633. sage/rings/semirings/tropical_semiring.pyx +676 -0
  634. sage/rings/semirings/tropical_variety.py +1701 -0
  635. sage/rings/sum_of_squares.cpython-314-darwin.so +0 -0
  636. sage/rings/sum_of_squares.pxd +3 -0
  637. sage/rings/sum_of_squares.pyx +336 -0
  638. sage/rings/tests.py +504 -0
  639. sage/schemes/affine/affine_homset.py +508 -0
  640. sage/schemes/affine/affine_morphism.py +1574 -0
  641. sage/schemes/affine/affine_point.py +460 -0
  642. sage/schemes/affine/affine_rational_point.py +308 -0
  643. sage/schemes/affine/affine_space.py +1264 -0
  644. sage/schemes/affine/affine_subscheme.py +592 -0
  645. sage/schemes/affine/all.py +25 -0
  646. sage/schemes/all__sagemath_categories.py +5 -0
  647. sage/schemes/generic/algebraic_scheme.py +2092 -0
  648. sage/schemes/generic/all.py +5 -0
  649. sage/schemes/generic/ambient_space.py +400 -0
  650. sage/schemes/generic/divisor.py +465 -0
  651. sage/schemes/generic/divisor_group.py +313 -0
  652. sage/schemes/generic/glue.py +84 -0
  653. sage/schemes/generic/homset.py +820 -0
  654. sage/schemes/generic/hypersurface.py +234 -0
  655. sage/schemes/generic/morphism.py +2107 -0
  656. sage/schemes/generic/point.py +237 -0
  657. sage/schemes/generic/scheme.py +1190 -0
  658. sage/schemes/generic/spec.py +199 -0
  659. sage/schemes/product_projective/all.py +6 -0
  660. sage/schemes/product_projective/homset.py +236 -0
  661. sage/schemes/product_projective/morphism.py +517 -0
  662. sage/schemes/product_projective/point.py +568 -0
  663. sage/schemes/product_projective/rational_point.py +550 -0
  664. sage/schemes/product_projective/space.py +1301 -0
  665. sage/schemes/product_projective/subscheme.py +466 -0
  666. sage/schemes/projective/all.py +24 -0
  667. sage/schemes/projective/proj_bdd_height.py +453 -0
  668. sage/schemes/projective/projective_homset.py +718 -0
  669. sage/schemes/projective/projective_morphism.py +2792 -0
  670. sage/schemes/projective/projective_point.py +1484 -0
  671. sage/schemes/projective/projective_rational_point.py +569 -0
  672. sage/schemes/projective/projective_space.py +2571 -0
  673. sage/schemes/projective/projective_subscheme.py +1574 -0
  674. sage/sets/all.py +17 -0
  675. sage/sets/cartesian_product.py +376 -0
  676. sage/sets/condition_set.py +525 -0
  677. sage/sets/disjoint_set.cpython-314-darwin.so +0 -0
  678. sage/sets/disjoint_set.pxd +36 -0
  679. sage/sets/disjoint_set.pyx +998 -0
  680. sage/sets/disjoint_union_enumerated_sets.py +625 -0
  681. sage/sets/family.cpython-314-darwin.so +0 -0
  682. sage/sets/family.pxd +12 -0
  683. sage/sets/family.pyx +1556 -0
  684. sage/sets/finite_enumerated_set.py +406 -0
  685. sage/sets/finite_set_map_cy.cpython-314-darwin.so +0 -0
  686. sage/sets/finite_set_map_cy.pxd +34 -0
  687. sage/sets/finite_set_map_cy.pyx +708 -0
  688. sage/sets/finite_set_maps.py +591 -0
  689. sage/sets/image_set.py +448 -0
  690. sage/sets/integer_range.py +829 -0
  691. sage/sets/non_negative_integers.py +241 -0
  692. sage/sets/positive_integers.py +93 -0
  693. sage/sets/primes.py +188 -0
  694. sage/sets/real_set.py +2760 -0
  695. sage/sets/recursively_enumerated_set.cpython-314-darwin.so +0 -0
  696. sage/sets/recursively_enumerated_set.pxd +31 -0
  697. sage/sets/recursively_enumerated_set.pyx +2082 -0
  698. sage/sets/set.py +2083 -0
  699. sage/sets/set_from_iterator.py +1021 -0
  700. sage/sets/totally_ordered_finite_set.py +329 -0
  701. sage/symbolic/all__sagemath_categories.py +1 -0
  702. sage/symbolic/function.cpython-314-darwin.so +0 -0
  703. sage/symbolic/function.pxd +29 -0
  704. sage/symbolic/function.pyx +1488 -0
  705. sage/symbolic/symbols.py +56 -0
  706. sage/tests/all__sagemath_categories.py +1 -0
  707. sage/tests/cython.cpython-314-darwin.so +0 -0
  708. sage/tests/cython.pyx +37 -0
  709. sage/tests/stl_vector.cpython-314-darwin.so +0 -0
  710. sage/tests/stl_vector.pyx +171 -0
  711. sage/typeset/all.py +6 -0
  712. sage/typeset/ascii_art.py +295 -0
  713. sage/typeset/character_art.py +789 -0
  714. sage/typeset/character_art_factory.py +572 -0
  715. sage/typeset/symbols.py +334 -0
  716. sage/typeset/unicode_art.py +183 -0
  717. sage/typeset/unicode_characters.py +101 -0
@@ -0,0 +1,339 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.groups
3
+ r"""
4
+ Finite Permutation Groups
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2010 Nicolas M. Thiery <nthiery at users.sf.net>
8
+ # Nicolas Borie <Nicolas.Borie at u-pusd.fr>
9
+ #
10
+ # Distributed under the terms of the GNU General Public License (GPL)
11
+ # https://www.gnu.org/licenses/
12
+ # *****************************************************************************
13
+
14
+ from sage.categories.magmas import Magmas
15
+ from sage.categories.category_with_axiom import CategoryWithAxiom
16
+ from sage.misc.cachefunc import cached_method
17
+
18
+
19
+ class FinitePermutationGroups(CategoryWithAxiom):
20
+ r"""
21
+ The category of finite permutation groups, i.e. groups concretely
22
+ represented as groups of permutations acting on a finite set.
23
+
24
+ It is currently assumed that any finite permutation group comes
25
+ endowed with a distinguished finite set of generators (method
26
+ ``group_generators``); this is the case for all the existing
27
+ implementations in Sage.
28
+
29
+ EXAMPLES::
30
+
31
+ sage: C = PermutationGroups().Finite(); C
32
+ Category of finite enumerated permutation groups
33
+ sage: C.super_categories()
34
+ [Category of permutation groups,
35
+ Category of finite groups,
36
+ Category of finite finitely generated semigroups]
37
+
38
+ sage: C.example()
39
+ Dihedral group of order 6 as a permutation group
40
+
41
+ TESTS::
42
+
43
+ sage: C is FinitePermutationGroups()
44
+ True
45
+ sage: TestSuite(C).run()
46
+
47
+ sage: G = FinitePermutationGroups().example()
48
+ sage: TestSuite(G).run(verbose = True)
49
+ running ._test_an_element() . . . pass
50
+ running ._test_associativity() . . . pass
51
+ running ._test_cardinality() . . . pass
52
+ running ._test_category() . . . pass
53
+ running ._test_construction() . . . pass
54
+ running ._test_elements() . . .
55
+ Running the test suite of self.an_element()
56
+ running ._test_category() . . . pass
57
+ running ._test_eq() . . . pass
58
+ running ._test_new() . . . pass
59
+ running ._test_not_implemented_methods() . . . pass
60
+ running ._test_pickling() . . . pass
61
+ pass
62
+ running ._test_elements_eq_reflexive() . . . pass
63
+ running ._test_elements_eq_symmetric() . . . pass
64
+ running ._test_elements_eq_transitive() . . . pass
65
+ running ._test_elements_neq() . . . pass
66
+ running ._test_enumerated_set_contains() . . . pass
67
+ running ._test_enumerated_set_iter_cardinality() . . . pass
68
+ running ._test_enumerated_set_iter_list() . . . pass
69
+ running ._test_eq() . . . pass
70
+ running ._test_inverse() . . . pass
71
+ running ._test_new() . . . pass
72
+ running ._test_not_implemented_methods() . . . pass
73
+ running ._test_one() . . . pass
74
+ running ._test_pickling() . . . pass
75
+ running ._test_prod() . . . pass
76
+ running ._test_some_elements() . . . pass
77
+ """
78
+
79
+ def example(self):
80
+ """
81
+ Return an example of finite permutation group, as per
82
+ :meth:`Category.example`.
83
+
84
+ EXAMPLES::
85
+
86
+ sage: G = FinitePermutationGroups().example(); G
87
+ Dihedral group of order 6 as a permutation group
88
+ """
89
+ from sage.groups.perm_gps.permgroup_named import DihedralGroup
90
+ return DihedralGroup(3)
91
+
92
+ def extra_super_categories(self):
93
+ """
94
+ Any permutation group is assumed to be endowed with a finite set of generators.
95
+
96
+ TESTS:
97
+
98
+ sage: PermutationGroups().Finite().extra_super_categories()
99
+ [Category of finitely generated magmas]
100
+ """
101
+ return [Magmas().FinitelyGenerated()]
102
+
103
+ class ParentMethods:
104
+ # TODO
105
+ # - Port features from MuPAD-Combinat, lib/DOMAINS/CATEGORIES/PermutationGroup.mu
106
+ # - Move here generic code from sage/groups/perm_gps/permgroup.py
107
+
108
+ def cycle_index(self, parent=None):
109
+ r"""
110
+ Return the *cycle index* of ``self``.
111
+
112
+ INPUT:
113
+
114
+ - ``self`` -- a permutation group `G`
115
+ - ``parent`` -- a free module with basis indexed by partitions,
116
+ or behave as such, with a ``term`` and ``sum`` method
117
+ (default: the symmetric functions over the rational field in the `p` basis)
118
+
119
+ The *cycle index* of a permutation group `G`
120
+ (:wikipedia:`Cycle_index`) is a gadget counting the
121
+ elements of `G` by cycle type, averaged over the group:
122
+
123
+ .. MATH::
124
+
125
+ P = \frac{1}{|G|} \sum_{g\in G} p_{ \operatorname{cycle\ type}(g) }
126
+
127
+ EXAMPLES:
128
+
129
+ Among the permutations of the symmetric group `S_4`, there is
130
+ the identity, 6 cycles of length 2, 3 products of two cycles
131
+ of length 2, 8 cycles of length 3, and 6 cycles of length 4::
132
+
133
+ sage: S4 = SymmetricGroup(4)
134
+ sage: P = S4.cycle_index() # needs sage.combinat
135
+ sage: 24 * P # needs sage.combinat
136
+ p[1, 1, 1, 1] + 6*p[2, 1, 1] + 3*p[2, 2] + 8*p[3, 1] + 6*p[4]
137
+
138
+ If `l = (l_1,\dots,l_k)` is a partition, ``|G| P[l]`` is the number
139
+ of elements of `G` with cycles of length `(p_1,\dots,p_k)`::
140
+
141
+ sage: 24 * P[ Partition([3,1]) ] # needs sage.combinat
142
+ 8
143
+
144
+ The cycle index plays an important role in the enumeration of
145
+ objects modulo the action of a group (Pólya enumeration), via
146
+ the use of symmetric functions and plethysms. It is therefore
147
+ encoded as a symmetric function, expressed in the powersum
148
+ basis::
149
+
150
+ sage: P.parent() # needs sage.combinat
151
+ Symmetric Functions over Rational Field in the powersum basis
152
+
153
+ This symmetric function can have some nice properties; for
154
+ example, for the symmetric group `S_n`, we get the complete
155
+ symmetric function `h_n`::
156
+
157
+ sage: S = SymmetricFunctions(QQ); h = S.h() # needs sage.combinat
158
+ sage: h( P ) # needs sage.combinat
159
+ h[4]
160
+
161
+ .. TODO::
162
+
163
+ Add some simple examples of Pólya enumeration, once
164
+ it will be easy to expand symmetric functions on any
165
+ alphabet.
166
+
167
+ Here are the cycle indices of some permutation groups::
168
+
169
+ sage: 6 * CyclicPermutationGroup(6).cycle_index() # needs sage.combinat
170
+ p[1, 1, 1, 1, 1, 1] + p[2, 2, 2] + 2*p[3, 3] + 2*p[6]
171
+
172
+ sage: 60 * AlternatingGroup(5).cycle_index() # needs sage.combinat
173
+ p[1, 1, 1, 1, 1] + 15*p[2, 2, 1] + 20*p[3, 1, 1] + 24*p[5]
174
+
175
+ sage: for G in TransitiveGroups(5): # long time
176
+ ....: G.cardinality() * G.cycle_index()
177
+ p[1, 1, 1, 1, 1] + 4*p[5]
178
+ p[1, 1, 1, 1, 1] + 5*p[2, 2, 1] + 4*p[5]
179
+ p[1, 1, 1, 1, 1] + 5*p[2, 2, 1] + 10*p[4, 1] + 4*p[5]
180
+ p[1, 1, 1, 1, 1] + 15*p[2, 2, 1] + 20*p[3, 1, 1] + 24*p[5]
181
+ p[1, 1, 1, 1, 1] + 10*p[2, 1, 1, 1] + 15*p[2, 2, 1] + 20*p[3, 1, 1] + 20*p[3, 2] + 30*p[4, 1] + 24*p[5]
182
+
183
+ Permutation groups with arbitrary domains are supported
184
+ (see :issue:`22765`)::
185
+
186
+ sage: G = PermutationGroup([['b','c','a']], domain=['a','b','c'])
187
+ sage: G.cycle_index() # needs sage.combinat
188
+ 1/3*p[1, 1, 1] + 2/3*p[3]
189
+
190
+ One may specify another parent for the result::
191
+
192
+ sage: # needs sage.combinat
193
+ sage: F = CombinatorialFreeModule(QQ, Partitions())
194
+ sage: P = CyclicPermutationGroup(6).cycle_index(parent=F)
195
+ sage: 6 * P
196
+ B[[1, 1, 1, 1, 1, 1]] + B[[2, 2, 2]] + 2*B[[3, 3]] + 2*B[[6]]
197
+ sage: P.parent() is F
198
+ True
199
+
200
+ This parent should be a module with basis indexed by partitions::
201
+
202
+ sage: CyclicPermutationGroup(6).cycle_index(parent = QQ)
203
+ Traceback (most recent call last):
204
+ ...
205
+ ValueError: `parent` should be a module with basis indexed by partitions
206
+
207
+ REFERENCES:
208
+
209
+ - [Ke1991]_
210
+
211
+ AUTHORS:
212
+
213
+ - Nicolas Borie and Nicolas M. Thiéry
214
+
215
+ TESTS::
216
+
217
+ sage: P = PermutationGroup([]); P
218
+ Permutation Group with generators [()]
219
+ sage: P.cycle_index() # needs sage.combinat
220
+ p[1]
221
+ sage: P = PermutationGroup([[(1)]]); P
222
+ Permutation Group with generators [()]
223
+ sage: P.cycle_index() # needs sage.combinat
224
+ p[1]
225
+ """
226
+ from sage.categories.modules import Modules
227
+ if parent is None:
228
+ from sage.rings.rational_field import QQ
229
+ from sage.combinat.sf.sf import SymmetricFunctions
230
+ parent = SymmetricFunctions(QQ).powersum()
231
+ elif parent not in Modules.WithBasis:
232
+ raise ValueError("`parent` should be a module with basis indexed by partitions")
233
+ base_ring = parent.base_ring()
234
+ return parent.sum_of_terms([C.an_element().cycle_type(), base_ring(C.cardinality())]
235
+ for C in self.conjugacy_classes()
236
+ ) / self.cardinality()
237
+
238
+ @cached_method
239
+ def profile_series(self, variable='z'):
240
+ r"""
241
+ Return the (finite) generating series of the (finite) profile of the group.
242
+
243
+ The profile of a permutation group G is the counting function that
244
+ maps each nonnegative integer n onto the number of orbits of the
245
+ action induced by G on the n-subsets of its domain.
246
+ If f is the profile of G, f(n) is thus the number of orbits of
247
+ n-subsets of G.
248
+
249
+ INPUT:
250
+
251
+ - ``variable`` -- a variable, or variable name as a string (default: `'z'`)
252
+
253
+ OUTPUT:
254
+
255
+ - A polynomial in ``variable`` with nonnegative integer coefficients.
256
+ By default, a polynomial in z over ZZ.
257
+
258
+ .. SEEALSO::
259
+
260
+ - :meth:`profile`
261
+
262
+ EXAMPLES::
263
+
264
+ sage: # needs sage.combinat
265
+ sage: C8 = CyclicPermutationGroup(8)
266
+ sage: C8.profile_series()
267
+ z^8 + z^7 + 4*z^6 + 7*z^5 + 10*z^4 + 7*z^3 + 4*z^2 + z + 1
268
+ sage: D8 = DihedralGroup(8)
269
+ sage: poly_D8 = D8.profile_series()
270
+ sage: poly_D8
271
+ z^8 + z^7 + 4*z^6 + 5*z^5 + 8*z^4 + 5*z^3 + 4*z^2 + z + 1
272
+ sage: poly_D8.parent()
273
+ Univariate Polynomial Ring in z over Rational Field
274
+ sage: D8.profile_series(variable='y')
275
+ y^8 + y^7 + 4*y^6 + 5*y^5 + 8*y^4 + 5*y^3 + 4*y^2 + y + 1
276
+ sage: u = var('u') # needs sage.symbolic
277
+ sage: D8.profile_series(u).parent() # needs sage.symbolic
278
+ Symbolic Ring
279
+ """
280
+ from sage.rings.integer_ring import ZZ
281
+
282
+ if isinstance(variable, str):
283
+ variable = ZZ[variable].gen()
284
+ cycle_poly = self.cycle_index()
285
+ return cycle_poly.expand(2).subs(x0=1, x1=variable)
286
+
287
+ profile_polynomial = profile_series
288
+
289
+ def profile(self, n, using_polya=True):
290
+ r"""
291
+ Return the value in `n` of the profile of the group ``self``.
292
+
293
+ Optional argument ``using_polya`` allows to change the default method.
294
+
295
+ INPUT:
296
+
297
+ - ``n`` -- nonnegative integer
298
+
299
+ - ``using_polya`` -- boolean (default: ``True``); if ``True``, the
300
+ computation uses Pólya enumeration (and all values of the profile
301
+ are cached, so this should be the method used in case several of
302
+ them are needed); if ``False``, uses the GAP interface to compute
303
+ the orbit.
304
+
305
+ OUTPUT:
306
+
307
+ - A nonnegative integer that is the number of orbits of `n`-subsets
308
+ under the action induced by ``self`` on the subsets of its domain
309
+ (i.e. the value of the profile of ``self`` in `n`)
310
+
311
+ .. SEEALSO::
312
+
313
+ - :meth:`profile_series`
314
+
315
+ EXAMPLES::
316
+
317
+ sage: C6 = CyclicPermutationGroup(6)
318
+ sage: C6.profile(2) # needs sage.combinat
319
+ 3
320
+ sage: C6.profile(3) # needs sage.combinat
321
+ 4
322
+ sage: D8 = DihedralGroup(8)
323
+ sage: D8.profile(4, using_polya=False)
324
+ 8
325
+ """
326
+
327
+ if using_polya:
328
+ return self.profile_polynomial()[n]
329
+ else:
330
+ from sage.libs.gap.libgap import libgap
331
+ subs_n = libgap.Combinations(list(self.domain()), n)
332
+ return len(libgap.Orbits(self, subs_n, libgap.OnSets))
333
+
334
+ class ElementMethods:
335
+ # TODO: put abstract_methods for
336
+ # - cycle_type
337
+ # - orbit
338
+ # - ...
339
+ pass