passagemath-schemes 10.5.48__cp312-cp312-musllinux_1_2_aarch64.whl → 10.6.47__cp312-cp312-musllinux_1_2_aarch64.whl

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

Potentially problematic release.


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

Files changed (165) hide show
  1. passagemath_schemes/__init__.py +3 -0
  2. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/METADATA +42 -42
  3. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/METADATA.bak +43 -43
  4. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/RECORD +159 -140
  5. passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
  6. passagemath_schemes.libs/{libflint-7dd7ad94.so.19.0.0 → libflint-edf7fb90.so.22.0.0} +0 -0
  7. passagemath_schemes.libs/{libgcc_s-69c45f16.so.1 → libgcc_s-2d945d6c.so.1} +0 -0
  8. passagemath_schemes.libs/{libgmp-8e78bd9b.so.10.5.0 → libgmp-28992bcb.so.10.5.0} +0 -0
  9. passagemath_schemes.libs/{libgmpxx-e6de26f1.so.4.7.0 → libgmpxx-fecb01a9.so.4.7.0} +0 -0
  10. passagemath_schemes.libs/{libmpfr-5ff10580.so.6.2.1 → libmpfr-1fc8ea36.so.6.2.2} +0 -0
  11. passagemath_schemes.libs/{libstdc++-1f1a71be.so.6.0.33 → libstdc++-85f2cd6d.so.6.0.33} +0 -0
  12. sage/all__sagemath_schemes.py +3 -2
  13. sage/databases/all__sagemath_schemes.py +0 -10
  14. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +4 -4
  15. sage/dynamics/arithmetic_dynamics/generic_ds.py +3 -3
  16. sage/dynamics/arithmetic_dynamics/projective_ds.py +6 -6
  17. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-aarch64-linux-musl.so +0 -0
  18. sage/dynamics/arithmetic_dynamics/wehlerK3.py +18 -18
  19. sage/lfunctions/zero_sums.cpython-312-aarch64-linux-musl.so +0 -0
  20. sage/modular/abvar/abvar.py +12 -11
  21. sage/modular/abvar/constructor.py +3 -3
  22. sage/modular/abvar/cuspidal_subgroup.py +5 -6
  23. sage/modular/abvar/finite_subgroup.py +20 -18
  24. sage/modular/abvar/homology.py +1 -2
  25. sage/modular/abvar/homspace.py +1 -1
  26. sage/modular/abvar/lseries.py +3 -3
  27. sage/modular/abvar/morphism.py +1 -1
  28. sage/modular/abvar/torsion_point.py +1 -1
  29. sage/modular/abvar/torsion_subgroup.py +1 -1
  30. sage/modular/arithgroup/arithgroup_element.cpython-312-aarch64-linux-musl.so +0 -0
  31. sage/modular/arithgroup/arithgroup_perm.py +16 -16
  32. sage/modular/arithgroup/congroup.cpython-312-aarch64-linux-musl.so +0 -0
  33. sage/modular/arithgroup/congroup_gamma0.py +2 -2
  34. sage/modular/arithgroup/congroup_gamma1.py +4 -4
  35. sage/modular/arithgroup/congroup_gammaH.py +2 -2
  36. sage/modular/arithgroup/congroup_generic.py +2 -3
  37. sage/modular/arithgroup/congroup_sl2z.py +3 -3
  38. sage/modular/arithgroup/farey_symbol.cpython-312-aarch64-linux-musl.so +0 -0
  39. sage/modular/arithgroup/farey_symbol.pyx +1 -2
  40. sage/modular/btquotients/btquotient.py +4 -5
  41. sage/modular/btquotients/pautomorphicform.py +2 -2
  42. sage/modular/cusps.py +6 -4
  43. sage/modular/cusps_nf.py +7 -8
  44. sage/modular/dirichlet.py +34 -43
  45. sage/modular/drinfeld_modform/element.py +4 -4
  46. sage/modular/drinfeld_modform/ring.py +12 -12
  47. sage/modular/drinfeld_modform/tutorial.py +1 -1
  48. sage/modular/hecke/algebra.py +7 -5
  49. sage/modular/hecke/ambient_module.py +2 -2
  50. sage/modular/hecke/element.py +7 -2
  51. sage/modular/hecke/module.py +9 -9
  52. sage/modular/hecke/submodule.py +6 -8
  53. sage/modular/hypergeometric_misc.cpython-312-aarch64-linux-musl.so +0 -0
  54. sage/modular/hypergeometric_misc.pyx +3 -2
  55. sage/modular/hypergeometric_motive.py +2 -2
  56. sage/modular/local_comp/local_comp.py +19 -11
  57. sage/modular/local_comp/type_space.py +10 -8
  58. sage/modular/modform/ambient.py +4 -3
  59. sage/modular/modform/cuspidal_submodule.py +2 -2
  60. sage/modular/modform/element.py +72 -72
  61. sage/modular/modform/half_integral.py +1 -1
  62. sage/modular/modform/l_series_gross_zagier.py +3 -0
  63. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-aarch64-linux-musl.so +0 -0
  64. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +5 -2
  65. sage/modular/modform/ring.py +10 -12
  66. sage/modular/modform/space.py +18 -21
  67. sage/modular/modform/weight1.py +1 -2
  68. sage/modular/modform_hecketriangle/abstract_ring.py +7 -14
  69. sage/modular/modform_hecketriangle/abstract_space.py +63 -66
  70. sage/modular/modform_hecketriangle/graded_ring_element.py +11 -12
  71. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +82 -84
  72. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +2 -2
  73. sage/modular/modform_hecketriangle/readme.py +9 -11
  74. sage/modular/modform_hecketriangle/series_constructor.py +10 -18
  75. sage/modular/modform_hecketriangle/space.py +29 -30
  76. sage/modular/modform_hecketriangle/subspace.py +9 -7
  77. sage/modular/modsym/all.py +2 -2
  78. sage/modular/modsym/ambient.py +13 -20
  79. sage/modular/modsym/boundary.py +2 -2
  80. sage/modular/modsym/manin_symbol.cpython-312-aarch64-linux-musl.so +0 -0
  81. sage/modular/modsym/manin_symbol_list.py +3 -7
  82. sage/modular/modsym/relation_matrix_pyx.cpython-312-aarch64-linux-musl.so +0 -0
  83. sage/modular/modsym/space.py +10 -22
  84. sage/modular/modsym/subspace.py +5 -7
  85. sage/modular/multiple_zeta.py +11 -13
  86. sage/modular/multiple_zeta_F_algebra.py +4 -6
  87. sage/modular/overconvergent/genus0.py +5 -4
  88. sage/modular/overconvergent/hecke_series.py +2 -2
  89. sage/modular/pollack_stevens/distributions.py +2 -2
  90. sage/modular/pollack_stevens/fund_domain.py +26 -29
  91. sage/modular/pollack_stevens/manin_map.py +15 -10
  92. sage/modular/pollack_stevens/modsym.py +18 -18
  93. sage/modular/quasimodform/element.py +10 -10
  94. sage/modular/quasimodform/ring.py +22 -22
  95. sage/modular/ssmod/ssmod.py +5 -12
  96. sage/rings/polynomial/binary_form_reduce.py +1 -1
  97. sage/schemes/curves/affine_curve.py +4 -4
  98. sage/schemes/curves/plane_curve_arrangement.py +28 -24
  99. sage/schemes/elliptic_curves/BSD.py +1 -1
  100. sage/schemes/elliptic_curves/addition_formulas_ring.py +4 -0
  101. sage/schemes/elliptic_curves/cm.py +1 -1
  102. sage/schemes/elliptic_curves/constructor.py +3 -3
  103. sage/schemes/elliptic_curves/ell_egros.py +1 -1
  104. sage/schemes/elliptic_curves/ell_field.py +57 -46
  105. sage/schemes/elliptic_curves/ell_finite_field.py +138 -26
  106. sage/schemes/elliptic_curves/ell_local_data.py +9 -9
  107. sage/schemes/elliptic_curves/ell_number_field.py +25 -24
  108. sage/schemes/elliptic_curves/ell_point.py +21 -22
  109. sage/schemes/elliptic_curves/ell_rational_field.py +38 -28
  110. sage/schemes/elliptic_curves/formal_group.py +1 -1
  111. sage/schemes/elliptic_curves/heegner.py +11 -8
  112. sage/schemes/elliptic_curves/height.py +26 -23
  113. sage/schemes/elliptic_curves/hom.py +2 -1
  114. sage/schemes/elliptic_curves/hom_composite.py +11 -11
  115. sage/schemes/elliptic_curves/hom_frobenius.py +8 -8
  116. sage/schemes/elliptic_curves/hom_sum.py +7 -1
  117. sage/schemes/elliptic_curves/hom_velusqrt.py +13 -7
  118. sage/schemes/elliptic_curves/homset.py +2 -2
  119. sage/schemes/elliptic_curves/isogeny_small_degree.py +1 -1
  120. sage/schemes/elliptic_curves/mod_poly.py +12 -5
  121. sage/schemes/elliptic_curves/mod_sym_num.cpython-312-aarch64-linux-musl.so +0 -0
  122. sage/schemes/elliptic_curves/padic_lseries.py +25 -13
  123. sage/schemes/elliptic_curves/padics.py +71 -62
  124. sage/schemes/elliptic_curves/period_lattice.py +78 -27
  125. sage/schemes/elliptic_curves/period_lattice_region.cpython-312-aarch64-linux-musl.so +0 -0
  126. sage/schemes/elliptic_curves/sha_tate.py +1 -1
  127. sage/schemes/elliptic_curves/weierstrass_morphism.py +2 -2
  128. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +1 -1
  129. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +1 -1
  130. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +10 -20
  131. sage/schemes/jacobians/abstract_jacobian.py +1 -1
  132. sage/schemes/plane_conics/con_field.py +42 -42
  133. sage/schemes/plane_conics/con_rational_field.py +1 -1
  134. sage/schemes/riemann_surfaces/riemann_surface.py +8 -8
  135. sage_wheels/share/cremona/cremona_mini.db +0 -0
  136. sage_wheels/share/ellcurves/rank0 +30427 -0
  137. sage_wheels/share/ellcurves/rank1 +31871 -0
  138. sage_wheels/share/ellcurves/rank10 +6 -0
  139. sage_wheels/share/ellcurves/rank11 +6 -0
  140. sage_wheels/share/ellcurves/rank12 +1 -0
  141. sage_wheels/share/ellcurves/rank14 +1 -0
  142. sage_wheels/share/ellcurves/rank15 +1 -0
  143. sage_wheels/share/ellcurves/rank17 +1 -0
  144. sage_wheels/share/ellcurves/rank19 +1 -0
  145. sage_wheels/share/ellcurves/rank2 +2388 -0
  146. sage_wheels/share/ellcurves/rank20 +1 -0
  147. sage_wheels/share/ellcurves/rank21 +1 -0
  148. sage_wheels/share/ellcurves/rank22 +1 -0
  149. sage_wheels/share/ellcurves/rank23 +1 -0
  150. sage_wheels/share/ellcurves/rank24 +1 -0
  151. sage_wheels/share/ellcurves/rank28 +1 -0
  152. sage_wheels/share/ellcurves/rank3 +836 -0
  153. sage_wheels/share/ellcurves/rank4 +10 -0
  154. sage_wheels/share/ellcurves/rank5 +5 -0
  155. sage_wheels/share/ellcurves/rank6 +5 -0
  156. sage_wheels/share/ellcurves/rank7 +5 -0
  157. sage_wheels/share/ellcurves/rank8 +6 -0
  158. sage_wheels/share/ellcurves/rank9 +7 -0
  159. passagemath_schemes-10.5.48.dist-info/top_level.txt +0 -2
  160. sage/databases/db_modular_polynomials.py +0 -250
  161. sage/databases/stein_watkins.py +0 -363
  162. sage/modular/modsym/p1list.cpython-312-aarch64-linux-musl.so +0 -0
  163. sage/modular/modsym/p1list.pxd +0 -29
  164. sage/modular/modsym/p1list.pyx +0 -1372
  165. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/WHEEL +0 -0
@@ -37,11 +37,12 @@ from sage.rings.laurent_series_ring import LaurentSeriesRing
37
37
  from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
38
38
  from sage.rings.power_series_ring import PowerSeriesRing
39
39
  from sage.rings.rational_field import RationalField
40
- import sage.schemes.hyperelliptic_curves.hypellfrob
41
- import sage.schemes.hyperelliptic_curves.monsky_washnitzer
42
40
 
43
41
  lazy_import('sage.rings.padics.factory', ['Qp', 'Zp'])
44
-
42
+ lazy_import('sage.schemes.hyperelliptic_curves.hypellfrob', 'hypellfrob')
43
+ lazy_import('sage.schemes.hyperelliptic_curves.monsky_washnitzer',
44
+ ['adjusted_prec', 'matrix_of_frobenius'],
45
+ as_=['mw_adjusted_prec', 'mw_matrix_of_frobenius'])
45
46
 
46
47
  from . import padic_lseries as plseries
47
48
 
@@ -169,7 +170,7 @@ def padic_lseries(self, p, normalize=None, implementation='eclib',
169
170
 
170
171
  Next consider the curve 37b::
171
172
 
172
- sage: # needs database_cremona_mini_ellcurve
173
+ sage: # needs database_cremona_mini_ellcurve sage.graphs
173
174
  sage: e = EllipticCurve('37b')
174
175
  sage: L = e.padic_lseries(3)
175
176
  sage: P = L.series(5)
@@ -184,23 +185,26 @@ def padic_lseries(self, p, normalize=None, implementation='eclib',
184
185
 
185
186
  We can use Sage modular symbols instead to compute the `L`-series::
186
187
 
187
- sage: # needs database_cremona_mini_ellcurve
188
+ sage: # needs database_cremona_mini_ellcurve sage.graphs
188
189
  sage: e = EllipticCurve('11a')
189
190
  sage: L = e.padic_lseries(3, implementation='sage')
190
- sage: L.series(5,prec=10)
191
- 2 + 3 + 3^2 + 2*3^3 + 2*3^5 + 3^6 + O(3^7) + (1 + 3 + 2*3^2 + 3^3 + O(3^4))*T + (1 + 2*3 + O(3^4))*T^2 + (3 + 2*3^2 + O(3^3))*T^3 + (2*3 + 3^2 + O(3^3))*T^4 + (2 + 2*3 + 2*3^2 + O(3^3))*T^5 + (1 + 3^2 + O(3^3))*T^6 + (2 + 3^2 + O(3^3))*T^7 + (2 + 2*3 + 2*3^2 + O(3^3))*T^8 + (2 + O(3^2))*T^9 + O(T^10)
191
+ sage: L.series(5, prec=10)
192
+ 2 + 3 + 3^2 + 2*3^3 + 2*3^5 + 3^6 + O(3^7) + (1 + 3 + 2*3^2 + 3^3 + O(3^4))*T
193
+ + (1 + 2*3 + O(3^4))*T^2 + (3 + 2*3^2 + O(3^3))*T^3 + (2*3 + 3^2 + O(3^3))*T^4
194
+ + (2 + 2*3 + 2*3^2 + O(3^3))*T^5 + (1 + 3^2 + O(3^3))*T^6 + (2 + 3^2 + O(3^3))*T^7
195
+ + (2 + 2*3 + 2*3^2 + O(3^3))*T^8 + (2 + O(3^2))*T^9 + O(T^10)
192
196
 
193
197
  Also the numerical modular symbols can be used.
194
198
  This may allow for much larger conductor in some instances::
195
199
 
196
200
  sage: E = EllipticCurve([101,103])
197
201
  sage: L = E.padic_lseries(5, implementation='num')
198
- sage: L.series(2)
202
+ sage: L.series(2) # needs sage.graphs
199
203
  O(5^4) + (3 + O(5))*T + (1 + O(5))*T^2 + (3 + O(5))*T^3 + O(5)*T^4 + O(T^5)
200
204
 
201
205
  Finally, we can use the overconvergent method of Pollack-Stevens.::
202
206
 
203
- sage: # needs database_cremona_mini_ellcurve
207
+ sage: # needs database_cremona_mini_ellcurve sage.graphs
204
208
  sage: e = EllipticCurve('11a')
205
209
  sage: L = e.padic_lseries(3, implementation='pollackstevens', precision=6)
206
210
  sage: L.series(5)
@@ -278,48 +282,48 @@ def padic_regulator(self, p, prec=20, height=None, check_hypotheses=True):
278
282
 
279
283
  EXAMPLES::
280
284
 
281
- sage: # needs database_cremona_mini_ellcurve
285
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
282
286
  sage: E = EllipticCurve("37a")
283
287
  sage: E.padic_regulator(5, 10)
284
288
  5 + 5^2 + 5^3 + 3*5^6 + 4*5^7 + 5^9 + O(5^10)
285
289
 
286
290
  An anomalous case::
287
291
 
288
- sage: E.padic_regulator(53, 10) # needs database_cremona_mini_ellcurve
292
+ sage: E.padic_regulator(53, 10) # needs database_cremona_mini_ellcurve sage.symbolic
289
293
  26*53^-1 + 30 + 20*53 + 47*53^2 + 10*53^3 + 32*53^4 + 9*53^5 + 22*53^6 + 35*53^7 + 30*53^8 + O(53^9)
290
294
 
291
295
  An anomalous case where the precision drops some::
292
296
 
293
- sage: # needs database_cremona_mini_ellcurve
297
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
294
298
  sage: E = EllipticCurve("5077a")
295
299
  sage: E.padic_regulator(5, 10)
296
300
  5 + 5^2 + 4*5^3 + 2*5^4 + 2*5^5 + 2*5^6 + 4*5^7 + 2*5^8 + 5^9 + O(5^10)
297
301
 
298
302
  Check that answers agree over a range of precisions::
299
303
 
300
- sage: # needs database_cremona_mini_ellcurve
301
- sage: max_prec = 30 # make sure we get past p^2 # long time
302
- sage: full = E.padic_regulator(5, max_prec) # long time
303
- sage: for prec in range(1, max_prec): # long time
304
+ sage: # long time, needs database_cremona_mini_ellcurve sage.symbolic
305
+ sage: max_prec = 30 # make sure we get past p^2
306
+ sage: full = E.padic_regulator(5, max_prec)
307
+ sage: for prec in range(1, max_prec):
304
308
  ....: assert E.padic_regulator(5, prec) == full
305
309
 
306
310
  A case where the generator belongs to the formal group already
307
311
  (:issue:`3632`)::
308
312
 
309
313
  sage: E = EllipticCurve([37,0])
310
- sage: E.padic_regulator(5,10)
314
+ sage: E.padic_regulator(5,10) # needs sage.symbolic
311
315
  2*5^2 + 2*5^3 + 5^4 + 5^5 + 4*5^6 + 3*5^8 + 4*5^9 + O(5^10)
312
316
 
313
317
  The result is not dependent on the model for the curve::
314
318
 
315
319
  sage: E = EllipticCurve([0,0,0,0,2^12*17])
316
320
  sage: Em = E.minimal_model()
317
- sage: E.padic_regulator(7) == Em.padic_regulator(7)
321
+ sage: E.padic_regulator(7) == Em.padic_regulator(7) # needs sage.symbolic
318
322
  True
319
323
 
320
324
  Allow a python int as input::
321
325
 
322
- sage: # needs database_cremona_mini_ellcurve
326
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
323
327
  sage: E = EllipticCurve('37a')
324
328
  sage: E.padic_regulator(int(5))
325
329
  5 + 5^2 + 5^3 + 3*5^6 + 4*5^7 + 5^9 + 5^10 + 3*5^11 + 3*5^12 + 5^13 + 4*5^14 + 5^15 + 2*5^16 + 5^17 + 2*5^18 + 4*5^19 + O(5^20)
@@ -384,14 +388,14 @@ def padic_height_pairing_matrix(self, p, prec=20, height=None, check_hypotheses=
384
388
 
385
389
  EXAMPLES::
386
390
 
387
- sage: # needs database_cremona_mini_ellcurve
391
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
388
392
  sage: E = EllipticCurve("37a")
389
393
  sage: E.padic_height_pairing_matrix(5, 10)
390
394
  [5 + 5^2 + 5^3 + 3*5^6 + 4*5^7 + 5^9 + O(5^10)]
391
395
 
392
396
  A rank two example::
393
397
 
394
- sage: # needs database_cremona_mini_ellcurve
398
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
395
399
  sage: e = EllipticCurve('389a')
396
400
  sage: e._set_gens([e(-1, 1), e(1,0)]) # avoid platform dependent gens
397
401
  sage: e.padic_height_pairing_matrix(5,10)
@@ -400,7 +404,7 @@ def padic_height_pairing_matrix(self, p, prec=20, height=None, check_hypotheses=
400
404
 
401
405
  An anomalous rank 3 example::
402
406
 
403
- sage: # needs database_cremona_mini_ellcurve
407
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
404
408
  sage: e = EllipticCurve("5077a")
405
409
  sage: e._set_gens([e(-1,3), e(2,0), e(4,6)])
406
410
  sage: e.padic_height_pairing_matrix(5,4)
@@ -724,7 +728,7 @@ def padic_height(self, p, prec=20, sigma=None, check_hypotheses=True):
724
728
 
725
729
  EXAMPLES::
726
730
 
727
- sage: # needs database_cremona_mini_ellcurve
731
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
728
732
  sage: E = EllipticCurve("37a")
729
733
  sage: P = E.gens()[0]
730
734
  sage: h = E.padic_height(5, 10)
@@ -733,23 +737,23 @@ def padic_height(self, p, prec=20, sigma=None, check_hypotheses=True):
733
737
 
734
738
  An anomalous case::
735
739
 
736
- sage: h = E.padic_height(53, 10) # needs database_cremona_mini_ellcurve
737
- sage: h(P) # needs database_cremona_mini_ellcurve
740
+ sage: h = E.padic_height(53, 10) # needs database_cremona_mini_ellcurve sage.symbolic
741
+ sage: h(P) # needs database_cremona_mini_ellcurve sage.symbolic
738
742
  26*53^-1 + 30 + 20*53 + 47*53^2 + 10*53^3 + 32*53^4 + 9*53^5 + 22*53^6 + 35*53^7 + 30*53^8 + 17*53^9 + O(53^10)
739
743
 
740
744
  Boundary case::
741
745
 
742
- sage: E.padic_height(5, 3)(P) # needs database_cremona_mini_ellcurve
746
+ sage: E.padic_height(5, 3)(P) # needs database_cremona_mini_ellcurve sage.symbolic
743
747
  5 + 5^2 + O(5^3)
744
748
 
745
749
  A case that works the division polynomial code a little harder::
746
750
 
747
- sage: E.padic_height(5, 10)(5*P) # needs database_cremona_mini_ellcurve
751
+ sage: E.padic_height(5, 10)(5*P) # needs database_cremona_mini_ellcurve sage.symbolic
748
752
  5^3 + 5^4 + 5^5 + 3*5^8 + 4*5^9 + O(5^10)
749
753
 
750
754
  Check that answers agree over a range of precisions::
751
755
 
752
- sage: # needs database_cremona_mini_ellcurve
756
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
753
757
  sage: max_prec = 30 # make sure we get past p^2 # long time
754
758
  sage: full = E.padic_height(5, max_prec)(P) # long time
755
759
  sage: for prec in range(1, max_prec): # long time
@@ -757,7 +761,7 @@ def padic_height(self, p, prec=20, sigma=None, check_hypotheses=True):
757
761
 
758
762
  A supersingular prime for a curve::
759
763
 
760
- sage: # needs database_cremona_mini_ellcurve
764
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
761
765
  sage: E = EllipticCurve('37a')
762
766
  sage: E.is_supersingular(3)
763
767
  True
@@ -771,7 +775,7 @@ def padic_height(self, p, prec=20, sigma=None, check_hypotheses=True):
771
775
 
772
776
  A torsion point in both the good and supersingular cases::
773
777
 
774
- sage: # needs database_cremona_mini_ellcurve
778
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
775
779
  sage: E = EllipticCurve('11a')
776
780
  sage: P = E.torsion_subgroup().gen(0).element(); P
777
781
  (5 : 5 : 1)
@@ -784,6 +788,7 @@ def padic_height(self, p, prec=20, sigma=None, check_hypotheses=True):
784
788
 
785
789
  The result is not dependent on the model for the curve::
786
790
 
791
+ sage: # needs sage.symbolic
787
792
  sage: E = EllipticCurve([0,0,0,0,2^12*17])
788
793
  sage: Em = E.minimal_model()
789
794
  sage: P = E.gens()[0]
@@ -797,7 +802,7 @@ def padic_height(self, p, prec=20, sigma=None, check_hypotheses=True):
797
802
 
798
803
  Check that issue :issue:`20798` is solved::
799
804
 
800
- sage: # needs database_cremona_mini_ellcurve
805
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
801
806
  sage: E = EllipticCurve("91b")
802
807
  sage: h = E.padic_height(7,10)
803
808
  sage: P = E.gen(0)
@@ -924,7 +929,7 @@ def padic_height_via_multiply(self, p, prec=20, E2=None, check_hypotheses=True):
924
929
 
925
930
  EXAMPLES::
926
931
 
927
- sage: # needs database_cremona_mini_ellcurve
932
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
928
933
  sage: E = EllipticCurve("37a")
929
934
  sage: P = E.gens()[0]
930
935
  sage: h = E.padic_height_via_multiply(5, 10)
@@ -933,13 +938,13 @@ def padic_height_via_multiply(self, p, prec=20, E2=None, check_hypotheses=True):
933
938
 
934
939
  An anomalous case::
935
940
 
936
- sage: h = E.padic_height_via_multiply(53, 10) # needs database_cremona_mini_ellcurve
937
- sage: h(P) # needs database_cremona_mini_ellcurve
941
+ sage: h = E.padic_height_via_multiply(53, 10) # needs database_cremona_mini_ellcurve sage.symbolic
942
+ sage: h(P) # needs database_cremona_mini_ellcurve sage.symbolic
938
943
  26*53^-1 + 30 + 20*53 + 47*53^2 + 10*53^3 + 32*53^4 + 9*53^5 + 22*53^6 + 35*53^7 + 30*53^8 + 17*53^9 + O(53^10)
939
944
 
940
945
  Supply the value of E2 manually::
941
946
 
942
- sage: # needs database_cremona_mini_ellcurve
947
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
943
948
  sage: E2 = E.padic_E2(5, 8)
944
949
  sage: E2
945
950
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + O(5^8)
@@ -949,12 +954,12 @@ def padic_height_via_multiply(self, p, prec=20, E2=None, check_hypotheses=True):
949
954
 
950
955
  Boundary case::
951
956
 
952
- sage: E.padic_height_via_multiply(5, 3)(P) # needs database_cremona_mini_ellcurve
957
+ sage: E.padic_height_via_multiply(5, 3)(P) # needs database_cremona_mini_ellcurve sage.symbolic
953
958
  5 + 5^2 + O(5^3)
954
959
 
955
960
  Check that answers agree over a range of precisions::
956
961
 
957
- sage: # needs database_cremona_mini_ellcurve
962
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
958
963
  sage: max_prec = 30 # make sure we get past p^2 # long time
959
964
  sage: full = E.padic_height(5, max_prec)(P) # long time
960
965
  sage: for prec in range(2, max_prec): # long time
@@ -1089,23 +1094,24 @@ def padic_sigma(self, p, N=20, E2=None, check=False, check_hypotheses=True):
1089
1094
 
1090
1095
  EXAMPLES::
1091
1096
 
1092
- sage: EllipticCurve([-1, 1/4]).padic_sigma(5, 10)
1097
+ sage: EllipticCurve([-1, 1/4]).padic_sigma(5, 10) # needs sage.symbolic
1093
1098
  O(5^11) + (1 + O(5^10))*t + O(5^9)*t^2 + (3 + 2*5^2 + 3*5^3 + 3*5^6 + 4*5^7 + O(5^8))*t^3 + O(5^7)*t^4 + (2 + 4*5^2 + 4*5^3 + 5^4 + 5^5 + O(5^6))*t^5 + O(5^5)*t^6 + (2 + 2*5 + 5^2 + 4*5^3 + O(5^4))*t^7 + O(5^3)*t^8 + (1 + 2*5 + O(5^2))*t^9 + O(5)*t^10 + O(t^11)
1094
1099
 
1095
1100
  Run it with a consistency check::
1096
1101
 
1097
- sage: EllipticCurve("37a").padic_sigma(5, 10, check=True)
1102
+ sage: EllipticCurve("37a").padic_sigma(5, 10, check=True) # needs sage.symbolic
1098
1103
  O(5^11) + (1 + O(5^10))*t + O(5^9)*t^2 + (3 + 2*5^2 + 3*5^3 + 3*5^6 + 4*5^7 + O(5^8))*t^3 + (3 + 2*5 + 2*5^2 + 2*5^3 + 2*5^4 + 2*5^5 + 2*5^6 + O(5^7))*t^4 + (2 + 4*5^2 + 4*5^3 + 5^4 + 5^5 + O(5^6))*t^5 + (2 + 3*5 + 5^4 + O(5^5))*t^6 + (4 + 3*5 + 2*5^2 + O(5^4))*t^7 + (2 + 3*5 + 2*5^2 + O(5^3))*t^8 + (4*5 + O(5^2))*t^9 + (1 + O(5))*t^10 + O(t^11)
1099
1104
 
1100
1105
  Boundary cases::
1101
1106
 
1102
- sage: EllipticCurve([1, 1, 1, 1, 1]).padic_sigma(5, 1)
1107
+ sage: EllipticCurve([1, 1, 1, 1, 1]).padic_sigma(5, 1) # needs sage.symbolic
1103
1108
  (1 + O(5))*t + O(t^2)
1104
- sage: EllipticCurve([1, 1, 1, 1, 1]).padic_sigma(5, 2)
1109
+ sage: EllipticCurve([1, 1, 1, 1, 1]).padic_sigma(5, 2) # needs sage.symbolic
1105
1110
  (1 + O(5^2))*t + (3 + O(5))*t^2 + O(t^3)
1106
1111
 
1107
1112
  Supply your very own value of E2::
1108
1113
 
1114
+ sage: # needs sage.symbolic
1109
1115
  sage: X = EllipticCurve("37a")
1110
1116
  sage: my_E2 = X.padic_E2(5, 8)
1111
1117
  sage: my_E2 = my_E2 + 5**5 # oops!!!
@@ -1116,6 +1122,7 @@ def padic_sigma(self, p, N=20, E2=None, check=False, check_hypotheses=True):
1116
1122
 
1117
1123
  ::
1118
1124
 
1125
+ sage: # needs sage.symbolic
1119
1126
  sage: f = EllipticCurve([-1, 3]).padic_sigma(5, 10)
1120
1127
  sage: g = EllipticCurve([-1*(2**4), 3*(2**6)]).padic_sigma(5, 10)
1121
1128
  sage: t = f.parent().gen()
@@ -1128,7 +1135,7 @@ def padic_sigma(self, p, N=20, E2=None, check=False, check_hypotheses=True):
1128
1135
 
1129
1136
  Test that it returns consistent results over a range of precision::
1130
1137
 
1131
- sage: # long time
1138
+ sage: # long time, needs sage.symbolic
1132
1139
  sage: max_N = 30 # get up to at least p^2
1133
1140
  sage: E = EllipticCurve([1, 1, 1, 1, 1])
1134
1141
  sage: p = 5
@@ -1295,13 +1302,13 @@ def padic_sigma_truncated(self, p, N=20, lamb=0, E2=None, check_hypotheses=True)
1295
1302
  EXAMPLES::
1296
1303
 
1297
1304
  sage: E = EllipticCurve([-1, 1/4])
1298
- sage: E.padic_sigma_truncated(5, 10)
1305
+ sage: E.padic_sigma_truncated(5, 10) # needs sage.symbolic
1299
1306
  O(5^11) + (1 + O(5^10))*t + O(5^9)*t^2 + (3 + 2*5^2 + 3*5^3 + 3*5^6 + 4*5^7 + O(5^8))*t^3 + O(5^7)*t^4 + (2 + 4*5^2 + 4*5^3 + 5^4 + 5^5 + O(5^6))*t^5 + O(5^5)*t^6 + (2 + 2*5 + 5^2 + 4*5^3 + O(5^4))*t^7 + O(5^3)*t^8 + (1 + 2*5 + O(5^2))*t^9 + O(5)*t^10 + O(t^11)
1300
1307
 
1301
1308
  Note the precision of the `t^3` coefficient depends only on
1302
1309
  `N`, not on lamb::
1303
1310
 
1304
- sage: E.padic_sigma_truncated(5, 10, lamb=2)
1311
+ sage: E.padic_sigma_truncated(5, 10, lamb=2) # needs sage.symbolic
1305
1312
  O(5^17) + (1 + O(5^14))*t + O(5^11)*t^2 + (3 + 2*5^2 + 3*5^3 + 3*5^6 + 4*5^7 + O(5^8))*t^3 + O(5^5)*t^4 + (2 + O(5^2))*t^5 + O(t^6)
1306
1313
 
1307
1314
  Compare against plain padic_sigma() function over a dense range of
@@ -1309,9 +1316,10 @@ def padic_sigma_truncated(self, p, N=20, lamb=0, E2=None, check_hypotheses=True)
1309
1316
 
1310
1317
  ::
1311
1318
 
1312
- sage: E = EllipticCurve([1, 2, 3, 4, 7]) # long time
1313
- sage: E2 = E.padic_E2(5, 50) # long time
1314
- sage: for N in range(2, 10): # long time
1319
+ sage: # long time, needs sage.symbolic
1320
+ sage: E = EllipticCurve([1, 2, 3, 4, 7])
1321
+ sage: E2 = E.padic_E2(5, 50)
1322
+ sage: for N in range(2, 10):
1315
1323
  ....: for lamb in range(10):
1316
1324
  ....: correct = E.padic_sigma(5, N + 3*lamb, E2=E2)
1317
1325
  ....: compare = E.padic_sigma_truncated(5, N=N, lamb=lamb, E2=E2)
@@ -1462,17 +1470,18 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1462
1470
  EXAMPLES: Here is the example discussed in the paper "Computation
1463
1471
  of p-adic Heights and Log Convergence" (Mazur, Stein, Tate) [MST2006]_::
1464
1472
 
1465
- sage: EllipticCurve([-1, 1/4]).padic_E2(5)
1473
+ sage: EllipticCurve([-1, 1/4]).padic_E2(5) # needs sage.symbolic
1466
1474
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + 4*5^10 + 2*5^11 + 2*5^12 + 2*5^14 + 3*5^15 + 3*5^16 + 3*5^17 + 4*5^18 + 2*5^19 + O(5^20)
1467
1475
 
1468
1476
  Let's try to higher precision (this is the same answer the MAGMA
1469
1477
  implementation gives)::
1470
1478
 
1471
- sage: EllipticCurve([-1, 1/4]).padic_E2(5, 100)
1479
+ sage: EllipticCurve([-1, 1/4]).padic_E2(5, 100) # needs sage.symbolic
1472
1480
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + 4*5^10 + 2*5^11 + 2*5^12 + 2*5^14 + 3*5^15 + 3*5^16 + 3*5^17 + 4*5^18 + 2*5^19 + 4*5^20 + 5^21 + 4*5^22 + 2*5^23 + 3*5^24 + 3*5^26 + 2*5^27 + 3*5^28 + 2*5^30 + 5^31 + 4*5^33 + 3*5^34 + 4*5^35 + 5^36 + 4*5^37 + 4*5^38 + 3*5^39 + 4*5^41 + 2*5^42 + 3*5^43 + 2*5^44 + 2*5^48 + 3*5^49 + 4*5^50 + 2*5^51 + 5^52 + 4*5^53 + 4*5^54 + 3*5^55 + 2*5^56 + 3*5^57 + 4*5^58 + 4*5^59 + 5^60 + 3*5^61 + 5^62 + 4*5^63 + 5^65 + 3*5^66 + 2*5^67 + 5^69 + 2*5^70 + 3*5^71 + 3*5^72 + 5^74 + 5^75 + 5^76 + 3*5^77 + 4*5^78 + 4*5^79 + 2*5^80 + 3*5^81 + 5^82 + 5^83 + 4*5^84 + 3*5^85 + 2*5^86 + 3*5^87 + 5^88 + 2*5^89 + 4*5^90 + 4*5^92 + 3*5^93 + 4*5^94 + 3*5^95 + 2*5^96 + 4*5^97 + 4*5^98 + 2*5^99 + O(5^100)
1473
1481
 
1474
1482
  Check it works at low precision too::
1475
1483
 
1484
+ sage: # needs sage.symbolic
1476
1485
  sage: EllipticCurve([-1, 1/4]).padic_E2(5, 1)
1477
1486
  2 + O(5)
1478
1487
  sage: EllipticCurve([-1, 1/4]).padic_E2(5, 2)
@@ -1487,7 +1496,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1487
1496
 
1488
1497
  ::
1489
1498
 
1490
- sage: EllipticCurve([1, 1, 1, 1, 1]).padic_E2(5, 1)
1499
+ sage: EllipticCurve([1, 1, 1, 1, 1]).padic_E2(5, 1) # needs sage.symbolic
1491
1500
  O(5)
1492
1501
 
1493
1502
  Check it works for different models of the same curve (37a), even
@@ -1498,7 +1507,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1498
1507
  sage: X1 = EllipticCurve([-1, 1/4])
1499
1508
  sage: X1.j_invariant(), X1.discriminant()
1500
1509
  (110592/37, 37)
1501
- sage: X1.padic_E2(5, 10)
1510
+ sage: X1.padic_E2(5, 10) # needs sage.symbolic
1502
1511
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + O(5^10)
1503
1512
 
1504
1513
  ::
@@ -1506,7 +1515,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1506
1515
  sage: X2 = EllipticCurve([0, 0, 1, -1, 0])
1507
1516
  sage: X2.j_invariant(), X2.discriminant()
1508
1517
  (110592/37, 37)
1509
- sage: X2.padic_E2(5, 10)
1518
+ sage: X2.padic_E2(5, 10) # needs sage.symbolic
1510
1519
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + O(5^10)
1511
1520
 
1512
1521
  ::
@@ -1514,7 +1523,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1514
1523
  sage: X3 = EllipticCurve([-1*(2**4), 1/4*(2**6)])
1515
1524
  sage: X3.j_invariant(), X3.discriminant() / 2**12
1516
1525
  (110592/37, 37)
1517
- sage: 2**(-2) * X3.padic_E2(5, 10)
1526
+ sage: 2**(-2) * X3.padic_E2(5, 10) # needs sage.symbolic
1518
1527
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + O(5^10)
1519
1528
 
1520
1529
  ::
@@ -1522,7 +1531,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1522
1531
  sage: X4 = EllipticCurve([-1*(7**4), 1/4*(7**6)])
1523
1532
  sage: X4.j_invariant(), X4.discriminant() / 7**12
1524
1533
  (110592/37, 37)
1525
- sage: 7**(-2) * X4.padic_E2(5, 10)
1534
+ sage: 7**(-2) * X4.padic_E2(5, 10) # needs sage.symbolic
1526
1535
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + O(5^10)
1527
1536
 
1528
1537
  ::
@@ -1530,7 +1539,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1530
1539
  sage: X5 = EllipticCurve([-1*(5**4), 1/4*(5**6)])
1531
1540
  sage: X5.j_invariant(), X5.discriminant() / 5**12
1532
1541
  (110592/37, 37)
1533
- sage: 5**(-2) * X5.padic_E2(5, 10)
1542
+ sage: 5**(-2) * X5.padic_E2(5, 10) # needs sage.symbolic
1534
1543
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + O(5^10)
1535
1544
 
1536
1545
  ::
@@ -1538,11 +1547,12 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1538
1547
  sage: X6 = EllipticCurve([-1/(5**4), 1/4/(5**6)])
1539
1548
  sage: X6.j_invariant(), X6.discriminant() * 5**12
1540
1549
  (110592/37, 37)
1541
- sage: 5**2 * X6.padic_E2(5, 10)
1550
+ sage: 5**2 * X6.padic_E2(5, 10) # needs sage.symbolic
1542
1551
  2 + 4*5 + 2*5^3 + 5^4 + 3*5^5 + 2*5^6 + 5^8 + 3*5^9 + O(5^10)
1543
1552
 
1544
1553
  Test check=True vs check=False::
1545
1554
 
1555
+ sage: # needs sage.symbolic
1546
1556
  sage: EllipticCurve([-1, 1/4]).padic_E2(5, 1, check=False)
1547
1557
  2 + O(5)
1548
1558
  sage: EllipticCurve([-1, 1/4]).padic_E2(5, 1, check=True)
@@ -1554,7 +1564,7 @@ def padic_E2(self, p, prec=20, check=False, check_hypotheses=True, algorithm='au
1554
1564
 
1555
1565
  Here's one using the `p^{1/2}` algorithm::
1556
1566
 
1557
- sage: EllipticCurve([-1, 1/4]).padic_E2(3001, 3, algorithm='sqrtp')
1567
+ sage: EllipticCurve([-1, 1/4]).padic_E2(3001, 3, algorithm='sqrtp') # needs sage.symbolic
1558
1568
  1907 + 2819*3001 + 1124*3001^2 + O(3001^3)
1559
1569
  """
1560
1570
  if self.conductor() % p == 0:
@@ -1624,7 +1634,7 @@ def matrix_of_frobenius(self, p, prec=20, check=False, check_hypotheses=True, al
1624
1634
 
1625
1635
  EXAMPLES::
1626
1636
 
1627
- sage: # needs database_cremona_mini_ellcurve
1637
+ sage: # needs database_cremona_mini_ellcurve sage.symbolic
1628
1638
  sage: E = EllipticCurve('37a1')
1629
1639
  sage: E.matrix_of_frobenius(7)
1630
1640
  [ 2*7 + 4*7^2 + 5*7^4 + 6*7^5 + 6*7^6 + 7^8 + 4*7^9 + 3*7^10 + 2*7^11 + 5*7^12 + 4*7^14 + 7^16 + 2*7^17 + 3*7^18 + 4*7^19 + 3*7^20 + O(7^21) 2 + 3*7 + 6*7^2 + 7^3 + 3*7^4 + 5*7^5 + 3*7^7 + 7^8 + 3*7^9 + 6*7^13 + 7^14 + 7^16 + 5*7^17 + 4*7^18 + 7^19 + O(7^20)]
@@ -1694,7 +1704,7 @@ def matrix_of_frobenius(self, p, prec=20, check=False, check_hypotheses=True, al
1694
1704
  # Need to increase precision a little to compensate for precision
1695
1705
  # losses during the computation. (See monsky_washnitzer.py
1696
1706
  # for more details.)
1697
- adjusted_prec = sage.schemes.hyperelliptic_curves.monsky_washnitzer.adjusted_prec(p, prec)
1707
+ adjusted_prec = mw_adjusted_prec(p, prec)
1698
1708
 
1699
1709
  if check:
1700
1710
  trace = None
@@ -1705,14 +1715,13 @@ def matrix_of_frobenius(self, p, prec=20, check=False, check_hypotheses=True, al
1705
1715
 
1706
1716
  R, x = PolynomialRing(base_ring, 'x').objgen()
1707
1717
  Q = x**3 + base_ring(X.a4()) * x + base_ring(X.a6())
1708
- frob_p = sage.schemes.hyperelliptic_curves.monsky_washnitzer.matrix_of_frobenius(
1709
- Q, p, adjusted_prec, trace)
1718
+ frob_p = mw_matrix_of_frobenius(Q, p, adjusted_prec, trace)
1710
1719
 
1711
1720
  else: # algorithm == "sqrtp"
1712
1721
  p_to_prec = p**prec
1713
1722
  R = PolynomialRing(Integers(), "x")
1714
1723
  Q = R([X.a6() % p_to_prec, X.a4() % p_to_prec, 0, 1])
1715
- frob_p = sage.schemes.hyperelliptic_curves.hypellfrob.hypellfrob(p, prec, Q)
1724
+ frob_p = hypellfrob(p, prec, Q)
1716
1725
 
1717
1726
  # let's force a trace-check since this algorithm is fairly new
1718
1727
  # and we don't want to get caught with our pants down...