Let E be an elliptic curve. By the modularity theorem, which was recently proved by Breuil, Conrad, Diamond, Taylor, and Wiles there is a two-dimensional space M of modular symbols attached to E. Let N be the conductor of E; then M is obtained from ModularSymbols(N,2) by intersecting the kernels of T_p - a_p(E) for sufficiently many p.
Warning: The computation of M can already be very resource intensive for elliptic curves for which Conductor(E) is on the order of 5000. For example, the seemingly harmless expression ModularSymbols(EllipticCurve([0,6])) would bring my computer to its knees.
The space M of modular symbols associated to the elliptic curve E.
> E := EllipticCurve(CremonaDatabase(),"389A"); > M := ModularSymbols(E); > M; Modular symbols space of level 389, weight 2, and dimension 2 > LRatio(M,1); 0Next we compute the analytic rank and the leading coefficient of the L-series at s=1. (If your computer is very slow, use a number smaller than 300 below.)
> L1, r := LSeriesLeadingCoefficient(M,1,300); > L1; 0.7593165002922467906576260031 > r; // The analytic rank is 2. 2Finally we check that the rank conjecture is true in this case, and compute the conjectural order of the Shafarevich-Tate group.
> Rank(E); // The algebraic rank is 2. 2 > Omega := RealVolume(M,300); Omega; 4.980435433609741580582713757 > Reg := Regulator(E); Reg; 0.1524601779431437875 > #TorsionSubgroup(E); 1 > TamagawaNumber(E,389); 1 > TamagawaNumber(M,389); // entirely different algorithm 1 > Sha := L1/(Omega*Reg); Sha; 0.9999979295234896211