passagemath-schemes 10.6.47__cp312-cp312-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.
- passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
- passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
- passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
- passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
- passagemath_schemes/__init__.py +3 -0
- passagemath_schemes-10.6.47.dist-info/METADATA +204 -0
- passagemath_schemes-10.6.47.dist-info/METADATA.bak +205 -0
- passagemath_schemes-10.6.47.dist-info/RECORD +311 -0
- passagemath_schemes-10.6.47.dist-info/WHEEL +6 -0
- passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
- sage/all__sagemath_schemes.py +23 -0
- sage/databases/all__sagemath_schemes.py +7 -0
- sage/databases/cremona.py +1723 -0
- sage/dynamics/all__sagemath_schemes.py +2 -0
- sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
- sage/dynamics/arithmetic_dynamics/all.py +14 -0
- sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
- sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
- sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
- sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
- sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
- sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
- sage/dynamics/arithmetic_dynamics/projective_ds.py +9558 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-darwin.so +0 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
- sage/lfunctions/all.py +18 -0
- sage/lfunctions/dokchitser.py +745 -0
- sage/lfunctions/pari.py +818 -0
- sage/lfunctions/zero_sums.cpython-312-darwin.so +0 -0
- sage/lfunctions/zero_sums.pyx +1847 -0
- sage/modular/abvar/abvar.py +5135 -0
- sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
- sage/modular/abvar/abvar_newform.py +244 -0
- sage/modular/abvar/all.py +8 -0
- sage/modular/abvar/constructor.py +186 -0
- sage/modular/abvar/cuspidal_subgroup.py +371 -0
- sage/modular/abvar/finite_subgroup.py +896 -0
- sage/modular/abvar/homology.py +720 -0
- sage/modular/abvar/homspace.py +998 -0
- sage/modular/abvar/lseries.py +415 -0
- sage/modular/abvar/morphism.py +935 -0
- sage/modular/abvar/torsion_point.py +274 -0
- sage/modular/abvar/torsion_subgroup.py +740 -0
- sage/modular/all.py +43 -0
- sage/modular/arithgroup/all.py +20 -0
- sage/modular/arithgroup/arithgroup_element.cpython-312-darwin.so +0 -0
- sage/modular/arithgroup/arithgroup_element.pyx +474 -0
- sage/modular/arithgroup/arithgroup_generic.py +1402 -0
- sage/modular/arithgroup/arithgroup_perm.py +2692 -0
- sage/modular/arithgroup/congroup.cpython-312-darwin.so +0 -0
- sage/modular/arithgroup/congroup.pyx +334 -0
- sage/modular/arithgroup/congroup_gamma.py +363 -0
- sage/modular/arithgroup/congroup_gamma0.py +692 -0
- sage/modular/arithgroup/congroup_gamma1.py +653 -0
- sage/modular/arithgroup/congroup_gammaH.py +1469 -0
- sage/modular/arithgroup/congroup_generic.py +628 -0
- sage/modular/arithgroup/congroup_sl2z.py +267 -0
- sage/modular/arithgroup/farey_symbol.cpython-312-darwin.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1066 -0
- sage/modular/arithgroup/tests.py +418 -0
- sage/modular/btquotients/all.py +4 -0
- sage/modular/btquotients/btquotient.py +3753 -0
- sage/modular/btquotients/pautomorphicform.py +2570 -0
- sage/modular/buzzard.py +100 -0
- sage/modular/congroup.py +29 -0
- sage/modular/congroup_element.py +13 -0
- sage/modular/cusps.py +1109 -0
- sage/modular/cusps_nf.py +1270 -0
- sage/modular/dims.py +569 -0
- sage/modular/dirichlet.py +3310 -0
- sage/modular/drinfeld_modform/all.py +2 -0
- sage/modular/drinfeld_modform/element.py +446 -0
- sage/modular/drinfeld_modform/ring.py +773 -0
- sage/modular/drinfeld_modform/tutorial.py +236 -0
- sage/modular/etaproducts.py +1065 -0
- sage/modular/hecke/algebra.py +746 -0
- sage/modular/hecke/all.py +20 -0
- sage/modular/hecke/ambient_module.py +1019 -0
- sage/modular/hecke/degenmap.py +119 -0
- sage/modular/hecke/element.py +325 -0
- sage/modular/hecke/hecke_operator.py +780 -0
- sage/modular/hecke/homspace.py +206 -0
- sage/modular/hecke/module.py +1767 -0
- sage/modular/hecke/morphism.py +174 -0
- sage/modular/hecke/submodule.py +989 -0
- sage/modular/hypergeometric_misc.cpython-312-darwin.so +0 -0
- sage/modular/hypergeometric_misc.pxd +4 -0
- sage/modular/hypergeometric_misc.pyx +166 -0
- sage/modular/hypergeometric_motive.py +2017 -0
- sage/modular/local_comp/all.py +2 -0
- sage/modular/local_comp/liftings.py +292 -0
- sage/modular/local_comp/local_comp.py +1071 -0
- sage/modular/local_comp/smoothchar.py +1825 -0
- sage/modular/local_comp/type_space.py +748 -0
- sage/modular/modform/all.py +30 -0
- sage/modular/modform/ambient.py +815 -0
- sage/modular/modform/ambient_R.py +177 -0
- sage/modular/modform/ambient_eps.py +306 -0
- sage/modular/modform/ambient_g0.py +124 -0
- sage/modular/modform/ambient_g1.py +204 -0
- sage/modular/modform/constructor.py +545 -0
- sage/modular/modform/cuspidal_submodule.py +708 -0
- sage/modular/modform/defaults.py +14 -0
- sage/modular/modform/eis_series.py +505 -0
- sage/modular/modform/eisenstein_submodule.py +663 -0
- sage/modular/modform/element.py +4131 -0
- sage/modular/modform/find_generators.py +59 -0
- sage/modular/modform/half_integral.py +154 -0
- sage/modular/modform/hecke_operator_on_qexp.py +247 -0
- sage/modular/modform/j_invariant.py +47 -0
- sage/modular/modform/l_series_gross_zagier.py +133 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-darwin.so +0 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
- sage/modular/modform/notes.py +45 -0
- sage/modular/modform/numerical.py +514 -0
- sage/modular/modform/periods.py +14 -0
- sage/modular/modform/ring.py +1257 -0
- sage/modular/modform/space.py +1860 -0
- sage/modular/modform/submodule.py +118 -0
- sage/modular/modform/tests.py +64 -0
- sage/modular/modform/theta.py +110 -0
- sage/modular/modform/vm_basis.py +381 -0
- sage/modular/modform/weight1.py +220 -0
- sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
- sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
- sage/modular/modform_hecketriangle/all.py +30 -0
- sage/modular/modform_hecketriangle/analytic_type.py +590 -0
- sage/modular/modform_hecketriangle/constructor.py +416 -0
- sage/modular/modform_hecketriangle/element.py +351 -0
- sage/modular/modform_hecketriangle/functors.py +752 -0
- sage/modular/modform_hecketriangle/graded_ring.py +541 -0
- sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
- sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
- sage/modular/modform_hecketriangle/readme.py +1214 -0
- sage/modular/modform_hecketriangle/series_constructor.py +580 -0
- sage/modular/modform_hecketriangle/space.py +1037 -0
- sage/modular/modform_hecketriangle/subspace.py +423 -0
- sage/modular/modsym/all.py +17 -0
- sage/modular/modsym/ambient.py +3846 -0
- sage/modular/modsym/boundary.py +1420 -0
- sage/modular/modsym/element.py +336 -0
- sage/modular/modsym/g1list.py +178 -0
- sage/modular/modsym/ghlist.py +182 -0
- sage/modular/modsym/hecke_operator.py +73 -0
- sage/modular/modsym/manin_symbol.cpython-312-darwin.so +0 -0
- sage/modular/modsym/manin_symbol.pxd +5 -0
- sage/modular/modsym/manin_symbol.pyx +497 -0
- sage/modular/modsym/manin_symbol_list.py +1295 -0
- sage/modular/modsym/modsym.py +400 -0
- sage/modular/modsym/modular_symbols.py +384 -0
- sage/modular/modsym/p1list_nf.py +1241 -0
- sage/modular/modsym/relation_matrix.py +591 -0
- sage/modular/modsym/relation_matrix_pyx.cpython-312-darwin.so +0 -0
- sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
- sage/modular/modsym/space.py +2468 -0
- sage/modular/modsym/subspace.py +455 -0
- sage/modular/modsym/tests.py +375 -0
- sage/modular/multiple_zeta.py +2632 -0
- sage/modular/multiple_zeta_F_algebra.py +786 -0
- sage/modular/overconvergent/all.py +6 -0
- sage/modular/overconvergent/genus0.py +1878 -0
- sage/modular/overconvergent/hecke_series.py +1187 -0
- sage/modular/overconvergent/weightspace.py +778 -0
- sage/modular/pollack_stevens/all.py +4 -0
- sage/modular/pollack_stevens/distributions.py +874 -0
- sage/modular/pollack_stevens/fund_domain.py +1572 -0
- sage/modular/pollack_stevens/manin_map.py +859 -0
- sage/modular/pollack_stevens/modsym.py +1593 -0
- sage/modular/pollack_stevens/padic_lseries.py +417 -0
- sage/modular/pollack_stevens/sigma0.py +534 -0
- sage/modular/pollack_stevens/space.py +1076 -0
- sage/modular/quasimodform/all.py +3 -0
- sage/modular/quasimodform/element.py +845 -0
- sage/modular/quasimodform/ring.py +828 -0
- sage/modular/quatalg/all.py +3 -0
- sage/modular/quatalg/brandt.py +1642 -0
- sage/modular/ssmod/all.py +8 -0
- sage/modular/ssmod/ssmod.py +827 -0
- sage/rings/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/binary_form_reduce.py +585 -0
- sage/schemes/all.py +41 -0
- sage/schemes/berkovich/all.py +6 -0
- sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
- sage/schemes/berkovich/berkovich_space.py +748 -0
- sage/schemes/curves/affine_curve.py +2928 -0
- sage/schemes/curves/all.py +33 -0
- sage/schemes/curves/closed_point.py +434 -0
- sage/schemes/curves/constructor.py +381 -0
- sage/schemes/curves/curve.py +542 -0
- sage/schemes/curves/plane_curve_arrangement.py +1283 -0
- sage/schemes/curves/point.py +463 -0
- sage/schemes/curves/projective_curve.py +3026 -0
- sage/schemes/curves/zariski_vankampen.py +1932 -0
- sage/schemes/cyclic_covers/all.py +2 -0
- sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
- sage/schemes/cyclic_covers/constructor.py +137 -0
- sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
- sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
- sage/schemes/elliptic_curves/BSD.py +1036 -0
- sage/schemes/elliptic_curves/Qcurves.py +592 -0
- sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
- sage/schemes/elliptic_curves/all.py +49 -0
- sage/schemes/elliptic_curves/cardinality.py +609 -0
- sage/schemes/elliptic_curves/cm.py +1102 -0
- sage/schemes/elliptic_curves/constructor.py +1552 -0
- sage/schemes/elliptic_curves/ec_database.py +175 -0
- sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
- sage/schemes/elliptic_curves/ell_egros.py +459 -0
- sage/schemes/elliptic_curves/ell_field.py +2836 -0
- sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
- sage/schemes/elliptic_curves/ell_generic.py +3760 -0
- sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
- sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
- sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
- sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
- sage/schemes/elliptic_curves/ell_point.py +4787 -0
- sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
- sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
- sage/schemes/elliptic_curves/ell_torsion.py +436 -0
- sage/schemes/elliptic_curves/ell_wp.py +352 -0
- sage/schemes/elliptic_curves/formal_group.py +760 -0
- sage/schemes/elliptic_curves/gal_reps.py +1459 -0
- sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
- sage/schemes/elliptic_curves/gp_simon.py +152 -0
- sage/schemes/elliptic_curves/heegner.py +7335 -0
- sage/schemes/elliptic_curves/height.py +2109 -0
- sage/schemes/elliptic_curves/hom.py +1406 -0
- sage/schemes/elliptic_curves/hom_composite.py +934 -0
- sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
- sage/schemes/elliptic_curves/hom_scalar.py +531 -0
- sage/schemes/elliptic_curves/hom_sum.py +682 -0
- sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
- sage/schemes/elliptic_curves/homset.py +271 -0
- sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
- sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
- sage/schemes/elliptic_curves/jacobian.py +237 -0
- sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
- sage/schemes/elliptic_curves/kraus.py +1014 -0
- sage/schemes/elliptic_curves/lseries_ell.py +943 -0
- sage/schemes/elliptic_curves/mod5family.py +105 -0
- sage/schemes/elliptic_curves/mod_poly.py +197 -0
- sage/schemes/elliptic_curves/mod_sym_num.cpython-312-darwin.so +0 -0
- sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
- sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
- sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
- sage/schemes/elliptic_curves/padics.py +1816 -0
- sage/schemes/elliptic_curves/period_lattice.py +2234 -0
- sage/schemes/elliptic_curves/period_lattice_region.cpython-312-darwin.so +0 -0
- sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
- sage/schemes/elliptic_curves/saturation.py +715 -0
- sage/schemes/elliptic_curves/sha_tate.py +1158 -0
- sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
- sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
- sage/schemes/hyperelliptic_curves/all.py +6 -0
- sage/schemes/hyperelliptic_curves/constructor.py +291 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
- sage/schemes/hyperelliptic_curves/invariants.py +410 -0
- sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
- sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
- sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
- sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
- sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
- sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
- sage/schemes/hyperelliptic_curves/mestre.py +302 -0
- sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
- sage/schemes/jacobians/abstract_jacobian.py +277 -0
- sage/schemes/jacobians/all.py +2 -0
- sage/schemes/overview.py +161 -0
- sage/schemes/plane_conics/all.py +22 -0
- sage/schemes/plane_conics/con_field.py +1296 -0
- sage/schemes/plane_conics/con_finite_field.py +158 -0
- sage/schemes/plane_conics/con_number_field.py +456 -0
- sage/schemes/plane_conics/con_rational_field.py +406 -0
- sage/schemes/plane_conics/con_rational_function_field.py +580 -0
- sage/schemes/plane_conics/constructor.py +249 -0
- sage/schemes/plane_quartics/all.py +2 -0
- sage/schemes/plane_quartics/quartic_constructor.py +71 -0
- sage/schemes/plane_quartics/quartic_generic.py +73 -0
- sage/schemes/riemann_surfaces/all.py +1 -0
- sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
- sage_wheels/share/cremona/cremona_mini.db +0 -0
- sage_wheels/share/ellcurves/rank0 +30427 -0
- sage_wheels/share/ellcurves/rank1 +31871 -0
- sage_wheels/share/ellcurves/rank10 +6 -0
- sage_wheels/share/ellcurves/rank11 +6 -0
- sage_wheels/share/ellcurves/rank12 +1 -0
- sage_wheels/share/ellcurves/rank14 +1 -0
- sage_wheels/share/ellcurves/rank15 +1 -0
- sage_wheels/share/ellcurves/rank17 +1 -0
- sage_wheels/share/ellcurves/rank19 +1 -0
- sage_wheels/share/ellcurves/rank2 +2388 -0
- sage_wheels/share/ellcurves/rank20 +1 -0
- sage_wheels/share/ellcurves/rank21 +1 -0
- sage_wheels/share/ellcurves/rank22 +1 -0
- sage_wheels/share/ellcurves/rank23 +1 -0
- sage_wheels/share/ellcurves/rank24 +1 -0
- sage_wheels/share/ellcurves/rank28 +1 -0
- sage_wheels/share/ellcurves/rank3 +836 -0
- sage_wheels/share/ellcurves/rank4 +10 -0
- sage_wheels/share/ellcurves/rank5 +5 -0
- sage_wheels/share/ellcurves/rank6 +5 -0
- sage_wheels/share/ellcurves/rank7 +5 -0
- sage_wheels/share/ellcurves/rank8 +6 -0
- 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
|