passagemath-schemes 10.6.40__cp314-cp314-macosx_13_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-schemes might be problematic. Click here for more details.

Files changed (314) hide show
  1. passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
  2. passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
  3. passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
  4. passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
  5. passagemath_schemes/__init__.py +3 -0
  6. passagemath_schemes-10.6.40.dist-info/METADATA +204 -0
  7. passagemath_schemes-10.6.40.dist-info/METADATA.bak +205 -0
  8. passagemath_schemes-10.6.40.dist-info/RECORD +314 -0
  9. passagemath_schemes-10.6.40.dist-info/WHEEL +6 -0
  10. passagemath_schemes-10.6.40.dist-info/top_level.txt +3 -0
  11. sage/all__sagemath_schemes.py +23 -0
  12. sage/databases/all__sagemath_schemes.py +7 -0
  13. sage/databases/cremona.py +1723 -0
  14. sage/dynamics/all__sagemath_schemes.py +2 -0
  15. sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
  16. sage/dynamics/arithmetic_dynamics/all.py +14 -0
  17. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
  18. sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
  19. sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
  20. sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
  21. sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
  22. sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
  23. sage/dynamics/arithmetic_dynamics/projective_ds.py +9558 -0
  24. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314-darwin.so +0 -0
  25. sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
  26. sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
  27. sage/lfunctions/all.py +18 -0
  28. sage/lfunctions/dokchitser.py +745 -0
  29. sage/lfunctions/pari.py +818 -0
  30. sage/lfunctions/zero_sums.cpython-314-darwin.so +0 -0
  31. sage/lfunctions/zero_sums.pyx +1847 -0
  32. sage/modular/abvar/abvar.py +5135 -0
  33. sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
  34. sage/modular/abvar/abvar_newform.py +244 -0
  35. sage/modular/abvar/all.py +8 -0
  36. sage/modular/abvar/constructor.py +186 -0
  37. sage/modular/abvar/cuspidal_subgroup.py +371 -0
  38. sage/modular/abvar/finite_subgroup.py +896 -0
  39. sage/modular/abvar/homology.py +720 -0
  40. sage/modular/abvar/homspace.py +998 -0
  41. sage/modular/abvar/lseries.py +415 -0
  42. sage/modular/abvar/morphism.py +935 -0
  43. sage/modular/abvar/torsion_point.py +274 -0
  44. sage/modular/abvar/torsion_subgroup.py +740 -0
  45. sage/modular/all.py +43 -0
  46. sage/modular/arithgroup/all.py +20 -0
  47. sage/modular/arithgroup/arithgroup_element.cpython-314-darwin.so +0 -0
  48. sage/modular/arithgroup/arithgroup_element.pyx +474 -0
  49. sage/modular/arithgroup/arithgroup_generic.py +1402 -0
  50. sage/modular/arithgroup/arithgroup_perm.py +2692 -0
  51. sage/modular/arithgroup/congroup.cpython-314-darwin.so +0 -0
  52. sage/modular/arithgroup/congroup.pyx +334 -0
  53. sage/modular/arithgroup/congroup_gamma.py +363 -0
  54. sage/modular/arithgroup/congroup_gamma0.py +692 -0
  55. sage/modular/arithgroup/congroup_gamma1.py +653 -0
  56. sage/modular/arithgroup/congroup_gammaH.py +1469 -0
  57. sage/modular/arithgroup/congroup_generic.py +628 -0
  58. sage/modular/arithgroup/congroup_sl2z.py +267 -0
  59. sage/modular/arithgroup/farey_symbol.cpython-314-darwin.so +0 -0
  60. sage/modular/arithgroup/farey_symbol.pyx +1066 -0
  61. sage/modular/arithgroup/tests.py +418 -0
  62. sage/modular/btquotients/all.py +4 -0
  63. sage/modular/btquotients/btquotient.py +3753 -0
  64. sage/modular/btquotients/pautomorphicform.py +2570 -0
  65. sage/modular/buzzard.py +100 -0
  66. sage/modular/congroup.py +29 -0
  67. sage/modular/congroup_element.py +13 -0
  68. sage/modular/cusps.py +1109 -0
  69. sage/modular/cusps_nf.py +1270 -0
  70. sage/modular/dims.py +569 -0
  71. sage/modular/dirichlet.py +3310 -0
  72. sage/modular/drinfeld_modform/all.py +2 -0
  73. sage/modular/drinfeld_modform/element.py +446 -0
  74. sage/modular/drinfeld_modform/ring.py +773 -0
  75. sage/modular/drinfeld_modform/tutorial.py +236 -0
  76. sage/modular/etaproducts.py +1065 -0
  77. sage/modular/hecke/algebra.py +746 -0
  78. sage/modular/hecke/all.py +20 -0
  79. sage/modular/hecke/ambient_module.py +1019 -0
  80. sage/modular/hecke/degenmap.py +119 -0
  81. sage/modular/hecke/element.py +325 -0
  82. sage/modular/hecke/hecke_operator.py +780 -0
  83. sage/modular/hecke/homspace.py +206 -0
  84. sage/modular/hecke/module.py +1767 -0
  85. sage/modular/hecke/morphism.py +174 -0
  86. sage/modular/hecke/submodule.py +989 -0
  87. sage/modular/hypergeometric_misc.cpython-314-darwin.so +0 -0
  88. sage/modular/hypergeometric_misc.pxd +4 -0
  89. sage/modular/hypergeometric_misc.pyx +166 -0
  90. sage/modular/hypergeometric_motive.py +2017 -0
  91. sage/modular/local_comp/all.py +2 -0
  92. sage/modular/local_comp/liftings.py +292 -0
  93. sage/modular/local_comp/local_comp.py +1071 -0
  94. sage/modular/local_comp/smoothchar.py +1825 -0
  95. sage/modular/local_comp/type_space.py +748 -0
  96. sage/modular/modform/all.py +30 -0
  97. sage/modular/modform/ambient.py +815 -0
  98. sage/modular/modform/ambient_R.py +177 -0
  99. sage/modular/modform/ambient_eps.py +306 -0
  100. sage/modular/modform/ambient_g0.py +124 -0
  101. sage/modular/modform/ambient_g1.py +204 -0
  102. sage/modular/modform/constructor.py +545 -0
  103. sage/modular/modform/cuspidal_submodule.py +708 -0
  104. sage/modular/modform/defaults.py +14 -0
  105. sage/modular/modform/eis_series.py +505 -0
  106. sage/modular/modform/eisenstein_submodule.py +663 -0
  107. sage/modular/modform/element.py +4131 -0
  108. sage/modular/modform/find_generators.py +59 -0
  109. sage/modular/modform/half_integral.py +154 -0
  110. sage/modular/modform/hecke_operator_on_qexp.py +247 -0
  111. sage/modular/modform/j_invariant.py +47 -0
  112. sage/modular/modform/l_series_gross_zagier.py +133 -0
  113. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314-darwin.so +0 -0
  114. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
  115. sage/modular/modform/notes.py +45 -0
  116. sage/modular/modform/numerical.py +514 -0
  117. sage/modular/modform/periods.py +14 -0
  118. sage/modular/modform/ring.py +1257 -0
  119. sage/modular/modform/space.py +1860 -0
  120. sage/modular/modform/submodule.py +118 -0
  121. sage/modular/modform/tests.py +64 -0
  122. sage/modular/modform/theta.py +110 -0
  123. sage/modular/modform/vm_basis.py +381 -0
  124. sage/modular/modform/weight1.py +220 -0
  125. sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
  126. sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
  127. sage/modular/modform_hecketriangle/all.py +30 -0
  128. sage/modular/modform_hecketriangle/analytic_type.py +590 -0
  129. sage/modular/modform_hecketriangle/constructor.py +416 -0
  130. sage/modular/modform_hecketriangle/element.py +351 -0
  131. sage/modular/modform_hecketriangle/functors.py +752 -0
  132. sage/modular/modform_hecketriangle/graded_ring.py +541 -0
  133. sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
  134. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
  135. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
  136. sage/modular/modform_hecketriangle/readme.py +1214 -0
  137. sage/modular/modform_hecketriangle/series_constructor.py +580 -0
  138. sage/modular/modform_hecketriangle/space.py +1037 -0
  139. sage/modular/modform_hecketriangle/subspace.py +423 -0
  140. sage/modular/modsym/all.py +17 -0
  141. sage/modular/modsym/ambient.py +3846 -0
  142. sage/modular/modsym/boundary.py +1420 -0
  143. sage/modular/modsym/element.py +336 -0
  144. sage/modular/modsym/g1list.py +178 -0
  145. sage/modular/modsym/ghlist.py +182 -0
  146. sage/modular/modsym/hecke_operator.py +73 -0
  147. sage/modular/modsym/manin_symbol.cpython-314-darwin.so +0 -0
  148. sage/modular/modsym/manin_symbol.pxd +5 -0
  149. sage/modular/modsym/manin_symbol.pyx +497 -0
  150. sage/modular/modsym/manin_symbol_list.py +1295 -0
  151. sage/modular/modsym/modsym.py +400 -0
  152. sage/modular/modsym/modular_symbols.py +384 -0
  153. sage/modular/modsym/p1list.cpython-314-darwin.so +0 -0
  154. sage/modular/modsym/p1list.pxd +29 -0
  155. sage/modular/modsym/p1list.pyx +1372 -0
  156. sage/modular/modsym/p1list_nf.py +1241 -0
  157. sage/modular/modsym/relation_matrix.py +591 -0
  158. sage/modular/modsym/relation_matrix_pyx.cpython-314-darwin.so +0 -0
  159. sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
  160. sage/modular/modsym/space.py +2468 -0
  161. sage/modular/modsym/subspace.py +455 -0
  162. sage/modular/modsym/tests.py +375 -0
  163. sage/modular/multiple_zeta.py +2632 -0
  164. sage/modular/multiple_zeta_F_algebra.py +786 -0
  165. sage/modular/overconvergent/all.py +6 -0
  166. sage/modular/overconvergent/genus0.py +1878 -0
  167. sage/modular/overconvergent/hecke_series.py +1187 -0
  168. sage/modular/overconvergent/weightspace.py +778 -0
  169. sage/modular/pollack_stevens/all.py +4 -0
  170. sage/modular/pollack_stevens/distributions.py +874 -0
  171. sage/modular/pollack_stevens/fund_domain.py +1572 -0
  172. sage/modular/pollack_stevens/manin_map.py +859 -0
  173. sage/modular/pollack_stevens/modsym.py +1593 -0
  174. sage/modular/pollack_stevens/padic_lseries.py +417 -0
  175. sage/modular/pollack_stevens/sigma0.py +534 -0
  176. sage/modular/pollack_stevens/space.py +1076 -0
  177. sage/modular/quasimodform/all.py +3 -0
  178. sage/modular/quasimodform/element.py +845 -0
  179. sage/modular/quasimodform/ring.py +828 -0
  180. sage/modular/quatalg/all.py +3 -0
  181. sage/modular/quatalg/brandt.py +1642 -0
  182. sage/modular/ssmod/all.py +8 -0
  183. sage/modular/ssmod/ssmod.py +827 -0
  184. sage/rings/all__sagemath_schemes.py +1 -0
  185. sage/rings/polynomial/all__sagemath_schemes.py +1 -0
  186. sage/rings/polynomial/binary_form_reduce.py +585 -0
  187. sage/schemes/all.py +41 -0
  188. sage/schemes/berkovich/all.py +6 -0
  189. sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
  190. sage/schemes/berkovich/berkovich_space.py +748 -0
  191. sage/schemes/curves/affine_curve.py +2928 -0
  192. sage/schemes/curves/all.py +33 -0
  193. sage/schemes/curves/closed_point.py +434 -0
  194. sage/schemes/curves/constructor.py +381 -0
  195. sage/schemes/curves/curve.py +542 -0
  196. sage/schemes/curves/plane_curve_arrangement.py +1283 -0
  197. sage/schemes/curves/point.py +463 -0
  198. sage/schemes/curves/projective_curve.py +3026 -0
  199. sage/schemes/curves/zariski_vankampen.py +1932 -0
  200. sage/schemes/cyclic_covers/all.py +2 -0
  201. sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
  202. sage/schemes/cyclic_covers/constructor.py +137 -0
  203. sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
  204. sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
  205. sage/schemes/elliptic_curves/BSD.py +1036 -0
  206. sage/schemes/elliptic_curves/Qcurves.py +592 -0
  207. sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
  208. sage/schemes/elliptic_curves/all.py +49 -0
  209. sage/schemes/elliptic_curves/cardinality.py +609 -0
  210. sage/schemes/elliptic_curves/cm.py +1102 -0
  211. sage/schemes/elliptic_curves/constructor.py +1552 -0
  212. sage/schemes/elliptic_curves/ec_database.py +175 -0
  213. sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
  214. sage/schemes/elliptic_curves/ell_egros.py +459 -0
  215. sage/schemes/elliptic_curves/ell_field.py +2836 -0
  216. sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
  217. sage/schemes/elliptic_curves/ell_generic.py +3760 -0
  218. sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
  219. sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
  220. sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
  221. sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
  222. sage/schemes/elliptic_curves/ell_point.py +4787 -0
  223. sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
  224. sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
  225. sage/schemes/elliptic_curves/ell_torsion.py +436 -0
  226. sage/schemes/elliptic_curves/ell_wp.py +352 -0
  227. sage/schemes/elliptic_curves/formal_group.py +760 -0
  228. sage/schemes/elliptic_curves/gal_reps.py +1459 -0
  229. sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
  230. sage/schemes/elliptic_curves/gp_simon.py +152 -0
  231. sage/schemes/elliptic_curves/heegner.py +7335 -0
  232. sage/schemes/elliptic_curves/height.py +2109 -0
  233. sage/schemes/elliptic_curves/hom.py +1406 -0
  234. sage/schemes/elliptic_curves/hom_composite.py +934 -0
  235. sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
  236. sage/schemes/elliptic_curves/hom_scalar.py +531 -0
  237. sage/schemes/elliptic_curves/hom_sum.py +682 -0
  238. sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
  239. sage/schemes/elliptic_curves/homset.py +271 -0
  240. sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
  241. sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
  242. sage/schemes/elliptic_curves/jacobian.py +237 -0
  243. sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
  244. sage/schemes/elliptic_curves/kraus.py +1014 -0
  245. sage/schemes/elliptic_curves/lseries_ell.py +943 -0
  246. sage/schemes/elliptic_curves/mod5family.py +105 -0
  247. sage/schemes/elliptic_curves/mod_poly.py +197 -0
  248. sage/schemes/elliptic_curves/mod_sym_num.cpython-314-darwin.so +0 -0
  249. sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
  250. sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
  251. sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
  252. sage/schemes/elliptic_curves/padics.py +1816 -0
  253. sage/schemes/elliptic_curves/period_lattice.py +2234 -0
  254. sage/schemes/elliptic_curves/period_lattice_region.cpython-314-darwin.so +0 -0
  255. sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
  256. sage/schemes/elliptic_curves/saturation.py +715 -0
  257. sage/schemes/elliptic_curves/sha_tate.py +1158 -0
  258. sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
  259. sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
  260. sage/schemes/hyperelliptic_curves/all.py +6 -0
  261. sage/schemes/hyperelliptic_curves/constructor.py +291 -0
  262. sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
  263. sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
  264. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
  265. sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
  266. sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
  267. sage/schemes/hyperelliptic_curves/invariants.py +410 -0
  268. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
  269. sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
  270. sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
  271. sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
  272. sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
  273. sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
  274. sage/schemes/hyperelliptic_curves/mestre.py +302 -0
  275. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
  276. sage/schemes/jacobians/abstract_jacobian.py +277 -0
  277. sage/schemes/jacobians/all.py +2 -0
  278. sage/schemes/overview.py +161 -0
  279. sage/schemes/plane_conics/all.py +22 -0
  280. sage/schemes/plane_conics/con_field.py +1296 -0
  281. sage/schemes/plane_conics/con_finite_field.py +158 -0
  282. sage/schemes/plane_conics/con_number_field.py +456 -0
  283. sage/schemes/plane_conics/con_rational_field.py +406 -0
  284. sage/schemes/plane_conics/con_rational_function_field.py +580 -0
  285. sage/schemes/plane_conics/constructor.py +249 -0
  286. sage/schemes/plane_quartics/all.py +2 -0
  287. sage/schemes/plane_quartics/quartic_constructor.py +71 -0
  288. sage/schemes/plane_quartics/quartic_generic.py +73 -0
  289. sage/schemes/riemann_surfaces/all.py +1 -0
  290. sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
  291. sage_wheels/share/cremona/cremona_mini.db +0 -0
  292. sage_wheels/share/ellcurves/rank0 +30427 -0
  293. sage_wheels/share/ellcurves/rank1 +31871 -0
  294. sage_wheels/share/ellcurves/rank10 +6 -0
  295. sage_wheels/share/ellcurves/rank11 +6 -0
  296. sage_wheels/share/ellcurves/rank12 +1 -0
  297. sage_wheels/share/ellcurves/rank14 +1 -0
  298. sage_wheels/share/ellcurves/rank15 +1 -0
  299. sage_wheels/share/ellcurves/rank17 +1 -0
  300. sage_wheels/share/ellcurves/rank19 +1 -0
  301. sage_wheels/share/ellcurves/rank2 +2388 -0
  302. sage_wheels/share/ellcurves/rank20 +1 -0
  303. sage_wheels/share/ellcurves/rank21 +1 -0
  304. sage_wheels/share/ellcurves/rank22 +1 -0
  305. sage_wheels/share/ellcurves/rank23 +1 -0
  306. sage_wheels/share/ellcurves/rank24 +1 -0
  307. sage_wheels/share/ellcurves/rank28 +1 -0
  308. sage_wheels/share/ellcurves/rank3 +836 -0
  309. sage_wheels/share/ellcurves/rank4 +10 -0
  310. sage_wheels/share/ellcurves/rank5 +5 -0
  311. sage_wheels/share/ellcurves/rank6 +5 -0
  312. sage_wheels/share/ellcurves/rank7 +5 -0
  313. sage_wheels/share/ellcurves/rank8 +6 -0
  314. sage_wheels/share/ellcurves/rank9 +7 -0
@@ -0,0 +1,463 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ # sage.doctest: needs sage.libs.singular
3
+ """
4
+ Rational points of curves
5
+
6
+ We can create points on projective curves::
7
+
8
+ sage: P.<x,y,z,w> = ProjectiveSpace(QQ, 3)
9
+ sage: C = Curve([x^3 - 2*x*z^2 - y^3, z^3 - w^3 - x*y*z], P)
10
+ sage: Q = C([1,1,0,0])
11
+ sage: Q.parent()
12
+ Set of rational points of Projective Curve over Rational Field
13
+ defined by x^3 - y^3 - 2*x*z^2, -x*y*z + z^3 - w^3
14
+
15
+ or on affine curves::
16
+
17
+ sage: A.<x,y> = AffineSpace(GF(23), 2)
18
+ sage: C = Curve([y - y^4 + 17*x^2 - 2*x + 22], A)
19
+ sage: Q = C([22,21])
20
+ sage: Q.parent()
21
+ Set of rational points of Affine Plane Curve over Finite Field of size 23
22
+ defined by -y^4 - 6*x^2 - 2*x + y - 1
23
+
24
+ AUTHORS:
25
+
26
+ - Grayson Jorgenson (2016-6): initial version
27
+ """
28
+ # ****************************************************************************
29
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
30
+ #
31
+ # Distributed under the terms of the GNU General Public License (GPL)
32
+ # as published by the Free Software Foundation; either version 2 of
33
+ # the License, or (at your option) any later version.
34
+ # https://www.gnu.org/licenses/
35
+ # ****************************************************************************
36
+ from sage.schemes.affine.affine_point import (SchemeMorphism_point_affine_field,
37
+ SchemeMorphism_point_affine_finite_field)
38
+ from sage.schemes.projective.projective_point import (SchemeMorphism_point_projective_field,
39
+ SchemeMorphism_point_projective_finite_field)
40
+
41
+
42
+ class ProjectiveCurvePoint_field(SchemeMorphism_point_projective_field):
43
+ """
44
+ Point of a projective curve over a field.
45
+ """
46
+ def is_singular(self):
47
+ r"""
48
+ Return whether this point is a singular point of the projective curve it is on.
49
+
50
+ EXAMPLES::
51
+
52
+ sage: P.<x,y,z,w> = ProjectiveSpace(QQ, 3)
53
+ sage: C = Curve([x^2 - y^2, z - w], P)
54
+ sage: Q1 = C([0,0,1,1])
55
+ sage: Q1.is_singular()
56
+ True
57
+ sage: Q2 = C([1,1,1,1])
58
+ sage: Q2.is_singular()
59
+ False
60
+ """
61
+ return self.codomain().is_singular(self)
62
+
63
+
64
+ class ProjectivePlaneCurvePoint_field(ProjectiveCurvePoint_field):
65
+ """
66
+ Point of a projective plane curve over a field.
67
+ """
68
+ def multiplicity(self):
69
+ r"""
70
+ Return the multiplicity of this point with respect to the projective
71
+ curve it is on.
72
+
73
+ EXAMPLES::
74
+
75
+ sage: P.<x,y,z> = ProjectiveSpace(GF(17), 2)
76
+ sage: C = Curve([y^3*z - 16*x^4], P)
77
+ sage: Q = C([0,0,1])
78
+ sage: Q.multiplicity()
79
+ 3
80
+ """
81
+ return self.codomain().multiplicity(self)
82
+
83
+ def tangents(self):
84
+ r"""
85
+ Return the tangents at this point of the projective plane curve this point is on.
86
+
87
+ OUTPUT:
88
+
89
+ A list of polynomials in the coordinate ring of the ambient space
90
+ of the curve this point is on.
91
+
92
+ EXAMPLES::
93
+
94
+ sage: P.<x,y,z> = ProjectiveSpace(QQ, 2)
95
+ sage: C = Curve([y^2*z^3 - x^5 + 18*y*x*z^3])
96
+ sage: Q = C([0,0,1])
97
+ sage: Q.tangents()
98
+ [y, 18*x + y]
99
+ """
100
+ return self.codomain().tangents(self)
101
+
102
+ def is_ordinary_singularity(self):
103
+ r"""
104
+ Return whether this point is an ordinary singularity of the projective
105
+ plane curve it is on.
106
+
107
+ EXAMPLES::
108
+
109
+ sage: P.<x,y,z> = ProjectiveSpace(QQ, 2)
110
+ sage: C = Curve([z^6 - x^6 - x^3*z^3 - x^3*y^3])
111
+ sage: Q = C([0,1,0])
112
+ sage: Q.is_ordinary_singularity()
113
+ False
114
+
115
+ ::
116
+
117
+ sage: # needs sage.rings.number_field
118
+ sage: R.<a> = QQ[]
119
+ sage: K.<b> = NumberField(a^2 - 3)
120
+ sage: P.<x,y,z> = ProjectiveSpace(K, 2)
121
+ sage: C = P.curve([x^2*y^3*z^4 - y^6*z^3 - 4*x^2*y^4*z^3 -
122
+ ....: 4*x^4*y^2*z^3 + 3*y^7*z^2 + 10*x^2*y^5*z^2 + 9*x^4*y^3*z^2 +
123
+ ....: 5*x^6*y*z^2 - 3*y^8*z - 9*x^2*y^6*z - 11*x^4*y^4*z - 7*x^6*y^2*z -
124
+ ....: 2*x^8*z + y^9 + 2*x^2*y^7 + 3*x^4*y^5 + 4*x^6*y^3 + 2*x^8*y])
125
+ sage: Q = C([-1/2, 1/2, 1])
126
+ sage: Q.is_ordinary_singularity()
127
+ True
128
+ """
129
+ return self.codomain().is_ordinary_singularity(self)
130
+
131
+ def is_transverse(self, D):
132
+ r"""
133
+ Return whether the intersection of the curve ``D`` at this point with
134
+ the curve this point is on is transverse or not.
135
+
136
+ INPUT:
137
+
138
+ - ``D`` -- a curve in the same ambient space as the curve this point is on
139
+
140
+ EXAMPLES::
141
+
142
+ sage: P.<x,y,z> = ProjectiveSpace(QQ, 2)
143
+ sage: C = Curve([x^2 - 2*y^2 - 2*z^2], P)
144
+ sage: D = Curve([y - z], P)
145
+ sage: Q = C([2,1,1])
146
+ sage: Q.is_transverse(D)
147
+ True
148
+
149
+ ::
150
+
151
+ sage: P.<x,y,z> = ProjectiveSpace(GF(17), 2)
152
+ sage: C = Curve([x^4 - 16*y^3*z], P)
153
+ sage: D = Curve([y^2 - z*x], P)
154
+ sage: Q = C([0,0,1])
155
+ sage: Q.is_transverse(D)
156
+ False
157
+ """
158
+ return self.codomain().is_transverse(D, self)
159
+
160
+
161
+ class ProjectivePlaneCurvePoint_finite_field(ProjectivePlaneCurvePoint_field,
162
+ SchemeMorphism_point_projective_finite_field):
163
+ """
164
+ Point of a projective plane curve over a finite field.
165
+ """
166
+ pass
167
+
168
+
169
+ class IntegralProjectiveCurvePoint(ProjectiveCurvePoint_field):
170
+ def closed_point(self):
171
+ """
172
+ Return the closed point corresponding to this rational point.
173
+
174
+ EXAMPLES::
175
+
176
+ sage: P.<x,y,z> = ProjectiveSpace(GF(17), 2)
177
+ sage: C = Curve([x^4 - 16*y^3*z], P)
178
+ sage: C.singular_points()
179
+ [(0 : 0 : 1)]
180
+ sage: p = _[0]
181
+ sage: p.closed_point()
182
+ Point (x, y)
183
+ """
184
+ curve = self.codomain()
185
+ A = curve.ambient_space()
186
+ S = A.coordinate_ring()
187
+
188
+ hcoords = self._coords
189
+ for i in range(S.ngens()):
190
+ if hcoords[i]:
191
+ break
192
+ ai = hcoords[i]
193
+ xi = S.gen(i)
194
+ hgens = [ai * S.gen(j) - hcoords[j] * xi
195
+ for j in range(S.ngens()) if j != i]
196
+ return curve._closed_point(curve, S.ideal(hgens), degree=1)
197
+
198
+ def places(self):
199
+ """
200
+ Return all places on this point.
201
+
202
+ EXAMPLES::
203
+
204
+ sage: P.<x,y,z> = ProjectiveSpace(GF(17), 2)
205
+ sage: C = Curve([x^4 - 16*y^3*z], P)
206
+ sage: C.singular_points()
207
+ [(0 : 0 : 1)]
208
+ sage: p = _[0]
209
+ sage: p.places()
210
+ [Place (y)]
211
+ """
212
+ return self.closed_point().places()
213
+
214
+ def place(self):
215
+ """
216
+ Return a place on this point.
217
+
218
+ EXAMPLES::
219
+
220
+ sage: P.<x,y,z> = ProjectiveSpace(GF(17), 2)
221
+ sage: C = Curve([x^4 - 16*y^3*z], P)
222
+ sage: C.singular_points()
223
+ [(0 : 0 : 1)]
224
+ sage: p = _[0]
225
+ sage: p.place()
226
+ Place (y)
227
+ """
228
+ return self.closed_point().place()
229
+
230
+
231
+ class IntegralProjectiveCurvePoint_finite_field(IntegralProjectiveCurvePoint):
232
+ """
233
+ Point of an integral projective curve over a finite field.
234
+ """
235
+ pass
236
+
237
+
238
+ class IntegralProjectivePlaneCurvePoint(IntegralProjectiveCurvePoint, ProjectivePlaneCurvePoint_field):
239
+ """
240
+ Point of an integral projective plane curve over a field.
241
+ """
242
+ pass
243
+
244
+
245
+ class IntegralProjectivePlaneCurvePoint_finite_field(ProjectivePlaneCurvePoint_finite_field, IntegralProjectiveCurvePoint_finite_field):
246
+ """
247
+ Point of an integral projective plane curve over a finite field.
248
+ """
249
+ pass
250
+
251
+
252
+ class AffineCurvePoint_field(SchemeMorphism_point_affine_field):
253
+
254
+ def is_singular(self):
255
+ r"""
256
+ Return whether this point is a singular point of the affine curve it is on.
257
+
258
+ EXAMPLES::
259
+
260
+ sage: # needs sage.rings.number_field
261
+ sage: K = QuadraticField(-1)
262
+ sage: A.<x,y,z> = AffineSpace(K, 3)
263
+ sage: C = Curve([(x^4 + 2*z + 2)*y, z - y + 1])
264
+ sage: Q1 = C([0,0,-1])
265
+ sage: Q1.is_singular()
266
+ True
267
+ sage: Q2 = C([-K.gen(),0,-1])
268
+ sage: Q2.is_singular()
269
+ False
270
+ """
271
+ return self.codomain().is_singular(self)
272
+
273
+
274
+ class AffinePlaneCurvePoint_field(AffineCurvePoint_field):
275
+ """
276
+ Point of an affine plane curve over a field.
277
+ """
278
+ def multiplicity(self):
279
+ r"""
280
+ Return the multiplicity of this point with respect to the affine curve it is on.
281
+
282
+ EXAMPLES::
283
+
284
+ sage: A.<x,y> = AffineSpace(QQ, 2)
285
+ sage: C = A.curve([2*x^7 - 3*x^6*y + x^5*y^2 + 31*x^6 - 40*x^5*y +
286
+ ....: 13*x^4*y^2 - x^3*y^3 + 207*x^5 - 228*x^4*y + 70*x^3*y^2 - 7*x^2*y^3
287
+ ....: + 775*x^4 - 713*x^3*y + 193*x^2*y^2 - 19*x*y^3 + y^4 + 1764*x^3 -
288
+ ....: 1293*x^2*y + 277*x*y^2 - 22*y^3 + 2451*x^2 - 1297*x*y + 172*y^2 +
289
+ ....: 1935*x - 570*y + 675])
290
+ sage: Q = C([-2,1])
291
+ sage: Q.multiplicity()
292
+ 4
293
+ """
294
+ return self.codomain().multiplicity(self)
295
+
296
+ def tangents(self):
297
+ r"""
298
+ Return the tangents at this point of the affine plane curve this point is on.
299
+
300
+ OUTPUT: list of polynomials in the coordinate ring of the ambient
301
+ space of the curve this point is on
302
+
303
+ EXAMPLES::
304
+
305
+ sage: A.<x,y> = AffineSpace(QQ, 2)
306
+ sage: C = A.curve([x^5 - x^3*y^2 + 5*x^4 - x^3*y - 3*x^2*y^2 +
307
+ ....: x*y^3 + 10*x^3 - 3*x^2*y - 3*x*y^2 + y^3 + 10*x^2 - 3*x*y - y^2 +
308
+ ....: 5*x - y + 1])
309
+ sage: Q = C([-1,0])
310
+ sage: Q.tangents()
311
+ [y, x - y + 1, x + 1, x + y + 1]
312
+ """
313
+ return self.codomain().tangents(self)
314
+
315
+ def is_ordinary_singularity(self):
316
+ r"""
317
+ Return whether this point is an ordinary singularity of the affine
318
+ plane curve it is on.
319
+
320
+ EXAMPLES::
321
+
322
+ sage: A.<x,y> = AffineSpace(QQ, 2)
323
+ sage: C = A.curve([x^5 - x^3*y^2 + 5*x^4 - x^3*y - 3*x^2*y^2 +
324
+ ....: x*y^3 + 10*x^3 - 3*x^2*y - 3*x*y^2 + y^3 + 10*x^2 - 3*x*y - y^2 +
325
+ ....: 5*x - y + 1])
326
+ sage: Q = C([-1,0])
327
+ sage: Q.is_ordinary_singularity()
328
+ True
329
+
330
+ ::
331
+
332
+ sage: A.<x,y> = AffineSpace(GF(7), 2)
333
+ sage: C = A.curve([y^2 - x^7 - 6*x^3])
334
+ sage: Q = C([0,0])
335
+ sage: Q.is_ordinary_singularity()
336
+ False
337
+ """
338
+ return self.codomain().is_ordinary_singularity(self)
339
+
340
+ def is_transverse(self, D):
341
+ r"""
342
+ Return whether the intersection of the curve ``D`` at this point with
343
+ the curve this point is on is transverse or not.
344
+
345
+ INPUT:
346
+
347
+ - ``D`` -- a curve in the same ambient space as the curve this point is on
348
+
349
+ EXAMPLES::
350
+
351
+ sage: A.<x,y> = AffineSpace(QQ, 2)
352
+ sage: C = Curve([y - x^2], A)
353
+ sage: D = Curve([y], A)
354
+ sage: Q = C([0,0])
355
+ sage: Q.is_transverse(D)
356
+ False
357
+
358
+ ::
359
+
360
+ sage: # needs sage.rings.number_field
361
+ sage: R.<a> = QQ[]
362
+ sage: K.<b> = NumberField(a^2 - 2)
363
+ sage: A.<x,y> = AffineSpace(K, 2)
364
+ sage: C = Curve([y^2 + x^2 - 1], A)
365
+ sage: D = Curve([y - x], A)
366
+ sage: Q = C([-1/2*b, -1/2*b])
367
+ sage: Q.is_transverse(D)
368
+ True
369
+ """
370
+ return self.codomain().is_transverse(D, self)
371
+
372
+
373
+ class AffinePlaneCurvePoint_finite_field(AffinePlaneCurvePoint_field, SchemeMorphism_point_affine_finite_field):
374
+ """
375
+ Point of an affine plane curve over a finite field.
376
+ """
377
+ pass
378
+
379
+
380
+ class IntegralAffineCurvePoint(AffineCurvePoint_field):
381
+ """
382
+ Point of an integral affine curve.
383
+ """
384
+ def closed_point(self):
385
+ """
386
+ Return the closed point that corresponds to this rational point.
387
+
388
+ EXAMPLES::
389
+
390
+ sage: # needs sage.rings.finite_rings
391
+ sage: A.<x,y> = AffineSpace(GF(8), 2)
392
+ sage: C = Curve(x^5 + y^5 + x*y + 1)
393
+ sage: p = C([1,1])
394
+ sage: p.closed_point()
395
+ Point (x + 1, y + 1)
396
+ """
397
+ curve = self.codomain()
398
+ A = curve.ambient_space()
399
+ R = A.coordinate_ring()
400
+ coords = self._coords
401
+ gens = [R.gen(i) - coords[i] for i in range(R.ngens())]
402
+ return curve._closed_point(curve, R.ideal(gens), degree=1)
403
+
404
+ def places(self):
405
+ """
406
+ Return all places on this point.
407
+
408
+ EXAMPLES::
409
+
410
+ sage: A.<x,y> = AffineSpace(GF(2), 2)
411
+ sage: C = Curve(x^5 + y^5 + x*y + 1)
412
+ sage: p = C(-1,-1)
413
+ sage: p
414
+ (1, 1)
415
+ sage: p.closed_point()
416
+ Point (x + 1, y + 1)
417
+ sage: _.places()
418
+ [Place (x + 1, (1/(x^5 + 1))*y^4 + ((x^5 + x^4 + 1)/(x^5 + 1))*y^3
419
+ + ((x^5 + x^3 + 1)/(x^5 + 1))*y^2 + (x^2/(x^5 + 1))*y),
420
+ Place (x + 1, (1/(x^5 + 1))*y^4 + ((x^5 + x^4 + 1)/(x^5 + 1))*y^3
421
+ + (x^3/(x^5 + 1))*y^2 + (x^2/(x^5 + 1))*y + x + 1)]
422
+ """
423
+ return self.closed_point().places()
424
+
425
+ def place(self):
426
+ """
427
+ Return a place on this point.
428
+
429
+ EXAMPLES::
430
+
431
+ sage: A.<x,y> = AffineSpace(GF(2), 2)
432
+ sage: C = Curve(x^5 + y^5 + x*y + 1)
433
+ sage: p = C(-1,-1)
434
+ sage: p
435
+ (1, 1)
436
+ sage: p.closed_point()
437
+ Point (x + 1, y + 1)
438
+ sage: _.place()
439
+ Place (x + 1, (1/(x^5 + 1))*y^4 + ((x^5 + x^4 + 1)/(x^5 + 1))*y^3
440
+ + ((x^5 + x^3 + 1)/(x^5 + 1))*y^2 + (x^2/(x^5 + 1))*y)
441
+ """
442
+ return self.closed_point().place()
443
+
444
+
445
+ class IntegralAffineCurvePoint_finite_field(IntegralAffineCurvePoint):
446
+ """
447
+ Point of an integral affine curve over a finite field.
448
+ """
449
+ pass
450
+
451
+
452
+ class IntegralAffinePlaneCurvePoint(IntegralAffineCurvePoint, AffinePlaneCurvePoint_field):
453
+ """
454
+ Point of an integral affine plane curve.
455
+ """
456
+ pass
457
+
458
+
459
+ class IntegralAffinePlaneCurvePoint_finite_field(AffinePlaneCurvePoint_finite_field, IntegralAffineCurvePoint_finite_field):
460
+ """
461
+ Point of an integral affine plane curve over a finite field.
462
+ """
463
+ pass