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.
- 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.40.dist-info/METADATA +204 -0
- passagemath_schemes-10.6.40.dist-info/METADATA.bak +205 -0
- passagemath_schemes-10.6.40.dist-info/RECORD +314 -0
- passagemath_schemes-10.6.40.dist-info/WHEEL +6 -0
- passagemath_schemes-10.6.40.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-314-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-314-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-314-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-314-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-314-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-314-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-314-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-314-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.cpython-314-darwin.so +0 -0
- sage/modular/modsym/p1list.pxd +29 -0
- sage/modular/modsym/p1list.pyx +1372 -0
- sage/modular/modsym/p1list_nf.py +1241 -0
- sage/modular/modsym/relation_matrix.py +591 -0
- sage/modular/modsym/relation_matrix_pyx.cpython-314-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-314-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-314-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,274 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
# sage.doctest: needs sage.rings.number_field
|
|
3
|
+
"""
|
|
4
|
+
Torsion points on modular abelian varieties
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- William Stein (2007-03)
|
|
9
|
+
|
|
10
|
+
- Peter Bruin (2014-12): move TorsionPoint to a separate file
|
|
11
|
+
"""
|
|
12
|
+
# ****************************************************************************
|
|
13
|
+
# Copyright (C) 2007 William Stein <wstein@gmail.com>
|
|
14
|
+
# Copyright (C) 2014 Peter Bruin <P.J.Bruin@math.leidenuniv.nl>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
18
|
+
# the License, or (at your option) any later version.
|
|
19
|
+
# https://www.gnu.org/licenses/
|
|
20
|
+
# ****************************************************************************
|
|
21
|
+
|
|
22
|
+
from sage.structure.element import ModuleElement
|
|
23
|
+
from sage.structure.richcmp import richcmp, rich_to_bool
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class TorsionPoint(ModuleElement):
|
|
27
|
+
r"""
|
|
28
|
+
An element of a finite subgroup of a modular abelian variety.
|
|
29
|
+
|
|
30
|
+
INPUT:
|
|
31
|
+
|
|
32
|
+
- ``parent`` -- a finite subgroup of a modular abelian variety
|
|
33
|
+
|
|
34
|
+
- ``element`` -- a `\QQ`-vector space element that represents
|
|
35
|
+
this element in terms of the ambient rational homology
|
|
36
|
+
|
|
37
|
+
- ``check`` -- boolean (default: ``True``); whether to check that
|
|
38
|
+
element is in the appropriate vector space
|
|
39
|
+
|
|
40
|
+
EXAMPLES:
|
|
41
|
+
|
|
42
|
+
The following calls the :class:`TorsionPoint` constructor implicitly::
|
|
43
|
+
|
|
44
|
+
sage: J = J0(11)
|
|
45
|
+
sage: G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
|
|
46
|
+
Finite subgroup with invariants [15] over QQbar of Abelian variety J0(11) of dimension 1
|
|
47
|
+
sage: type(G.0)
|
|
48
|
+
<class 'sage.modular.abvar.finite_subgroup.FiniteSubgroup_lattice_with_category.element_class'>
|
|
49
|
+
"""
|
|
50
|
+
def __init__(self, parent, element, check=True):
|
|
51
|
+
"""
|
|
52
|
+
Initialize ``self``.
|
|
53
|
+
|
|
54
|
+
EXAMPLES::
|
|
55
|
+
|
|
56
|
+
sage: J = J0(11)
|
|
57
|
+
sage: G = J.finite_subgroup([[1/2,0], [0,1/2]])
|
|
58
|
+
sage: TestSuite(G).run() # long time
|
|
59
|
+
"""
|
|
60
|
+
ModuleElement.__init__(self, parent)
|
|
61
|
+
if check:
|
|
62
|
+
if element not in parent.abelian_variety().vector_space():
|
|
63
|
+
raise TypeError("element must be a vector in the abelian variety's rational homology (embedded in the ambient Jacobian product)")
|
|
64
|
+
if element.denominator() == 1:
|
|
65
|
+
element = element.parent().zero_vector()
|
|
66
|
+
self.__element = element
|
|
67
|
+
|
|
68
|
+
def element(self):
|
|
69
|
+
r"""
|
|
70
|
+
Return a vector over `\QQ` defining ``self``.
|
|
71
|
+
|
|
72
|
+
OUTPUT:
|
|
73
|
+
|
|
74
|
+
- A vector in the rational homology of the ambient modular
|
|
75
|
+
Jacobian variety.
|
|
76
|
+
|
|
77
|
+
EXAMPLES:
|
|
78
|
+
|
|
79
|
+
We create some elements of `J_0(11)`::
|
|
80
|
+
|
|
81
|
+
sage: J = J0(11)
|
|
82
|
+
sage: G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
|
|
83
|
+
Finite subgroup with invariants [15] over QQbar of
|
|
84
|
+
Abelian variety J0(11) of dimension 1
|
|
85
|
+
sage: G.0.element()
|
|
86
|
+
(1/3, 0)
|
|
87
|
+
|
|
88
|
+
The underlying element is a vector over the rational numbers::
|
|
89
|
+
|
|
90
|
+
sage: v = (G.0-G.1).element(); v
|
|
91
|
+
(1/3, -1/5)
|
|
92
|
+
sage: type(v)
|
|
93
|
+
<class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
|
|
94
|
+
"""
|
|
95
|
+
return self.__element
|
|
96
|
+
|
|
97
|
+
def _repr_(self):
|
|
98
|
+
r"""
|
|
99
|
+
Return a string representation of ``self``.
|
|
100
|
+
|
|
101
|
+
.. NOTE::
|
|
102
|
+
|
|
103
|
+
Since they are represented as equivalences classes of
|
|
104
|
+
rational homology modulo integral homology, we represent
|
|
105
|
+
an element corresponding to `v` in the rational homology
|
|
106
|
+
by ``[v]``.
|
|
107
|
+
|
|
108
|
+
EXAMPLES::
|
|
109
|
+
|
|
110
|
+
sage: J = J0(11)
|
|
111
|
+
sage: G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
|
|
112
|
+
Finite subgroup with invariants [15] over QQbar of Abelian variety J0(11) of dimension 1
|
|
113
|
+
sage: G.0._repr_()
|
|
114
|
+
'[(1/3, 0)]'
|
|
115
|
+
"""
|
|
116
|
+
return '[%s]' % self.__element
|
|
117
|
+
|
|
118
|
+
def _add_(self, other):
|
|
119
|
+
"""
|
|
120
|
+
Add two finite subgroup elements with the same parent. This is
|
|
121
|
+
called implicitly by +.
|
|
122
|
+
|
|
123
|
+
EXAMPLES::
|
|
124
|
+
|
|
125
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
126
|
+
sage: G.0._add_(G.1)
|
|
127
|
+
[(1/3, 1/5)]
|
|
128
|
+
sage: G.0 + G.1
|
|
129
|
+
[(1/3, 1/5)]
|
|
130
|
+
"""
|
|
131
|
+
P = self.parent()
|
|
132
|
+
return P.element_class(P, self.__element + other.__element, check=False)
|
|
133
|
+
|
|
134
|
+
def _sub_(self, other):
|
|
135
|
+
"""
|
|
136
|
+
Subtract two finite subgroup elements with the same parent. This is
|
|
137
|
+
called implicitly by +.
|
|
138
|
+
|
|
139
|
+
EXAMPLES::
|
|
140
|
+
|
|
141
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
142
|
+
sage: G.0._sub_(G.1)
|
|
143
|
+
[(1/3, -1/5)]
|
|
144
|
+
sage: G.0 - G.1
|
|
145
|
+
[(1/3, -1/5)]
|
|
146
|
+
"""
|
|
147
|
+
P = self.parent()
|
|
148
|
+
return P.element_class(P, self.__element - other.__element, check=False)
|
|
149
|
+
|
|
150
|
+
def _neg_(self):
|
|
151
|
+
"""
|
|
152
|
+
Negate a finite subgroup element.
|
|
153
|
+
|
|
154
|
+
EXAMPLES::
|
|
155
|
+
|
|
156
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
157
|
+
sage: G.0._neg_()
|
|
158
|
+
[(-1/3, 0)]
|
|
159
|
+
"""
|
|
160
|
+
P = self.parent()
|
|
161
|
+
return P.element_class(P, -self.__element, check=False)
|
|
162
|
+
|
|
163
|
+
def _rmul_(self, left):
|
|
164
|
+
"""
|
|
165
|
+
Left multiply a finite subgroup element by an integer.
|
|
166
|
+
|
|
167
|
+
EXAMPLES::
|
|
168
|
+
|
|
169
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
170
|
+
sage: G.0._rmul_(2)
|
|
171
|
+
[(2/3, 0)]
|
|
172
|
+
sage: 2*G.0
|
|
173
|
+
[(2/3, 0)]
|
|
174
|
+
"""
|
|
175
|
+
P = self.parent()
|
|
176
|
+
return P.element_class(P, left * self.__element, check=False)
|
|
177
|
+
|
|
178
|
+
def _lmul_(self, right):
|
|
179
|
+
"""
|
|
180
|
+
Right multiply a finite subgroup element by an integer.
|
|
181
|
+
|
|
182
|
+
EXAMPLES::
|
|
183
|
+
|
|
184
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
185
|
+
sage: G.0._lmul_(2)
|
|
186
|
+
[(2/3, 0)]
|
|
187
|
+
sage: G.0 * 2
|
|
188
|
+
[(2/3, 0)]
|
|
189
|
+
"""
|
|
190
|
+
P = self.parent()
|
|
191
|
+
return P.element_class(P, self.__element * right, check=False)
|
|
192
|
+
|
|
193
|
+
def _richcmp_(self, right, op):
|
|
194
|
+
"""
|
|
195
|
+
Compare ``self`` and ``right``.
|
|
196
|
+
|
|
197
|
+
INPUT:
|
|
198
|
+
|
|
199
|
+
- ``self``, ``right`` -- elements of the same finite abelian
|
|
200
|
+
variety subgroup
|
|
201
|
+
|
|
202
|
+
- ``op`` -- comparison operator (see :mod:`sage.structure.richcmp`)
|
|
203
|
+
|
|
204
|
+
OUTPUT: boolean
|
|
205
|
+
|
|
206
|
+
EXAMPLES::
|
|
207
|
+
|
|
208
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
209
|
+
sage: G.0 > G.1
|
|
210
|
+
True
|
|
211
|
+
sage: G.0 == G.0
|
|
212
|
+
True
|
|
213
|
+
sage: 3*G.0 == 0
|
|
214
|
+
True
|
|
215
|
+
sage: 3*G.0 == 5*G.1
|
|
216
|
+
True
|
|
217
|
+
|
|
218
|
+
We make sure things that should not be equal are not::
|
|
219
|
+
|
|
220
|
+
sage: H = J0(14).finite_subgroup([[1/3,0]])
|
|
221
|
+
sage: G.0 == H.0
|
|
222
|
+
False
|
|
223
|
+
sage: G.0
|
|
224
|
+
[(1/3, 0)]
|
|
225
|
+
sage: H.0
|
|
226
|
+
[(1/3, 0)]
|
|
227
|
+
"""
|
|
228
|
+
A = self.parent().abelian_variety()
|
|
229
|
+
from sage.rings.rational_field import QQ
|
|
230
|
+
if self.__element.change_ring(QQ) - right.__element.change_ring(QQ) in A.lattice():
|
|
231
|
+
return rich_to_bool(op, 0)
|
|
232
|
+
return richcmp(self.__element, right.__element, op)
|
|
233
|
+
|
|
234
|
+
def additive_order(self):
|
|
235
|
+
"""
|
|
236
|
+
Return the additive order of ``self``.
|
|
237
|
+
|
|
238
|
+
EXAMPLES::
|
|
239
|
+
|
|
240
|
+
sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
|
|
241
|
+
sage: G.0.additive_order()
|
|
242
|
+
3
|
|
243
|
+
sage: G.1.additive_order()
|
|
244
|
+
5
|
|
245
|
+
sage: (G.0 + G.1).additive_order()
|
|
246
|
+
15
|
|
247
|
+
sage: (3*G.0).additive_order()
|
|
248
|
+
1
|
|
249
|
+
"""
|
|
250
|
+
return self._relative_element().denominator()
|
|
251
|
+
|
|
252
|
+
def _relative_element(self):
|
|
253
|
+
"""
|
|
254
|
+
Return coordinates of ``self`` on a basis for the integral
|
|
255
|
+
homology of the containing abelian variety.
|
|
256
|
+
|
|
257
|
+
OUTPUT: vector
|
|
258
|
+
|
|
259
|
+
EXAMPLES::
|
|
260
|
+
|
|
261
|
+
sage: # needs sage.libs.flint
|
|
262
|
+
sage: A = J0(43)[1]; A
|
|
263
|
+
Simple abelian subvariety 43b(1,43) of dimension 2 of J0(43)
|
|
264
|
+
sage: C = A.cuspidal_subgroup(); C
|
|
265
|
+
Finite subgroup with invariants [7] over QQ of
|
|
266
|
+
Simple abelian subvariety 43b(1,43) of dimension 2 of J0(43)
|
|
267
|
+
sage: x = C.0; x
|
|
268
|
+
[(0, 1/7, 0, 6/7, 0, 5/7)]
|
|
269
|
+
sage: x._relative_element()
|
|
270
|
+
(0, 1/7, 6/7, 5/7)
|
|
271
|
+
"""
|
|
272
|
+
# check=False prevents testing that the element is really in
|
|
273
|
+
# the lattice, not just in the corresponding QQ-vector space.
|
|
274
|
+
return self.parent().abelian_variety().lattice().coordinate_vector(self.__element, check=False)
|