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,277 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
"""
|
|
3
|
+
Jacobians of curves
|
|
4
|
+
|
|
5
|
+
This module defines the base class of Jacobians as an abstract scheme.
|
|
6
|
+
|
|
7
|
+
AUTHORS:
|
|
8
|
+
|
|
9
|
+
- William Stein (2005)
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
# ****************************************************************************
|
|
13
|
+
# Copyright (C) 2005 William Stein <wstein@gmail.com>
|
|
14
|
+
#
|
|
15
|
+
# This program is free software: you can redistribute it and/or modify
|
|
16
|
+
# it under the terms of the GNU General Public License as published by
|
|
17
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
18
|
+
# (at your option) any later version.
|
|
19
|
+
# https://www.gnu.org/licenses/
|
|
20
|
+
# ****************************************************************************
|
|
21
|
+
|
|
22
|
+
from sage.categories.schemes import Jacobians
|
|
23
|
+
from sage.categories.fields import Fields
|
|
24
|
+
from sage.schemes.generic.scheme import Scheme
|
|
25
|
+
from sage.structure.richcmp import richcmp_method, richcmp
|
|
26
|
+
|
|
27
|
+
_Fields = Fields()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def is_Jacobian(J):
|
|
31
|
+
"""
|
|
32
|
+
Return ``True`` if `J` is of type ``Jacobian_generic``.
|
|
33
|
+
|
|
34
|
+
EXAMPLES::
|
|
35
|
+
|
|
36
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian, is_Jacobian
|
|
37
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
38
|
+
sage: C = Curve(x^3 + y^3 + z^3)
|
|
39
|
+
sage: J = Jacobian(C)
|
|
40
|
+
sage: is_Jacobian(J)
|
|
41
|
+
...
|
|
42
|
+
DeprecationWarning: Use Jacobian_generic directly
|
|
43
|
+
See https://github.com/sagemath/sage/issues/35467 for details.
|
|
44
|
+
True
|
|
45
|
+
|
|
46
|
+
::
|
|
47
|
+
|
|
48
|
+
sage: E = EllipticCurve('37a1') # needs database_cremona_mini_ellcurve
|
|
49
|
+
sage: is_Jacobian(E) # needs database_cremona_mini_ellcurve
|
|
50
|
+
False
|
|
51
|
+
"""
|
|
52
|
+
from sage.misc.superseded import deprecation
|
|
53
|
+
deprecation(35467, "Use Jacobian_generic directly")
|
|
54
|
+
return isinstance(J, Jacobian_generic)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def Jacobian(C):
|
|
58
|
+
"""
|
|
59
|
+
EXAMPLES::
|
|
60
|
+
|
|
61
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian
|
|
62
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
63
|
+
sage: C = Curve(x^3 + y^3 + z^3)
|
|
64
|
+
sage: Jacobian(C)
|
|
65
|
+
Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3
|
|
66
|
+
"""
|
|
67
|
+
try:
|
|
68
|
+
return C.jacobian()
|
|
69
|
+
except (AttributeError, TypeError):
|
|
70
|
+
return Jacobian_generic(C)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@richcmp_method
|
|
74
|
+
class Jacobian_generic(Scheme):
|
|
75
|
+
"""
|
|
76
|
+
Base class for Jacobians of projective curves.
|
|
77
|
+
|
|
78
|
+
The input must be a projective curve over a field.
|
|
79
|
+
|
|
80
|
+
EXAMPLES::
|
|
81
|
+
|
|
82
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian
|
|
83
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
84
|
+
sage: C = Curve(x^3 + y^3 + z^3)
|
|
85
|
+
sage: J = Jacobian(C); J
|
|
86
|
+
Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3
|
|
87
|
+
"""
|
|
88
|
+
def __init__(self, C, category=None):
|
|
89
|
+
"""
|
|
90
|
+
Initialize.
|
|
91
|
+
|
|
92
|
+
TESTS::
|
|
93
|
+
|
|
94
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian_generic
|
|
95
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
96
|
+
sage: C = Curve(x^3 + y^3 + z^3)
|
|
97
|
+
sage: J = Jacobian_generic(C); J
|
|
98
|
+
Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3
|
|
99
|
+
sage: type(J)
|
|
100
|
+
<class 'sage.schemes.jacobians.abstract_jacobian.Jacobian_generic_with_category'>
|
|
101
|
+
|
|
102
|
+
Note: this is an abstract parent, so we skip element tests::
|
|
103
|
+
|
|
104
|
+
sage: TestSuite(J).run(skip =["_test_an_element", \
|
|
105
|
+
....: "_test_zero", \
|
|
106
|
+
....: "_test_elements", \
|
|
107
|
+
....: "_test_elements_eq_reflexive", \
|
|
108
|
+
....: "_test_elements_eq_symmetric", \
|
|
109
|
+
....: "_test_elements_eq_transitive", \
|
|
110
|
+
....: "_test_additive_associativity", \
|
|
111
|
+
....: "_test_elements_neq", \
|
|
112
|
+
....: "_test_some_elements"])
|
|
113
|
+
|
|
114
|
+
::
|
|
115
|
+
|
|
116
|
+
sage: Jacobian_generic(ZZ)
|
|
117
|
+
Traceback (most recent call last):
|
|
118
|
+
...
|
|
119
|
+
TypeError: Argument (=Integer Ring) must be a scheme.
|
|
120
|
+
sage: Jacobian_generic(P2)
|
|
121
|
+
Traceback (most recent call last):
|
|
122
|
+
...
|
|
123
|
+
ValueError: C (=Projective Space of dimension 2 over Rational Field)
|
|
124
|
+
must have dimension 1.
|
|
125
|
+
|
|
126
|
+
::
|
|
127
|
+
|
|
128
|
+
sage: P2.<x, y, z> = ProjectiveSpace(Zmod(6), 2)
|
|
129
|
+
sage: C = Curve(x + y + z, P2)
|
|
130
|
+
sage: Jacobian_generic(C)
|
|
131
|
+
Traceback (most recent call last):
|
|
132
|
+
...
|
|
133
|
+
TypeError: C (=Projective Plane Curve over Ring of integers modulo 6
|
|
134
|
+
defined by x + y + z) must be defined over a field.
|
|
135
|
+
"""
|
|
136
|
+
if not isinstance(C, Scheme):
|
|
137
|
+
raise TypeError("Argument (=%s) must be a scheme." % C)
|
|
138
|
+
if C.base_ring() not in _Fields:
|
|
139
|
+
raise TypeError("C (=%s) must be defined over a field." % C)
|
|
140
|
+
if C.dimension() != 1:
|
|
141
|
+
raise ValueError("C (=%s) must have dimension 1." % C)
|
|
142
|
+
self.__curve = C
|
|
143
|
+
Scheme.__init__(self, C.base_scheme(), category=Jacobians(C.base_ring()).or_subcategory(category))
|
|
144
|
+
|
|
145
|
+
def __richcmp__(self, J, op):
|
|
146
|
+
"""
|
|
147
|
+
Compare the Jacobian ``self`` to `J`. If `J` is a Jacobian, then
|
|
148
|
+
``self`` and `J` are equal if and only if their curves are equal.
|
|
149
|
+
|
|
150
|
+
EXAMPLES::
|
|
151
|
+
|
|
152
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian
|
|
153
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
154
|
+
sage: J1 = Jacobian(Curve(x^3 + y^3 + z^3))
|
|
155
|
+
sage: J1 == J1
|
|
156
|
+
True
|
|
157
|
+
sage: J1 == P2
|
|
158
|
+
False
|
|
159
|
+
sage: J1 != P2
|
|
160
|
+
True
|
|
161
|
+
sage: J2 = Jacobian(Curve(x + y + z))
|
|
162
|
+
sage: J1 == J2
|
|
163
|
+
False
|
|
164
|
+
sage: J1 != J2
|
|
165
|
+
True
|
|
166
|
+
"""
|
|
167
|
+
if not isinstance(J, Jacobian_generic):
|
|
168
|
+
return NotImplemented
|
|
169
|
+
return richcmp(self.curve(), J.curve(), op)
|
|
170
|
+
|
|
171
|
+
def _repr_(self):
|
|
172
|
+
"""
|
|
173
|
+
Return a string representation of this Jacobian.
|
|
174
|
+
|
|
175
|
+
EXAMPLES::
|
|
176
|
+
|
|
177
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian
|
|
178
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
179
|
+
sage: J = Jacobian(Curve(x^3 + y^3 + z^3)); J
|
|
180
|
+
Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3
|
|
181
|
+
sage: J._repr_()
|
|
182
|
+
'Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3'
|
|
183
|
+
"""
|
|
184
|
+
return "Jacobian of %s" % self.__curve
|
|
185
|
+
|
|
186
|
+
def _point(self):
|
|
187
|
+
"""
|
|
188
|
+
Return the Hom-set from some affine scheme to ``self``.
|
|
189
|
+
|
|
190
|
+
OUTPUT:
|
|
191
|
+
|
|
192
|
+
This method always raises a :exc:`NotImplementedError`; it is
|
|
193
|
+
only abstract.
|
|
194
|
+
|
|
195
|
+
EXAMPLES::
|
|
196
|
+
|
|
197
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian
|
|
198
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
199
|
+
sage: J = Jacobian(Curve(x^3 + y^3 + z^3))
|
|
200
|
+
sage: J._point()
|
|
201
|
+
Traceback (most recent call last):
|
|
202
|
+
...
|
|
203
|
+
NotImplementedError
|
|
204
|
+
"""
|
|
205
|
+
raise NotImplementedError
|
|
206
|
+
|
|
207
|
+
def curve(self):
|
|
208
|
+
"""
|
|
209
|
+
Return the curve of which ``self`` is the Jacobian.
|
|
210
|
+
|
|
211
|
+
EXAMPLES::
|
|
212
|
+
|
|
213
|
+
sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian
|
|
214
|
+
sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2)
|
|
215
|
+
sage: J = Jacobian(Curve(x^3 + y^3 + z^3))
|
|
216
|
+
sage: J.curve()
|
|
217
|
+
Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3
|
|
218
|
+
"""
|
|
219
|
+
return self.__curve
|
|
220
|
+
|
|
221
|
+
base_curve = curve
|
|
222
|
+
|
|
223
|
+
def change_ring(self, R):
|
|
224
|
+
r"""
|
|
225
|
+
Return the Jacobian over the ring `R`.
|
|
226
|
+
|
|
227
|
+
INPUT:
|
|
228
|
+
|
|
229
|
+
- ``R`` -- a field; the new base ring
|
|
230
|
+
|
|
231
|
+
OUTPUT: the Jacobian over the ring `R`
|
|
232
|
+
|
|
233
|
+
EXAMPLES::
|
|
234
|
+
|
|
235
|
+
sage: R.<x> = QQ['x']
|
|
236
|
+
sage: H = HyperellipticCurve(x^3 - 10*x + 9)
|
|
237
|
+
sage: Jac = H.jacobian(); Jac
|
|
238
|
+
Jacobian of Hyperelliptic Curve over Rational Field
|
|
239
|
+
defined by y^2 = x^3 - 10*x + 9
|
|
240
|
+
sage: Jac.change_ring(RDF)
|
|
241
|
+
Jacobian of Hyperelliptic Curve over Real Double Field
|
|
242
|
+
defined by y^2 = x^3 - 10.0*x + 9.0
|
|
243
|
+
"""
|
|
244
|
+
return self.curve().change_ring(R).jacobian()
|
|
245
|
+
|
|
246
|
+
def base_extend(self, R):
|
|
247
|
+
r"""
|
|
248
|
+
Return the natural extension of ``self`` over `R`.
|
|
249
|
+
|
|
250
|
+
INPUT:
|
|
251
|
+
|
|
252
|
+
- ``R`` -- a field; the new base field
|
|
253
|
+
|
|
254
|
+
OUTPUT: the Jacobian over the ring `R`
|
|
255
|
+
|
|
256
|
+
EXAMPLES::
|
|
257
|
+
|
|
258
|
+
sage: R.<x> = QQ['x']
|
|
259
|
+
sage: H = HyperellipticCurve(x^3 - 10*x + 9)
|
|
260
|
+
sage: Jac = H.jacobian(); Jac
|
|
261
|
+
Jacobian of Hyperelliptic Curve over Rational Field
|
|
262
|
+
defined by y^2 = x^3 - 10*x + 9
|
|
263
|
+
|
|
264
|
+
sage: # needs sage.rings.number_field
|
|
265
|
+
sage: F.<a> = QQ.extension(x^2 + 1)
|
|
266
|
+
sage: Jac.base_extend(F)
|
|
267
|
+
Jacobian of Hyperelliptic Curve over Number Field in a with defining
|
|
268
|
+
polynomial x^2 + 1 defined by y^2 = x^3 - 10*x + 9
|
|
269
|
+
"""
|
|
270
|
+
if R not in _Fields:
|
|
271
|
+
raise ValueError('Not a field: ' + str(R))
|
|
272
|
+
if self.base_ring() is R:
|
|
273
|
+
return self
|
|
274
|
+
if not R.has_coerce_map_from(self.base_ring()):
|
|
275
|
+
raise ValueError('no natural map from the base ring (=%s) to R (=%s)!'
|
|
276
|
+
% (self.base_ring(), R))
|
|
277
|
+
return self.change_ring(R)
|
sage/schemes/overview.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
r"""
|
|
3
|
+
Scheme implementation overview
|
|
4
|
+
|
|
5
|
+
Various parts of schemes were implemented by different authors. This document
|
|
6
|
+
aims to give an overview of the different classes of schemes working together
|
|
7
|
+
coherently.
|
|
8
|
+
|
|
9
|
+
Generic
|
|
10
|
+
-------
|
|
11
|
+
|
|
12
|
+
- **Scheme:**
|
|
13
|
+
A scheme whose datatype might not be defined in terms of algebraic equations:
|
|
14
|
+
e.g. the Jacobian of a curve may be represented by means of a Scheme.
|
|
15
|
+
|
|
16
|
+
- **AlgebraicScheme:**
|
|
17
|
+
A scheme defined by means of polynomial equations, which may be reducible or
|
|
18
|
+
defined over a ring other than a field. In particular, the defining ideal
|
|
19
|
+
need not be a radical ideal, and an algebraic scheme may be defined over
|
|
20
|
+
`\mathrm{Spec}(R)`.
|
|
21
|
+
|
|
22
|
+
- **AmbientSpaces:**
|
|
23
|
+
Most effective models of algebraic scheme will be defined not by generic
|
|
24
|
+
gluings, but by embeddings in some fixed ambient space.
|
|
25
|
+
|
|
26
|
+
Ambients
|
|
27
|
+
--------
|
|
28
|
+
|
|
29
|
+
- **AffineSpace:**
|
|
30
|
+
Affine spaces and their affine subschemes form the most important universal
|
|
31
|
+
objects from which algebraic schemes are built. The affine spaces form
|
|
32
|
+
universal objects in the sense that a morphism is uniquely determined by the
|
|
33
|
+
images of its coordinate functions and any such images determine a
|
|
34
|
+
well-defined morphism.
|
|
35
|
+
|
|
36
|
+
By default affine spaces will embed in some ordinary projective space, unless
|
|
37
|
+
it is created as an affine patch of another object.
|
|
38
|
+
|
|
39
|
+
- **ProjectiveSpace:**
|
|
40
|
+
Projective spaces are the most natural ambient spaces for most projective
|
|
41
|
+
objects. They are locally universal objects.
|
|
42
|
+
|
|
43
|
+
- **ProjectiveSpace_ordinary (not implemented):**
|
|
44
|
+
The ordinary projective spaces have the standard weights `[1,..,1]` on their
|
|
45
|
+
coefficients.
|
|
46
|
+
|
|
47
|
+
- **ProjectiveSpace_weighted (not implemented):**
|
|
48
|
+
A special subtype for non-standard weights.
|
|
49
|
+
|
|
50
|
+
- **ToricVariety:**
|
|
51
|
+
Toric varieties are (partial) compactifications of algebraic tori `(\CC^*)^n`
|
|
52
|
+
compatible with torus action. Affine and projective spaces are examples of
|
|
53
|
+
toric varieties, but it is not envisioned that these special cases should
|
|
54
|
+
inherit from :class:`~sage.schemes.toric.variety.ToricVariety`.
|
|
55
|
+
|
|
56
|
+
Subschemes
|
|
57
|
+
----------
|
|
58
|
+
|
|
59
|
+
- **AlgebraicScheme_subscheme_affine:**
|
|
60
|
+
An algebraic scheme defined by means of an embedding in a
|
|
61
|
+
fixed ambient affine space.
|
|
62
|
+
|
|
63
|
+
- **AlgebraicScheme_subscheme_projective:**
|
|
64
|
+
An algebraic scheme defined by means of an embedding in a fixed ambient
|
|
65
|
+
projective space.
|
|
66
|
+
|
|
67
|
+
- **QuasiAffineScheme (not yet implemented):**
|
|
68
|
+
An open subset `U = X \setminus Z` of a closed subset `X` of affine space;
|
|
69
|
+
note that this is mathematically a quasi-projective scheme, but its
|
|
70
|
+
ambient space is an affine space and its points are represented by
|
|
71
|
+
affine rather than projective points.
|
|
72
|
+
|
|
73
|
+
.. NOTE::
|
|
74
|
+
|
|
75
|
+
AlgebraicScheme_quasi is implemented, as a base class for this.
|
|
76
|
+
|
|
77
|
+
- **QuasiProjectiveScheme (not yet implemented):**
|
|
78
|
+
An open subset of a closed subset of projective space; this datatype
|
|
79
|
+
stores the defining polynomial, polynomials, or ideal defining the
|
|
80
|
+
projective closure `X` plus the closed subscheme `Z` of `X` whose complement
|
|
81
|
+
`U = X \setminus Z` is the quasi-projective scheme.
|
|
82
|
+
|
|
83
|
+
.. NOTE::
|
|
84
|
+
|
|
85
|
+
The quasi-affine and quasi-projective datatype lets one create schemes
|
|
86
|
+
like the multiplicative group scheme
|
|
87
|
+
`\mathbb{G}_m = \mathbb{A}^1\setminus \{(0)\}`
|
|
88
|
+
and the non-affine scheme `\mathbb{A}^2\setminus \{(0,0)\}`. The latter
|
|
89
|
+
is not affine and is not of the form `\mathrm{Spec}(R)`.
|
|
90
|
+
|
|
91
|
+
Point sets
|
|
92
|
+
----------
|
|
93
|
+
|
|
94
|
+
- **PointSets and points over a ring (to do):**
|
|
95
|
+
For algebraic schemes `X/S` and `T/S` over `S`, one can form the point set
|
|
96
|
+
`X(T)` of morphisms from `T\to X` over `S`.
|
|
97
|
+
|
|
98
|
+
A projective space object in the category of schemes is a locally free object
|
|
99
|
+
-- the images of the generator functions *locally* determine a point. Over a
|
|
100
|
+
field, one can choose one of the standard affine patches by the condition
|
|
101
|
+
that a coordinate function `X_i \ne 0`.
|
|
102
|
+
|
|
103
|
+
::
|
|
104
|
+
|
|
105
|
+
sage: PP.<X,Y,Z> = ProjectiveSpace(2, QQ)
|
|
106
|
+
sage: PP
|
|
107
|
+
Projective Space of dimension 2 over Rational Field
|
|
108
|
+
sage: PP(QQ)
|
|
109
|
+
Set of rational points of Projective Space
|
|
110
|
+
of dimension 2 over Rational Field
|
|
111
|
+
sage: PP(QQ)([-2, 3, 5])
|
|
112
|
+
(-2/5 : 3/5 : 1)
|
|
113
|
+
|
|
114
|
+
Over a ring, this is not true anymore. For example, even over an integral
|
|
115
|
+
domain which is not a PID, there may be no *single* affine patch which covers
|
|
116
|
+
a point.
|
|
117
|
+
|
|
118
|
+
::
|
|
119
|
+
|
|
120
|
+
sage: R.<x> = ZZ[]
|
|
121
|
+
sage: S.<t> = R.quo(x^2 + 5)
|
|
122
|
+
sage: P.<X,Y,Z> = ProjectiveSpace(2, S)
|
|
123
|
+
sage: P(S)
|
|
124
|
+
Set of rational points of Projective Space of dimension 2 over
|
|
125
|
+
Univariate Quotient Polynomial Ring in t over Integer Ring with
|
|
126
|
+
modulus x^2 + 5
|
|
127
|
+
|
|
128
|
+
In order to represent the projective point `(2:1+t) = (1-t:3)` we note that
|
|
129
|
+
the first representative is not well-defined at the prime `p = (2,1+t)` and
|
|
130
|
+
the second element is not well-defined at the prime `q = (1-t,3)`, but that
|
|
131
|
+
`p + q = (1)`, so globally the pair of coordinate representatives is
|
|
132
|
+
well-defined.
|
|
133
|
+
|
|
134
|
+
::
|
|
135
|
+
|
|
136
|
+
sage: P([2, 1 + t])
|
|
137
|
+
(2 : t + 1 : 1)
|
|
138
|
+
|
|
139
|
+
In fact, we need a test ``R.ideal([2, 1 + t]) == R.ideal([1])`` in order to make
|
|
140
|
+
this meaningful.
|
|
141
|
+
|
|
142
|
+
Berkovich Analytic Spaces
|
|
143
|
+
-------------------------
|
|
144
|
+
|
|
145
|
+
- **Berkovich Analytic Space (not yet implemented)**
|
|
146
|
+
The construction of analytic spaces from schemes due to Berkovich. Any Berkovich
|
|
147
|
+
space should inherit from :class:`Berkovich`
|
|
148
|
+
|
|
149
|
+
- **Berkovich Analytic Space over Cp**
|
|
150
|
+
A special case of the general Berkovich analytic space construction.
|
|
151
|
+
Affine Berkovich space over `\CC_p` is the set of seminorms on the polynomial
|
|
152
|
+
ring `\CC_p[x]`, while projective Berkovich space over `\CC_p` is the one-point compactification
|
|
153
|
+
of affine Berkovich space `\CC_p`. Points are represented using the classification (due
|
|
154
|
+
to Berkovich) of a corresponding decreasing sequence of disks in `\CC_p`.
|
|
155
|
+
|
|
156
|
+
AUTHORS:
|
|
157
|
+
|
|
158
|
+
- David Kohel, William Stein (2006-01-03): initial version
|
|
159
|
+
|
|
160
|
+
- Andrey Novoseltsev (2010-09-24): updated due to addition of toric varieties
|
|
161
|
+
"""
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
"""
|
|
3
|
+
Plane conics
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
#
|
|
7
|
+
# Sage: Open Source Mathematical Software
|
|
8
|
+
#
|
|
9
|
+
# Copyright (C) 2005 William Stein <was@math.harvard.edu>
|
|
10
|
+
#
|
|
11
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
12
|
+
#
|
|
13
|
+
# This code is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
# General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# The full text of the GPL is available at:
|
|
19
|
+
#
|
|
20
|
+
# https://www.gnu.org/licenses/
|
|
21
|
+
# ****************************************************************************
|
|
22
|
+
from sage.schemes.plane_conics.constructor import Conic
|