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.
- passagemath_schemes/__init__.py +3 -0
- {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/METADATA +42 -42
- {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/METADATA.bak +43 -43
- {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/RECORD +159 -140
- passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
- passagemath_schemes.libs/{libflint-7dd7ad94.so.19.0.0 → libflint-edf7fb90.so.22.0.0} +0 -0
- passagemath_schemes.libs/{libgcc_s-69c45f16.so.1 → libgcc_s-2d945d6c.so.1} +0 -0
- passagemath_schemes.libs/{libgmp-8e78bd9b.so.10.5.0 → libgmp-28992bcb.so.10.5.0} +0 -0
- passagemath_schemes.libs/{libgmpxx-e6de26f1.so.4.7.0 → libgmpxx-fecb01a9.so.4.7.0} +0 -0
- passagemath_schemes.libs/{libmpfr-5ff10580.so.6.2.1 → libmpfr-1fc8ea36.so.6.2.2} +0 -0
- passagemath_schemes.libs/{libstdc++-1f1a71be.so.6.0.33 → libstdc++-85f2cd6d.so.6.0.33} +0 -0
- sage/all__sagemath_schemes.py +3 -2
- sage/databases/all__sagemath_schemes.py +0 -10
- sage/dynamics/arithmetic_dynamics/berkovich_ds.py +4 -4
- sage/dynamics/arithmetic_dynamics/generic_ds.py +3 -3
- sage/dynamics/arithmetic_dynamics/projective_ds.py +6 -6
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-aarch64-linux-musl.so +0 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +18 -18
- sage/lfunctions/zero_sums.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/abvar/abvar.py +12 -11
- sage/modular/abvar/constructor.py +3 -3
- sage/modular/abvar/cuspidal_subgroup.py +5 -6
- sage/modular/abvar/finite_subgroup.py +20 -18
- sage/modular/abvar/homology.py +1 -2
- sage/modular/abvar/homspace.py +1 -1
- sage/modular/abvar/lseries.py +3 -3
- sage/modular/abvar/morphism.py +1 -1
- sage/modular/abvar/torsion_point.py +1 -1
- sage/modular/abvar/torsion_subgroup.py +1 -1
- sage/modular/arithgroup/arithgroup_element.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/arithgroup/arithgroup_perm.py +16 -16
- sage/modular/arithgroup/congroup.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/arithgroup/congroup_gamma0.py +2 -2
- sage/modular/arithgroup/congroup_gamma1.py +4 -4
- sage/modular/arithgroup/congroup_gammaH.py +2 -2
- sage/modular/arithgroup/congroup_generic.py +2 -3
- sage/modular/arithgroup/congroup_sl2z.py +3 -3
- sage/modular/arithgroup/farey_symbol.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1 -2
- sage/modular/btquotients/btquotient.py +4 -5
- sage/modular/btquotients/pautomorphicform.py +2 -2
- sage/modular/cusps.py +6 -4
- sage/modular/cusps_nf.py +7 -8
- sage/modular/dirichlet.py +34 -43
- sage/modular/drinfeld_modform/element.py +4 -4
- sage/modular/drinfeld_modform/ring.py +12 -12
- sage/modular/drinfeld_modform/tutorial.py +1 -1
- sage/modular/hecke/algebra.py +7 -5
- sage/modular/hecke/ambient_module.py +2 -2
- sage/modular/hecke/element.py +7 -2
- sage/modular/hecke/module.py +9 -9
- sage/modular/hecke/submodule.py +6 -8
- sage/modular/hypergeometric_misc.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/hypergeometric_misc.pyx +3 -2
- sage/modular/hypergeometric_motive.py +2 -2
- sage/modular/local_comp/local_comp.py +19 -11
- sage/modular/local_comp/type_space.py +10 -8
- sage/modular/modform/ambient.py +4 -3
- sage/modular/modform/cuspidal_submodule.py +2 -2
- sage/modular/modform/element.py +72 -72
- sage/modular/modform/half_integral.py +1 -1
- sage/modular/modform/l_series_gross_zagier.py +3 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.pyx +5 -2
- sage/modular/modform/ring.py +10 -12
- sage/modular/modform/space.py +18 -21
- sage/modular/modform/weight1.py +1 -2
- sage/modular/modform_hecketriangle/abstract_ring.py +7 -14
- sage/modular/modform_hecketriangle/abstract_space.py +63 -66
- sage/modular/modform_hecketriangle/graded_ring_element.py +11 -12
- sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +82 -84
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +2 -2
- sage/modular/modform_hecketriangle/readme.py +9 -11
- sage/modular/modform_hecketriangle/series_constructor.py +10 -18
- sage/modular/modform_hecketriangle/space.py +29 -30
- sage/modular/modform_hecketriangle/subspace.py +9 -7
- sage/modular/modsym/all.py +2 -2
- sage/modular/modsym/ambient.py +13 -20
- sage/modular/modsym/boundary.py +2 -2
- sage/modular/modsym/manin_symbol.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/modsym/manin_symbol_list.py +3 -7
- sage/modular/modsym/relation_matrix_pyx.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/modsym/space.py +10 -22
- sage/modular/modsym/subspace.py +5 -7
- sage/modular/multiple_zeta.py +11 -13
- sage/modular/multiple_zeta_F_algebra.py +4 -6
- sage/modular/overconvergent/genus0.py +5 -4
- sage/modular/overconvergent/hecke_series.py +2 -2
- sage/modular/pollack_stevens/distributions.py +2 -2
- sage/modular/pollack_stevens/fund_domain.py +26 -29
- sage/modular/pollack_stevens/manin_map.py +15 -10
- sage/modular/pollack_stevens/modsym.py +18 -18
- sage/modular/quasimodform/element.py +10 -10
- sage/modular/quasimodform/ring.py +22 -22
- sage/modular/ssmod/ssmod.py +5 -12
- sage/rings/polynomial/binary_form_reduce.py +1 -1
- sage/schemes/curves/affine_curve.py +4 -4
- sage/schemes/curves/plane_curve_arrangement.py +28 -24
- sage/schemes/elliptic_curves/BSD.py +1 -1
- sage/schemes/elliptic_curves/addition_formulas_ring.py +4 -0
- sage/schemes/elliptic_curves/cm.py +1 -1
- sage/schemes/elliptic_curves/constructor.py +3 -3
- sage/schemes/elliptic_curves/ell_egros.py +1 -1
- sage/schemes/elliptic_curves/ell_field.py +57 -46
- sage/schemes/elliptic_curves/ell_finite_field.py +138 -26
- sage/schemes/elliptic_curves/ell_local_data.py +9 -9
- sage/schemes/elliptic_curves/ell_number_field.py +25 -24
- sage/schemes/elliptic_curves/ell_point.py +21 -22
- sage/schemes/elliptic_curves/ell_rational_field.py +38 -28
- sage/schemes/elliptic_curves/formal_group.py +1 -1
- sage/schemes/elliptic_curves/heegner.py +11 -8
- sage/schemes/elliptic_curves/height.py +26 -23
- sage/schemes/elliptic_curves/hom.py +2 -1
- sage/schemes/elliptic_curves/hom_composite.py +11 -11
- sage/schemes/elliptic_curves/hom_frobenius.py +8 -8
- sage/schemes/elliptic_curves/hom_sum.py +7 -1
- sage/schemes/elliptic_curves/hom_velusqrt.py +13 -7
- sage/schemes/elliptic_curves/homset.py +2 -2
- sage/schemes/elliptic_curves/isogeny_small_degree.py +1 -1
- sage/schemes/elliptic_curves/mod_poly.py +12 -5
- sage/schemes/elliptic_curves/mod_sym_num.cpython-312-aarch64-linux-musl.so +0 -0
- sage/schemes/elliptic_curves/padic_lseries.py +25 -13
- sage/schemes/elliptic_curves/padics.py +71 -62
- sage/schemes/elliptic_curves/period_lattice.py +78 -27
- sage/schemes/elliptic_curves/period_lattice_region.cpython-312-aarch64-linux-musl.so +0 -0
- sage/schemes/elliptic_curves/sha_tate.py +1 -1
- sage/schemes/elliptic_curves/weierstrass_morphism.py +2 -2
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +1 -1
- sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +1 -1
- sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +10 -20
- sage/schemes/jacobians/abstract_jacobian.py +1 -1
- sage/schemes/plane_conics/con_field.py +42 -42
- sage/schemes/plane_conics/con_rational_field.py +1 -1
- sage/schemes/riemann_surfaces/riemann_surface.py +8 -8
- 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
- passagemath_schemes-10.5.48.dist-info/top_level.txt +0 -2
- sage/databases/db_modular_polynomials.py +0 -250
- sage/databases/stein_watkins.py +0 -363
- sage/modular/modsym/p1list.cpython-312-aarch64-linux-musl.so +0 -0
- sage/modular/modsym/p1list.pxd +0 -29
- sage/modular/modsym/p1list.pyx +0 -1372
- {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 -
|
|
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{
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
492
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
sage/modular/ssmod/ssmod.py
CHANGED
|
@@ -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
|
-
|
|
534
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
#
|
|
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
|
-
|
|
202
|
+
self.parent().ambient_space())
|
|
202
203
|
return 'Arrangement of {} curves in {}'.format(len(self),
|
|
203
|
-
|
|
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
|
|
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`.
|
|
641
|
-
|
|
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
|
|
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
|
|
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
|
|
|
@@ -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
|
-
#
|
|
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])
|