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,362 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Educational versions of Groebner basis algorithms: triangular factorization
4
+
5
+ In this file is the implementation of two algorithms in [Laz1992]_.
6
+
7
+ The main algorithm is ``Triangular``; a secondary algorithm, necessary for the
8
+ first, is ``ElimPolMin``. As per Lazard's formulation, the implementation works
9
+ with any term ordering, not only lexicographic.
10
+
11
+ Lazard does not specify a few of the subalgorithms implemented as the
12
+ functions
13
+
14
+ * ``is_triangular``,
15
+ * ``is_linearly_dependent``, and
16
+ * ``linear_representation``.
17
+
18
+ The implementations are not hard, and the choice of algorithm is described
19
+ with the relevant function.
20
+
21
+ No attempt was made to optimize these algorithms as the emphasis of this
22
+ implementation is a clean and easy presentation.
23
+
24
+ Examples appear with the appropriate function.
25
+
26
+ AUTHORS:
27
+
28
+ - John Perry (2009-02-24): initial version, but some words of
29
+ documentation were stolen shamelessly from Martin Albrecht's
30
+ ``toy_buchberger.py``.
31
+ """
32
+
33
+
34
+ def is_triangular(B) -> bool:
35
+ """
36
+ Check whether the basis ``B`` of an ideal is triangular.
37
+
38
+ That is: check whether the largest variable in ``B[i]`` with
39
+ respect to the ordering of the base ring ``R`` is ``R.gens()[i]``.
40
+
41
+ The algorithm is based on the definition of a triangular basis,
42
+ given by Lazard in 1992 in [Laz1992]_.
43
+
44
+ INPUT:
45
+
46
+ - ``B`` -- list/tuple of polynomials or a multivariate polynomial ideal
47
+
48
+ OUTPUT: ``True`` if the basis is triangular; ``False`` otherwise
49
+
50
+ EXAMPLES::
51
+
52
+ sage: from sage.rings.polynomial.toy_variety import is_triangular
53
+ sage: R.<x,y,z> = PolynomialRing(QQ)
54
+ sage: p1 = x^2*y + z^2
55
+ sage: p2 = y*z + z^3
56
+ sage: p3 = y+z
57
+ sage: is_triangular(R.ideal(p1,p2,p3))
58
+ False
59
+ sage: p3 = z^2 - 3
60
+ sage: is_triangular(R.ideal(p1,p2,p3))
61
+ True
62
+ """
63
+ # type checking in a probably vain attempt to avoid stupid errors
64
+ if isinstance(B, (list, tuple)):
65
+ G = B
66
+ else:
67
+ try:
68
+ G = B.gens()
69
+ except Exception:
70
+ raise TypeError("is_triangular wants as input an ideal, or a list of polynomials\n")
71
+ vars = G[0].parent().gens()
72
+ n = len(G)
73
+ # We expect the polynomials of G to be ordered G[i].lm() > G[i+1].lm();
74
+ # by definition, the largest variable that appears in G[i] must be vars[i].
75
+ for i in range(n):
76
+ for t in G[i].monomials():
77
+ for x in vars[0:i]:
78
+ if t.degree(x) != 0:
79
+ return False
80
+ return True
81
+
82
+
83
+ def coefficient_matrix(polys):
84
+ """
85
+ Generate the matrix ``M`` whose entries are the coefficients of ``polys``.
86
+
87
+ The entries of row ``i`` of ``M`` consist of the coefficients of
88
+ ``polys[i]``.
89
+
90
+ INPUT:
91
+
92
+ - ``polys`` -- list/tuple of polynomials
93
+
94
+ OUTPUT: a matrix ``M`` of the coefficients of ``polys``
95
+
96
+ EXAMPLES::
97
+
98
+ sage: from sage.rings.polynomial.toy_variety import coefficient_matrix
99
+ sage: R.<x,y> = PolynomialRing(QQ)
100
+ sage: coefficient_matrix([x^2 + 1, y^2 + 1, x*y + 1]) # needs sage.modules
101
+ [1 0 0 1]
102
+ [0 0 1 1]
103
+ [0 1 0 1]
104
+
105
+ .. NOTE::
106
+
107
+ This function may be merged with
108
+ :meth:`sage.rings.polynomial.multi_polynomial_sequence.PolynomialSequence_generic.coefficient_matrix()` in the future.
109
+ """
110
+ from sage.matrix.constructor import matrix
111
+ R = polys[0].base_ring()
112
+ mons = set()
113
+ for each in polys:
114
+ mons = mons.union(each.monomials())
115
+ mons = list(mons)
116
+ mons.sort(reverse=True)
117
+ M = matrix(R, len(polys), len(mons))
118
+ for i in range(len(polys)):
119
+ imons = polys[i].monomials()
120
+ if polys[0].parent().ngens() == 1:
121
+ icoeffs = polys[i].coefficients()[::-1]
122
+ else:
123
+ icoeffs = polys[i].coefficients()
124
+ for j in range(len(imons)):
125
+ M[i, mons.index(imons[j])] = icoeffs[j]
126
+ return M
127
+
128
+
129
+ def is_linearly_dependent(polys) -> bool:
130
+ """
131
+ Decide whether the polynomials of ``polys`` are linearly dependent.
132
+
133
+ Here ``polys`` is a collection of polynomials.
134
+
135
+ The algorithm creates a matrix of coefficients of the monomials of
136
+ ``polys``. It computes the echelon form of the matrix, then checks whether
137
+ any of the rows is the zero vector.
138
+
139
+ Essentially this relies on the fact that the monomials are linearly
140
+ independent, and therefore is building a linear map from the vector space of
141
+ the monomials to the canonical basis of ``R^n``, where ``n`` is the number of
142
+ distinct monomials in ``polys``. There is a zero vector iff there is a
143
+ linear dependence among ``polys``.
144
+
145
+ The case where ``polys=[]`` is considered to be not linearly dependent.
146
+
147
+ INPUT:
148
+
149
+ - ``polys`` -- list/tuple of polynomials
150
+
151
+ OUTPUT:
152
+
153
+ ``True`` if the elements of ``polys`` are linearly dependent;
154
+ ``False`` otherwise.
155
+
156
+ EXAMPLES::
157
+
158
+ sage: from sage.rings.polynomial.toy_variety import is_linearly_dependent
159
+ sage: R.<x,y> = PolynomialRing(QQ)
160
+ sage: B = [x^2 + 1, y^2 + 1, x*y + 1]
161
+ sage: p = 3*B[0] - 2*B[1] + B[2]
162
+ sage: is_linearly_dependent(B + [p]) # needs sage.modules
163
+ True
164
+ sage: p = x*B[0]
165
+ sage: is_linearly_dependent(B + [p]) # needs sage.modules
166
+ False
167
+ sage: is_linearly_dependent([])
168
+ False
169
+ sage: R.<x> = PolynomialRing(QQ)
170
+ sage: B = [x^147 + x^99,
171
+ ....: 2*x^123 + x^75,
172
+ ....: x^147 + 2*x^123 + 2*x^75,
173
+ ....: 2*x^147 + x^99 + x^75]
174
+ sage: is_linearly_dependent(B) # needs sage.modules
175
+ True
176
+ """
177
+ if not polys:
178
+ return False
179
+ M = coefficient_matrix(polys).echelon_form()
180
+ return any(M.row(each).is_zero() for each in range(M.nrows()))
181
+
182
+
183
+ def linear_representation(p, polys):
184
+ """
185
+ Assuming that ``p`` is a linear combination of ``polys``,
186
+ determine coefficients that describe the linear combination.
187
+
188
+ This probably does not work for any inputs except ``p``, a polynomial,
189
+ and ``polys``, a sequence of polynomials.
190
+ If ``p`` is not in fact a linear combination of ``polys``,
191
+ the function raises an exception.
192
+
193
+ The algorithm creates a matrix of coefficients of the monomials of
194
+ ``polys`` and ``p``, with the coefficients of ``p`` in the last
195
+ row. It augments this matrix with the appropriate identity matrix, then
196
+ computes the echelon form of the augmented matrix. The last row should
197
+ contain zeroes in the first columns, and the last
198
+ columns contain a linear dependence relation. Solving for
199
+ the desired linear relation is straightforward.
200
+
201
+ INPUT:
202
+
203
+ - ``p`` -- a polynomial
204
+ - ``polys`` -- list/tuple of polynomials
205
+
206
+ OUTPUT:
207
+
208
+ If ``n == len(polys)``, returns ``[a[0],a[1],...,a[n-1]]``
209
+ such that ``p == a[0]*poly[0] + ... + a[n-1]*poly[n-1]``.
210
+
211
+ EXAMPLES::
212
+
213
+ sage: # needs sage.modules sage.rings.finite_rings
214
+ sage: from sage.rings.polynomial.toy_variety import linear_representation
215
+ sage: R.<x,y> = PolynomialRing(GF(32003))
216
+ sage: B = [x^2 + 1, y^2 + 1, x*y + 1]
217
+ sage: p = 3*B[0] - 2*B[1] + B[2]
218
+ sage: linear_representation(p, B)
219
+ [3, 32001, 1]
220
+ """
221
+ from sage.matrix.constructor import diagonal_matrix
222
+ R = p.base_ring()
223
+ M = coefficient_matrix(polys + [p]).augment(diagonal_matrix(R, [1 for each in range(len(polys) + 1)]))
224
+ M.echelonize()
225
+ j = M.ncols() - 1
226
+ n = M.nrows() - 1
227
+ offset = M.ncols() - M.nrows()
228
+ return [M[n, offset + each] / (-M[n, j]) for each in range(len(polys))]
229
+
230
+
231
+ def triangular_factorization(B, n=-1):
232
+ """
233
+ Compute the triangular factorization of the Groebner basis ``B`` of an ideal.
234
+
235
+ This will not work properly if ``B`` is not a Groebner basis!
236
+
237
+ The algorithm used is that described in a 1992 paper by Daniel Lazard [Laz1992]_.
238
+ It is not necessary for the term ordering to be lexicographic.
239
+
240
+ INPUT:
241
+
242
+ - ``B`` -- list/tuple of polynomials or a multivariate polynomial ideal
243
+ - ``n`` -- the recursion parameter (default: ``-1``)
244
+
245
+ OUTPUT: list ``T`` of triangular sets ``T_0``, ``T_1``, etc.
246
+
247
+ EXAMPLES::
248
+
249
+ sage: # needs sage.rings.finite_rings
250
+ sage: from sage.misc.verbose import set_verbose
251
+ sage: set_verbose(0)
252
+ sage: from sage.rings.polynomial.toy_variety import triangular_factorization
253
+ sage: R.<x,y,z> = PolynomialRing(GF(32003))
254
+ sage: p1 = x^2*(x-1)^3*y^2*(z-3)^3
255
+ sage: p2 = z^2 - z
256
+ sage: p3 = (x-2)^2*(y-1)^3
257
+ sage: I = R.ideal(p1,p2,p3)
258
+ sage: triangular_factorization(I.groebner_basis()) # needs sage.libs.singular
259
+ [[x^2 - 4*x + 4, y, z - 1],
260
+ [x^5 - 3*x^4 + 3*x^3 - x^2, y - 1, z - 1],
261
+ [x^2 - 4*x + 4, y, z],
262
+ [x^5 - 3*x^4 + 3*x^3 - x^2, y - 1, z]]
263
+ """
264
+ # type checking in a probably vain attempt to avoid stupid errors
265
+ if isinstance(B, (tuple, list)):
266
+ G = B
267
+ else:
268
+ try:
269
+ G = B.gens()
270
+ except Exception:
271
+ raise TypeError("triangular_factorization wants as input an ideal, or a list of polynomials\n")
272
+ # easy cases
273
+ if not G:
274
+ return []
275
+ if is_triangular(G):
276
+ return [G]
277
+ # this is what we get paid for...
278
+ # first, find the univariate polynomial in the ideal
279
+ # corresponding to the smallest variable under consideration
280
+ p = elim_pol(G, n)
281
+ R = p.parent()
282
+ family = []
283
+ # recursively build the family,
284
+ # looping through the factors of p
285
+ for q, a in p.factor():
286
+ # Construct an analog to I in (R.quotient(R.ideal(q)))[x_0,x_1,...x_{n-1}]
287
+ ideal_I = R.ideal([each.reduce([q]) for each in G])
288
+ if len(ideal_I.gens()) == 1:
289
+ # save some effort
290
+ H = [ideal_I.gens()[0]]
291
+ else:
292
+ H = ideal_I.groebner_basis()
293
+ T = triangular_factorization(list(H), n - 1)
294
+ # now add the current factor q of p to the factorization
295
+ for each in T:
296
+ each.append(q)
297
+ family.extend(T)
298
+ return family
299
+
300
+
301
+ def elim_pol(B, n=-1):
302
+ """
303
+ Find the unique monic polynomial of lowest degree and lowest variable
304
+ in the ideal described by ``B``.
305
+
306
+ For the purposes of the triangularization algorithm, it is necessary to
307
+ preserve the ring, so ``n`` specifies which variable to check.
308
+ By default, we check the last one, which should also be the smallest.
309
+
310
+ The algorithm may not work if you are trying to cheat:
311
+ ``B`` should describe the Groebner basis of a zero-dimensional ideal.
312
+ However, it is not necessary for the Groebner basis to be lexicographic.
313
+
314
+ The algorithm is taken from a 1993 paper by Lazard [Laz1992]_.
315
+
316
+ INPUT:
317
+
318
+ - ``B`` -- list/tuple of polynomials or a multivariate polynomial ideal
319
+ - ``n`` -- the variable to check (see above) (default: ``-1``)
320
+
321
+ EXAMPLES::
322
+
323
+ sage: # needs sage.rings.finite_rings
324
+ sage: from sage.misc.verbose import set_verbose
325
+ sage: set_verbose(0)
326
+ sage: from sage.rings.polynomial.toy_variety import elim_pol
327
+ sage: R.<x,y,z> = PolynomialRing(GF(32003))
328
+ sage: p1 = x^2*(x-1)^3*y^2*(z-3)^3
329
+ sage: p2 = z^2 - z
330
+ sage: p3 = (x-2)^2*(y-1)^3
331
+ sage: I = R.ideal(p1,p2,p3)
332
+ sage: elim_pol(I.groebner_basis()) # needs sage.libs.singular
333
+ z^2 - z
334
+ """
335
+ # type checking in a probably vain attempt to avoid stupid errors
336
+ if isinstance(B, (list, tuple)):
337
+ G = B
338
+ else:
339
+ try:
340
+ G = B.gens()
341
+ except Exception:
342
+ raise TypeError("elim_pol wants as input an ideal or a list of polynomials")
343
+
344
+ # setup -- main algorithm
345
+ x = G[0].parent().gens()[n]
346
+ monom = x**0
347
+ nfm = monom.reduce(G)
348
+ lnf = []
349
+ listmonom = []
350
+ # ratchet up the degree of monom, adding each time a normal form,
351
+ # until finally the normal form is a linear combination
352
+ # of the previous normal forms
353
+ while not is_linearly_dependent(lnf + [nfm]):
354
+ lnf.insert(0, nfm)
355
+ listmonom.append(monom)
356
+ monom = x * monom
357
+ nfm = monom.reduce(G)
358
+ result = monom
359
+ coeffs = linear_representation(nfm, lnf)
360
+ for each in range(len(coeffs)):
361
+ result -= coeffs[each] * lnf[each]
362
+ return result
@@ -0,0 +1,9 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ from sage.structure.element cimport ModuleElement
3
+ from sage.rings.power_series_ring_element cimport PowerSeries
4
+
5
+ cdef class PowerSeries_mpoly(PowerSeries):
6
+ cdef ModuleElement __f
7
+ cdef object _poly
8
+ cdef object __list
9
+ cdef bint _truncated
@@ -0,0 +1,161 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ # NOT ready to be used -- possibly should be deleted.
3
+
4
+ from sage.rings.power_series_ring_element cimport PowerSeries
5
+ from sage.structure.element cimport Element
6
+ from sage.rings.infinity import infinity
7
+ from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
8
+ from sage.rings import power_series_poly
9
+
10
+
11
+ try:
12
+ from cypari2.handle_error import PariError
13
+ except ImportError:
14
+ PariError = ()
15
+
16
+
17
+ cdef class PowerSeries_mpoly(PowerSeries):
18
+
19
+ def __init__(self, parent, f=0, prec=infinity, int check=1, is_gen=0):
20
+ """
21
+ EXAMPLES::
22
+
23
+ sage: S.<x> = QQ[]
24
+ sage: R.<y> = S[[]]
25
+ sage: f = x + 2*y + x*y
26
+ sage: loads(f.dumps()) == f
27
+ True
28
+ """
29
+ S = parent._mpoly_ring()
30
+ if isinstance(f, Element) and (<Element>f)._parent is S:
31
+ #if check and not (prec is infinity):
32
+ # self.__f = f.truncate(S.gens()[-1], prec)
33
+ # self._truncated = 1
34
+ #else:
35
+ self.__f = f
36
+ else:
37
+ # We use the generic code, since the coercion rules can be
38
+ # very complicated. This is non-optimal, but much easier
39
+ # to maintain.
40
+ g = power_series_poly.PowerSeries_poly(parent, f=f,
41
+ prec=prec, check=check).polynomial()
42
+
43
+ # Now g is a polynomial in the indeterminate over the base
44
+ # ring. We have to construct a multivariate polynomial
45
+ # from g in S efficiently.
46
+
47
+ # Let d be the dictionary that will represent this object
48
+ # that we're creating. We compute d explicitly below.
49
+
50
+ v = g.list()
51
+ # Take each of the coefficients of g, make into a polydict,
52
+ # and then create corresponding entries of d.
53
+ B = parent.base_ring()
54
+ i = S.ngens() - 1
55
+
56
+ # We divide the computation of d into 2 cases in order to
57
+ # avoid having an if statement in the inner loop of a
58
+ # doubly-nested for loop.
59
+ d = {}
60
+ if isinstance(B, MPolynomialRing_base):
61
+ for i in range(len(v)):
62
+ for n, c in v[i].monomial_coefficients().items():
63
+ d[tuple(n) + (i,)] = c
64
+ else:
65
+ for i in range(len(v)):
66
+ for n, c in v[i].monomial_coefficients().items():
67
+ d[(n,i)] = c
68
+
69
+ self.__f = S(d)
70
+
71
+ PowerSeries.__init__(self, parent, prec, is_gen)
72
+
73
+ def __reduce__(self):
74
+ # do *not* delete old versions.
75
+ return make_powerseries_mpoly_v0, (self._parent, self.__f, self._prec, self._is_gen)
76
+
77
+ def __call__(self, *args, **kwds):
78
+ if len(kwds) == 0 and len(args) == 1:
79
+ R = self.parent()._mpoly_ring()
80
+ return self.__f.substitute({R.gen(0):args[0]})
81
+ else:
82
+ return self.__f(*args, **kwds)
83
+
84
+ def do_truncation(self):
85
+ if self._truncated:
86
+ return
87
+ S = self.parent()._mpoly_ring()
88
+ self.__f = self.__f.truncate(S.gens()[-1], self._prec)
89
+ self._truncated = 1
90
+
91
+ def _repr_(self):
92
+ if not self._truncated:
93
+ self.do_truncation()
94
+ return PowerSeries._repr_(self)
95
+
96
+ def list(self):
97
+ if self.__list is None:
98
+ self.__list = self.polynomial().list()
99
+ return self.__list
100
+
101
+ def polynomial(self):
102
+ if self._poly is None:
103
+ S = self.parent()._mpoly_ring()
104
+ self._poly = self.__f.polynomial(S.gens()[-1])
105
+ return self._poly
106
+
107
+ def _mpoly(self):
108
+ return self.__f
109
+
110
+ cpdef _mul_(self, right_r):
111
+ """
112
+ Return the product of two power series.
113
+ """
114
+ prec = self._mul_prec(right_r)
115
+ return PowerSeries_mpoly(self._parent,
116
+ self.__f * (<PowerSeries_mpoly>right_r).__f,
117
+ prec = prec,
118
+ check =True)
119
+
120
+ def __iter__(self):
121
+ """
122
+ Return an iterator over the coefficients of this power series.
123
+ """
124
+ return iter(self.__f)
125
+
126
+ def __neg__(self):
127
+ """
128
+ Return the negative of this power series.
129
+ """
130
+ return PowerSeries_mpoly(self._parent, -self.__f,
131
+ self._prec, check=False)
132
+
133
+ cpdef _add_(self, right_m):
134
+ """
135
+ EXAMPLES:
136
+ """
137
+ cdef PowerSeries_mpoly right = <PowerSeries_mpoly>right_m
138
+ return PowerSeries_mpoly(self._parent, self.__f + right.__f,
139
+ self.common_prec_c(right), check=True)
140
+
141
+ cpdef _sub_(self, right_m):
142
+ """
143
+ Return difference of two power series.
144
+
145
+ EXAMPLES:
146
+ """
147
+ cdef PowerSeries_mpoly right = <PowerSeries_mpoly>right_m
148
+ return PowerSeries_mpoly(self._parent, self.__f - right.__f,
149
+ self.common_prec_c(right), check=True)
150
+
151
+ cpdef _rmul_(self, Element c):
152
+ return PowerSeries_mpoly(self._parent, self.__f._rmul_(c),
153
+ self._prec, check=False)
154
+
155
+ cpdef _lmul_(self, Element c):
156
+ return PowerSeries_mpoly(self._parent, self.__f._lmul_(c),
157
+ self._prec, check=False)
158
+
159
+
160
+ def make_powerseries_mpoly_v0(parent, f, prec, is_gen):
161
+ return PowerSeries_mpoly(parent, f, prec, 0, is_gen)
@@ -0,0 +1,10 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ from sage.rings.power_series_ring_element cimport PowerSeries
3
+ from sage.rings.polynomial.polynomial_element cimport Polynomial
4
+ from sage.categories.action cimport Action
5
+
6
+ cdef class PowerSeries_poly(PowerSeries):
7
+ cdef Polynomial __f
8
+
9
+ cdef class BaseRingFloorDivAction(Action):
10
+ pass