passagemath-categories 10.6.32__cp314-cp314t-musllinux_1_2_aarch64.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 (719) hide show
  1. passagemath_categories-10.6.32.dist-info/METADATA +156 -0
  2. passagemath_categories-10.6.32.dist-info/RECORD +719 -0
  3. passagemath_categories-10.6.32.dist-info/WHEEL +5 -0
  4. passagemath_categories-10.6.32.dist-info/top_level.txt +2 -0
  5. passagemath_categories.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_categories.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  7. passagemath_categories.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
  8. sage/all__sagemath_categories.py +28 -0
  9. sage/arith/all.py +38 -0
  10. sage/arith/constants.pxd +27 -0
  11. sage/arith/functions.cpython-314t-aarch64-linux-musl.so +0 -0
  12. sage/arith/functions.pxd +4 -0
  13. sage/arith/functions.pyx +221 -0
  14. sage/arith/misc.py +6552 -0
  15. sage/arith/multi_modular.cpython-314t-aarch64-linux-musl.so +0 -0
  16. sage/arith/multi_modular.pxd +39 -0
  17. sage/arith/multi_modular.pyx +994 -0
  18. sage/arith/rational_reconstruction.cpython-314t-aarch64-linux-musl.so +0 -0
  19. sage/arith/rational_reconstruction.pxd +4 -0
  20. sage/arith/rational_reconstruction.pyx +115 -0
  21. sage/arith/srange.cpython-314t-aarch64-linux-musl.so +0 -0
  22. sage/arith/srange.pyx +571 -0
  23. sage/calculus/all__sagemath_categories.py +2 -0
  24. sage/calculus/functional.py +481 -0
  25. sage/calculus/functions.py +151 -0
  26. sage/categories/additive_groups.py +73 -0
  27. sage/categories/additive_magmas.py +1044 -0
  28. sage/categories/additive_monoids.py +114 -0
  29. sage/categories/additive_semigroups.py +184 -0
  30. sage/categories/affine_weyl_groups.py +238 -0
  31. sage/categories/algebra_ideals.py +95 -0
  32. sage/categories/algebra_modules.py +96 -0
  33. sage/categories/algebras.py +349 -0
  34. sage/categories/algebras_with_basis.py +377 -0
  35. sage/categories/all.py +160 -0
  36. sage/categories/aperiodic_semigroups.py +29 -0
  37. sage/categories/associative_algebras.py +47 -0
  38. sage/categories/bialgebras.py +101 -0
  39. sage/categories/bialgebras_with_basis.py +414 -0
  40. sage/categories/bimodules.py +206 -0
  41. sage/categories/chain_complexes.py +268 -0
  42. sage/categories/classical_crystals.py +480 -0
  43. sage/categories/coalgebras.py +405 -0
  44. sage/categories/coalgebras_with_basis.py +232 -0
  45. sage/categories/coercion_methods.cpython-314t-aarch64-linux-musl.so +0 -0
  46. sage/categories/coercion_methods.pyx +52 -0
  47. sage/categories/commutative_additive_groups.py +104 -0
  48. sage/categories/commutative_additive_monoids.py +45 -0
  49. sage/categories/commutative_additive_semigroups.py +48 -0
  50. sage/categories/commutative_algebra_ideals.py +87 -0
  51. sage/categories/commutative_algebras.py +94 -0
  52. sage/categories/commutative_ring_ideals.py +58 -0
  53. sage/categories/commutative_rings.py +736 -0
  54. sage/categories/complete_discrete_valuation.py +293 -0
  55. sage/categories/complex_reflection_groups.py +145 -0
  56. sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
  57. sage/categories/coxeter_group_algebras.py +186 -0
  58. sage/categories/coxeter_groups.py +3402 -0
  59. sage/categories/crystals.py +2628 -0
  60. sage/categories/cw_complexes.py +216 -0
  61. sage/categories/dedekind_domains.py +137 -0
  62. sage/categories/discrete_valuation.py +325 -0
  63. sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
  64. sage/categories/division_rings.py +114 -0
  65. sage/categories/domains.py +95 -0
  66. sage/categories/drinfeld_modules.py +789 -0
  67. sage/categories/dual.py +42 -0
  68. sage/categories/enumerated_sets.py +1146 -0
  69. sage/categories/euclidean_domains.py +271 -0
  70. sage/categories/examples/algebras_with_basis.py +102 -0
  71. sage/categories/examples/all.py +1 -0
  72. sage/categories/examples/commutative_additive_monoids.py +130 -0
  73. sage/categories/examples/commutative_additive_semigroups.py +199 -0
  74. sage/categories/examples/coxeter_groups.py +8 -0
  75. sage/categories/examples/crystals.py +236 -0
  76. sage/categories/examples/cw_complexes.py +163 -0
  77. sage/categories/examples/facade_sets.py +187 -0
  78. sage/categories/examples/filtered_algebras_with_basis.py +204 -0
  79. sage/categories/examples/filtered_modules_with_basis.py +154 -0
  80. sage/categories/examples/finite_coxeter_groups.py +252 -0
  81. sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
  82. sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
  83. sage/categories/examples/finite_enumerated_sets.py +208 -0
  84. sage/categories/examples/finite_monoids.py +150 -0
  85. sage/categories/examples/finite_semigroups.py +190 -0
  86. sage/categories/examples/finite_weyl_groups.py +191 -0
  87. sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
  88. sage/categories/examples/graded_modules_with_basis.py +168 -0
  89. sage/categories/examples/graphs.py +122 -0
  90. sage/categories/examples/hopf_algebras_with_basis.py +145 -0
  91. sage/categories/examples/infinite_enumerated_sets.py +190 -0
  92. sage/categories/examples/lie_algebras.py +352 -0
  93. sage/categories/examples/lie_algebras_with_basis.py +196 -0
  94. sage/categories/examples/magmas.py +162 -0
  95. sage/categories/examples/manifolds.py +94 -0
  96. sage/categories/examples/monoids.py +144 -0
  97. sage/categories/examples/posets.py +178 -0
  98. sage/categories/examples/semigroups.py +580 -0
  99. sage/categories/examples/semigroups_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  100. sage/categories/examples/semigroups_cython.pyx +221 -0
  101. sage/categories/examples/semirings.py +249 -0
  102. sage/categories/examples/sets_cat.py +706 -0
  103. sage/categories/examples/sets_with_grading.py +101 -0
  104. sage/categories/examples/with_realizations.py +542 -0
  105. sage/categories/fields.py +991 -0
  106. sage/categories/filtered_algebras.py +63 -0
  107. sage/categories/filtered_algebras_with_basis.py +548 -0
  108. sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
  109. sage/categories/filtered_modules.py +210 -0
  110. sage/categories/filtered_modules_with_basis.py +1209 -0
  111. sage/categories/finite_complex_reflection_groups.py +1506 -0
  112. sage/categories/finite_coxeter_groups.py +1138 -0
  113. sage/categories/finite_crystals.py +103 -0
  114. sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
  115. sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
  116. sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
  117. sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
  118. sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
  119. sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
  120. sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
  121. sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
  122. sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
  123. sage/categories/finite_enumerated_sets.py +769 -0
  124. sage/categories/finite_fields.py +252 -0
  125. sage/categories/finite_groups.py +256 -0
  126. sage/categories/finite_lattice_posets.py +242 -0
  127. sage/categories/finite_monoids.py +316 -0
  128. sage/categories/finite_permutation_groups.py +339 -0
  129. sage/categories/finite_posets.py +1994 -0
  130. sage/categories/finite_semigroups.py +136 -0
  131. sage/categories/finite_sets.py +93 -0
  132. sage/categories/finite_weyl_groups.py +39 -0
  133. sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
  134. sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
  135. sage/categories/finitely_generated_magmas.py +57 -0
  136. sage/categories/finitely_generated_semigroups.py +214 -0
  137. sage/categories/function_fields.py +76 -0
  138. sage/categories/g_sets.py +77 -0
  139. sage/categories/gcd_domains.py +65 -0
  140. sage/categories/generalized_coxeter_groups.py +94 -0
  141. sage/categories/graded_algebras.py +85 -0
  142. sage/categories/graded_algebras_with_basis.py +258 -0
  143. sage/categories/graded_bialgebras.py +32 -0
  144. sage/categories/graded_bialgebras_with_basis.py +32 -0
  145. sage/categories/graded_coalgebras.py +65 -0
  146. sage/categories/graded_coalgebras_with_basis.py +51 -0
  147. sage/categories/graded_hopf_algebras.py +41 -0
  148. sage/categories/graded_hopf_algebras_with_basis.py +169 -0
  149. sage/categories/graded_lie_algebras.py +91 -0
  150. sage/categories/graded_lie_algebras_with_basis.py +44 -0
  151. sage/categories/graded_lie_conformal_algebras.py +74 -0
  152. sage/categories/graded_modules.py +133 -0
  153. sage/categories/graded_modules_with_basis.py +329 -0
  154. sage/categories/graphs.py +138 -0
  155. sage/categories/group_algebras.py +430 -0
  156. sage/categories/groupoid.py +94 -0
  157. sage/categories/groups.py +667 -0
  158. sage/categories/h_trivial_semigroups.py +64 -0
  159. sage/categories/hecke_modules.py +185 -0
  160. sage/categories/highest_weight_crystals.py +980 -0
  161. sage/categories/hopf_algebras.py +219 -0
  162. sage/categories/hopf_algebras_with_basis.py +309 -0
  163. sage/categories/infinite_enumerated_sets.py +115 -0
  164. sage/categories/integral_domains.py +203 -0
  165. sage/categories/j_trivial_semigroups.py +29 -0
  166. sage/categories/kac_moody_algebras.py +82 -0
  167. sage/categories/kahler_algebras.py +203 -0
  168. sage/categories/l_trivial_semigroups.py +63 -0
  169. sage/categories/lambda_bracket_algebras.py +280 -0
  170. sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
  171. sage/categories/lattice_posets.py +89 -0
  172. sage/categories/left_modules.py +49 -0
  173. sage/categories/lie_algebras.py +1070 -0
  174. sage/categories/lie_algebras_with_basis.py +261 -0
  175. sage/categories/lie_conformal_algebras.py +350 -0
  176. sage/categories/lie_conformal_algebras_with_basis.py +147 -0
  177. sage/categories/lie_groups.py +73 -0
  178. sage/categories/loop_crystals.py +1290 -0
  179. sage/categories/magmas.py +1189 -0
  180. sage/categories/magmas_and_additive_magmas.py +149 -0
  181. sage/categories/magmatic_algebras.py +365 -0
  182. sage/categories/manifolds.py +352 -0
  183. sage/categories/matrix_algebras.py +40 -0
  184. sage/categories/metric_spaces.py +387 -0
  185. sage/categories/modular_abelian_varieties.py +78 -0
  186. sage/categories/modules.py +989 -0
  187. sage/categories/modules_with_basis.py +2794 -0
  188. sage/categories/monoid_algebras.py +38 -0
  189. sage/categories/monoids.py +739 -0
  190. sage/categories/noetherian_rings.py +87 -0
  191. sage/categories/number_fields.py +242 -0
  192. sage/categories/ore_modules.py +189 -0
  193. sage/categories/partially_ordered_monoids.py +49 -0
  194. sage/categories/permutation_groups.py +63 -0
  195. sage/categories/pointed_sets.py +42 -0
  196. sage/categories/polyhedra.py +74 -0
  197. sage/categories/poor_man_map.py +270 -0
  198. sage/categories/posets.py +722 -0
  199. sage/categories/principal_ideal_domains.py +270 -0
  200. sage/categories/quantum_group_representations.py +543 -0
  201. sage/categories/quotient_fields.py +728 -0
  202. sage/categories/r_trivial_semigroups.py +45 -0
  203. sage/categories/regular_crystals.py +898 -0
  204. sage/categories/regular_supercrystals.py +170 -0
  205. sage/categories/right_modules.py +49 -0
  206. sage/categories/ring_ideals.py +74 -0
  207. sage/categories/rings.py +1904 -0
  208. sage/categories/rngs.py +175 -0
  209. sage/categories/schemes.py +393 -0
  210. sage/categories/semigroups.py +1060 -0
  211. sage/categories/semirings.py +71 -0
  212. sage/categories/semisimple_algebras.py +114 -0
  213. sage/categories/sets_with_grading.py +235 -0
  214. sage/categories/shephard_groups.py +43 -0
  215. sage/categories/signed_tensor.py +120 -0
  216. sage/categories/simplicial_complexes.py +134 -0
  217. sage/categories/simplicial_sets.py +1206 -0
  218. sage/categories/super_algebras.py +149 -0
  219. sage/categories/super_algebras_with_basis.py +144 -0
  220. sage/categories/super_hopf_algebras_with_basis.py +126 -0
  221. sage/categories/super_lie_conformal_algebras.py +193 -0
  222. sage/categories/super_modules.py +229 -0
  223. sage/categories/super_modules_with_basis.py +193 -0
  224. sage/categories/supercommutative_algebras.py +99 -0
  225. sage/categories/supercrystals.py +406 -0
  226. sage/categories/tensor.py +110 -0
  227. sage/categories/topological_spaces.py +170 -0
  228. sage/categories/triangular_kac_moody_algebras.py +439 -0
  229. sage/categories/tutorial.py +58 -0
  230. sage/categories/unique_factorization_domains.py +318 -0
  231. sage/categories/unital_algebras.py +426 -0
  232. sage/categories/vector_bundles.py +159 -0
  233. sage/categories/vector_spaces.py +357 -0
  234. sage/categories/weyl_groups.py +853 -0
  235. sage/combinat/all__sagemath_categories.py +34 -0
  236. sage/combinat/backtrack.py +180 -0
  237. sage/combinat/combinat.py +2269 -0
  238. sage/combinat/combinat_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  239. sage/combinat/combinat_cython.pxd +6 -0
  240. sage/combinat/combinat_cython.pyx +390 -0
  241. sage/combinat/combination.py +796 -0
  242. sage/combinat/combinatorial_map.py +416 -0
  243. sage/combinat/composition.py +2192 -0
  244. sage/combinat/dlx.py +510 -0
  245. sage/combinat/integer_lists/__init__.py +7 -0
  246. sage/combinat/integer_lists/base.cpython-314t-aarch64-linux-musl.so +0 -0
  247. sage/combinat/integer_lists/base.pxd +16 -0
  248. sage/combinat/integer_lists/base.pyx +713 -0
  249. sage/combinat/integer_lists/invlex.cpython-314t-aarch64-linux-musl.so +0 -0
  250. sage/combinat/integer_lists/invlex.pxd +4 -0
  251. sage/combinat/integer_lists/invlex.pyx +1650 -0
  252. sage/combinat/integer_lists/lists.py +328 -0
  253. sage/combinat/integer_lists/nn.py +48 -0
  254. sage/combinat/integer_vector.py +1818 -0
  255. sage/combinat/integer_vector_weighted.py +413 -0
  256. sage/combinat/matrices/all__sagemath_categories.py +5 -0
  257. sage/combinat/matrices/dancing_links.cpython-314t-aarch64-linux-musl.so +0 -0
  258. sage/combinat/matrices/dancing_links.pyx +1159 -0
  259. sage/combinat/matrices/dancing_links_c.h +380 -0
  260. sage/combinat/matrices/dlxcpp.py +136 -0
  261. sage/combinat/partition.py +10070 -0
  262. sage/combinat/partitions.cpython-314t-aarch64-linux-musl.so +0 -0
  263. sage/combinat/partitions.pyx +743 -0
  264. sage/combinat/permutation.py +10168 -0
  265. sage/combinat/permutation_cython.cpython-314t-aarch64-linux-musl.so +0 -0
  266. sage/combinat/permutation_cython.pxd +11 -0
  267. sage/combinat/permutation_cython.pyx +407 -0
  268. sage/combinat/q_analogues.py +1090 -0
  269. sage/combinat/ranker.py +268 -0
  270. sage/combinat/subset.py +1561 -0
  271. sage/combinat/subsets_hereditary.py +202 -0
  272. sage/combinat/subsets_pairwise.py +184 -0
  273. sage/combinat/tools.py +63 -0
  274. sage/combinat/tuple.py +348 -0
  275. sage/data_structures/all.py +2 -0
  276. sage/data_structures/all__sagemath_categories.py +2 -0
  277. sage/data_structures/binary_matrix.pxd +138 -0
  278. sage/data_structures/binary_search.cpython-314t-aarch64-linux-musl.so +0 -0
  279. sage/data_structures/binary_search.pxd +3 -0
  280. sage/data_structures/binary_search.pyx +66 -0
  281. sage/data_structures/bitset.cpython-314t-aarch64-linux-musl.so +0 -0
  282. sage/data_structures/bitset.pxd +40 -0
  283. sage/data_structures/bitset.pyx +2385 -0
  284. sage/data_structures/bitset_base.cpython-314t-aarch64-linux-musl.so +0 -0
  285. sage/data_structures/bitset_base.pxd +926 -0
  286. sage/data_structures/bitset_base.pyx +117 -0
  287. sage/data_structures/bitset_intrinsics.h +487 -0
  288. sage/data_structures/blas_dict.cpython-314t-aarch64-linux-musl.so +0 -0
  289. sage/data_structures/blas_dict.pxd +12 -0
  290. sage/data_structures/blas_dict.pyx +469 -0
  291. sage/data_structures/list_of_pairs.cpython-314t-aarch64-linux-musl.so +0 -0
  292. sage/data_structures/list_of_pairs.pxd +16 -0
  293. sage/data_structures/list_of_pairs.pyx +122 -0
  294. sage/data_structures/mutable_poset.py +3312 -0
  295. sage/data_structures/pairing_heap.cpython-314t-aarch64-linux-musl.so +0 -0
  296. sage/data_structures/pairing_heap.h +346 -0
  297. sage/data_structures/pairing_heap.pxd +88 -0
  298. sage/data_structures/pairing_heap.pyx +1464 -0
  299. sage/data_structures/sparse_bitset.pxd +62 -0
  300. sage/data_structures/stream.py +5070 -0
  301. sage/databases/all__sagemath_categories.py +7 -0
  302. sage/databases/sql_db.py +2236 -0
  303. sage/ext/all__sagemath_categories.py +3 -0
  304. sage/ext/fast_callable.cpython-314t-aarch64-linux-musl.so +0 -0
  305. sage/ext/fast_callable.pxd +4 -0
  306. sage/ext/fast_callable.pyx +2746 -0
  307. sage/ext/fast_eval.cpython-314t-aarch64-linux-musl.so +0 -0
  308. sage/ext/fast_eval.pxd +1 -0
  309. sage/ext/fast_eval.pyx +102 -0
  310. sage/ext/interpreters/__init__.py +1 -0
  311. sage/ext/interpreters/all__sagemath_categories.py +2 -0
  312. sage/ext/interpreters/wrapper_el.cpython-314t-aarch64-linux-musl.so +0 -0
  313. sage/ext/interpreters/wrapper_el.pxd +18 -0
  314. sage/ext/interpreters/wrapper_el.pyx +148 -0
  315. sage/ext/interpreters/wrapper_py.cpython-314t-aarch64-linux-musl.so +0 -0
  316. sage/ext/interpreters/wrapper_py.pxd +17 -0
  317. sage/ext/interpreters/wrapper_py.pyx +133 -0
  318. sage/functions/airy.py +937 -0
  319. sage/functions/all.py +97 -0
  320. sage/functions/bessel.py +2102 -0
  321. sage/functions/error.py +784 -0
  322. sage/functions/exp_integral.py +1529 -0
  323. sage/functions/gamma.py +1087 -0
  324. sage/functions/generalized.py +672 -0
  325. sage/functions/hyperbolic.py +747 -0
  326. sage/functions/hypergeometric.py +1156 -0
  327. sage/functions/jacobi.py +1705 -0
  328. sage/functions/log.py +1402 -0
  329. sage/functions/min_max.py +338 -0
  330. sage/functions/orthogonal_polys.py +3106 -0
  331. sage/functions/other.py +2303 -0
  332. sage/functions/piecewise.py +1505 -0
  333. sage/functions/prime_pi.cpython-314t-aarch64-linux-musl.so +0 -0
  334. sage/functions/prime_pi.pyx +262 -0
  335. sage/functions/special.py +1212 -0
  336. sage/functions/spike_function.py +278 -0
  337. sage/functions/transcendental.py +690 -0
  338. sage/functions/trig.py +1062 -0
  339. sage/functions/wigner.py +726 -0
  340. sage/geometry/abc.cpython-314t-aarch64-linux-musl.so +0 -0
  341. sage/geometry/abc.pyx +82 -0
  342. sage/geometry/all__sagemath_categories.py +1 -0
  343. sage/groups/all__sagemath_categories.py +11 -0
  344. sage/groups/generic.py +1733 -0
  345. sage/groups/groups_catalog.py +113 -0
  346. sage/groups/perm_gps/all__sagemath_categories.py +1 -0
  347. sage/groups/perm_gps/partn_ref/all.py +1 -0
  348. sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
  349. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314t-aarch64-linux-musl.so +0 -0
  350. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
  351. sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
  352. sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314t-aarch64-linux-musl.so +0 -0
  353. sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
  354. sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
  355. sage/groups/perm_gps/partn_ref/data_structures.cpython-314t-aarch64-linux-musl.so +0 -0
  356. sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
  357. sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
  358. sage/groups/perm_gps/partn_ref/double_coset.cpython-314t-aarch64-linux-musl.so +0 -0
  359. sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
  360. sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
  361. sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314t-aarch64-linux-musl.so +0 -0
  362. sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
  363. sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
  364. sage/groups/perm_gps/partn_ref/refinement_python.cpython-314t-aarch64-linux-musl.so +0 -0
  365. sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
  366. sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
  367. sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314t-aarch64-linux-musl.so +0 -0
  368. sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
  369. sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
  370. sage/interfaces/abc.py +140 -0
  371. sage/interfaces/all.py +58 -0
  372. sage/interfaces/all__sagemath_categories.py +1 -0
  373. sage/interfaces/expect.py +1643 -0
  374. sage/interfaces/interface.py +1682 -0
  375. sage/interfaces/process.cpython-314t-aarch64-linux-musl.so +0 -0
  376. sage/interfaces/process.pxd +5 -0
  377. sage/interfaces/process.pyx +288 -0
  378. sage/interfaces/quit.py +167 -0
  379. sage/interfaces/sage0.py +604 -0
  380. sage/interfaces/sagespawn.cpython-314t-aarch64-linux-musl.so +0 -0
  381. sage/interfaces/sagespawn.pyx +308 -0
  382. sage/interfaces/tab_completion.py +101 -0
  383. sage/misc/all__sagemath_categories.py +78 -0
  384. sage/misc/allocator.cpython-314t-aarch64-linux-musl.so +0 -0
  385. sage/misc/allocator.pxd +6 -0
  386. sage/misc/allocator.pyx +47 -0
  387. sage/misc/binary_tree.cpython-314t-aarch64-linux-musl.so +0 -0
  388. sage/misc/binary_tree.pxd +29 -0
  389. sage/misc/binary_tree.pyx +537 -0
  390. sage/misc/callable_dict.cpython-314t-aarch64-linux-musl.so +0 -0
  391. sage/misc/callable_dict.pyx +89 -0
  392. sage/misc/citation.cpython-314t-aarch64-linux-musl.so +0 -0
  393. sage/misc/citation.pyx +159 -0
  394. sage/misc/converting_dict.py +293 -0
  395. sage/misc/defaults.py +129 -0
  396. sage/misc/derivative.cpython-314t-aarch64-linux-musl.so +0 -0
  397. sage/misc/derivative.pyx +223 -0
  398. sage/misc/functional.py +2005 -0
  399. sage/misc/html.py +589 -0
  400. sage/misc/latex.py +2673 -0
  401. sage/misc/latex_macros.py +236 -0
  402. sage/misc/latex_standalone.py +1833 -0
  403. sage/misc/map_threaded.py +38 -0
  404. sage/misc/mathml.py +76 -0
  405. sage/misc/method_decorator.py +88 -0
  406. sage/misc/mrange.py +755 -0
  407. sage/misc/multireplace.py +41 -0
  408. sage/misc/object_multiplexer.py +92 -0
  409. sage/misc/parser.cpython-314t-aarch64-linux-musl.so +0 -0
  410. sage/misc/parser.pyx +1107 -0
  411. sage/misc/random_testing.py +264 -0
  412. sage/misc/rest_index_of_methods.py +377 -0
  413. sage/misc/search.cpython-314t-aarch64-linux-musl.so +0 -0
  414. sage/misc/search.pxd +2 -0
  415. sage/misc/search.pyx +68 -0
  416. sage/misc/stopgap.cpython-314t-aarch64-linux-musl.so +0 -0
  417. sage/misc/stopgap.pyx +95 -0
  418. sage/misc/table.py +853 -0
  419. sage/monoids/all__sagemath_categories.py +1 -0
  420. sage/monoids/indexed_free_monoid.py +1071 -0
  421. sage/monoids/monoid.py +82 -0
  422. sage/numerical/all__sagemath_categories.py +1 -0
  423. sage/numerical/backends/all__sagemath_categories.py +1 -0
  424. sage/numerical/backends/generic_backend.cpython-314t-aarch64-linux-musl.so +0 -0
  425. sage/numerical/backends/generic_backend.pxd +61 -0
  426. sage/numerical/backends/generic_backend.pyx +1893 -0
  427. sage/numerical/backends/generic_sdp_backend.cpython-314t-aarch64-linux-musl.so +0 -0
  428. sage/numerical/backends/generic_sdp_backend.pxd +38 -0
  429. sage/numerical/backends/generic_sdp_backend.pyx +755 -0
  430. sage/parallel/all.py +6 -0
  431. sage/parallel/decorate.py +575 -0
  432. sage/parallel/map_reduce.py +1997 -0
  433. sage/parallel/multiprocessing_sage.py +76 -0
  434. sage/parallel/ncpus.py +35 -0
  435. sage/parallel/parallelism.py +364 -0
  436. sage/parallel/reference.py +47 -0
  437. sage/parallel/use_fork.py +333 -0
  438. sage/rings/abc.cpython-314t-aarch64-linux-musl.so +0 -0
  439. sage/rings/abc.pxd +31 -0
  440. sage/rings/abc.pyx +526 -0
  441. sage/rings/algebraic_closure_finite_field.py +1154 -0
  442. sage/rings/all__sagemath_categories.py +91 -0
  443. sage/rings/big_oh.py +227 -0
  444. sage/rings/continued_fraction.py +2754 -0
  445. sage/rings/continued_fraction_gosper.py +220 -0
  446. sage/rings/factorint.cpython-314t-aarch64-linux-musl.so +0 -0
  447. sage/rings/factorint.pyx +295 -0
  448. sage/rings/fast_arith.cpython-314t-aarch64-linux-musl.so +0 -0
  449. sage/rings/fast_arith.pxd +21 -0
  450. sage/rings/fast_arith.pyx +535 -0
  451. sage/rings/finite_rings/all__sagemath_categories.py +9 -0
  452. sage/rings/finite_rings/conway_polynomials.py +542 -0
  453. sage/rings/finite_rings/element_base.cpython-314t-aarch64-linux-musl.so +0 -0
  454. sage/rings/finite_rings/element_base.pxd +12 -0
  455. sage/rings/finite_rings/element_base.pyx +1176 -0
  456. sage/rings/finite_rings/finite_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
  457. sage/rings/finite_rings/finite_field_base.pxd +7 -0
  458. sage/rings/finite_rings/finite_field_base.pyx +2171 -0
  459. sage/rings/finite_rings/finite_field_constructor.py +827 -0
  460. sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
  461. sage/rings/finite_rings/galois_group.py +154 -0
  462. sage/rings/finite_rings/hom_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
  463. sage/rings/finite_rings/hom_finite_field.pxd +23 -0
  464. sage/rings/finite_rings/hom_finite_field.pyx +856 -0
  465. sage/rings/finite_rings/hom_prime_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
  466. sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
  467. sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
  468. sage/rings/finite_rings/homset.py +357 -0
  469. sage/rings/finite_rings/integer_mod.cpython-314t-aarch64-linux-musl.so +0 -0
  470. sage/rings/finite_rings/integer_mod.pxd +56 -0
  471. sage/rings/finite_rings/integer_mod.pyx +4586 -0
  472. sage/rings/finite_rings/integer_mod_limits.h +11 -0
  473. sage/rings/finite_rings/integer_mod_ring.py +2044 -0
  474. sage/rings/finite_rings/residue_field.cpython-314t-aarch64-linux-musl.so +0 -0
  475. sage/rings/finite_rings/residue_field.pxd +30 -0
  476. sage/rings/finite_rings/residue_field.pyx +1811 -0
  477. sage/rings/finite_rings/stdint.pxd +19 -0
  478. sage/rings/fraction_field.py +1452 -0
  479. sage/rings/fraction_field_element.cpython-314t-aarch64-linux-musl.so +0 -0
  480. sage/rings/fraction_field_element.pyx +1357 -0
  481. sage/rings/function_field/all.py +7 -0
  482. sage/rings/function_field/all__sagemath_categories.py +2 -0
  483. sage/rings/function_field/constructor.py +218 -0
  484. sage/rings/function_field/element.cpython-314t-aarch64-linux-musl.so +0 -0
  485. sage/rings/function_field/element.pxd +11 -0
  486. sage/rings/function_field/element.pyx +1008 -0
  487. sage/rings/function_field/element_rational.cpython-314t-aarch64-linux-musl.so +0 -0
  488. sage/rings/function_field/element_rational.pyx +513 -0
  489. sage/rings/function_field/extensions.py +230 -0
  490. sage/rings/function_field/function_field.py +1468 -0
  491. sage/rings/function_field/function_field_rational.py +1005 -0
  492. sage/rings/function_field/ideal.py +1155 -0
  493. sage/rings/function_field/ideal_rational.py +629 -0
  494. sage/rings/function_field/jacobian_base.py +826 -0
  495. sage/rings/function_field/jacobian_hess.py +1053 -0
  496. sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
  497. sage/rings/function_field/maps.py +1039 -0
  498. sage/rings/function_field/order.py +281 -0
  499. sage/rings/function_field/order_basis.py +586 -0
  500. sage/rings/function_field/order_rational.py +576 -0
  501. sage/rings/function_field/place.py +426 -0
  502. sage/rings/function_field/place_rational.py +181 -0
  503. sage/rings/generic.py +320 -0
  504. sage/rings/homset.py +332 -0
  505. sage/rings/ideal.py +1885 -0
  506. sage/rings/ideal_monoid.py +215 -0
  507. sage/rings/infinity.py +1890 -0
  508. sage/rings/integer.cpython-314t-aarch64-linux-musl.so +0 -0
  509. sage/rings/integer.pxd +45 -0
  510. sage/rings/integer.pyx +7874 -0
  511. sage/rings/integer_ring.cpython-314t-aarch64-linux-musl.so +0 -0
  512. sage/rings/integer_ring.pxd +8 -0
  513. sage/rings/integer_ring.pyx +1693 -0
  514. sage/rings/laurent_series_ring.py +931 -0
  515. sage/rings/laurent_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  516. sage/rings/laurent_series_ring_element.pxd +11 -0
  517. sage/rings/laurent_series_ring_element.pyx +1927 -0
  518. sage/rings/lazy_series.py +7815 -0
  519. sage/rings/lazy_series_ring.py +4356 -0
  520. sage/rings/localization.py +1043 -0
  521. sage/rings/morphism.cpython-314t-aarch64-linux-musl.so +0 -0
  522. sage/rings/morphism.pxd +39 -0
  523. sage/rings/morphism.pyx +3299 -0
  524. sage/rings/multi_power_series_ring.py +1145 -0
  525. sage/rings/multi_power_series_ring_element.py +2184 -0
  526. sage/rings/noncommutative_ideals.cpython-314t-aarch64-linux-musl.so +0 -0
  527. sage/rings/noncommutative_ideals.pyx +423 -0
  528. sage/rings/number_field/all__sagemath_categories.py +1 -0
  529. sage/rings/number_field/number_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
  530. sage/rings/number_field/number_field_base.pxd +8 -0
  531. sage/rings/number_field/number_field_base.pyx +507 -0
  532. sage/rings/number_field/number_field_element_base.cpython-314t-aarch64-linux-musl.so +0 -0
  533. sage/rings/number_field/number_field_element_base.pxd +6 -0
  534. sage/rings/number_field/number_field_element_base.pyx +36 -0
  535. sage/rings/number_field/number_field_ideal.py +3550 -0
  536. sage/rings/padics/all__sagemath_categories.py +4 -0
  537. sage/rings/padics/local_generic.py +1670 -0
  538. sage/rings/padics/local_generic_element.cpython-314t-aarch64-linux-musl.so +0 -0
  539. sage/rings/padics/local_generic_element.pxd +5 -0
  540. sage/rings/padics/local_generic_element.pyx +1017 -0
  541. sage/rings/padics/misc.py +256 -0
  542. sage/rings/padics/padic_generic.py +1911 -0
  543. sage/rings/padics/pow_computer.cpython-314t-aarch64-linux-musl.so +0 -0
  544. sage/rings/padics/pow_computer.pxd +38 -0
  545. sage/rings/padics/pow_computer.pyx +671 -0
  546. sage/rings/padics/precision_error.py +24 -0
  547. sage/rings/polynomial/all__sagemath_categories.py +25 -0
  548. sage/rings/polynomial/commutative_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  549. sage/rings/polynomial/commutative_polynomial.pxd +6 -0
  550. sage/rings/polynomial/commutative_polynomial.pyx +24 -0
  551. sage/rings/polynomial/cyclotomic.cpython-314t-aarch64-linux-musl.so +0 -0
  552. sage/rings/polynomial/cyclotomic.pyx +404 -0
  553. sage/rings/polynomial/flatten.py +711 -0
  554. sage/rings/polynomial/ideal.py +102 -0
  555. sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
  556. sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
  557. sage/rings/polynomial/laurent_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  558. sage/rings/polynomial/laurent_polynomial.pxd +18 -0
  559. sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
  560. sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
  561. sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
  562. sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
  563. sage/rings/polynomial/multi_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
  564. sage/rings/polynomial/multi_polynomial.pxd +12 -0
  565. sage/rings/polynomial/multi_polynomial.pyx +3082 -0
  566. sage/rings/polynomial/multi_polynomial_element.py +2570 -0
  567. sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
  568. sage/rings/polynomial/multi_polynomial_ring.py +947 -0
  569. sage/rings/polynomial/multi_polynomial_ring_base.cpython-314t-aarch64-linux-musl.so +0 -0
  570. sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
  571. sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
  572. sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
  573. sage/rings/polynomial/polydict.cpython-314t-aarch64-linux-musl.so +0 -0
  574. sage/rings/polynomial/polydict.pxd +45 -0
  575. sage/rings/polynomial/polydict.pyx +2701 -0
  576. sage/rings/polynomial/polynomial_compiled.cpython-314t-aarch64-linux-musl.so +0 -0
  577. sage/rings/polynomial/polynomial_compiled.pxd +59 -0
  578. sage/rings/polynomial/polynomial_compiled.pyx +509 -0
  579. sage/rings/polynomial/polynomial_element.cpython-314t-aarch64-linux-musl.so +0 -0
  580. sage/rings/polynomial/polynomial_element.pxd +64 -0
  581. sage/rings/polynomial/polynomial_element.pyx +13255 -0
  582. sage/rings/polynomial/polynomial_element_generic.py +1637 -0
  583. sage/rings/polynomial/polynomial_fateman.py +97 -0
  584. sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
  585. sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
  586. sage/rings/polynomial/polynomial_ring.py +3784 -0
  587. sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
  588. sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314t-aarch64-linux-musl.so +0 -0
  589. sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
  590. sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
  591. sage/rings/polynomial/polynomial_singular_interface.py +549 -0
  592. sage/rings/polynomial/symmetric_ideal.py +989 -0
  593. sage/rings/polynomial/symmetric_reduction.cpython-314t-aarch64-linux-musl.so +0 -0
  594. sage/rings/polynomial/symmetric_reduction.pxd +8 -0
  595. sage/rings/polynomial/symmetric_reduction.pyx +669 -0
  596. sage/rings/polynomial/term_order.py +2279 -0
  597. sage/rings/polynomial/toy_buchberger.py +449 -0
  598. sage/rings/polynomial/toy_d_basis.py +387 -0
  599. sage/rings/polynomial/toy_variety.py +362 -0
  600. sage/rings/power_series_mpoly.cpython-314t-aarch64-linux-musl.so +0 -0
  601. sage/rings/power_series_mpoly.pxd +9 -0
  602. sage/rings/power_series_mpoly.pyx +161 -0
  603. sage/rings/power_series_poly.cpython-314t-aarch64-linux-musl.so +0 -0
  604. sage/rings/power_series_poly.pxd +10 -0
  605. sage/rings/power_series_poly.pyx +1317 -0
  606. sage/rings/power_series_ring.py +1441 -0
  607. sage/rings/power_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  608. sage/rings/power_series_ring_element.pxd +12 -0
  609. sage/rings/power_series_ring_element.pyx +3028 -0
  610. sage/rings/puiseux_series_ring.py +487 -0
  611. sage/rings/puiseux_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
  612. sage/rings/puiseux_series_ring_element.pxd +7 -0
  613. sage/rings/puiseux_series_ring_element.pyx +1055 -0
  614. sage/rings/qqbar_decorators.py +167 -0
  615. sage/rings/quotient_ring.py +1598 -0
  616. sage/rings/quotient_ring_element.py +979 -0
  617. sage/rings/rational.cpython-314t-aarch64-linux-musl.so +0 -0
  618. sage/rings/rational.pxd +20 -0
  619. sage/rings/rational.pyx +4284 -0
  620. sage/rings/rational_field.py +1730 -0
  621. sage/rings/real_double.cpython-314t-aarch64-linux-musl.so +0 -0
  622. sage/rings/real_double.pxd +16 -0
  623. sage/rings/real_double.pyx +2218 -0
  624. sage/rings/real_lazy.cpython-314t-aarch64-linux-musl.so +0 -0
  625. sage/rings/real_lazy.pxd +30 -0
  626. sage/rings/real_lazy.pyx +1773 -0
  627. sage/rings/ring.cpython-314t-aarch64-linux-musl.so +0 -0
  628. sage/rings/ring.pxd +30 -0
  629. sage/rings/ring.pyx +850 -0
  630. sage/rings/semirings/all.py +3 -0
  631. sage/rings/semirings/non_negative_integer_semiring.py +107 -0
  632. sage/rings/semirings/tropical_mpolynomial.py +972 -0
  633. sage/rings/semirings/tropical_polynomial.py +997 -0
  634. sage/rings/semirings/tropical_semiring.cpython-314t-aarch64-linux-musl.so +0 -0
  635. sage/rings/semirings/tropical_semiring.pyx +676 -0
  636. sage/rings/semirings/tropical_variety.py +1701 -0
  637. sage/rings/sum_of_squares.cpython-314t-aarch64-linux-musl.so +0 -0
  638. sage/rings/sum_of_squares.pxd +3 -0
  639. sage/rings/sum_of_squares.pyx +336 -0
  640. sage/rings/tests.py +504 -0
  641. sage/schemes/affine/affine_homset.py +508 -0
  642. sage/schemes/affine/affine_morphism.py +1574 -0
  643. sage/schemes/affine/affine_point.py +460 -0
  644. sage/schemes/affine/affine_rational_point.py +308 -0
  645. sage/schemes/affine/affine_space.py +1264 -0
  646. sage/schemes/affine/affine_subscheme.py +592 -0
  647. sage/schemes/affine/all.py +25 -0
  648. sage/schemes/all__sagemath_categories.py +5 -0
  649. sage/schemes/generic/algebraic_scheme.py +2092 -0
  650. sage/schemes/generic/all.py +5 -0
  651. sage/schemes/generic/ambient_space.py +400 -0
  652. sage/schemes/generic/divisor.py +465 -0
  653. sage/schemes/generic/divisor_group.py +313 -0
  654. sage/schemes/generic/glue.py +84 -0
  655. sage/schemes/generic/homset.py +820 -0
  656. sage/schemes/generic/hypersurface.py +234 -0
  657. sage/schemes/generic/morphism.py +2107 -0
  658. sage/schemes/generic/point.py +237 -0
  659. sage/schemes/generic/scheme.py +1190 -0
  660. sage/schemes/generic/spec.py +199 -0
  661. sage/schemes/product_projective/all.py +6 -0
  662. sage/schemes/product_projective/homset.py +236 -0
  663. sage/schemes/product_projective/morphism.py +517 -0
  664. sage/schemes/product_projective/point.py +568 -0
  665. sage/schemes/product_projective/rational_point.py +550 -0
  666. sage/schemes/product_projective/space.py +1301 -0
  667. sage/schemes/product_projective/subscheme.py +466 -0
  668. sage/schemes/projective/all.py +24 -0
  669. sage/schemes/projective/proj_bdd_height.py +453 -0
  670. sage/schemes/projective/projective_homset.py +718 -0
  671. sage/schemes/projective/projective_morphism.py +2792 -0
  672. sage/schemes/projective/projective_point.py +1484 -0
  673. sage/schemes/projective/projective_rational_point.py +569 -0
  674. sage/schemes/projective/projective_space.py +2571 -0
  675. sage/schemes/projective/projective_subscheme.py +1574 -0
  676. sage/sets/all.py +17 -0
  677. sage/sets/cartesian_product.py +376 -0
  678. sage/sets/condition_set.py +525 -0
  679. sage/sets/disjoint_set.cpython-314t-aarch64-linux-musl.so +0 -0
  680. sage/sets/disjoint_set.pxd +36 -0
  681. sage/sets/disjoint_set.pyx +998 -0
  682. sage/sets/disjoint_union_enumerated_sets.py +625 -0
  683. sage/sets/family.cpython-314t-aarch64-linux-musl.so +0 -0
  684. sage/sets/family.pxd +12 -0
  685. sage/sets/family.pyx +1556 -0
  686. sage/sets/finite_enumerated_set.py +406 -0
  687. sage/sets/finite_set_map_cy.cpython-314t-aarch64-linux-musl.so +0 -0
  688. sage/sets/finite_set_map_cy.pxd +34 -0
  689. sage/sets/finite_set_map_cy.pyx +708 -0
  690. sage/sets/finite_set_maps.py +591 -0
  691. sage/sets/image_set.py +448 -0
  692. sage/sets/integer_range.py +829 -0
  693. sage/sets/non_negative_integers.py +241 -0
  694. sage/sets/positive_integers.py +93 -0
  695. sage/sets/primes.py +188 -0
  696. sage/sets/real_set.py +2760 -0
  697. sage/sets/recursively_enumerated_set.cpython-314t-aarch64-linux-musl.so +0 -0
  698. sage/sets/recursively_enumerated_set.pxd +31 -0
  699. sage/sets/recursively_enumerated_set.pyx +2082 -0
  700. sage/sets/set.py +2083 -0
  701. sage/sets/set_from_iterator.py +1021 -0
  702. sage/sets/totally_ordered_finite_set.py +329 -0
  703. sage/symbolic/all__sagemath_categories.py +1 -0
  704. sage/symbolic/function.cpython-314t-aarch64-linux-musl.so +0 -0
  705. sage/symbolic/function.pxd +29 -0
  706. sage/symbolic/function.pyx +1488 -0
  707. sage/symbolic/symbols.py +56 -0
  708. sage/tests/all__sagemath_categories.py +1 -0
  709. sage/tests/cython.cpython-314t-aarch64-linux-musl.so +0 -0
  710. sage/tests/cython.pyx +37 -0
  711. sage/tests/stl_vector.cpython-314t-aarch64-linux-musl.so +0 -0
  712. sage/tests/stl_vector.pyx +171 -0
  713. sage/typeset/all.py +6 -0
  714. sage/typeset/ascii_art.py +295 -0
  715. sage/typeset/character_art.py +789 -0
  716. sage/typeset/character_art_factory.py +572 -0
  717. sage/typeset/symbols.py +334 -0
  718. sage/typeset/unicode_art.py +183 -0
  719. sage/typeset/unicode_characters.py +101 -0
@@ -0,0 +1,706 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # sage.doctest: needs sage.libs.pari
3
+ """
4
+ Examples of sets
5
+ """
6
+ # ****************************************************************************
7
+ # Copyright (C) 2009 Florent Hivert <Florent.Hivert@univ-rouen.fr>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # https://www.gnu.org/licenses/
11
+ # ****************************************************************************
12
+
13
+ from sage.structure.parent import Parent
14
+ from sage.structure.element import Element
15
+ from sage.categories.sets_cat import Sets
16
+ from sage.rings.integer import Integer, IntegerWrapper
17
+ from sage.rings.integer_ring import IntegerRing
18
+ from sage.arith.misc import is_prime
19
+ from sage.structure.unique_representation import UniqueRepresentation
20
+
21
+
22
+ class PrimeNumbers(UniqueRepresentation, Parent):
23
+ r"""
24
+ An example of parent in the category of sets: the set of prime numbers.
25
+
26
+ The elements are represented as plain integers in `\ZZ` (facade
27
+ implementation).
28
+
29
+ This is a minimal implementations. For more advanced examples of
30
+ implementations, see also::
31
+
32
+ sage: P = Sets().example("facade")
33
+ sage: P = Sets().example("inherits")
34
+ sage: P = Sets().example("wrapper")
35
+
36
+ EXAMPLES::
37
+
38
+ sage: P = Sets().example()
39
+ sage: P(12)
40
+ Traceback (most recent call last):
41
+ ...
42
+ AssertionError: 12 is not a prime number
43
+ sage: a = P.an_element()
44
+ sage: a.parent()
45
+ Integer Ring
46
+ sage: x = P(13); x
47
+ 13
48
+ sage: type(x)
49
+ <class 'sage.rings.integer.Integer'>
50
+ sage: x.parent()
51
+ Integer Ring
52
+ sage: 13 in P
53
+ True
54
+ sage: 12 in P
55
+ False
56
+ sage: y = x+1; y
57
+ 14
58
+ sage: type(y)
59
+ <class 'sage.rings.integer.Integer'>
60
+
61
+ sage: TestSuite(P).run(verbose=True)
62
+ running ._test_an_element() . . . pass
63
+ running ._test_cardinality() . . . pass
64
+ running ._test_category() . . . pass
65
+ running ._test_construction() . . . pass
66
+ running ._test_elements() . . .
67
+ Running the test suite of self.an_element()
68
+ running ._test_category() . . . pass
69
+ running ._test_eq() . . . pass
70
+ running ._test_new() . . . pass
71
+ running ._test_nonzero_equal() . . . pass
72
+ running ._test_not_implemented_methods() . . . pass
73
+ running ._test_pickling() . . . pass
74
+ pass
75
+ running ._test_elements_eq_reflexive() . . . pass
76
+ running ._test_elements_eq_symmetric() . . . pass
77
+ running ._test_elements_eq_transitive() . . . pass
78
+ running ._test_elements_neq() . . . pass
79
+ running ._test_eq() . . . pass
80
+ running ._test_new() . . . pass
81
+ running ._test_not_implemented_methods() . . . pass
82
+ running ._test_pickling() . . . pass
83
+ running ._test_some_elements() . . . pass
84
+ """
85
+ def __init__(self):
86
+ """
87
+ TESTS::
88
+
89
+ sage: from sage.categories.examples.sets_cat import PrimeNumbers
90
+ sage: P = PrimeNumbers()
91
+ sage: P.category()
92
+ Category of facade sets
93
+ sage: P is Sets().example()
94
+ True
95
+ """
96
+ Parent.__init__(self, facade=IntegerRing(), category=Sets())
97
+
98
+ def _repr_(self):
99
+ """
100
+ TESTS::
101
+
102
+ sage: Sets().example() # indirect doctest
103
+ Set of prime numbers (basic implementation)
104
+ """
105
+ return "Set of prime numbers (basic implementation)"
106
+
107
+ def an_element(self):
108
+ """
109
+ Implement :meth:`Sets.ParentMethods.an_element`.
110
+
111
+ TESTS::
112
+
113
+ sage: P = Sets().example()
114
+ sage: x = P.an_element(); x
115
+ 47
116
+ sage: x.parent()
117
+ Integer Ring
118
+ """
119
+ return self(47) # if speed is needed, call: self.element_class(47)
120
+
121
+ def __contains__(self, p):
122
+ """
123
+ TESTS::
124
+
125
+ sage: P = Sets().example()
126
+ sage: 13 in P
127
+ True
128
+ sage: 12 in P
129
+ False
130
+ """
131
+ return isinstance(p, Integer) and p.is_prime()
132
+
133
+ def _element_constructor_(self, e):
134
+ """
135
+ TESTS::
136
+
137
+ sage: P = Sets().example()
138
+ sage: P._element_constructor_(13) == 13
139
+ True
140
+ sage: P._element_constructor_(13).parent()
141
+ Integer Ring
142
+ sage: P._element_constructor_(14)
143
+ Traceback (most recent call last):
144
+ ...
145
+ AssertionError: 14 is not a prime number
146
+ """
147
+ p = self.element_class(e)
148
+ assert is_prime(p), "%s is not a prime number" % (p)
149
+ return p
150
+
151
+ element_class = Integer
152
+
153
+
154
+ from sage.misc.abstract_method import abstract_method
155
+
156
+
157
+ class PrimeNumbers_Abstract(UniqueRepresentation, Parent):
158
+ """
159
+ This class shows how to write a parent while keeping the choice of the
160
+ datastructure for the children open. Different class with fixed
161
+ datastructure will then be constructed by inheriting from
162
+ :class:`PrimeNumbers_Abstract`.
163
+
164
+ This is used by::
165
+
166
+ sage: P = Sets().example("facade")
167
+ sage: P = Sets().example("inherits")
168
+ sage: P = Sets().example("wrapper")
169
+ """
170
+ def __init__(self):
171
+ """
172
+ TESTS::
173
+
174
+ sage: P = Sets().example("inherits")
175
+ """
176
+ Parent.__init__(self, category=Sets())
177
+
178
+ def _repr_(self):
179
+ """
180
+ TESTS::
181
+
182
+ sage: Sets().example("inherits") # indirect doctest
183
+ Set of prime numbers
184
+ """
185
+ return "Set of prime numbers"
186
+
187
+ def an_element(self):
188
+ """
189
+ Implement :meth:`Sets.ParentMethods.an_element`.
190
+
191
+ TESTS::
192
+
193
+ sage: P = Sets().example("inherits")
194
+ sage: x = P.an_element(); x
195
+ 47
196
+ sage: x.parent()
197
+ Set of prime numbers
198
+ """
199
+ return self._from_integer_(47)
200
+
201
+ def _element_constructor_(self, i):
202
+ """
203
+ Construct an element of ``self`` from an integer, testing that
204
+ this integer is indeed prime.
205
+
206
+ EXAMPLES::
207
+
208
+ sage: P = Sets().example("inherits")
209
+ sage: P(13) # indirect doctest
210
+ 13
211
+ sage: P(42)
212
+ Traceback (most recent call last):
213
+ ...
214
+ ValueError: 42 is not a prime number
215
+ """
216
+ if i in self:
217
+ return self._from_integer_(i)
218
+ else:
219
+ raise ValueError("%s is not a prime number" % (i))
220
+
221
+ @abstract_method
222
+ def _from_integer_(self, i):
223
+ """
224
+ Fast construction of an element of ``self`` from an integer.
225
+
226
+ No prime checking is performed. To be defined.
227
+
228
+ EXAMPLES::
229
+
230
+ sage: P = Sets().example("inherits")
231
+ sage: P._from_integer_(13)
232
+ 13
233
+ sage: P._from_integer_(42) # Do not do that at home kids!
234
+ 42
235
+ sage: P(42)
236
+ Traceback (most recent call last):
237
+ ...
238
+ ValueError: 42 is not a prime number
239
+ """
240
+
241
+ def next(self, i):
242
+ """
243
+ Return the next prime number.
244
+
245
+ EXAMPLES::
246
+
247
+ sage: P = Sets().example("inherits")
248
+ sage: x = P.next(P.an_element()); x
249
+ 53
250
+ sage: x.parent()
251
+ Set of prime numbers
252
+ """
253
+ assert i in self
254
+ return self._from_integer_((Integer(i) + 1).next_prime())
255
+
256
+ def some_elements(self):
257
+ """
258
+ Return some prime numbers.
259
+
260
+ EXAMPLES::
261
+
262
+ sage: P = Sets().example("inherits")
263
+ sage: P.some_elements()
264
+ [47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
265
+ """
266
+ x = self.an_element()
267
+ res = [x]
268
+ for i in range(10):
269
+ x = self.next(x)
270
+ res.append(x)
271
+ return res
272
+
273
+ class Element(Element):
274
+ def is_prime(self):
275
+ """
276
+ Return whether ``self`` is a prime number.
277
+
278
+ EXAMPLES::
279
+
280
+ sage: P = Sets().example("inherits")
281
+ sage: x = P.an_element()
282
+ sage: P.an_element().is_prime()
283
+ True
284
+ """
285
+ return True
286
+
287
+ def next(self):
288
+ """
289
+ Return the next prime number.
290
+
291
+ EXAMPLES::
292
+
293
+ sage: P = Sets().example("inherits")
294
+ sage: p = P.an_element(); p
295
+ 47
296
+ sage: p.next()
297
+ 53
298
+
299
+ .. NOTE::
300
+
301
+ This method is not meant to implement the protocol iterator,
302
+ and thus not subject to Python 2 vs Python 3 incompatibilities.
303
+ """
304
+ return self.parent().next(self)
305
+
306
+
307
+ #*************************************************************************#
308
+ class PrimeNumbers_Inherits(PrimeNumbers_Abstract):
309
+ """
310
+ An example of parent in the category of sets: the set of prime numbers.
311
+ In this implementation, the element are stored as object of a new class
312
+ which inherits from the class Integer (technically :class:`IntegerWrapper`).
313
+
314
+ EXAMPLES::
315
+
316
+ sage: P = Sets().example("inherits")
317
+ sage: P
318
+ Set of prime numbers
319
+ sage: P(12)
320
+ Traceback (most recent call last):
321
+ ...
322
+ ValueError: 12 is not a prime number
323
+ sage: a = P.an_element()
324
+ sage: a.parent()
325
+ Set of prime numbers
326
+ sage: x = P(13); x
327
+ 13
328
+ sage: x.is_prime()
329
+ True
330
+ sage: type(x)
331
+ <class 'sage.categories.examples.sets_cat.PrimeNumbers_Inherits_with_category.element_class'>
332
+ sage: x.parent()
333
+ Set of prime numbers
334
+ sage: P(13) in P
335
+ True
336
+ sage: y = x+1; y
337
+ 14
338
+ sage: type(y)
339
+ <class 'sage.rings.integer.Integer'>
340
+ sage: y.parent()
341
+ Integer Ring
342
+ sage: type(P(13)+P(17))
343
+ <class 'sage.rings.integer.Integer'>
344
+ sage: type(P(2)+P(3))
345
+ <class 'sage.rings.integer.Integer'>
346
+
347
+ sage: z = P.next(x); z
348
+ 17
349
+ sage: type(z)
350
+ <class 'sage.categories.examples.sets_cat.PrimeNumbers_Inherits_with_category.element_class'>
351
+ sage: z.parent()
352
+ Set of prime numbers
353
+
354
+ sage: TestSuite(P).run(verbose=True)
355
+ running ._test_an_element() . . . pass
356
+ running ._test_cardinality() . . . pass
357
+ running ._test_category() . . . pass
358
+ running ._test_construction() . . . pass
359
+ running ._test_elements() . . .
360
+ Running the test suite of self.an_element()
361
+ running ._test_category() . . . pass
362
+ running ._test_eq() . . . pass
363
+ running ._test_new() . . . pass
364
+ running ._test_not_implemented_methods() . . . pass
365
+ running ._test_pickling() . . . pass
366
+ pass
367
+ running ._test_elements_eq_reflexive() . . . pass
368
+ running ._test_elements_eq_symmetric() . . . pass
369
+ running ._test_elements_eq_transitive() . . . pass
370
+ running ._test_elements_neq() . . . pass
371
+ running ._test_eq() . . . pass
372
+ running ._test_new() . . . pass
373
+ running ._test_not_implemented_methods() . . . pass
374
+ running ._test_pickling() . . . pass
375
+ running ._test_some_elements() . . . pass
376
+
377
+ See also::
378
+
379
+ sage: P = Sets().example("facade")
380
+ sage: P = Sets().example("inherits")
381
+ sage: P = Sets().example("wrapper")
382
+ """
383
+
384
+ def __init__(self):
385
+ """
386
+ TESTS::
387
+
388
+ sage: P = Sets().example("inherits")
389
+ sage: type(P(13)+P(17))
390
+ <class 'sage.rings.integer.Integer'>
391
+ sage: type(P(2)+P(3))
392
+ <class 'sage.rings.integer.Integer'>
393
+ """
394
+ super().__init__()
395
+ self._populate_coercion_lists_(embedding=IntegerRing())
396
+
397
+ def __contains__(self, p):
398
+ """
399
+ TESTS::
400
+
401
+ sage: P = Sets().example("inherits")
402
+ sage: 13 in P, P(13) in P
403
+ (True, True)
404
+ sage: 12 in P
405
+ False
406
+ """
407
+ return (isinstance(p, self.element_class) and p.parent() is self
408
+ or isinstance(p, Integer) and p.is_prime())
409
+
410
+ def _from_integer_(self, p):
411
+ """
412
+ TESTS::
413
+
414
+ sage: P = Sets().example("inherits")
415
+ sage: P._from_integer_(13)
416
+ 13
417
+ sage: P._from_integer_(42) # Don't do that at home kids!
418
+ 42
419
+ """
420
+ return self.element_class(self, p)
421
+
422
+ class Element(IntegerWrapper, PrimeNumbers_Abstract.Element):
423
+ def __init__(self, parent, p):
424
+ """
425
+ TESTS::
426
+
427
+ sage: P = Sets().example("inherits")
428
+ sage: P(12)
429
+ Traceback (most recent call last):
430
+ ...
431
+ ValueError: 12 is not a prime number
432
+ sage: x = P(13); type(x)
433
+ <class 'sage.categories.examples.sets_cat.PrimeNumbers_Inherits_with_category.element_class'>
434
+ sage: x.parent() is P
435
+ True
436
+ """
437
+ IntegerWrapper.__init__(self, parent, p)
438
+
439
+
440
+ #*************************************************************************#
441
+ class PrimeNumbers_Wrapper(PrimeNumbers_Abstract):
442
+ """
443
+ An example of parent in the category of sets: the set of prime numbers.
444
+
445
+ In this second alternative implementation, the prime integer are stored as
446
+ a attribute of a sage object by inheriting from :class:`ElementWrapper`. In
447
+ this case we need to ensure conversion and coercion from this parent and
448
+ its element to ``ZZ`` and ``Integer``.
449
+
450
+ EXAMPLES::
451
+
452
+ sage: P = Sets().example("wrapper")
453
+ sage: P(12)
454
+ Traceback (most recent call last):
455
+ ...
456
+ ValueError: 12 is not a prime number
457
+ sage: a = P.an_element()
458
+ sage: a.parent()
459
+ Set of prime numbers (wrapper implementation)
460
+ sage: x = P(13); x
461
+ 13
462
+ sage: type(x)
463
+ <class 'sage.categories.examples.sets_cat.PrimeNumbers_Wrapper_with_category.element_class'>
464
+ sage: x.parent()
465
+ Set of prime numbers (wrapper implementation)
466
+ sage: 13 in P
467
+ True
468
+ sage: 12 in P
469
+ False
470
+ sage: y = x+1; y
471
+ 14
472
+ sage: type(y)
473
+ <class 'sage.rings.integer.Integer'>
474
+
475
+ sage: z = P.next(x); z
476
+ 17
477
+ sage: type(z)
478
+ <class 'sage.categories.examples.sets_cat.PrimeNumbers_Wrapper_with_category.element_class'>
479
+ sage: z.parent()
480
+ Set of prime numbers (wrapper implementation)
481
+
482
+ TESTS::
483
+
484
+ sage: TestSuite(P).run()
485
+ """
486
+ def __init__(self):
487
+ """
488
+ TESTS::
489
+
490
+ sage: P = Sets().example("wrapper")
491
+ sage: P.category()
492
+ Category of sets
493
+ sage: P(13) == 13
494
+ True
495
+ sage: ZZ(P(13)) == 13
496
+ True
497
+ sage: P(13) + 1 == 14
498
+ True
499
+ """
500
+ Parent.__init__(self, category=Sets())
501
+ from sage.rings.integer_ring import IntegerRing
502
+ from sage.categories.homset import Hom
503
+ self.mor = Hom(self, IntegerRing())(lambda z: z.value)
504
+ self._populate_coercion_lists_(embedding=self.mor)
505
+
506
+ def _repr_(self):
507
+ """
508
+ TESTS::
509
+
510
+ sage: Sets().example("wrapper") # indirect doctest
511
+ Set of prime numbers (wrapper implementation)
512
+ """
513
+ return "Set of prime numbers (wrapper implementation)"
514
+
515
+ def __contains__(self, p):
516
+ """
517
+ TESTS::
518
+
519
+ sage: P = Sets().example("wrapper")
520
+ sage: 13 in P
521
+ True
522
+ sage: 12 in P
523
+ False
524
+ """
525
+ return (isinstance(p, self.element_class) and p.parent() == self or
526
+ isinstance(p, Integer) and p.is_prime())
527
+
528
+ def _from_integer_(self, e):
529
+ """
530
+ TESTS::
531
+
532
+ sage: P = Sets().example("wrapper")
533
+ sage: P._from_integer_(13).parent()
534
+ Set of prime numbers (wrapper implementation)
535
+ sage: P._from_integer_(14) # Don't do that at home kids!
536
+ 14
537
+ sage: P._element_constructor_(14)
538
+ Traceback (most recent call last):
539
+ ...
540
+ ValueError: 14 is not a prime number
541
+ """
542
+ return self.element_class(self, Integer(e))
543
+
544
+ from sage.structure.element_wrapper import ElementWrapper
545
+
546
+ class Element (ElementWrapper, PrimeNumbers_Abstract.Element):
547
+ def _integer_(self, IntRing):
548
+ """
549
+ Convert to an integer.
550
+
551
+ TESTS::
552
+
553
+ sage: P = Sets().example("wrapper")
554
+ sage: x = P.an_element()
555
+ sage: Integer(x) # indirect doctest
556
+ 47
557
+ """
558
+ return IntRing(self.value)
559
+
560
+
561
+ #*************************************************************************#
562
+ class PrimeNumbers_Facade(PrimeNumbers_Abstract):
563
+ r"""
564
+ An example of parent in the category of sets: the set of prime numbers.
565
+
566
+ In this alternative implementation, the elements are represented
567
+ as plain integers in `\ZZ` (facade implementation).
568
+
569
+ EXAMPLES::
570
+
571
+ sage: P = Sets().example("facade")
572
+ sage: P(12)
573
+ Traceback (most recent call last):
574
+ ...
575
+ ValueError: 12 is not a prime number
576
+ sage: a = P.an_element()
577
+ sage: a.parent()
578
+ Integer Ring
579
+ sage: x = P(13); x
580
+ 13
581
+ sage: type(x)
582
+ <class 'sage.rings.integer.Integer'>
583
+ sage: x.parent()
584
+ Integer Ring
585
+ sage: 13 in P
586
+ True
587
+ sage: 12 in P
588
+ False
589
+ sage: y = x+1; y
590
+ 14
591
+ sage: type(y)
592
+ <class 'sage.rings.integer.Integer'>
593
+
594
+ sage: z = P.next(x); z
595
+ 17
596
+ sage: type(z)
597
+ <class 'sage.rings.integer.Integer'>
598
+ sage: z.parent()
599
+ Integer Ring
600
+
601
+ The disadvantage of this implementation is that the elements do not know
602
+ that they are prime, so that prime testing is slow::
603
+
604
+ sage: pf = Sets().example("facade").an_element()
605
+ sage: timeit("pf.is_prime()") # random
606
+ 625 loops, best of 3: 4.1 us per loop
607
+
608
+ compared to the other implementations where prime testing is only done if
609
+ needed during the construction of the element, and later on the elements
610
+ "know" that they are prime::
611
+
612
+ sage: pw = Sets().example("wrapper").an_element()
613
+ sage: timeit("pw.is_prime()") # random
614
+ 625 loops, best of 3: 859 ns per loop
615
+
616
+ sage: pi = Sets().example("inherits").an_element()
617
+ sage: timeit("pw.is_prime()") # random
618
+ 625 loops, best of 3: 854 ns per loop
619
+
620
+ Note also that the ``next`` method for the elements does not exist::
621
+
622
+ sage: pf.next()
623
+ Traceback (most recent call last):
624
+ ...
625
+ AttributeError: 'sage.rings.integer.Integer' object has no attribute 'next'...
626
+
627
+ unlike in the other implementations::
628
+
629
+ sage: pw.next()
630
+ 53
631
+ sage: pi.next()
632
+ 53
633
+
634
+ TESTS::
635
+
636
+ sage: TestSuite(P).run(verbose = True)
637
+ running ._test_an_element() . . . pass
638
+ running ._test_cardinality() . . . pass
639
+ running ._test_category() . . . pass
640
+ running ._test_construction() . . . pass
641
+ running ._test_elements() . . .
642
+ Running the test suite of self.an_element()
643
+ running ._test_category() . . . pass
644
+ running ._test_eq() . . . pass
645
+ running ._test_new() . . . pass
646
+ running ._test_nonzero_equal() . . . pass
647
+ running ._test_not_implemented_methods() . . . pass
648
+ running ._test_pickling() . . . pass
649
+ pass
650
+ running ._test_elements_eq_reflexive() . . . pass
651
+ running ._test_elements_eq_symmetric() . . . pass
652
+ running ._test_elements_eq_transitive() . . . pass
653
+ running ._test_elements_neq() . . . pass
654
+ running ._test_eq() . . . pass
655
+ running ._test_new() . . . pass
656
+ running ._test_not_implemented_methods() . . . pass
657
+ running ._test_pickling() . . . pass
658
+ running ._test_some_elements() . . . pass
659
+ """
660
+
661
+ def __init__(self):
662
+ """
663
+ TESTS::
664
+
665
+ sage: P = Sets().example("inherits")
666
+ """
667
+ Parent.__init__(self, facade=IntegerRing(), category=Sets())
668
+
669
+ def _repr_(self):
670
+ """
671
+ TESTS::
672
+
673
+ sage: Sets().example("facade") # indirect doctest
674
+ Set of prime numbers (facade implementation)
675
+ """
676
+ return "Set of prime numbers (facade implementation)"
677
+
678
+ def __contains__(self, p):
679
+ """
680
+ TESTS::
681
+
682
+ sage: P = Sets().example("facade")
683
+ sage: 13 in P
684
+ True
685
+ sage: 12 in P
686
+ False
687
+ """
688
+ return isinstance(p, Integer) and p.is_prime()
689
+
690
+ def _from_integer_(self, e):
691
+ """
692
+ TESTS::
693
+
694
+ sage: P = Sets().example("facade")
695
+ sage: P._from_integer_(13).parent()
696
+ Integer Ring
697
+ sage: P._from_integer_(14) # Don't do that at home kids!
698
+ 14
699
+ sage: P._element_constructor_(14)
700
+ Traceback (most recent call last):
701
+ ...
702
+ ValueError: 14 is not a prime number
703
+ """
704
+ return self.element_class(e)
705
+
706
+ element_class = Integer