Modular Polynomial Databases#
Magma contains several databases of standard defining polynomials for modular curves which are used throughout the system for the construction of isogenies of elliptic curves, and which are made available to the user. These define singular models for modular curves \(X_0(N)\), in terms for standard functions on the curves.
The classical model for \(X_0(N)\) is in terms of the polynomial \(\Phi_N(X,Y)\) such that \(\Phi_N(j(\tau),j(N\tau)) = 0\), where \(j(\tau)\) is the \(j\)-function. The bivariate polynomial \(\Phi_N(X,Y)\) is defined to be the classical modular polynomial. The classical modular polynomial has the property of being symmetric in \(X\) and \(Y\), and moreover, the canonical involution is defined by \((X,Y) \mapsto (Y,X)\).
Suppose that \(N\) is a prime and set \(s = 12/{\rm GCD}(N-1,12)\). Using the property that the Dedekind \(\eta\)-function is holomorphic with no zeros on the upper half plane \({\mathbb{H}}\), the function
is a holomorphic function whose reciprocal is also holomorphic on \({\mathbb{H}}\). The transformation properties of the \(\eta\)-function imply that \(f(\tau)\) is invariant under \(\Gamma_0(N)\). Together \(j(\tau)\) and \(f(\tau)\) generate the function field for \(X_0(N)\). The polynomial \(\Psi_N(X,Y)\) such that \(\Psi_p(f(\tau),j(\tau)) = 0\) is called the canonical modular polynomial. The Atkin–Lehner involution sends \(f(\tau)\) to \(N^s/f(\tau)\), so that the relation \(\Psi_N(N^s/f(\tau),j(N\tau)) = 0\) also holds.
The third distinguished class of modular polynomials are the Atkin modular polynomials \(\Xi_N(X,Y)\), satisfying the property that \(\Xi_N(f(\tau),j(\tau)) = 0\) for a modular function \(f(\tau)\) on \(X_0(N)\) invariant under the Atkin-Lehner involution. Since the function \(f(\tau)\) is well-defined as a function on the Atkin-Lehner quotient curve \(X_0^+(N)\), sometimes denoted \(X_0^*(N)\), these polynomials are also referred to as star modular polynomials in the literature. The construction of \(f(\tau)\) and the modular polynomial \(\Xi_N(X,Y)\) is described in articles of Elkies [Elkies, 1998] and Morain [Morain, 1995]. The database of Atkin modular polynomials were provided by A.O.L. Atkin.
- AtkinModularPolynomial(N): RngIntElt -> RngMPolElt#
Given a prime number \(N\), represented in the database of Atkin modular curves, this function returns the Atkin modular polynomial \(\Xi_N(X,Y)\).
- CanonicalModularPolynomial(N): RngIntElt -> RngMPolElt#
Given a prime number \(N\) represented in the database of canonical modular curves, this function returns the canonical modular polynomial \(\Psi_N(X,Y)\).
- ClassicalModularPolynomial(N): RngIntElt -> RngMPolElt#
Given an integer \(N\) represented in the database of classical modular curves, this function returns the defining classical modular polynomial \(\Phi_N(X,Y)\).
- ModularCurveDatabase(t): MonStgElt -> DB#
- ModularCurveDatabase(t, i): MonStgElt, RngIntElt -> DB#
Given an identifier string \(t\), which must be one of “Atkin”, “Canonical”, or “Classical”, this function returns the corresponding database object of modular curves \(X_0(N)\).
Because of its size, the Atkin database is split into database objects of levels \(200(i-1)+1 \le N < 200i\) for \(i\) in \({1,2,3,4,5}\), of which only the first two are provided by default. Additional datafiles are available from the Magma website. The canonical database contains a subset of the curves for prime levels below 200, and only curves for levels below 60 are present in the classical modular curve database.
- N in D: RngIntElt, DB -> BoolElt#
Returns
trueif and only if \(N\) is a level represented in the given modular curve database \(D\).
- ExistsModularCurveDatabase(t): MonStgElt -> BoolElt#
- ExistsModularCurveDatabase(t, i): MonStgElt, RngIntElt -> BoolElt#
Returns
trueif and only if the data file given by the string \(t\) and integer \(i\) exists
- Example: Modular polynomials (ex-2c897b)#
Here we compare the defining polynomials for the Atkin, Canonical, and Classical models for the modular curves \(X_0(N)\). For the modular curve \(X_0(3)\) we list the corresponding polynomial.
> P2<x,j> := PolynomialRing(Integers(),2); > P2!AtkinModularPolynomial(3); x^4 - x^3*j + 744*x^3 + 193752*x^2 + 2348*x*j + 19712160*x + j^2 + 24528*j + 538141968 > P2!CanonicalModularPolynomial(3); x^4 + 36*x^3 + 270*x^2 - x*j + 756*x + 729 > P2!ClassicalModularPolynomial(3); x^4 - x^3*j^3 + 2232*x^3*j^2 - 1069956*x^3*j + 36864000*x^3 + 2232*x^2*j^3 + 2587918086*x^2*j^2 + 8900222976000*x^2*j + 452984832000000*x^2 - 1069956*x*j^3 + 8900222976000*x*j^2 - 770845966336000000*x*j + 1855425871872000000000*x + j^4 + 36864000*j^3 + 452984832000000*j^2 + 1855425871872000000000*j
For larger values of \(N\) the Atkin modular polynomials tend to have smaller coefficients.
> P2!CanonicalModularPolynomial(11); x^12 - 5940*x^11 + 14701434*x^10 - 139755*x^9*j - 19264518900*x^9 + 723797800*x^8*j + 13849401061815*x^8 + 67496*x^7*j^2 - 1327909897380*x^7*j - 4875351166521000*x^7 + 2291468355*x^6*j^2 + 1036871615940600*x^6*j + 400050977713074380*x^6 - 5346*x^5*j^3 + 4231762569540*x^5*j^2 - 310557763459301490*x^5*j + 122471154456433615800*x^5 + 161201040*x^4*j^3 + 755793774757450*x^4*j^2 + 17309546645642506200*x^4*j + 6513391734069824031615*x^4 + 132*x^3*j^4 - 49836805205*x^3*j^3 + 6941543075967060*x^3*j^2 - 64815179429761398660*x^3*j + 104264884483130180036700*x^3 + 468754*x^2*j^4 + 51801406800*x^2*j^3 + 214437541826475*x^2*j^2 + 77380735840203400*x^2*j + 804140494949359194*x^2 - x*j^5 + 3732*x*j^4 - 4586706*x*j^3 + 2059075976*x*j^2 - 253478654715*x*j + 2067305393340*x + 1771561 > P2!CanonicalModularPolynomial(13); x^14 + 26*x^13 + 325*x^12 + 2548*x^11 + 13832*x^10 + 54340*x^9 + 157118*x^8 + 333580*x^7 + 509366*x^6 + 534820*x^5 + 354536*x^4 + 124852*x^3 + 15145*x^2 - x*j + 746*x + 13 > P2!AtkinModularPolynomial(11); x^12 - x^11*j + 744*x^11 + 196680*x^10 + 187*x^9*j + 21354080*x^9 + 506*x^8*j + 830467440*x^8 - 11440*x^7*j + 16875327744*x^7 - 57442*x^6*j + 208564958976*x^6 + 184184*x^5*j + 1678582287360*x^5 + 1675784*x^4*j + 9031525113600*x^4 + 1867712*x^3*j + 32349979904000*x^3 - 8252640*x^2*j + 74246810880000*x^2 - 19849600*x*j + 98997734400000*x + j^2 - 8720000*j + 58411072000000 > P2!AtkinModularPolynomial(13); x^14 - x^13*j + 744*x^13 + 196716*x^12 + 156*x^11*j + 21377304*x^11 + 364*x^10*j + 835688022*x^10 - 8502*x^9*j + 17348897592*x^9 - 37596*x^8*j + 224269358092*x^8 + 149786*x^7*j + 1949972557416*x^7 + 1161420*x^6*j + 11858099339697*x^6 + 700323*x^5*j + 51262531538400*x^5 - 9614956*x^4*j + 157275877324800*x^4 - 23669490*x^3*j + 335383326720000*x^3 - 5859360*x^2*j + 473336381440000*x^2 + 32384000*x*j + 397934592000000*x + j^2 + 24576000*j + 150994944000000
In general the Atkin modular polynomials have coefficients of a smaller size when \(N \equiv 11 \bmod 12\) and are largest when \(N \equiv 1 \bmod 13\), while the opposite is true for the canonical modular polynomials.