passagemath-schemes 10.8.1a4__cp314-cp314t-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.8.1a4.dist-info/METADATA +203 -0
- passagemath_schemes-10.8.1a4.dist-info/METADATA.bak +204 -0
- passagemath_schemes-10.8.1a4.dist-info/RECORD +312 -0
- passagemath_schemes-10.8.1a4.dist-info/WHEEL +6 -0
- passagemath_schemes-10.8.1a4.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 +9556 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314t-darwin.so +0 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +2578 -0
- sage/lfunctions/all.py +18 -0
- sage/lfunctions/dokchitser.py +727 -0
- sage/lfunctions/pari.py +971 -0
- sage/lfunctions/zero_sums.cpython-314t-darwin.so +0 -0
- sage/lfunctions/zero_sums.pyx +1847 -0
- sage/modular/abvar/abvar.py +5132 -0
- sage/modular/abvar/abvar_ambient_jacobian.py +414 -0
- sage/modular/abvar/abvar_newform.py +246 -0
- sage/modular/abvar/all.py +8 -0
- sage/modular/abvar/constructor.py +187 -0
- sage/modular/abvar/cuspidal_subgroup.py +371 -0
- sage/modular/abvar/finite_subgroup.py +896 -0
- sage/modular/abvar/homology.py +721 -0
- sage/modular/abvar/homspace.py +989 -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 +741 -0
- sage/modular/all.py +43 -0
- sage/modular/arithgroup/all.py +20 -0
- sage/modular/arithgroup/arithgroup_element.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/arithgroup_element.pyx +474 -0
- sage/modular/arithgroup/arithgroup_generic.py +1406 -0
- sage/modular/arithgroup/arithgroup_perm.py +2692 -0
- sage/modular/arithgroup/congroup.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/congroup.pyx +334 -0
- sage/modular/arithgroup/congroup_gamma.py +361 -0
- sage/modular/arithgroup/congroup_gamma0.py +692 -0
- sage/modular/arithgroup/congroup_gamma1.py +659 -0
- sage/modular/arithgroup/congroup_gammaH.py +1491 -0
- sage/modular/arithgroup/congroup_generic.py +630 -0
- sage/modular/arithgroup/congroup_sl2z.py +266 -0
- sage/modular/arithgroup/farey_symbol.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1067 -0
- sage/modular/arithgroup/tests.py +425 -0
- sage/modular/btquotients/all.py +4 -0
- sage/modular/btquotients/btquotient.py +3736 -0
- sage/modular/btquotients/pautomorphicform.py +2564 -0
- sage/modular/buzzard.py +100 -0
- sage/modular/congroup.py +29 -0
- sage/modular/congroup_element.py +13 -0
- sage/modular/cusps.py +1107 -0
- sage/modular/cusps_nf.py +1270 -0
- sage/modular/dims.py +571 -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 +1076 -0
- sage/modular/hecke/algebra.py +725 -0
- sage/modular/hecke/all.py +19 -0
- sage/modular/hecke/ambient_module.py +994 -0
- sage/modular/hecke/degenmap.py +119 -0
- sage/modular/hecke/element.py +302 -0
- sage/modular/hecke/hecke_operator.py +736 -0
- sage/modular/hecke/homspace.py +185 -0
- sage/modular/hecke/module.py +1744 -0
- sage/modular/hecke/morphism.py +139 -0
- sage/modular/hecke/submodule.py +970 -0
- sage/modular/hypergeometric_misc.cpython-314t-darwin.so +0 -0
- sage/modular/hypergeometric_misc.pxd +4 -0
- sage/modular/hypergeometric_misc.pyx +166 -0
- sage/modular/hypergeometric_motive.py +2020 -0
- sage/modular/local_comp/all.py +2 -0
- sage/modular/local_comp/liftings.py +292 -0
- sage/modular/local_comp/local_comp.py +1070 -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 +817 -0
- sage/modular/modform/ambient_R.py +177 -0
- sage/modular/modform/ambient_eps.py +306 -0
- sage/modular/modform/ambient_g0.py +120 -0
- sage/modular/modform/ambient_g1.py +199 -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 +487 -0
- sage/modular/modform/eisenstein_submodule.py +663 -0
- sage/modular/modform/element.py +4105 -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 +127 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314t-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 +1859 -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 +380 -0
- sage/modular/modform/weight1.py +221 -0
- sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
- sage/modular/modform_hecketriangle/abstract_space.py +2527 -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 +3349 -0
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1426 -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 +3844 -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-314t-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 +1291 -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-314t-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 +376 -0
- sage/modular/multiple_zeta.py +2635 -0
- sage/modular/multiple_zeta_F_algebra.py +789 -0
- sage/modular/overconvergent/all.py +6 -0
- sage/modular/overconvergent/genus0.py +1879 -0
- sage/modular/overconvergent/hecke_series.py +1187 -0
- sage/modular/overconvergent/weightspace.py +776 -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 +856 -0
- sage/modular/pollack_stevens/modsym.py +1590 -0
- sage/modular/pollack_stevens/padic_lseries.py +417 -0
- sage/modular/pollack_stevens/sigma0.py +534 -0
- sage/modular/pollack_stevens/space.py +1078 -0
- sage/modular/quasimodform/all.py +3 -0
- sage/modular/quasimodform/element.py +846 -0
- sage/modular/quasimodform/ring.py +826 -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 +700 -0
- sage/schemes/curves/affine_curve.py +2924 -0
- sage/schemes/curves/all.py +33 -0
- sage/schemes/curves/closed_point.py +434 -0
- sage/schemes/curves/constructor.py +397 -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 +3203 -0
- sage/schemes/curves/weighted_projective_curve.py +106 -0
- sage/schemes/curves/zariski_vankampen.py +1931 -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 +991 -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 +1103 -0
- sage/schemes/elliptic_curves/constructor.py +1530 -0
- sage/schemes/elliptic_curves/ec_database.py +175 -0
- sage/schemes/elliptic_curves/ell_curve_isogeny.py +3971 -0
- sage/schemes/elliptic_curves/ell_egros.py +457 -0
- sage/schemes/elliptic_curves/ell_field.py +2837 -0
- sage/schemes/elliptic_curves/ell_finite_field.py +3249 -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 +4944 -0
- sage/schemes/elliptic_curves/ell_rational_field.py +7184 -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 +1663 -0
- sage/schemes/elliptic_curves/gp_simon.py +152 -0
- sage/schemes/elliptic_curves/heegner.py +7328 -0
- sage/schemes/elliptic_curves/height.py +2108 -0
- sage/schemes/elliptic_curves/hom.py +1788 -0
- sage/schemes/elliptic_curves/hom_composite.py +1084 -0
- sage/schemes/elliptic_curves/hom_fractional.py +544 -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 +681 -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 +1523 -0
- sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
- sage/schemes/elliptic_curves/jacobian.py +247 -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 +915 -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-314t-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-314t-darwin.so +0 -0
- sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
- sage/schemes/elliptic_curves/saturation.py +716 -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 +369 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1948 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +936 -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 +312 -0
- sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
- sage/schemes/hyperelliptic_curves/jacobian_generic.py +437 -0
- sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
- sage/schemes/hyperelliptic_curves/jacobian_morphism.py +878 -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 +3863 -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 +581 -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 +53 -0
- sage/schemes/riemann_surfaces/all.py +1 -0
- sage/schemes/riemann_surfaces/riemann_surface.py +4177 -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,417 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
# sage.doctest: needs sage.rings.padics
|
|
3
|
+
r"""
|
|
4
|
+
`p`-adic `L`-series attached to overconvergent eigensymbols
|
|
5
|
+
|
|
6
|
+
An overconvergent eigensymbol gives rise to a `p`-adic `L`-series,
|
|
7
|
+
which is essentially defined as the evaluation of the eigensymbol at
|
|
8
|
+
the path `0 \rightarrow \infty`. The resulting distribution on `\ZZ_p`
|
|
9
|
+
can be restricted to `\ZZ_p^\times`, thus giving the measure attached
|
|
10
|
+
to the sought `p`-adic `L`-series.
|
|
11
|
+
|
|
12
|
+
All this is carefully explained in [PS2011]_.
|
|
13
|
+
"""
|
|
14
|
+
# ****************************************************************************
|
|
15
|
+
# Copyright (C) 2012 Robert Pollack <rpollack@math.bu.edu>
|
|
16
|
+
#
|
|
17
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
18
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
19
|
+
# the License, or (at your option) any later version.
|
|
20
|
+
# https://www.gnu.org/licenses/
|
|
21
|
+
# ****************************************************************************
|
|
22
|
+
|
|
23
|
+
from sage.arith.misc import kronecker, binomial
|
|
24
|
+
from sage.misc.lazy_import import lazy_import
|
|
25
|
+
from sage.rings.integer_ring import ZZ
|
|
26
|
+
from sage.rings.padics.precision_error import PrecisionError
|
|
27
|
+
from sage.rings.power_series_ring import PowerSeriesRing
|
|
28
|
+
from sage.rings.rational_field import QQ
|
|
29
|
+
from sage.structure.sage_object import SageObject
|
|
30
|
+
|
|
31
|
+
lazy_import('sage.rings.padics.factory', 'Qp', as_='pAdicField')
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class pAdicLseries(SageObject):
|
|
35
|
+
r"""
|
|
36
|
+
The `p`-adic `L`-series associated to an overconvergent eigensymbol.
|
|
37
|
+
|
|
38
|
+
INPUT:
|
|
39
|
+
|
|
40
|
+
- ``symb`` -- an overconvergent eigensymbol
|
|
41
|
+
- ``gamma`` -- topological generator of `1 + p\ZZ_p`
|
|
42
|
+
(default: `1+p` or 5 if `p=2`)
|
|
43
|
+
- ``quadratic_twist`` -- conductor of quadratic twist `\chi` (default: 1)
|
|
44
|
+
- ``precision`` -- if ``None`` (default) is specified,
|
|
45
|
+
the correct precision bound is computed and the answer
|
|
46
|
+
is returned modulo that accuracy
|
|
47
|
+
|
|
48
|
+
EXAMPLES::
|
|
49
|
+
|
|
50
|
+
sage: E = EllipticCurve('37a')
|
|
51
|
+
sage: p = 5
|
|
52
|
+
sage: prec = 4
|
|
53
|
+
sage: L = E.padic_lseries(p, implementation='pollackstevens', precision=prec) # long time
|
|
54
|
+
sage: L[1] # long time
|
|
55
|
+
1 + 4*5 + 2*5^2 + O(5^3)
|
|
56
|
+
sage: L.series(3) # long time
|
|
57
|
+
O(5^4) + (1 + 4*5 + 2*5^2 + O(5^3))*T + (3 + O(5^2))*T^2 + O(T^3)
|
|
58
|
+
|
|
59
|
+
::
|
|
60
|
+
|
|
61
|
+
sage: # needs eclib
|
|
62
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import pAdicLseries
|
|
63
|
+
sage: E = EllipticCurve('20a')
|
|
64
|
+
sage: phi = E.pollack_stevens_modular_symbol()
|
|
65
|
+
sage: Phi = phi.p_stabilize_and_lift(3, 4) # long time
|
|
66
|
+
sage: L = pAdicLseries(Phi) # long time
|
|
67
|
+
sage: L.series(4) # long time
|
|
68
|
+
2*3 + O(3^4) + (3 + O(3^2))*T + (2 + O(3))*T^2 + O(3^0)*T^3 + O(T^4)
|
|
69
|
+
|
|
70
|
+
An example of a `p`-adic `L`-series associated to a modular
|
|
71
|
+
abelian surface. This is not tested as it takes too long.::
|
|
72
|
+
|
|
73
|
+
sage: from sage.modular.pollack_stevens.space import ps_modsym_from_simple_modsym_space
|
|
74
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import pAdicLseries
|
|
75
|
+
sage: A = ModularSymbols(103,2,1).cuspidal_submodule().new_subspace().decomposition()[0]
|
|
76
|
+
sage: p = 19
|
|
77
|
+
sage: prec = 4
|
|
78
|
+
sage: phi = ps_modsym_from_simple_modsym_space(A)
|
|
79
|
+
sage: ap = phi.Tq_eigenvalue(p,prec)
|
|
80
|
+
sage: c1,c2 = phi.completions(p,prec)
|
|
81
|
+
sage: phi1,psi1 = c1
|
|
82
|
+
sage: phi2,psi2 = c2
|
|
83
|
+
sage: phi1p = phi1.p_stabilize_and_lift(p,ap = psi1(ap), M = prec) # not tested - too long
|
|
84
|
+
sage: L1 = pAdicLseries(phi1p) # not tested - too long
|
|
85
|
+
sage: phi2p = phi2.p_stabilize_and_lift(p,ap = psi2(ap), M = prec) # not tested - too long
|
|
86
|
+
sage: L2 = pAdicLseries(phi2p) # not tested - too long
|
|
87
|
+
sage: L1[1]*L2[1] # not tested - too long
|
|
88
|
+
13 + 9*19 + 18*19^2 + O(19^3)
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
def __init__(self, symb, gamma=None, quadratic_twist=1, precision=None):
|
|
92
|
+
r"""
|
|
93
|
+
Initialize the class.
|
|
94
|
+
|
|
95
|
+
EXAMPLES::
|
|
96
|
+
|
|
97
|
+
sage: # needs eclib
|
|
98
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import pAdicLseries
|
|
99
|
+
sage: E = EllipticCurve('11a3')
|
|
100
|
+
sage: phi = E.pollack_stevens_modular_symbol()
|
|
101
|
+
sage: p = 11
|
|
102
|
+
sage: prec = 3
|
|
103
|
+
sage: Phi = phi.lift(p, prec,eigensymbol=True) # long time
|
|
104
|
+
sage: L = pAdicLseries(Phi) # long time
|
|
105
|
+
sage: L.series(3) # long time
|
|
106
|
+
O(11^3) + (2 + 5*11 + O(11^2))*T + (10 + O(11))*T^2 + O(T^3)
|
|
107
|
+
|
|
108
|
+
sage: TestSuite(L).run() # long time
|
|
109
|
+
"""
|
|
110
|
+
self._coefficients = {}
|
|
111
|
+
|
|
112
|
+
if symb.parent().prime() is None:
|
|
113
|
+
raise ValueError("Not a p-adic overconvergent modular symbol.")
|
|
114
|
+
|
|
115
|
+
self._symb = symb
|
|
116
|
+
|
|
117
|
+
if gamma is None:
|
|
118
|
+
p = self._symb.parent().prime()
|
|
119
|
+
if p == 2:
|
|
120
|
+
gamma = 1 + 4
|
|
121
|
+
else:
|
|
122
|
+
gamma = 1 + self._symb.parent().prime()
|
|
123
|
+
|
|
124
|
+
self._gamma = gamma
|
|
125
|
+
self._quadratic_twist = quadratic_twist
|
|
126
|
+
self._precision = precision
|
|
127
|
+
self._cinf = ZZ.one() # is set when called for an elliptic curve
|
|
128
|
+
|
|
129
|
+
def __getitem__(self, n):
|
|
130
|
+
r"""
|
|
131
|
+
Return the `n`-th coefficient of the `p`-adic `L`-series.
|
|
132
|
+
|
|
133
|
+
EXAMPLES::
|
|
134
|
+
|
|
135
|
+
sage: E = EllipticCurve('14a5')
|
|
136
|
+
sage: L = E.padic_lseries(7,implementation='pollackstevens',precision=5) # long time
|
|
137
|
+
sage: L[0] # long time
|
|
138
|
+
O(7^5)
|
|
139
|
+
sage: L[1] # long time
|
|
140
|
+
5 + 5*7 + 2*7^2 + 2*7^3 + O(7^4)
|
|
141
|
+
"""
|
|
142
|
+
if n in self._coefficients:
|
|
143
|
+
return self._coefficients[n]
|
|
144
|
+
else:
|
|
145
|
+
p = self.prime()
|
|
146
|
+
symb = self.symbol()
|
|
147
|
+
# ap = symb.Tq_eigenvalue(p)
|
|
148
|
+
gamma = self._gamma
|
|
149
|
+
precision = self._precision
|
|
150
|
+
|
|
151
|
+
M = symb.precision_relative()
|
|
152
|
+
K = pAdicField(p, M)
|
|
153
|
+
dn = 0
|
|
154
|
+
if n == 0:
|
|
155
|
+
precision = M
|
|
156
|
+
lb = [1] + [0] * (M - 1)
|
|
157
|
+
else:
|
|
158
|
+
lb = log_gamma_binomial(p, gamma, n, 2 * M)
|
|
159
|
+
if precision is None:
|
|
160
|
+
precision = min(j + lb[j].valuation(p)
|
|
161
|
+
for j in range(M, len(lb)))
|
|
162
|
+
lb = [lb[a] for a in range(M)]
|
|
163
|
+
|
|
164
|
+
for j, cjn in enumerate(lb):
|
|
165
|
+
temp = sum((ZZ(K.teichmuller(a)) ** (-j)) *
|
|
166
|
+
self._basic_integral(a, j) for a in range(1, p))
|
|
167
|
+
dn += cjn * temp
|
|
168
|
+
self._coefficients[n] = dn.add_bigoh(precision)
|
|
169
|
+
self._coefficients[n] /= self._cinf
|
|
170
|
+
return self._coefficients[n]
|
|
171
|
+
|
|
172
|
+
def __eq__(self, other):
|
|
173
|
+
r"""
|
|
174
|
+
Compare ``self`` and ``other``.
|
|
175
|
+
|
|
176
|
+
EXAMPLES::
|
|
177
|
+
|
|
178
|
+
sage: E = EllipticCurve('11a')
|
|
179
|
+
sage: L = E.padic_lseries(11,implementation='pollackstevens',precision=6) # long time
|
|
180
|
+
sage: L == loads(dumps(L)) # indirect doctest, long time
|
|
181
|
+
True
|
|
182
|
+
"""
|
|
183
|
+
if not isinstance(other, pAdicLseries):
|
|
184
|
+
return False
|
|
185
|
+
|
|
186
|
+
return (self._symb == other._symb and
|
|
187
|
+
self._quadratic_twist == other._quadratic_twist and
|
|
188
|
+
self._gamma == other._gamma and
|
|
189
|
+
self._precision == other._precision)
|
|
190
|
+
|
|
191
|
+
def __ne__(self, other):
|
|
192
|
+
r"""
|
|
193
|
+
Compare ``self`` and ``other``.
|
|
194
|
+
|
|
195
|
+
EXAMPLES::
|
|
196
|
+
|
|
197
|
+
sage: E = EllipticCurve('11a')
|
|
198
|
+
sage: L = E.padic_lseries(11,implementation='pollackstevens',precision=6) # long time
|
|
199
|
+
sage: L != L # long time
|
|
200
|
+
False
|
|
201
|
+
"""
|
|
202
|
+
return not self.__eq__(other)
|
|
203
|
+
|
|
204
|
+
def symbol(self):
|
|
205
|
+
r"""
|
|
206
|
+
Return the overconvergent modular symbol.
|
|
207
|
+
|
|
208
|
+
EXAMPLES::
|
|
209
|
+
|
|
210
|
+
sage: # needs eclib
|
|
211
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import pAdicLseries
|
|
212
|
+
sage: E = EllipticCurve('21a4')
|
|
213
|
+
sage: phi = E.pollack_stevens_modular_symbol()
|
|
214
|
+
sage: Phi = phi.p_stabilize_and_lift(2,5) # long time
|
|
215
|
+
sage: L = pAdicLseries(Phi) # long time
|
|
216
|
+
sage: L.symbol() # long time
|
|
217
|
+
Modular symbol of level 42 with values in Space of 2-adic
|
|
218
|
+
distributions with k=0 action and precision cap 15
|
|
219
|
+
sage: L.symbol() is Phi # long time
|
|
220
|
+
True
|
|
221
|
+
"""
|
|
222
|
+
return self._symb
|
|
223
|
+
|
|
224
|
+
def prime(self):
|
|
225
|
+
r"""
|
|
226
|
+
Return the prime `p` as in `p`-adic `L`-series.
|
|
227
|
+
|
|
228
|
+
EXAMPLES::
|
|
229
|
+
|
|
230
|
+
sage: E = EllipticCurve('19a')
|
|
231
|
+
sage: L = E.padic_lseries(19, implementation='pollackstevens',precision=6) # long time
|
|
232
|
+
sage: L.prime() # long time
|
|
233
|
+
19
|
|
234
|
+
"""
|
|
235
|
+
return self._symb.parent().prime()
|
|
236
|
+
|
|
237
|
+
def quadratic_twist(self):
|
|
238
|
+
r"""
|
|
239
|
+
Return the discriminant of the quadratic twist.
|
|
240
|
+
|
|
241
|
+
EXAMPLES::
|
|
242
|
+
|
|
243
|
+
sage: # needs eclib
|
|
244
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import pAdicLseries
|
|
245
|
+
sage: E = EllipticCurve('37a')
|
|
246
|
+
sage: phi = E.pollack_stevens_modular_symbol()
|
|
247
|
+
sage: Phi = phi.lift(37,4)
|
|
248
|
+
sage: L = pAdicLseries(Phi, quadratic_twist=-3)
|
|
249
|
+
sage: L.quadratic_twist()
|
|
250
|
+
-3
|
|
251
|
+
"""
|
|
252
|
+
return self._quadratic_twist
|
|
253
|
+
|
|
254
|
+
def _repr_(self):
|
|
255
|
+
r"""
|
|
256
|
+
Return the string representation.
|
|
257
|
+
|
|
258
|
+
EXAMPLES::
|
|
259
|
+
|
|
260
|
+
sage: E = EllipticCurve('14a2')
|
|
261
|
+
sage: L = E.padic_lseries(3, implementation='pollackstevens', precision=4) # long time
|
|
262
|
+
sage: L._repr_() # long time
|
|
263
|
+
'3-adic L-series of Modular symbol of level 42 with values in
|
|
264
|
+
Space of 3-adic distributions with k=0 action and precision cap 8'
|
|
265
|
+
"""
|
|
266
|
+
return "%s-adic L-series of %s" % (self.prime(), self.symbol())
|
|
267
|
+
|
|
268
|
+
def series(self, prec=5):
|
|
269
|
+
r"""
|
|
270
|
+
Return the ``prec``-th approximation to the `p`-adic `L`-series
|
|
271
|
+
associated to ``self``, as a power series in `T` (corresponding to
|
|
272
|
+
`\gamma-1` with `\gamma` the chosen generator of `1+p\ZZ_p`).
|
|
273
|
+
|
|
274
|
+
INPUT:
|
|
275
|
+
|
|
276
|
+
- ``prec`` -- (default: 5) the precision of the power series
|
|
277
|
+
|
|
278
|
+
EXAMPLES::
|
|
279
|
+
|
|
280
|
+
sage: E = EllipticCurve('14a2')
|
|
281
|
+
sage: p = 3
|
|
282
|
+
sage: prec = 6
|
|
283
|
+
sage: L = E.padic_lseries(p,implementation='pollackstevens',precision=prec) # long time
|
|
284
|
+
sage: L.series(4) # long time
|
|
285
|
+
2*3 + 3^4 + 3^5 + O(3^6) + (2*3 + 3^2 + O(3^4))*T + (2*3 + O(3^2))*T^2 + (3 + O(3^2))*T^3 + O(T^4)
|
|
286
|
+
|
|
287
|
+
sage: E = EllipticCurve("15a3")
|
|
288
|
+
sage: L = E.padic_lseries(5,implementation='pollackstevens',precision=15) # long time
|
|
289
|
+
sage: L.series(3) # long time
|
|
290
|
+
O(5^15) + (2 + 4*5^2 + 3*5^3 + 5^5 + 2*5^6 + 3*5^7 + 3*5^8 + 2*5^9 + 2*5^10 + 3*5^11 + 5^12 + O(5^13))*T + (4*5 + 4*5^3 + 3*5^4 + 4*5^5 + 3*5^6 + 2*5^7 + 5^8 + 4*5^9 + 3*5^10 + O(5^11))*T^2 + O(T^3)
|
|
291
|
+
|
|
292
|
+
sage: E = EllipticCurve("79a1")
|
|
293
|
+
sage: L = E.padic_lseries(2,implementation='pollackstevens',precision=10) # not tested
|
|
294
|
+
sage: L.series(4) # not tested
|
|
295
|
+
O(2^9) + (2^3 + O(2^4))*T + O(2^0)*T^2 + (O(2^-3))*T^3 + O(T^4)
|
|
296
|
+
"""
|
|
297
|
+
p = self.prime()
|
|
298
|
+
M = self.symbol().precision_relative()
|
|
299
|
+
K = pAdicField(p, M)
|
|
300
|
+
R = PowerSeriesRing(K, names='T')
|
|
301
|
+
return R([self[i] for i in range(prec)]).add_bigoh(prec)
|
|
302
|
+
|
|
303
|
+
def interpolation_factor(self, ap, chip=1, psi=None):
|
|
304
|
+
r"""
|
|
305
|
+
Return the interpolation factor associated to ``self``.
|
|
306
|
+
This is the `p`-adic multiplier that which appears in
|
|
307
|
+
the interpolation formula of the `p`-adic `L`-function. It
|
|
308
|
+
has the form `(1-\alpha_p^{-1})^2`, where `\alpha_p` is the
|
|
309
|
+
unit root of `X^2 - \psi(a_p) \chi(p) X + p`.
|
|
310
|
+
|
|
311
|
+
INPUT:
|
|
312
|
+
|
|
313
|
+
- ``ap`` -- the eigenvalue of the Up operator
|
|
314
|
+
|
|
315
|
+
- ``chip`` -- the value of the nebentype at `p` (default: 1)
|
|
316
|
+
|
|
317
|
+
- ``psi`` -- a twisting character (default: ``None``)
|
|
318
|
+
|
|
319
|
+
OUTPUT: a `p`-adic number
|
|
320
|
+
|
|
321
|
+
EXAMPLES::
|
|
322
|
+
|
|
323
|
+
sage: E = EllipticCurve('19a2')
|
|
324
|
+
sage: L = E.padic_lseries(3,implementation='pollackstevens',precision=6) # long time
|
|
325
|
+
sage: ap = E.ap(3) # long time
|
|
326
|
+
sage: L.interpolation_factor(ap) # long time
|
|
327
|
+
3^2 + 3^3 + 2*3^5 + 2*3^6 + O(3^7)
|
|
328
|
+
|
|
329
|
+
Comparing against a different implementation::
|
|
330
|
+
|
|
331
|
+
sage: # needs eclib
|
|
332
|
+
sage: L = E.padic_lseries(3)
|
|
333
|
+
sage: (1-1/L.alpha(prec=4))^2
|
|
334
|
+
3^2 + 3^3 + O(3^5)
|
|
335
|
+
"""
|
|
336
|
+
M = self.symbol().precision_relative()
|
|
337
|
+
p = self.prime()
|
|
338
|
+
if p == 2:
|
|
339
|
+
R = pAdicField(2, M + 1)
|
|
340
|
+
else:
|
|
341
|
+
R = pAdicField(p, M)
|
|
342
|
+
if psi is not None:
|
|
343
|
+
ap = psi(ap)
|
|
344
|
+
ap = ap * chip
|
|
345
|
+
sdisc = R(ap ** 2 - 4 * p).sqrt()
|
|
346
|
+
v0 = (R(ap) + sdisc) / 2
|
|
347
|
+
v1 = (R(ap) - sdisc) / 2
|
|
348
|
+
if v0.valuation() > 0:
|
|
349
|
+
v0, v1 = v1, v0
|
|
350
|
+
alpha = v0
|
|
351
|
+
return (1 - 1 / alpha) ** 2
|
|
352
|
+
|
|
353
|
+
def _basic_integral(self, a, j):
|
|
354
|
+
r"""
|
|
355
|
+
Return `\int_{a+pZ_p} (z-{a})^j d\Phi(0-infty)`.
|
|
356
|
+
|
|
357
|
+
See formula in section 9.2 of [PS2011]_
|
|
358
|
+
|
|
359
|
+
INPUT:
|
|
360
|
+
|
|
361
|
+
- ``a`` -- integer in range(p)
|
|
362
|
+
- ``j`` -- integer in range(self.symbol().precision_relative())
|
|
363
|
+
|
|
364
|
+
EXAMPLES::
|
|
365
|
+
|
|
366
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import pAdicLseries
|
|
367
|
+
sage: E = EllipticCurve('11a3')
|
|
368
|
+
sage: L = E.padic_lseries(5, implementation='pollackstevens', precision=4) #long time
|
|
369
|
+
sage: L._basic_integral(1,2) # long time
|
|
370
|
+
2*5^2 + 5^3 + O(5^4)
|
|
371
|
+
"""
|
|
372
|
+
symb = self.symbol()
|
|
373
|
+
M = symb.precision_relative()
|
|
374
|
+
if j > M:
|
|
375
|
+
raise PrecisionError("Too many moments requested")
|
|
376
|
+
p = self.prime()
|
|
377
|
+
ap = symb.Tq_eigenvalue(p)
|
|
378
|
+
D = self._quadratic_twist
|
|
379
|
+
ap = ap * kronecker(D, p)
|
|
380
|
+
K = pAdicField(p, M)
|
|
381
|
+
symb_twisted = symb.evaluate_twisted(a, D)
|
|
382
|
+
return sum(ZZ(j).binomial(r) *
|
|
383
|
+
((a - ZZ(K.teichmuller(a))) ** (j - r)) *
|
|
384
|
+
(p ** r) *
|
|
385
|
+
symb_twisted.moment(r) for r in range(j + 1)) / ap
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
def log_gamma_binomial(p, gamma, n, M):
|
|
389
|
+
r"""
|
|
390
|
+
Return the list of coefficients in the power series
|
|
391
|
+
expansion (up to precision `M`) of `\binom{\log_p(z)/\log_p(\gamma)}{n}`
|
|
392
|
+
|
|
393
|
+
INPUT:
|
|
394
|
+
|
|
395
|
+
- ``p`` -- prime
|
|
396
|
+
- ``gamma`` -- topological generator, e.g. `1+p`
|
|
397
|
+
- ``n`` -- nonnegative integer
|
|
398
|
+
- ``M`` -- precision
|
|
399
|
+
|
|
400
|
+
OUTPUT:
|
|
401
|
+
|
|
402
|
+
The list of coefficients in the power series expansion of
|
|
403
|
+
`\binom{\log_p(z)/\log_p(\gamma)}{n}`
|
|
404
|
+
|
|
405
|
+
EXAMPLES::
|
|
406
|
+
|
|
407
|
+
sage: from sage.modular.pollack_stevens.padic_lseries import log_gamma_binomial
|
|
408
|
+
sage: log_gamma_binomial(5,1+5,2,4)
|
|
409
|
+
[0, -3/205, 651/84050, -223/42025]
|
|
410
|
+
sage: log_gamma_binomial(5,1+5,3,4)
|
|
411
|
+
[0, 2/205, -223/42025, 95228/25845375]
|
|
412
|
+
"""
|
|
413
|
+
S = PowerSeriesRing(QQ, 'z')
|
|
414
|
+
L = S([0] + [ZZ(-1)**j / j for j in range(1, M)]) # log_p(1+z)
|
|
415
|
+
loggam = L.O(M) / L(gamma - 1)
|
|
416
|
+
# log_{gamma}(1+z)= log_p(1+z)/log_p(gamma)
|
|
417
|
+
return binomial(loggam, n).list()
|