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,525 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Subsets of a Universe Defined by Predicates
4
+ """
5
+
6
+ # ****************************************************************************
7
+ # Copyright (C) 2021 Matthias Koeppe
8
+ #
9
+ # This program is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 2 of the License, or
12
+ # (at your option) any later version.
13
+ # https://www.gnu.org/licenses/
14
+ # ****************************************************************************
15
+
16
+ from sage.structure.category_object import normalize_names
17
+ from sage.structure.parent import Parent, Set_generic
18
+ from sage.structure.unique_representation import UniqueRepresentation
19
+ from sage.categories.sets_cat import Sets
20
+ from sage.categories.enumerated_sets import EnumeratedSets
21
+ from sage.misc.cachefunc import cached_method
22
+ from sage.combinat.subset import uniq
23
+ from sage.structure.element import Expression
24
+ from .set import Set, Set_base, Set_boolean_operators, Set_add_sub_operators
25
+
26
+
27
+ class ConditionSet(Set_generic, Set_base, Set_boolean_operators, Set_add_sub_operators,
28
+ UniqueRepresentation):
29
+ r"""
30
+ Set of elements of a universe that satisfy given predicates.
31
+
32
+ INPUT:
33
+
34
+ - ``universe`` -- set
35
+
36
+ - ``*predicates`` -- callables
37
+
38
+ - ``vars`` or ``names`` -- (default: inferred from ``predicates`` if any predicate is
39
+ an element of a :class:`~sage.symbolic.callable.CallableSymbolicExpressionRing_class`)
40
+ variables or names of variables
41
+
42
+ - ``category`` -- (default: inferred from ``universe``) a category
43
+
44
+ EXAMPLES::
45
+
46
+ sage: Evens = ConditionSet(ZZ, is_even); Evens
47
+ { x ∈ Integer Ring : <function is_even at 0x...>(x) }
48
+ sage: 2 in Evens
49
+ True
50
+ sage: 3 in Evens
51
+ False
52
+ sage: 2.0 in Evens
53
+ True
54
+
55
+ sage: Odds = ConditionSet(ZZ, is_odd); Odds
56
+ { x ∈ Integer Ring : <function is_odd at 0x...>(x) }
57
+ sage: EvensAndOdds = Evens | Odds; EvensAndOdds
58
+ Set-theoretic union of
59
+ { x ∈ Integer Ring : <function is_even at 0x...>(x) } and
60
+ { x ∈ Integer Ring : <function is_odd at 0x...>(x) }
61
+ sage: 5 in EvensAndOdds
62
+ True
63
+ sage: 7/2 in EvensAndOdds
64
+ False
65
+
66
+ sage: var('y') # needs sage.symbolic
67
+ y
68
+ sage: SmallOdds = ConditionSet(ZZ, is_odd, abs(y) <= 11, vars=[y]); SmallOdds # needs sage.symbolic
69
+ { y ∈ Integer Ring : abs(y) <= 11, <function is_odd at 0x...>(y) }
70
+
71
+ sage: # needs sage.geometry.polyhedron
72
+ sage: P = polytopes.cube(); P
73
+ A 3-dimensional polyhedron in ZZ^3 defined as the convex hull of 8 vertices
74
+ sage: P.rename('P')
75
+ sage: P_inter_B = ConditionSet(P, lambda x: x.norm() < 1.2); P_inter_B
76
+ { x ∈ P : <function <lambda> at 0x...>(x) }
77
+ sage: vector([1, 0, 0]) in P_inter_B
78
+ True
79
+ sage: vector([1, 1, 1]) in P_inter_B # needs sage.symbolic
80
+ False
81
+
82
+ sage: # needs sage.symbolic
83
+ sage: predicate(x, y, z) = sqrt(x^2 + y^2 + z^2) < 1.2; predicate
84
+ (x, y, z) |--> sqrt(x^2 + y^2 + z^2) < 1.20000000000000
85
+ sage: P_inter_B_again = ConditionSet(P, predicate); P_inter_B_again # needs sage.geometry.polyhedron
86
+ { (x, y, z) ∈ P : sqrt(x^2 + y^2 + z^2) < 1.20000000000000 }
87
+ sage: vector([1, 0, 0]) in P_inter_B_again # needs sage.geometry.polyhedron
88
+ True
89
+ sage: vector([1, 1, 1]) in P_inter_B_again # needs sage.geometry.polyhedron
90
+ False
91
+
92
+ Iterating over subsets determined by predicates::
93
+
94
+ sage: Odds = ConditionSet(ZZ, is_odd); Odds
95
+ { x ∈ Integer Ring : <function is_odd at 0x...>(x) }
96
+ sage: list(Odds.iterator_range(stop=6))
97
+ [1, -1, 3, -3, 5, -5]
98
+
99
+ sage: R = IntegerModRing(8)
100
+ sage: R_primes = ConditionSet(R, is_prime); R_primes
101
+ { x ∈ Ring of integers modulo 8 : <function is_prime at 0x...>(x) }
102
+ sage: R_primes.is_finite()
103
+ True
104
+ sage: list(R_primes)
105
+ [2, 6]
106
+
107
+ Using ``ConditionSet`` without predicates provides a way of attaching variable names
108
+ to a set::
109
+
110
+ sage: Z3 = ConditionSet(ZZ^3, vars=['x', 'y', 'z']); Z3 # needs sage.modules
111
+ { (x, y, z) ∈ Ambient free module of rank 3
112
+ over the principal ideal domain Integer Ring }
113
+ sage: Z3.variable_names() # needs sage.modules
114
+ ('x', 'y', 'z')
115
+ sage: Z3.arguments() # needs sage.modules sage.symbolic
116
+ (x, y, z)
117
+
118
+ sage: Q4.<a, b, c, d> = ConditionSet(QQ^4); Q4 # needs sage.modules sage.symbolic
119
+ { (a, b, c, d) ∈ Vector space of dimension 4 over Rational Field }
120
+ sage: Q4.variable_names() # needs sage.modules sage.symbolic
121
+ ('a', 'b', 'c', 'd')
122
+ sage: Q4.arguments() # needs sage.modules sage.symbolic
123
+ (a, b, c, d)
124
+
125
+ TESTS::
126
+
127
+ sage: TestSuite(P_inter_B).run(skip='_test_pickling') # cannot pickle lambdas # needs sage.geometry.polyhedron
128
+ sage: TestSuite(P_inter_B_again).run() # needs sage.geometry.polyhedron sage.symbolic
129
+ """
130
+ @staticmethod
131
+ def __classcall_private__(cls, universe, *predicates, vars=None, names=None, category=None):
132
+ r"""
133
+ Normalize init arguments.
134
+
135
+ TESTS::
136
+
137
+ sage: ConditionSet(ZZ, names=["x"]) is ConditionSet(ZZ, names=x) # needs sage.symbolic
138
+ True
139
+ sage: ConditionSet(RR, x > 0, names=x) is ConditionSet(RR, (x > 0).function(x)) # needs sage.symbolic
140
+ True
141
+ """
142
+ if category is None:
143
+ category = Sets()
144
+ if isinstance(universe, Parent):
145
+ if universe in Sets().Finite():
146
+ category &= Sets().Finite()
147
+ if universe in EnumeratedSets():
148
+ category &= EnumeratedSets()
149
+
150
+ if vars is not None:
151
+ if names is not None:
152
+ raise ValueError('cannot use names and vars at the same time; they are aliases')
153
+ names, vars = vars, None
154
+
155
+ if names is not None:
156
+ names = normalize_names(-1, names)
157
+
158
+ callable_symbolic_predicates = []
159
+ other_predicates = []
160
+
161
+ for predicate in predicates:
162
+ if isinstance(predicate, Expression) and predicate.is_callable():
163
+ if names is None:
164
+ names = tuple(str(var) for var in predicate.args())
165
+ elif len(names) != len(predicate.args()):
166
+ raise TypeError('mismatch in number of arguments')
167
+ if vars is None:
168
+ vars = predicate.args()
169
+ callable_symbolic_predicates.append(predicate)
170
+ elif isinstance(predicate, Expression):
171
+ if names is None:
172
+ raise TypeError('use callable symbolic expressions or provide variable names')
173
+ if vars is None:
174
+ from sage.symbolic.ring import SR
175
+ vars = tuple(SR.var(name) for name in names)
176
+ callable_symbolic_predicates.append(predicate.function(*vars))
177
+ else:
178
+ other_predicates.append(predicate)
179
+
180
+ predicates = list(uniq(callable_symbolic_predicates + other_predicates))
181
+
182
+ if not other_predicates and not callable_symbolic_predicates:
183
+ if names is None and category is None:
184
+ # No conditions, no variable names, no category, just use Set.
185
+ return Set(universe)
186
+
187
+ if any(predicate.args() != vars
188
+ for predicate in callable_symbolic_predicates):
189
+ # TODO: Implement safe renaming of the arguments of a callable symbolic expressions
190
+ raise NotImplementedError('all callable symbolic expressions must use the same arguments')
191
+
192
+ if names is None:
193
+ names = ("x",)
194
+ return super().__classcall__(cls, universe, *predicates,
195
+ names=names, category=category)
196
+
197
+ def __init__(self, universe, *predicates, names=None, category=None):
198
+ r"""
199
+ TESTS::
200
+
201
+ sage: Evens = ConditionSet(ZZ, is_even); Evens
202
+ { x ∈ Integer Ring : <function is_even at 0x...>(x) }
203
+ sage: TestSuite(Evens).run()
204
+ """
205
+ self._universe = universe
206
+ self._predicates = predicates
207
+ facade = None
208
+ if isinstance(universe, Parent):
209
+ facade = universe
210
+ super().__init__(facade=facade, category=category,
211
+ names=names, normalize=False) # names already normalized by classcall
212
+
213
+ def _first_ngens(self, n):
214
+ r"""
215
+ Return the list of variables.
216
+
217
+ This is useful only for the use of Sage preparser::
218
+
219
+ sage: preparse("Q3.<x,y,z> = ConditionSet(QQ^3)")
220
+ "Q3 = ConditionSet(QQ**Integer(3), names=('x', 'y', 'z',)); (x, y, z,) = Q3._first_ngens(3)"
221
+ """
222
+ return self.arguments()
223
+
224
+ def _repr_(self):
225
+ """
226
+ Print representation of this set.
227
+
228
+ EXAMPLES::
229
+
230
+ sage: var('t') # parameter # needs sage.symbolic
231
+ t
232
+ sage: ZeroDimButNotNullary = ConditionSet(ZZ^0, t > 0, vars=("q")) # needs sage.symbolic
233
+ sage: ZeroDimButNotNullary._repr_() # needs sage.symbolic
234
+ '{ q ∈ Ambient free module of rank 0
235
+ over the principal ideal domain Integer Ring : t > 0 }'
236
+ """
237
+ s = "{ "
238
+ names = self.variable_names()
239
+ comma_sep_names = ", ".join(str(name) for name in names)
240
+ if len(names) == 1:
241
+ s += f"{comma_sep_names}"
242
+ else:
243
+ s += f"({comma_sep_names})"
244
+ universe = self._universe
245
+ s += f" ∈ {universe}"
246
+ sep = " : "
247
+ for predicate in self._predicates:
248
+ s += sep + self._repr_condition(predicate)
249
+ sep = ", "
250
+ s += " }"
251
+ return s
252
+
253
+ @cached_method
254
+ def _repr_condition(self, predicate):
255
+ """
256
+ Format the predicate, applied to the arguments.
257
+
258
+ EXAMPLES::
259
+
260
+ sage: Evens = ConditionSet(ZZ, is_even)
261
+ sage: Evens._repr_condition(is_even)
262
+ '<function is_even at 0x...>(x)'
263
+
264
+ sage: # needs sage.symbolic
265
+ sage: BigSin = ConditionSet(RR, sin(x) > 0.9, vars=[x])
266
+ sage: BigSin._repr_condition(BigSin._predicates[0])
267
+ 'sin(x) > 0.900000000000000'
268
+ sage: var('t') # parameter
269
+ t
270
+ sage: ZeroDimButNotNullary = ConditionSet(ZZ^0, t > 0, vars=("q"))
271
+ sage: ZeroDimButNotNullary._repr_condition(ZeroDimButNotNullary._predicates[0])
272
+ 't > 0'
273
+ """
274
+ if isinstance(predicate, Expression) and predicate.is_callable():
275
+ args = self.arguments()
276
+ if len(args) == 1:
277
+ args = args[0]
278
+ condition = self._call_predicate(predicate, args)
279
+ return str(condition)
280
+ comma_sep_names = ", ".join(str(name)
281
+ for name in self.variable_names())
282
+ return f"{predicate}({comma_sep_names})"
283
+
284
+ @cached_method
285
+ def arguments(self):
286
+ """
287
+ Return the variables of ``self`` as elements of the symbolic ring.
288
+
289
+ EXAMPLES::
290
+
291
+ sage: Odds = ConditionSet(ZZ, is_odd); Odds
292
+ { x ∈ Integer Ring : <function is_odd at 0x...>(x) }
293
+ sage: args = Odds.arguments(); args # needs sage.symbolic
294
+ (x,)
295
+ sage: args[0].parent() # needs sage.symbolic
296
+ Symbolic Ring
297
+ """
298
+ from sage.symbolic.ring import SR
299
+ return SR.var(self.variable_names())
300
+
301
+ def _element_constructor_(self, *args, **kwds):
302
+ """
303
+ Construct an element of the set.
304
+
305
+ This element constructor raises an error if the element does not
306
+ satisfy the predicates.
307
+
308
+ EXAMPLES::
309
+
310
+ sage: Evens = ConditionSet(ZZ, is_even); Evens
311
+ { x ∈ Integer Ring : <function is_even at 0x...>(x) }
312
+ sage: element_two = Evens(2r); element_two
313
+ 2
314
+ sage: element_two.parent()
315
+ Integer Ring
316
+ sage: element_too = Evens(2.0); element_too
317
+ 2
318
+ sage: element_too.parent()
319
+ Integer Ring
320
+ sage: Evens(3)
321
+ Traceback (most recent call last):
322
+ ...
323
+ ValueError: 3 does not satisfy the condition
324
+ """
325
+ try:
326
+ universe_element_constructor = self._universe._element_constructor_
327
+ except AttributeError:
328
+ if len(args) != 1 or kwds:
329
+ raise ValueError('element constructor only takes 1 argument')
330
+ element = args[0]
331
+ if element not in self._universe:
332
+ raise ValueError(f'{element} is not an element of the universe')
333
+ else:
334
+ element = universe_element_constructor(*args, **kwds)
335
+ if not all(self._call_predicate(predicate, element)
336
+ for predicate in self._predicates):
337
+ raise ValueError(f'{element} does not satisfy the condition')
338
+ return element
339
+
340
+ def _call_predicate(self, predicate, element):
341
+ r"""
342
+ Call ``predicate`` on an ``element`` of the universe of ``self``.
343
+
344
+ TESTS::
345
+
346
+ sage: # needs sage.modules sage.symbolic
347
+ sage: TripleDigits = ZZ^3
348
+ sage: predicate(x, y, z) = sqrt(x^2 + y^2 + z^2) < 12; predicate
349
+ (x, y, z) |--> sqrt(x^2 + y^2 + z^2) < 12
350
+ sage: SmallTriples = ConditionSet(ZZ^3, predicate); SmallTriples
351
+ { (x, y, z) ∈ Ambient free module of rank 3 over the principal
352
+ ideal domain Integer Ring : sqrt(x^2 + y^2 + z^2) < 12 }
353
+ sage: predicate = SmallTriples._predicates[0]
354
+ sage: element = TripleDigits((1, 2, 3))
355
+ sage: SmallTriples._call_predicate(predicate, element)
356
+ sqrt(14) < 12
357
+
358
+ sage: # needs sage.modules sage.symbolic
359
+ sage: var('t')
360
+ t
361
+ sage: TinyUniverse = ZZ^0
362
+ sage: Nullary = ConditionSet(TinyUniverse, t > 0, vars=())
363
+ sage: predicate = Nullary._predicates[0]
364
+ sage: element = TinyUniverse(0)
365
+ sage: Nullary._call_predicate(predicate, element)
366
+ t > 0
367
+ """
368
+ if isinstance(predicate, Expression) and predicate.is_callable():
369
+ if len(predicate.arguments()) != 1:
370
+ return predicate(*element)
371
+ return predicate(element)
372
+
373
+ def _an_element_(self):
374
+ r"""
375
+ Return an element of ``self``.
376
+
377
+ This may raise :exc:`NotImplementedError`.
378
+
379
+ TESTS::
380
+
381
+ sage: # needs sage.modules sage.symbolic
382
+ sage: TripleDigits = ZZ^3
383
+ sage: predicate(x, y, z) = sqrt(x^2 + y^2 + z^2) < 12; predicate
384
+ (x, y, z) |--> sqrt(x^2 + y^2 + z^2) < 12
385
+ sage: SmallTriples = ConditionSet(ZZ^3, predicate); SmallTriples
386
+ { (x, y, z) ∈ Ambient free module of rank 3 over the principal
387
+ ideal domain Integer Ring : sqrt(x^2 + y^2 + z^2) < 12 }
388
+ sage: SmallTriples.an_element() # indirect doctest
389
+ (1, 0, 0)
390
+ """
391
+ for element in self._universe.some_elements():
392
+ if element in self:
393
+ return element
394
+ raise NotImplementedError
395
+
396
+ def ambient(self):
397
+ r"""
398
+ Return the universe of ``self``.
399
+
400
+ EXAMPLES::
401
+
402
+ sage: Evens = ConditionSet(ZZ, is_even); Evens
403
+ { x ∈ Integer Ring : <function is_even at 0x...>(x) }
404
+ sage: Evens.ambient()
405
+ Integer Ring
406
+ """
407
+ return self._universe
408
+
409
+ @cached_method
410
+ def _sympy_(self):
411
+ r"""
412
+ Return an instance of a subclass of SymPy ``Set`` corresponding to ``self``.
413
+
414
+ EXAMPLES::
415
+
416
+ sage: # needs sympy sage.modules sage.symbolic
417
+ sage: predicate(x, y, z) = sqrt(x^2 + y^2 + z^2) < 12; predicate
418
+ (x, y, z) |--> sqrt(x^2 + y^2 + z^2) < 12
419
+ sage: SmallTriples = ConditionSet(ZZ^3, predicate); SmallTriples
420
+ { (x, y, z) ∈ Ambient free module of rank 3 over the principal
421
+ ideal domain Integer Ring : sqrt(x^2 + y^2 + z^2) < 12 }
422
+ sage: ST = SmallTriples._sympy_(); ST
423
+ ConditionSet((x, y, z), sqrt(x**2 + y**2 + z**2) < 12,
424
+ ProductSet(Integers, Integers, Integers))
425
+ sage: (1, 3, 5) in ST
426
+ True
427
+ sage: (5, 7, 9) in ST
428
+ False
429
+ sage: Interval = ConditionSet(RR, x >= -7, x <= 4, vars=[x]); Interval
430
+ { x ∈ Real Field with 53 bits of precision : x >= -7, x <= 4 }
431
+ sage: Interval._sympy_()
432
+ ConditionSet(x, (x >= -7) & (x <= 4),
433
+ SageSet(Real Field with 53 bits of precision))
434
+
435
+ If a predicate is not symbolic, we fall back to creating a wrapper::
436
+
437
+ sage: Evens = ConditionSet(ZZ, is_even); Evens
438
+ { x ∈ Integer Ring : <function is_even at 0x...>(x) }
439
+ sage: Evens._sympy_() # needs sympy sage.symbolic
440
+ SageSet({ x ∈ Integer Ring : <function is_even at 0x...>(x) })
441
+ """
442
+ from sage.interfaces.sympy import sympy_init
443
+ sympy_init()
444
+ import sympy
445
+
446
+ args = self.arguments()
447
+ single_arg = len(args) == 1
448
+ if single_arg:
449
+ args = args[0]
450
+
451
+ try:
452
+ conditions = [self._call_predicate(predicate, args)
453
+ for predicate in self._predicates]
454
+
455
+ sym = tuple(x._sympy_() for x in self.arguments())
456
+ if single_arg:
457
+ sym = sym[0]
458
+ result = sympy.ConditionSet(sym,
459
+ sympy.And(*[condition._sympy_()
460
+ for condition in conditions]),
461
+ base_set=self._universe._sympy_())
462
+ result._sage_object = self
463
+ return result
464
+ except TypeError:
465
+ # Fall back to creating a wrapper
466
+ return super()._sympy_()
467
+
468
+ def intersection(self, X):
469
+ r"""
470
+ Return the intersection of ``self`` and ``X``.
471
+
472
+ EXAMPLES::
473
+
474
+ sage: # needs sage.modules sage.symbolic
475
+ sage: in_small_oblong(x, y) = x^2 + 3 * y^2 <= 42
476
+ sage: SmallOblongUniverse = ConditionSet(QQ^2, in_small_oblong)
477
+ sage: SmallOblongUniverse
478
+ { (x, y) ∈ Vector space of dimension 2
479
+ over Rational Field : x^2 + 3*y^2 <= 42 }
480
+ sage: parity_check(x, y) = abs(sin(pi/2*(x + y))) < 1/1000
481
+ sage: EvenUniverse = ConditionSet(ZZ^2, parity_check); EvenUniverse
482
+ { (x, y) ∈ Ambient free module of rank 2 over the principal ideal
483
+ domain Integer Ring : abs(sin(1/2*pi*x + 1/2*pi*y)) < (1/1000) }
484
+ sage: SmallOblongUniverse & EvenUniverse
485
+ { (x, y) ∈ Free module of degree 2 and rank 2 over Integer Ring
486
+ Echelon basis matrix:
487
+ [1 0]
488
+ [0 1] : x^2 + 3*y^2 <= 42, abs(sin(1/2*pi*x + 1/2*pi*y)) < (1/1000) }
489
+
490
+ Combining two ``ConditionSet``s with different formal variables works correctly.
491
+ The formal variables of the intersection are taken from ``self``::
492
+
493
+ sage: # needs sage.modules sage.symbolic
494
+ sage: SmallMirrorUniverse = ConditionSet(QQ^2, in_small_oblong,
495
+ ....: vars=(y, x))
496
+ sage: SmallMirrorUniverse
497
+ { (y, x) ∈ Vector space of dimension 2
498
+ over Rational Field : 3*x^2 + y^2 <= 42 }
499
+ sage: SmallOblongUniverse & SmallMirrorUniverse
500
+ { (x, y) ∈ Vector space of dimension 2
501
+ over Rational Field : x^2 + 3*y^2 <= 42 }
502
+ sage: SmallMirrorUniverse & SmallOblongUniverse
503
+ { (y, x) ∈ Vector space of dimension 2
504
+ over Rational Field : 3*x^2 + y^2 <= 42 }
505
+ """
506
+ if isinstance(X, ConditionSet):
507
+ return ConditionSet(self.ambient().intersection(X.ambient()),
508
+ *(self._predicates + X._predicates),
509
+ vars=self.arguments())
510
+ return super().intersection(X)
511
+
512
+ def __iter__(self):
513
+ r"""
514
+ Iterate over ``self``.
515
+
516
+ TESTS::
517
+
518
+ sage: Odds = ConditionSet(ZZ, is_odd); Odds
519
+ { x ∈ Integer Ring : <function is_odd at 0x...>(x) }
520
+ sage: list(Odds.iterator_range(stop=6))
521
+ [1, -1, 3, -3, 5, -5]
522
+ """
523
+ for x in self._universe:
524
+ if x in self:
525
+ yield x
@@ -0,0 +1,36 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # ****************************************************************************
3
+ # Copyright (C) 2009 Sébastien Labbé <slabqc at gmail.com>
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ # https://www.gnu.org/licenses/
10
+ # ****************************************************************************
11
+
12
+ from sage.groups.perm_gps.partn_ref.data_structures cimport OrbitPartition
13
+ from sage.structure.sage_object cimport SageObject
14
+
15
+ cpdef DisjointSet(arg)
16
+
17
+ cdef class DisjointSet_class(SageObject):
18
+ cdef OrbitPartition *_nodes
19
+ cpdef cardinality(self)
20
+ cpdef number_of_subsets(self)
21
+
22
+ cdef class DisjointSet_of_integers(DisjointSet_class):
23
+ cpdef int find(self, int i) except -1
24
+ cpdef void union(self, int i, int j) except *
25
+ cpdef root_to_elements_dict(self)
26
+ cpdef element_to_root_dict(self)
27
+ cpdef to_digraph(self)
28
+
29
+ cdef class DisjointSet_of_hashables(DisjointSet_class):
30
+ cdef list _int_to_el
31
+ cdef dict _el_to_int
32
+ cpdef find(self, e)
33
+ cpdef void union(self, e, f) except *
34
+ cpdef root_to_elements_dict(self)
35
+ cpdef element_to_root_dict(self)
36
+ cpdef to_digraph(self)