################################################## # ent.py -- Element Number Theory # (c) William Stein, 2004 ################################################## ################################################## ## Newform Abelian Varieties $A_f$ ################################################## > J0 := JZero; // personal customization... > J := J0(37); > S := CuspForms(37); // defaults: k=2, trivial character > N := Newforms(S); N; [* [* q - 2*q^2 - 3*q^3 + 2*q^4 - 2*q^5 + 6*q^6 - q^7 + O(q^8) *], [* q + q^3 - 2*q^4 - q^7 + O(q^8) *] *] > f := N[1][1]; > A_f := ModularAbelianVariety(f); A_f; Modular abelian variety Af of dimension 1 and level 37 over Q > E := EllipticCurve(A_f); E; Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field > J := J0(389); // J_0(389) > D := Decomposition(J); D; // contains the A_f's [ Modular abelian variety 389A of dimension 1, level 389 and conductor 389 over Q, Modular abelian variety 389B of dimension 2, level 389 and conductor 389^2 over Q, Modular abelian variety 389C of dimension 3, level 389 and conductor 389^3 over Q, Modular abelian variety 389D of dimension 6, level 389 and conductor 389^6 over Q, Modular abelian variety 389E of dimension 20, level 389 and conductor 389^20 over Q ] > EllipticCurve(D[1]); Elliptic Curve defined by y^2 + y = x^3 + x^2 - 2*x over Rational Field # ****** overfill (len = 72) ****** > EllipticCurve(D[2]); ... Runtime error in 'EllipticCurve': Argument 1 must have dimension 1. # ****** overfill (len = 73) ****** ################################################## ## Computing The $L$-Series ################################################## > D := Decomposition(J0(389)); > E := D[1]; E; Modular abelian variety 389A of dimension 1, level 389 and conductor 389 over Q # ****** overfill (len = 80) ****** > L := LSeries(E); > alpha, r := LeadingCoefficient(L,1,300); > alpha; --> 0.75931650029224679065762600319 > r; --> 2 > EE := EllipticCurve(E); > AnalyticRank(EE); // Watkins 2 0.7593000000 > Rank(EE); // so BSD-rank true for E 2 > D := Decomposition(J0(389)); > B := D[2]; B; // dimension 2 Modular abelian variety 389B of dimension 2, level 389 and conductor 389^2 over Q # ****** overfill (len = 82) ****** > L := LSeries(B); > time alpha, r := LeadingCoefficient(L,1,300); Time: 0.170 > alpha; 1.487184621319347115775638940885 > r; 2 // equals dim(B), so Kolyvagin-Logachev implies BSD-rank > D := Decomposition(J0(389)); > A := D[5]; A; // dimension 20 !! Modular abelian variety 389E of dimension 20, level 389 and conductor 389^20 over Q > L := LSeries(A); L; L(389E,s): L-series of Modular abelian variety 389E of dimension 20, level 389 and conductor 389^20 over Q > alpha, r := LeadingCoefficient(L,1,300); // takes a while > alpha; 2300.74238082371353307813447937329 + 0.E-25*i > r; 0 // so Kolyvagin-Logachev implies BSD-rank (=0) > LeadingCoefficient(L,1,350); 2313.363547793384317135564620832928 + 0.E-25*i 0 ################################################## ## Computing the Ratio $L(A,1)/\Omega_A$ ################################################## > D := Decomposition(J0(389)); > [ : A in D]; [ <1, 0>, <2, 0>, <3, 0>, <6, 0>, <20, 51200/97> ] ################################################## ## The Order of the Torsion Subgroup ################################################## > D := Decomposition(J0(389)); > [ : A in D]; [ <1, 1>, <2, 1>, <3, 1>, <6, 1>, <20, 97> ] ################################################## ## The Order of the Torsion Subgroup ################################################## > J := J0(389); > D := Decomposition(J); > [ : A in D]; [ <1, 1>, <2, 1>, <3, 1>, <6, 1>, <20, 97> ] // multiples of torsion for A^dual # ****** overfill (len = 82) ****** > C := RationalCuspidalSubgroup(J) ; > [ : A in D]; // divisors of torsion order for A # ****** overfill (len = 82) ****** [ <1, 1>, <2, 1>, <3, 1>, <6, 1>, <20, 97> ] ################################################## ## Tamagawa Numbers ################################################## > J := J0(389); > D := Decomposition(J); > for A in D do print "dim =",Dimension(A)," tam =",TamagawaNumber(A,389); end for; # ****** overfill (len = 84) ****** dim = 1 tam = 1 1 true dim = 2 tam = 2 2 false dim = 3 tam = 2 2 false dim = 6 tam = 2 2 false dim = 20 tam = 97 97 true ################################################## ## Tamagawa Numbers ################################################## > J := J0(19*20); > time D := Decomposition(NewSubvariety(J)); // takes a while (much overhead) # ****** overfill (len = 80) ****** Time: 17.820 > [Dimension(A) : A in D]; [ 1, 1, 2, 2 ] > A := D[#D]; A; // dimension 2 > TamagawaNumber(A,2); 1 30 false > TamagawaNumber(A,5); // hard work! 3 3 true > TamagawaNumber(A,19); 2 2 true > B := D[3]; // dimension 2 > TamagawaNumber(B,2); 1 30 false > TamagawaNumber(B,5); 7 7 true > TamagawaNumber(B,19); 2 2 true > E := D[1]; // dim 1 > TamagawaNumber(E,2); // uses Lenstra-Oort 1 6 false > TamagawaNumber(E,5); // uses my algorithm 1 1 false > TamagawaNumber(E,19); // uses my algorithm 2 2 false > EE := EllipticCurve(E); > TamagawaNumber(EE,2); // uses Tate's algorithm 3 > TamagawaNumber(EE,5); 1 > TamagawaNumber(EE,19); 2 ################################################## ## The N\'eron Real Volume $\Omega_A$ ################################################## > D := Decomposition(J0(389)); > [ : A in D]; # ****** overfill (len = 69) ****** [ <1, 4.980354644089219778568132200033753610666>, <2, 11.55172924281529305177831848824>, <3, 34.87066551027868630219369768960>, <6, 244.71906604134159642433584901635>, <20, 4.157086696844426469441248597099> ] <--- big 20-dim abvar. is small! # ****** overfill (len = 78) ****** > EE := EllipticCurve(D[1]); > 2*RealPeriod(EE); // uses Gauss AGM (?) 4.9804251217101101506427155838846049203121163606791400801100 ################################################## ## Computing the Group $\Sha(A)$ ################################################## > D := Decomposition(J0(389)); > B := D[1]; > Rank(EllipticCurve(B)); 2 > A := D[5]; > B5 := Kernel(nIsogeny(B,5)); > B5 subset A; true > A := ModularAbelianVariety("389E"); A; ... > LRatio(A,1); ... ################################################## ## The Order of the Torsion Subgroup ################################################## ################################################## ## Visibility: Constructing Elements of $\Sha(A)$ ################################################## > J := JZero(389); > D := Decomposition(J); > A := D[5]; B := D[1]; > A meet B; ... > TorsionMultiple(A,7); ... > TorsionMultiple(B,7); ... > TamagawaNumber(A,389); ... > TamagawaNumber(B,389); ... > E := EllipticCurve(B); ... > Rank(E); ... > phi := ModularPolarization(A); phi; ... > Factorization(Degree(phi)); ... ########################################################## # The following are all the examples not in functions. # ########################################################## def examples(): """ """ if __name__ == '__main__': import doctest, sys doctest.testmod(sys.modules[__name__])