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,592 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ r"""
3
+ Subschemes of affine space
4
+
5
+ AUTHORS:
6
+
7
+ - David Kohel, William Stein (2005): initial version
8
+
9
+ - Ben Hutz (2013): affine subschemes
10
+ """
11
+
12
+ # ****************************************************************************
13
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
14
+ # Copyright (C) 2013 Ben Hutz <bn4941@gmail.com>
15
+ #
16
+ # This program is free software: you can redistribute it and/or modify
17
+ # it under the terms of the GNU General Public License as published by
18
+ # the Free Software Foundation, either version 2 of the License, or
19
+ # (at your option) any later version.
20
+ # https://www.gnu.org/licenses/
21
+ # ****************************************************************************
22
+
23
+ from sage.categories.fields import Fields
24
+ from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme
25
+
26
+ from .affine_morphism import SchemeMorphism_polynomial_affine_subscheme_field
27
+
28
+
29
+ class AlgebraicScheme_subscheme_affine(AlgebraicScheme_subscheme):
30
+ r"""
31
+ An algebraic subscheme of affine space.
32
+
33
+ INPUT:
34
+
35
+ - ``A`` -- ambient affine space
36
+
37
+ - ``polynomials`` -- single polynomial, ideal or iterable of defining
38
+ polynomials
39
+
40
+ EXAMPLES::
41
+
42
+ sage: A3.<x, y, z> = AffineSpace(QQ, 3)
43
+ sage: A3.subscheme([x^2 - y*z])
44
+ Closed subscheme of Affine Space of dimension 3 over Rational Field defined by:
45
+ x^2 - y*z
46
+
47
+ TESTS::
48
+
49
+ sage: from sage.schemes.affine.affine_subscheme import AlgebraicScheme_subscheme_affine
50
+ sage: AlgebraicScheme_subscheme_affine(A3, [x^2 - y*z])
51
+ Closed subscheme of Affine Space of dimension 3 over Rational Field defined by:
52
+ x^2 - y*z
53
+ """
54
+ def __init__(self, A, polynomials, embedding_center=None,
55
+ embedding_codomain=None, embedding_images=None):
56
+ """
57
+ EXAMPLES::
58
+
59
+ sage: A.<x,y,z> = AffineSpace(QQ, 3)
60
+ sage: A.subscheme([y^2 - x*z - x*y])
61
+ Closed subscheme of Affine Space of dimension 3 over Rational Field defined by:
62
+ -x*y + y^2 - x*z
63
+ """
64
+ AlgebraicScheme_subscheme.__init__(self, A, polynomials)
65
+ if embedding_images is not None:
66
+ self._embedding_morphism = self.hom(embedding_images,
67
+ embedding_codomain)
68
+ elif A._ambient_projective_space is not None:
69
+ self._embedding_morphism = self.projective_embedding(
70
+ A._default_embedding_index, A._ambient_projective_space)
71
+ if embedding_center is not None:
72
+ self._embedding_center = self.point(embedding_center)
73
+
74
+ def _morphism(self, *args, **kwds):
75
+ r"""
76
+ A morphism between two schemes in your category, usually defined via
77
+ polynomials. Your morphism class should derive from
78
+ :class:`SchemeMorphism_polynomial`. These morphisms will usually be
79
+ elements of the Hom-set
80
+ :class:`~sage.schemes.generic.homset.SchemeHomset_generic`.
81
+
82
+ EXAMPLES::
83
+
84
+ sage: A3.<x,y,z> = AffineSpace(3, ZZ)
85
+ sage: A3._morphism(A3.Hom(A3), [x,y,z])
86
+ Scheme endomorphism of Affine Space of dimension 3 over Integer Ring
87
+ Defn: Defined on coordinates by sending (x, y, z) to
88
+ (x, y, z)
89
+ """
90
+ return self.ambient_space()._morphism(*args, **kwds)
91
+
92
+ def dimension(self):
93
+ """
94
+ Return the dimension of the affine algebraic subscheme.
95
+
96
+ EXAMPLES::
97
+
98
+ sage: # needs sage.libs.singular
99
+ sage: A.<x,y> = AffineSpace(2, QQ)
100
+ sage: A.subscheme([]).dimension()
101
+ 2
102
+ sage: A.subscheme([x]).dimension()
103
+ 1
104
+ sage: A.subscheme([x^5]).dimension()
105
+ 1
106
+ sage: A.subscheme([x^2 + y^2 - 1]).dimension()
107
+ 1
108
+ sage: A.subscheme([x*(x-1), y*(y-1)]).dimension()
109
+ 0
110
+
111
+ Something less obvious::
112
+
113
+ sage: A.<x,y,z,w> = AffineSpace(4, QQ)
114
+ sage: X = A.subscheme([x^2, x^2*y^2 + z^2, z^2 - w^2, 10*x^2 + w^2 - z^2])
115
+ sage: X
116
+ Closed subscheme of Affine Space of dimension 4 over Rational Field defined by:
117
+ x^2,
118
+ x^2*y^2 + z^2,
119
+ z^2 - w^2,
120
+ 10*x^2 - z^2 + w^2
121
+ sage: X.dimension() # needs sage.libs.singular
122
+ 1
123
+ """
124
+ try:
125
+ return self.__dimension
126
+ except AttributeError:
127
+ self.__dimension = self.defining_ideal().dimension()
128
+ return self.__dimension
129
+
130
+ def projective_embedding(self, i=None, PP=None):
131
+ """
132
+ Return a morphism from this affine scheme into an ambient projective
133
+ space of the same dimension.
134
+
135
+ The codomain of this morphism is the projective closure of this affine
136
+ scheme in ``PP``, if given, or otherwise in a new projective space that
137
+ is constructed.
138
+
139
+ INPUT:
140
+
141
+ - ``i`` -- integer (default: dimension of self = last coordinate);
142
+ determines which projective embedding to compute. The embedding is
143
+ that which has a 1 in the `i`-th coordinate, numbered from 0.
144
+
145
+ - ``PP`` -- (default: ``None``) ambient projective space, i.e., ambient
146
+ space of codomain of morphism; this is constructed if it is not given
147
+
148
+ EXAMPLES::
149
+
150
+ sage: A.<x, y, z> = AffineSpace(3, ZZ)
151
+ sage: S = A.subscheme([x*y - z])
152
+ sage: S.projective_embedding() # needs sage.libs.singular
153
+ Scheme morphism:
154
+ From: Closed subscheme of Affine Space of dimension 3 over Integer Ring
155
+ defined by: x*y - z
156
+ To: Closed subscheme of Projective Space of dimension 3 over Integer Ring
157
+ defined by: x0*x1 - x2*x3
158
+ Defn: Defined on coordinates by sending (x, y, z) to (x : y : z : 1)
159
+
160
+ ::
161
+
162
+ sage: A.<x, y, z> = AffineSpace(3, ZZ)
163
+ sage: P = ProjectiveSpace(3, ZZ, 'u')
164
+ sage: S = A.subscheme([x^2 - y*z])
165
+ sage: S.projective_embedding(1, P) # needs sage.libs.singular
166
+ Scheme morphism:
167
+ From: Closed subscheme of Affine Space of dimension 3 over Integer Ring
168
+ defined by: x^2 - y*z
169
+ To: Closed subscheme of Projective Space of dimension 3 over Integer Ring
170
+ defined by: u0^2 - u2*u3
171
+ Defn: Defined on coordinates by sending (x, y, z) to (x : 1 : y : z)
172
+
173
+ ::
174
+
175
+ sage: A.<x,y,z> = AffineSpace(QQ, 3)
176
+ sage: X = A.subscheme([y - x^2, z - x^3])
177
+ sage: X.projective_embedding() # needs sage.libs.singular
178
+ Scheme morphism:
179
+ From: Closed subscheme of Affine Space of dimension 3 over Rational Field
180
+ defined by: -x^2 + y, -x^3 + z
181
+ To: Closed subscheme of Projective Space of dimension 3 over Rational Field
182
+ defined by: x0^2 - x1*x3, x0*x1 - x2*x3, x1^2 - x0*x2
183
+ Defn: Defined on coordinates by sending (x, y, z) to (x : y : z : 1)
184
+
185
+ When taking a closed subscheme of an affine space with a
186
+ projective embedding, the subscheme inherits the embedding::
187
+
188
+ sage: A.<u,v> = AffineSpace(2, QQ, default_embedding_index=1)
189
+ sage: X = A.subscheme(u - v) # needs sage.libs.singular
190
+ sage: X.projective_embedding() # needs sage.libs.singular
191
+ Scheme morphism:
192
+ From: Closed subscheme of Affine Space of dimension 2 over Rational Field
193
+ defined by: u - v
194
+ To: Closed subscheme of Projective Space of dimension 2 over Rational Field
195
+ defined by: x0 - x2
196
+ Defn: Defined on coordinates by sending (u, v) to (u : 1 : v)
197
+ sage: phi = X.projective_embedding() # needs sage.libs.singular
198
+ sage: psi = A.projective_embedding()
199
+ sage: phi(X(2, 2)) == psi(A(X(2, 2))) # needs sage.libs.singular
200
+ True
201
+ """
202
+ AA = self.ambient_space()
203
+ n = AA.dimension_relative()
204
+ if i is None:
205
+ try:
206
+ return self._embedding_morphism
207
+ except AttributeError:
208
+ i = n
209
+ i = int(i)
210
+ if i < 0 or i > n:
211
+ raise ValueError("Argument i (=%s) must be between 0 and %s, inclusive" % (i, n))
212
+ try:
213
+ phi = self.__projective_embedding[i]
214
+ # assume that if you've passed in a new ambient projective space
215
+ # you want to override the existing embedding
216
+ if PP is None or phi.codomain().ambient_space() == PP:
217
+ return phi
218
+ except AttributeError:
219
+ self.__projective_embedding = {}
220
+ except KeyError:
221
+ pass
222
+ if PP is None:
223
+ PP = AA.projective_embedding(i).codomain()
224
+ elif PP.dimension_relative() != n:
225
+ raise ValueError("Projective Space must be of dimension %s" % (n))
226
+ PR = PP.coordinate_ring()
227
+ # Groebner basis w.r.t. a graded monomial order computed here to ensure
228
+ # after homogenization, the basis elements will generate the defining
229
+ # ideal of the projective closure of this affine subscheme
230
+ R = AA.coordinate_ring()
231
+ G = self.defining_ideal().groebner_basis()
232
+ v = list(PP.gens())
233
+ z = v.pop(i)
234
+ phi = R.hom(v, PR)
235
+ v.append(z)
236
+ X = PP.subscheme([phi(f).homogenize(i) for f in G])
237
+ v = list(R.gens())
238
+ v.insert(i, R(1))
239
+ phi = self.hom(v, X)
240
+ self.__projective_embedding[i] = phi
241
+ return phi
242
+
243
+ def projective_closure(self, i=None, PP=None):
244
+ r"""
245
+ Return the projective closure of this affine subscheme.
246
+
247
+ INPUT:
248
+
249
+ - ``i`` -- (default: ``None``) determines the embedding to use to
250
+ compute the projective closure of this affine subscheme. The
251
+ embedding used is the one which has a 1 in the i-th coordinate,
252
+ numbered from 0.
253
+
254
+ - ``PP`` -- (default: ``None``) ambient projective space, i.e., ambient
255
+ space of codomain of morphism; this is constructed if it is not given
256
+
257
+ OUTPUT: a projective subscheme
258
+
259
+ EXAMPLES::
260
+
261
+ sage: A.<x,y,z,w> = AffineSpace(QQ, 4)
262
+ sage: X = A.subscheme([x^2 - y, x*y - z, y^2 - w,
263
+ ....: x*z - w, y*z - x*w, z^2 - y*w])
264
+ sage: X.projective_closure() # needs sage.libs.singular
265
+ Closed subscheme of Projective Space of dimension 4 over Rational Field
266
+ defined by:
267
+ x0^2 - x1*x4,
268
+ x0*x1 - x2*x4,
269
+ x1^2 - x3*x4,
270
+ x0*x2 - x3*x4,
271
+ x1*x2 - x0*x3,
272
+ x2^2 - x1*x3
273
+
274
+ ::
275
+
276
+ sage: A.<x,y,z> = AffineSpace(QQ, 3)
277
+ sage: P.<a,b,c,d> = ProjectiveSpace(QQ, 3)
278
+ sage: X = A.subscheme([z - x^2 - y^2])
279
+ sage: X.projective_closure(1, P).ambient_space() == P # needs sage.libs.singular
280
+ True
281
+ """
282
+ return self.projective_embedding(i, PP).codomain()
283
+
284
+ def is_smooth(self, point=None):
285
+ r"""
286
+ Test whether the algebraic subscheme is smooth.
287
+
288
+ INPUT:
289
+
290
+ - ``point`` -- a point or ``None`` (default). The point to
291
+ test smoothness at
292
+
293
+ OUTPUT:
294
+
295
+ boolean; if no point was specified, returns whether the
296
+ algebraic subscheme is smooth everywhere. Otherwise,
297
+ smoothness at the specified point is tested.
298
+
299
+ EXAMPLES::
300
+
301
+ sage: A2.<x,y> = AffineSpace(2, QQ)
302
+ sage: cuspidal_curve = A2.subscheme([y^2 - x^3])
303
+ sage: cuspidal_curve
304
+ Closed subscheme of Affine Space of dimension 2 over Rational Field defined by:
305
+ -x^3 + y^2
306
+ sage: smooth_point = cuspidal_curve.point([1,1])
307
+ sage: smooth_point in cuspidal_curve
308
+ True
309
+ sage: singular_point = cuspidal_curve.point([0,0])
310
+ sage: singular_point in cuspidal_curve
311
+ True
312
+ sage: cuspidal_curve.is_smooth(smooth_point) # needs sage.libs.singular
313
+ True
314
+ sage: cuspidal_curve.is_smooth(singular_point) # needs sage.libs.singular
315
+ False
316
+ sage: cuspidal_curve.is_smooth() # needs sage.libs.singular
317
+ False
318
+ """
319
+ R = self.ambient_space().coordinate_ring()
320
+ if point is not None:
321
+ self._check_satisfies_equations(point)
322
+ point_subs = dict(zip(R.gens(), point))
323
+ Jac = self.Jacobian().subs(point_subs)
324
+ return not Jac.is_zero()
325
+
326
+ # testing smoothness everywhere tends to be expensive
327
+ try:
328
+ return self._smooth
329
+ except AttributeError:
330
+ pass
331
+ sing_dim = self.Jacobian().dimension()
332
+ self._smooth = (sing_dim == -1)
333
+ return self._smooth
334
+
335
+ def intersection_multiplicity(self, X, P):
336
+ r"""
337
+ Return the intersection multiplicity of this subscheme and the subscheme ``X`` at the point ``P``.
338
+
339
+ The intersection of this subscheme with ``X`` must be proper, that is `\mathrm{codim}(self\cap
340
+ X) = \mathrm{codim}(self) + \mathrm{codim}(X)`, and must also be finite. We use Serre's Tor
341
+ formula to compute the intersection multiplicity. If `I`, `J` are the defining ideals of ``self``, ``X``,
342
+ respectively, then this is `\sum_{i=0}^{\infty}(-1)^i\mathrm{length}(\mathrm{Tor}_{\mathcal{O}_{A,p}}^{i}
343
+ (\mathcal{O}_{A,p}/I,\mathcal{O}_{A,p}/J))` where `A` is the affine ambient space of these subschemes.
344
+
345
+ INPUT:
346
+
347
+ - ``X`` -- subscheme in the same ambient space as this subscheme
348
+
349
+ - ``P`` -- a point in the intersection of this subscheme with ``X``
350
+
351
+ OUTPUT: integer
352
+
353
+ EXAMPLES::
354
+
355
+ sage: # needs sage.schemes
356
+ sage: A.<x,y> = AffineSpace(QQ, 2)
357
+ sage: C = Curve([y^2 - x^3 - x^2], A) # needs sage.libs.singular
358
+ sage: D = Curve([y^2 + x^3], A) # needs sage.libs.singular
359
+ sage: Q = A([0,0])
360
+ sage: C.intersection_multiplicity(D, Q) # needs sage.libs.singular
361
+ 4
362
+
363
+ ::
364
+
365
+ sage: # needs sage.rings.number_field
366
+ sage: R.<a> = QQ[]
367
+ sage: K.<b> = NumberField(a^6 - 3*a^5 + 5*a^4 - 5*a^3 + 5*a^2 - 3*a + 1)
368
+ sage: A.<x,y,z,w> = AffineSpace(K, 4)
369
+ sage: X = A.subscheme([x*y, y*z + 7, w^3 - x^3])
370
+ sage: Y = A.subscheme([x - z^3 + z + 1])
371
+ sage: Q = A([0,
372
+ ....: -7*b^5 + 21*b^4 - 28*b^3 + 21*b^2 - 21*b + 14,
373
+ ....: -b^5 + 2*b^4 - 3*b^3 + 2*b^2 - 2*b,
374
+ ....: 0])
375
+ sage: X.intersection_multiplicity(Y, Q) # needs sage.libs.singular
376
+ 3
377
+
378
+ ::
379
+
380
+ sage: A.<x,y,z> = AffineSpace(QQ, 3)
381
+ sage: X = A.subscheme([z^2 - 1])
382
+ sage: Y = A.subscheme([z - 1, y - x^2])
383
+ sage: Q = A([1,1,1])
384
+ sage: X.intersection_multiplicity(Y, Q) # needs sage.libs.singular
385
+ Traceback (most recent call last):
386
+ ...
387
+ TypeError: the intersection of this subscheme and (=Closed subscheme of Affine Space of dimension 3
388
+ over Rational Field defined by: z - 1, -x^2 + y) must be proper and finite
389
+
390
+ ::
391
+
392
+ sage: A.<x,y,z,w,t> = AffineSpace(QQ, 5)
393
+ sage: X = A.subscheme([x*y, t^2*w, w^3*z])
394
+ sage: Y = A.subscheme([y*w + z])
395
+ sage: Q = A([0,0,0,0,0])
396
+ sage: X.intersection_multiplicity(Y, Q) # needs sage.libs.singular
397
+ Traceback (most recent call last):
398
+ ...
399
+ TypeError: the intersection of this subscheme and (=Closed subscheme of Affine Space of dimension 5
400
+ over Rational Field defined by: y*w + z) must be proper and finite
401
+ """
402
+ AA = self.ambient_space()
403
+ if AA != X.ambient_space():
404
+ raise TypeError("this subscheme and (=%s) must be defined in the same ambient space" % X)
405
+ W = self.intersection(X)
406
+ try:
407
+ W._check_satisfies_equations(P)
408
+ except TypeError:
409
+ raise TypeError("(=%s) must be a point in the intersection of this subscheme and (=%s)" % (P, X))
410
+ if AA.dimension() != self.dimension() + X.dimension() or W.dimension() != 0:
411
+ raise TypeError("the intersection of this subscheme and (=%s) must be proper and finite" % X)
412
+ I = self.defining_ideal()
413
+ J = X.defining_ideal()
414
+ # move P to the origin and localize
415
+ chng_coords = [AA.gens()[i] + P[i] for i in range(AA.dimension_relative())]
416
+ R = AA.coordinate_ring().change_ring(order='negdegrevlex')
417
+ Iloc = R.ideal([f(chng_coords) for f in I.gens()])
418
+ Jloc = R.ideal([f(chng_coords) for f in J.gens()])
419
+ # compute the intersection multiplicity with Serre's Tor formula using Singular
420
+ from sage.interfaces.singular import singular
421
+ singular.lib("homolog.lib")
422
+ i = 0
423
+ s = 0
424
+ t = sum(singular.Tor(i, Iloc, Jloc).std().hilb(2).sage())
425
+ while t != 0:
426
+ s += (-1)**i * t
427
+ i += 1
428
+ t = sum(singular.Tor(i, Iloc, Jloc).std().hilb(2).sage())
429
+ return s
430
+
431
+ def multiplicity(self, P):
432
+ r"""
433
+ Return the multiplicity of ``P`` on this subscheme.
434
+
435
+ This is computed as the multiplicity of the local ring of this subscheme corresponding to ``P``. This
436
+ subscheme must be defined over a field. An error is raised if ``P`` is not a point on this subscheme.
437
+
438
+ INPUT:
439
+
440
+ - ``P`` -- a point on this subscheme
441
+
442
+ OUTPUT: integer
443
+
444
+ EXAMPLES::
445
+
446
+ sage: A.<x,y,z,w> = AffineSpace(QQ, 4)
447
+ sage: X = A.subscheme([z*y - x^7, w - 2*z])
448
+ sage: Q1 = A([1,1/3,3,6])
449
+ sage: X.multiplicity(Q1) # needs sage.libs.singular
450
+ 1
451
+ sage: Q2 = A([0,0,0,0])
452
+ sage: X.multiplicity(Q2) # needs sage.libs.singular
453
+ 2
454
+
455
+ ::
456
+
457
+ sage: A.<x,y,z,w,v> = AffineSpace(GF(23), 5)
458
+ sage: C = A.curve([x^8 - y, y^7 - z, z^3 - 1, w^5 - v^3]) # needs sage.libs.singular sage.schemes
459
+ sage: Q = A([22,1,1,0,0])
460
+ sage: C.multiplicity(Q) # needs sage.libs.singular sage.schemes
461
+ 3
462
+
463
+ ::
464
+
465
+ sage: # needs sage.rings.number_field
466
+ sage: K.<a> = QuadraticField(-1)
467
+ sage: A.<x,y,z,w,t> = AffineSpace(K, 5)
468
+ sage: X = A.subscheme([y^7 - x^2*z^5 + z^3*t^8 - x^2*y^4*z - t^8])
469
+ sage: Q1 = A([1,1,0,1,-1])
470
+ sage: X.multiplicity(Q1) # needs sage.libs.singular
471
+ 1
472
+ sage: Q2 = A([0,0,0,-a,0])
473
+ sage: X.multiplicity(Q2) # needs sage.libs.singular
474
+ 7
475
+
476
+ Check that :issue:`27479` is fixed::
477
+
478
+ sage: A1.<x> = AffineSpace(QQ, 1)
479
+ sage: X = A1.subscheme([x^1789 + x])
480
+ sage: Q = X([0])
481
+ sage: X.multiplicity(Q) # needs sage.libs.singular
482
+ 1
483
+ """
484
+ if self.base_ring() not in Fields():
485
+ raise TypeError("subscheme must be defined over a field")
486
+
487
+ # check whether P is a point on this subscheme
488
+ try:
489
+ P = self(P)
490
+ except TypeError:
491
+ raise TypeError("(=%s) is not a point on (=%s)" % (P, self))
492
+
493
+ from sage.interfaces.singular import singular
494
+
495
+ # Apply a linear change of coordinates to self so that P is sent to the origin
496
+ # and then compute the multiplicity of the local ring of the translated subscheme
497
+ # corresponding to the point (0,...,0)
498
+ AA = self.ambient_space()
499
+ chng_coords = [AA.gens()[i] + P[i] for i in range(AA.dimension_relative())]
500
+ R = AA.coordinate_ring().change_ring(order='negdegrevlex')
501
+ I = R.ideal([f(chng_coords) for f in self.defining_polynomials()])
502
+ return singular.mult(singular.std(I)).sage()
503
+
504
+
505
+ class AlgebraicScheme_subscheme_affine_field(AlgebraicScheme_subscheme_affine):
506
+ """
507
+ Algebraic subschemes of projective spaces defined over fields.
508
+ """
509
+ def _morphism(self, *args, **kwds):
510
+ r"""
511
+ Construct a morphism determined by action on points of ``self``.
512
+
513
+ TESTS::
514
+
515
+ sage: # needs sage.libs.singular
516
+ sage: A2.<x,y> = AffineSpace(QQ, 2)
517
+ sage: X = A2.subscheme(x - y)
518
+ sage: H = X.Hom(A2)
519
+ sage: H([x, x/y])
520
+ Scheme morphism:
521
+ From: Closed subscheme of Affine Space of dimension 2 over Rational Field
522
+ defined by: x - y
523
+ To: Affine Space of dimension 2 over Rational Field
524
+ Defn: Defined on coordinates by sending (x, y) to (x, x/y)
525
+ sage: P2 = ProjectiveSpace(QQ, 2)
526
+ sage: H = X.Hom(P2)
527
+ sage: H([x*y, x, y])
528
+ Scheme morphism:
529
+ From: Closed subscheme of Affine Space of dimension 2 over Rational Field
530
+ defined by: x - y
531
+ To: Projective Space of dimension 2 over Rational Field
532
+ Defn: Defined on coordinates by sending (x, y) to (x*y : x : y)
533
+ """
534
+ return SchemeMorphism_polynomial_affine_subscheme_field(*args, **kwds)
535
+
536
+ def tangent_space(self, p):
537
+ """
538
+ Return the tangent space at the point ``p``.
539
+
540
+ The points of the tangent space are the tangent vectors at ``p``.
541
+
542
+ INPUT:
543
+
544
+ - ``p`` -- a rational point
545
+
546
+ EXAMPLES::
547
+
548
+ sage: A3.<x,y,z> = AffineSpace(3, QQ)
549
+ sage: X = A3.subscheme(z - x*y)
550
+ sage: X.tangent_space(A3.origin()) # needs sage.libs.singular
551
+ Closed subscheme of Affine Space of dimension 3 over Rational Field
552
+ defined by:
553
+ z
554
+ sage: X.tangent_space(X(1,1,1)) # needs sage.libs.singular
555
+ Closed subscheme of Affine Space of dimension 3 over Rational Field
556
+ defined by:
557
+ -x - y + z
558
+
559
+ Tangent space at a point may have higher dimension than the dimension
560
+ of the point. ::
561
+
562
+ sage: # needs sage.libs.singular sage.schemes
563
+ sage: C = Curve([x + y + z, x^2 - y^2*z^2 + z^3])
564
+ sage: C.singular_points()
565
+ [(0, 0, 0)]
566
+ sage: p = C(0,0,0)
567
+ sage: C.tangent_space(p)
568
+ Closed subscheme of Affine Space of dimension 3 over Rational Field
569
+ defined by:
570
+ x + y + z
571
+ sage: _.dimension()
572
+ 2
573
+ sage: q = C(1,0,-1)
574
+ sage: C.tangent_space(q)
575
+ Closed subscheme of Affine Space of dimension 3 over Rational Field
576
+ defined by:
577
+ x + y + z,
578
+ 2*x + 3*z
579
+ sage: _.dimension()
580
+ 1
581
+ """
582
+ from sage.modules.free_module_element import vector
583
+
584
+ A = self.ambient_space()
585
+ R = A.coordinate_ring()
586
+ gens = R.gens()
587
+
588
+ J = self.Jacobian_matrix()
589
+ Jp = J.apply_map(lambda f: f.subs(dict(zip(gens, p))))
590
+ I = [f for f in Jp * vector(gens) if f]
591
+
592
+ return A.subscheme(R.ideal(I))
@@ -0,0 +1,25 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ """nodoctest
3
+ all.py -- export of affine to Sage
4
+ """
5
+
6
+ # *****************************************************************************
7
+ #
8
+ # Sage: Open Source Mathematical Software
9
+ #
10
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
11
+ #
12
+ # Distributed under the terms of the GNU General Public License (GPL)
13
+ #
14
+ # This code is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # General Public License for more details.
18
+ #
19
+ # The full text of the GPL is available at:
20
+ #
21
+ # https://www.gnu.org/licenses/
22
+ # *****************************************************************************
23
+
24
+ from sage.schemes.affine.affine_space import AffineSpace
25
+ from sage.schemes.affine.affine_rational_point import enum_affine_rational_field, enum_affine_finite_field
@@ -0,0 +1,5 @@
1
+ # sage_setup: distribution = sagemath-categories
2
+ from sage.schemes.generic.all import *
3
+ from sage.schemes.affine.all import *
4
+ from sage.schemes.projective.all import *
5
+ from sage.schemes.product_projective.all import *