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
@@ -7,7 +7,7 @@ Let `E_2` be the weight 2 Eisenstein series defined by
7
7
 
8
8
  .. MATH::
9
9
 
10
- E_2(z) = 1 - \frac{2k}{B_k} \sum_{n=1}^{\infty} \sigma(n) q^n
10
+ E_2(z) = 1 - 24 \sum_{n=1}^{\infty} \sigma(n) q^n
11
11
 
12
12
  where `\sigma` is the sum of divisors function and `q = \mathrm{exp}(2\pi i z)`
13
13
  is the classical parameter at infinity, with `\mathrm{im}(z)>0`. This weight 2
@@ -16,7 +16,7 @@ modularity condition:
16
16
 
17
17
  .. MATH::
18
18
 
19
- z^2 E_2(-1/z) = E_2(z) + \frac{2k}{4\pi i B_k z}.
19
+ z^2 E_2(-1/z) = E_2(z) + \frac{6}{\pi i z}.
20
20
 
21
21
  `E_2` is a quasimodular form of weight 2. General quasimodular forms of given
22
22
  weight can also be defined. We denote by `QM` the graded ring of quasimodular
@@ -47,9 +47,9 @@ EXAMPLES::
47
47
  sage: QM.category()
48
48
  Category of commutative graded algebras over Rational Field
49
49
  sage: QM.gens()
50
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
50
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
51
51
  1 + 240*q + 2160*q^2 + 6720*q^3 + 17520*q^4 + 30240*q^5 + O(q^6),
52
- 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6)]
52
+ 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6))
53
53
  sage: E2 = QM.0; E4 = QM.1; E6 = QM.2
54
54
  sage: E2 * E4 + E6
55
55
  2 - 288*q - 20304*q^2 - 185472*q^3 - 855216*q^4 - 2697408*q^5 + O(q^6)
@@ -94,10 +94,10 @@ The other generators correspond to the generators given by the method
94
94
  :meth:`sage.modular.modform.ring.ModularFormsRing.gens`::
95
95
 
96
96
  sage: QM.gens()
97
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
97
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
98
98
  1 + 6*q + 18*q^2 + 24*q^3 + 42*q^4 + 6*q^5 + O(q^6),
99
99
  1 + 240*q^5 + O(q^6),
100
- q + 10*q^3 + 28*q^4 + 35*q^5 + O(q^6)]
100
+ q + 10*q^3 + 28*q^4 + 35*q^5 + O(q^6))
101
101
  sage: QM.modular_forms_subring().gens()
102
102
  [1 + 6*q + 18*q^2 + 24*q^3 + 42*q^4 + 6*q^5 + O(q^6),
103
103
  1 + 240*q^5 + O(q^6),
@@ -202,9 +202,9 @@ class QuasiModularForms(Parent, UniqueRepresentation):
202
202
  sage: QM = QuasiModularForms(1); QM
203
203
  Ring of Quasimodular Forms for Modular Group SL(2,Z) over Rational Field
204
204
  sage: QM.gens()
205
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
205
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
206
206
  1 + 240*q + 2160*q^2 + 6720*q^3 + 17520*q^4 + 30240*q^5 + O(q^6),
207
- 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6)]
207
+ 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6))
208
208
 
209
209
  It is possible to access the weight 2 Eisenstein series::
210
210
 
@@ -456,9 +456,9 @@ class QuasiModularForms(Parent, UniqueRepresentation):
456
456
  """
457
457
  return self(self.__polynomial_subring.gen())
458
458
 
459
- def gens(self):
459
+ def gens(self) -> tuple:
460
460
  r"""
461
- Return a list of generators of the quasimodular forms ring.
461
+ Return a tuple of generators of the quasimodular forms ring.
462
462
 
463
463
  Note that the generators of the modular forms subring are the one given
464
464
  by the method :meth:`sage.modular.modform.ring.ModularFormsRing.gen_forms`
@@ -467,30 +467,30 @@ class QuasiModularForms(Parent, UniqueRepresentation):
467
467
 
468
468
  sage: QM = QuasiModularForms(1)
469
469
  sage: QM.gens()
470
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
470
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
471
471
  1 + 240*q + 2160*q^2 + 6720*q^3 + 17520*q^4 + 30240*q^5 + O(q^6),
472
- 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6)]
472
+ 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6))
473
473
  sage: QM.modular_forms_subring().gen_forms()
474
474
  [1 + 240*q + 2160*q^2 + 6720*q^3 + 17520*q^4 + 30240*q^5 + O(q^6),
475
475
  1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6)]
476
476
  sage: QM = QuasiModularForms(5)
477
477
  sage: QM.gens()
478
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
478
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
479
479
  1 + 6*q + 18*q^2 + 24*q^3 + 42*q^4 + 6*q^5 + O(q^6),
480
480
  1 + 240*q^5 + O(q^6),
481
- q + 10*q^3 + 28*q^4 + 35*q^5 + O(q^6)]
481
+ q + 10*q^3 + 28*q^4 + 35*q^5 + O(q^6))
482
482
 
483
483
  An alias of this method is ``generators``::
484
484
 
485
485
  sage: QuasiModularForms(1).generators()
486
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
486
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
487
487
  1 + 240*q + 2160*q^2 + 6720*q^3 + 17520*q^4 + 30240*q^5 + O(q^6),
488
- 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6)]
488
+ 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6))
489
489
  """
490
490
  gen_list = [self.weight_2_eisenstein_series()]
491
- for f in self.__modular_forms_subring.gen_forms():
492
- gen_list.append(self(f))
493
- return gen_list
491
+ gen_list.extend(self(f)
492
+ for f in self.__modular_forms_subring.gen_forms())
493
+ return tuple(gen_list)
494
494
 
495
495
  generators = gens # alias
496
496
 
@@ -531,7 +531,7 @@ class QuasiModularForms(Parent, UniqueRepresentation):
531
531
  sage: QM.4
532
532
  Traceback (most recent call last):
533
533
  ...
534
- IndexError: list index out of range
534
+ IndexError: tuple index out of range
535
535
  """
536
536
  return self.gens()[n]
537
537
 
@@ -570,9 +570,9 @@ class QuasiModularForms(Parent, UniqueRepresentation):
570
570
  EXAMPLES::
571
571
 
572
572
  sage: QuasiModularForms(1).some_elements()
573
- [1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
573
+ (1 - 24*q - 72*q^2 - 96*q^3 - 168*q^4 - 144*q^5 + O(q^6),
574
574
  1 + 240*q + 2160*q^2 + 6720*q^3 + 17520*q^4 + 30240*q^5 + O(q^6),
575
- 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6)]
575
+ 1 - 504*q - 16632*q^2 - 122976*q^3 - 532728*q^4 - 1575504*q^5 + O(q^6))
576
576
  """
577
577
  return self.gens()
578
578
 
@@ -72,6 +72,7 @@ AUTHORS:
72
72
  from sage.arith.misc import kronecker, next_prime
73
73
  from sage.categories.fields import Fields
74
74
  from sage.matrix.matrix_space import MatrixSpace
75
+ from sage.misc.cachefunc import cached_method
75
76
  from sage.misc.lazy_import import lazy_import
76
77
  from sage.modular.arithgroup.all import Gamma0
77
78
  from sage.modular.hecke.module import HeckeModule_free_module
@@ -489,6 +490,7 @@ class SupersingularModule(HeckeModule_free_module):
489
490
  """
490
491
  return ZZ**self.dimension()
491
492
 
493
+ @cached_method
492
494
  def dimension(self):
493
495
  r"""
494
496
  Return the dimension of the space of modular forms of weight 2
@@ -524,16 +526,10 @@ class SupersingularModule(HeckeModule_free_module):
524
526
 
525
527
  - Iftikhar Burhanuddin -- burhanud@usc.edu
526
528
  """
527
- try:
528
- return self.__dimension
529
- except AttributeError:
530
- pass
531
529
  if self.__level == 1:
532
530
  G = Gamma0(self.__prime)
533
- self.__dimension = G.dimension_modular_forms(2)
534
- else:
535
- raise NotImplementedError
536
- return self.__dimension
531
+ return G.dimension_modular_forms(2)
532
+ raise NotImplementedError
537
533
 
538
534
  rank = dimension
539
535
 
@@ -609,6 +605,7 @@ class SupersingularModule(HeckeModule_free_module):
609
605
  """
610
606
  return 2
611
607
 
608
+ @cached_method
612
609
  def supersingular_points(self):
613
610
  r"""
614
611
  Compute the supersingular j-invariants over the
@@ -649,10 +646,6 @@ class SupersingularModule(HeckeModule_free_module):
649
646
 
650
647
  - Iftikhar Burhanuddin -- burhanud@usc.edu
651
648
  """
652
- try:
653
- return (self._ss_points_dic, self._ss_points)
654
- except AttributeError:
655
- pass
656
649
  Fp2 = self.__finite_field
657
650
  level = self.__level
658
651
  prime = Fp2.characteristic()
@@ -193,7 +193,7 @@ def covariant_z0(F, z0_cov=False, prec=53, emb=None, error_limit=0.000001):
193
193
  FM = f # for Julia's invariant
194
194
  else:
195
195
  # solve the minimization problem for 'true' covariant
196
- CF = ComplexIntervalField(prec=prec) # keeps trac of our precision error
196
+ CF = ComplexIntervalField(prec=prec) # keeps track of our precision error
197
197
  z = CF(z)
198
198
  FM = F(list(mat * vector(R.gens()))).subs({R.gen(1): 1}).univariate_polynomial()
199
199
  from sage.rings.polynomial.complex_roots import complex_roots
@@ -1593,10 +1593,10 @@ class AffineCurve_field(AffineCurve, AlgebraicScheme_subscheme_affine_field):
1593
1593
  t = 0
1594
1594
  # loop through the patches and blow up each until no patch has singular points
1595
1595
  while not_resolved:
1596
- [BC, t_maps, pi, pts] = [res[t][0], res[t][1], res[t][2], res[t][3]]
1596
+ BC, t_maps, pi, pts = res[t][0], res[t][1], res[t][2], res[t][3]
1597
1597
  # check if there are any singular points in this patch
1598
1598
  if not pts:
1599
- t = t + 1
1599
+ t += 1
1600
1600
  if t == len(res):
1601
1601
  not_resolved = False
1602
1602
  continue
@@ -1763,7 +1763,7 @@ class AffinePlaneCurve_field(AffinePlaneCurve, AffineCurve_field):
1763
1763
  """
1764
1764
  _point = AffinePlaneCurvePoint_field
1765
1765
 
1766
- def has_vertical_asymptote(self):
1766
+ def has_vertical_asymptote(self) -> bool:
1767
1767
  """
1768
1768
  Check if the curve is not a line and has vertical asymptotes.
1769
1769
 
@@ -1783,7 +1783,7 @@ class AffinePlaneCurve_field(AffinePlaneCurve, AffineCurve_field):
1783
1783
  dxy = f.coefficient({y: dy}).degree()
1784
1784
  return dxy > 0 and f.degree() > 1
1785
1785
 
1786
- def is_vertical_line(self):
1786
+ def is_vertical_line(self) -> bool:
1787
1787
  """
1788
1788
  Check if the curve is a vertical line.
1789
1789
 
@@ -44,10 +44,11 @@ AUTHORS:
44
44
  # it under the terms of the GNU General Public License as published by
45
45
  # the Free Software Foundation, either version 2 of the License, or
46
46
  # (at your option) any later version.
47
- # http://www.gnu.org/licenses/
47
+ # https://www.gnu.org/licenses/
48
48
  # *****************************************************************************
49
-
50
49
  from itertools import combinations
50
+ from typing import Any
51
+
51
52
  from sage.categories.sets_cat import Sets
52
53
  from sage.misc.abstract_method import abstract_method
53
54
  from sage.misc.cachefunc import cached_method
@@ -74,7 +75,7 @@ class PlaneCurveArrangementElement(Element):
74
75
  """
75
76
  An ordered plane curve arrangement.
76
77
  """
77
- def __init__(self, parent, curves, check=True):
78
+ def __init__(self, parent, curves, check=True) -> None:
78
79
  """
79
80
  Construct a plane curve arrangement.
80
81
 
@@ -123,7 +124,7 @@ class PlaneCurveArrangementElement(Element):
123
124
  """
124
125
  return self._curves[i]
125
126
 
126
- def __hash__(self):
127
+ def __hash__(self) -> int:
127
128
  r"""
128
129
  TESTS::
129
130
 
@@ -133,7 +134,7 @@ class PlaneCurveArrangementElement(Element):
133
134
  """
134
135
  return hash(self.curves())
135
136
 
136
- def ncurves(self):
137
+ def ncurves(self) -> int:
137
138
  r"""
138
139
  Return the number of curves in the arrangement.
139
140
 
@@ -152,7 +153,7 @@ class PlaneCurveArrangementElement(Element):
152
153
 
153
154
  __len__ = ncurves
154
155
 
155
- def curves(self):
156
+ def curves(self) -> tuple:
156
157
  r"""
157
158
  Return the curves in the arrangement as a tuple.
158
159
 
@@ -173,7 +174,7 @@ class PlaneCurveArrangementElement(Element):
173
174
  """
174
175
  return self._curves
175
176
 
176
- def _repr_(self):
177
+ def _repr_(self) -> str:
177
178
  r"""
178
179
  String representation for a curve arrangement.
179
180
 
@@ -198,11 +199,11 @@ class PlaneCurveArrangementElement(Element):
198
199
  curves = ', '.join(h.defining_polynomial()._repr_()
199
200
  for h in self._curves)
200
201
  return 'Arrangement ({}) in {}'.format(curves,
201
- self.parent().ambient_space())
202
+ self.parent().ambient_space())
202
203
  return 'Arrangement of {} curves in {}'.format(len(self),
203
- self.parent().ambient_space())
204
+ self.parent().ambient_space())
204
205
 
205
- def _richcmp_(self, other, op):
206
+ def _richcmp_(self, other, op) -> bool:
206
207
  """
207
208
  Compare two curve arrangements.
208
209
 
@@ -340,7 +341,7 @@ class PlaneCurveArrangementElement(Element):
340
341
  """
341
342
  return self._curves[0].defining_polynomial().parent()
342
343
 
343
- def defining_polynomials(self):
344
+ def defining_polynomials(self) -> tuple:
344
345
  r"""
345
346
  Return the defining polynomials of the elements of ``self``.
346
347
 
@@ -366,7 +367,7 @@ class PlaneCurveArrangementElement(Element):
366
367
  """
367
368
  return prod(self.defining_polynomials())
368
369
 
369
- def have_common_factors(self):
370
+ def have_common_factors(self) -> bool:
370
371
  r"""
371
372
  Check if the curves have common factors.
372
373
 
@@ -392,7 +393,7 @@ class PlaneCurveArrangementElement(Element):
392
393
  - ``clean`` -- boolean (default: ``False``); if ``False``
393
394
  and there are common factors it returns ``None`` and
394
395
  a warning message. If ``True``, the common factors are kept
395
- only in the first occurance.
396
+ only in the first occurrence.
396
397
 
397
398
  EXAMPLES::
398
399
 
@@ -431,7 +432,7 @@ class AffinePlaneCurveArrangementElement(PlaneCurveArrangementElement):
431
432
  """
432
433
  An ordered affine plane curve arrangement.
433
434
  """
434
- def __init__(self, parent, curves, check=True):
435
+ def __init__(self, parent, curves, check=True) -> None:
435
436
  """
436
437
  Construct an ordered affine plane curve arrangement.
437
438
 
@@ -587,7 +588,7 @@ class AffinePlaneCurveArrangementElement(PlaneCurveArrangementElement):
587
588
  self._meridians_nonsimpl_nonvertical = dic
588
589
  return G
589
590
 
590
- def meridians(self, simplified=True, vertical=True):
591
+ def meridians(self, simplified=True, vertical=True) -> dict:
591
592
  r"""
592
593
  Return the meridians of each irreducible component.
593
594
 
@@ -637,8 +638,9 @@ class AffinePlaneCurveArrangementElement(PlaneCurveArrangementElement):
637
638
  def braid_monodromy(self, vertical=True):
638
639
  r"""
639
640
  Return the braid monodromy of the complement of the union
640
- of affine plane curves in `\CC^2`. If there are vertical
641
- asymptotes a change of variable is done.
641
+ of affine plane curves in `\CC^2`.
642
+
643
+ If there are vertical asymptotes a change of variable is done.
642
644
 
643
645
  INPUT:
644
646
 
@@ -648,7 +650,7 @@ class AffinePlaneCurveArrangementElement(PlaneCurveArrangementElement):
648
650
 
649
651
  OUTPUT:
650
652
 
651
- A braid monodromy with dictionnaries identifying strands with components
653
+ A braid monodromy with dictionaries identifying strands with components
652
654
  and braids with vertical lines.
653
655
 
654
656
  .. NOTE::
@@ -811,7 +813,7 @@ class ProjectivePlaneCurveArrangementElement(PlaneCurveArrangementElement):
811
813
  def fundamental_group(self, simplified=True):
812
814
  r"""
813
815
  Return the fundamental group of the complement of the union
814
- of an arragnement of projective plane curves
816
+ of an arrangement of projective plane curves
815
817
  in the projective plane.
816
818
 
817
819
  INPUT:
@@ -924,7 +926,7 @@ class ProjectivePlaneCurveArrangementElement(PlaneCurveArrangementElement):
924
926
  self._meridians_nonsimpl = dic1
925
927
  return G
926
928
 
927
- def meridians(self, simplified=True):
929
+ def meridians(self, simplified=True) -> dict:
928
930
  r"""
929
931
  Return the meridians of each irreducible component.
930
932
 
@@ -994,7 +996,7 @@ class PlaneCurveArrangements(UniqueRepresentation, Parent):
994
996
  Element = PlaneCurveArrangementElement
995
997
 
996
998
  @staticmethod
997
- def __classcall__(cls, base, names=()):
999
+ def __classcall__(cls, base, names: tuple[str, ...] = ()):
998
1000
  """
999
1001
  Normalize the inputs to ensure a unique representation.
1000
1002
 
@@ -1008,7 +1010,7 @@ class PlaneCurveArrangements(UniqueRepresentation, Parent):
1008
1010
  names = normalize_names(len(names), names)
1009
1011
  return super().__classcall__(cls, base, names)
1010
1012
 
1011
- def __init__(self, base_ring, names=()):
1013
+ def __init__(self, base_ring, names: tuple[str, ...] = ()):
1012
1014
  """
1013
1015
  Initialize ``self``.
1014
1016
 
@@ -1064,6 +1066,8 @@ class PlaneCurveArrangements(UniqueRepresentation, Parent):
1064
1066
  sage: L.change_ring(QQ) is L
1065
1067
  True
1066
1068
  """
1069
+ # return self.__class__(base_ring, names=self.variable_names())
1070
+ # line below is ugly but line above does not work
1067
1071
  return self.__reduce__()[1][0](base_ring, names=self.variable_names())
1068
1072
 
1069
1073
  @abstract_method
@@ -1127,7 +1131,7 @@ class PlaneCurveArrangements(UniqueRepresentation, Parent):
1127
1131
  arg = tuple(args)
1128
1132
  ambient_space = self.ambient_space()
1129
1133
  R = ambient_space.coordinate_ring()
1130
- curves = ()
1134
+ curves: tuple[Any, ...] = ()
1131
1135
  for h in arg:
1132
1136
  try:
1133
1137
  ambient = h.ambient_space()
@@ -1176,7 +1180,7 @@ class PlaneCurveArrangements(UniqueRepresentation, Parent):
1176
1180
  """
1177
1181
  return len(self.variable_names())
1178
1182
 
1179
- def gens(self):
1183
+ def gens(self) -> tuple:
1180
1184
  """
1181
1185
  Return the coordinates.
1182
1186
 
@@ -338,7 +338,7 @@ def prove_BSD(E, verbosity=0, two_desc='mwrank', proof=None, secs_hi=5,
338
338
  - [Kat2004]_
339
339
  - [Kol1991]_
340
340
  - [LW2015]_
341
- - [LS]
341
+ - [LS]_
342
342
  - [Maz1978]_
343
343
  - [Rub1991]_
344
344
  - [SW2013]_
@@ -1,4 +1,8 @@
1
1
  # sage_setup: distribution = sagemath-schemes
2
+ r"""
3
+ Addition formula for elliptic curves over rings
4
+ """
5
+
2
6
 
3
7
  def _add(E, P, Q):
4
8
  r"""
@@ -826,7 +826,7 @@ def discriminants_with_bounded_class_number(hmax, B=None, proof=None):
826
826
 
827
827
  # h_dict caches the class number h of all discriminants previously
828
828
  # encountered; we will use the function OrderClassNumber() to
829
- # quicky compute the class number of non-fundamental discriminants
829
+ # quickly compute the class number of non-fundamental discriminants
830
830
  # from the fundamental ones. Note that in the initialisation, the
831
831
  # keys of h_dict include nonfundamental discriminants, but we only
832
832
  # update it with fundamental ones.
@@ -1473,7 +1473,7 @@ def EllipticCurves_with_good_reduction_outside_S(S=[], proof=None, verbose=False
1473
1473
 
1474
1474
  EXAMPLES::
1475
1475
 
1476
- sage: # needs eclib
1476
+ sage: # needs eclib sage.symbolic
1477
1477
  sage: EllipticCurves_with_good_reduction_outside_S([])
1478
1478
  []
1479
1479
  sage: elist = EllipticCurves_with_good_reduction_outside_S([2])
@@ -1489,14 +1489,14 @@ def EllipticCurves_with_good_reduction_outside_S(S=[], proof=None, verbose=False
1489
1489
 
1490
1490
  Without ``Proof=False``, this example gives two warnings::
1491
1491
 
1492
- sage: # needs eclib
1492
+ sage: # needs eclib sage.symbolic
1493
1493
  sage: elist = EllipticCurves_with_good_reduction_outside_S([11], proof=False) # long time (14s on sage.math, 2011)
1494
1494
  sage: len(elist) # long time
1495
1495
  12
1496
1496
  sage: ', '.join(e.label() for e in elist) # long time
1497
1497
  '11a1, 11a2, 11a3, 121a1, 121a2, 121b1, 121b2, 121c1, 121c2, 121d1, 121d2, 121d3'
1498
1498
 
1499
- sage: # long time, needs eclib
1499
+ sage: # long time, needs eclib sage.symbolic
1500
1500
  sage: elist = EllipticCurves_with_good_reduction_outside_S([2,3]) # long time (26s on sage.math, 2011)
1501
1501
  sage: len(elist)
1502
1502
  752
@@ -320,7 +320,7 @@ def egros_from_jlist(jlist, S=[]):
320
320
 
321
321
  EXAMPLES::
322
322
 
323
- sage: # needs eclib
323
+ sage: # needs eclib sage.symbolic
324
324
  sage: from sage.schemes.elliptic_curves.ell_egros import egros_get_j, egros_from_jlist
325
325
  sage: jlist = egros_get_j([3])
326
326
  sage: elist = egros_from_jlist(jlist,[3])