Creation Functions#

Several different models for modular curves are available. The possible model types are “Atkin”, “Canonical”, and “Classical”, each giving affine models defined by the modular polynomial databases of the same names. For more details on these polynomials see Section Modular Polynomial Databases on modular polynomials and databases.

Creation of a Modular Curve#

ModularCurve(X, t, N): Sch, MonStgElt, RngIntElt -> CrvMod#

Returns a model of the modular curve \(X_0(N)\), in an affine plane specified by \(X\). The string \(t\) must be one of “Atkin”, “Canonical”, or “Classical”, with \(N\) a level in the corresponding modular curve database.

ModularCurve(D, N): DB, RngIntElt -> CrvMod#

Returns an affine model of the modular curve \(X_0(N)\) of level \(N\) from a database \(D\) of modular curves.

Creation of Points#

Points on modular curves can be created in the same way as points on curves or schemes in general. In addition, there exist several specific constructors, defined in terms of the moduli structure, which take a parameterized elliptic curve as an argument.

ModuliPoints(X, E): CrvMod, CrvEll -> SeqEnum#

Given a modular curve \(X = X_0(N)\) and an elliptic curve \(E\), with compatible base rings, returns the sequence of points over the base field of \(E\), corresponding to \(E\) with additional level structure.

Example: Moduli points (ex-050d12)#

Below we give an example of the use of the moduli interpretation of modular curves in order to construct the corresponding subgroup scheme structures defined over a finite field.

> FF := FiniteField(NextPrime(10^6));
> A2 := AffineSpace(FF,2);
> X0 := ModularCurve(A2,"Canonical",17);
> E := EllipticCurve([FF|1,23]);
> mp := ModuliPoints(X0,E); mp;
[ (259805, 350390), (380571, 350390) ]

Run in calculator

We will see later that it is possible to construct the structure of an elliptic curve parameterized by the corresponding moduli points.

> P, Q := Explode(mp);
> SubgroupScheme(E,P);
Subgroup of E defined by x^8 + 377217*x^7 + 190510*x^6 + 872850*x^5
  + 816054*x^4 + 457629*x^3 + 64955*x^2 + 361795*x + 460146
> SubgroupScheme(E,Q);
Subgroup of E defined by x^8 + 796070*x^7 + 308587*x^6 + 62023*x^5
  + 976430*x^4 + 380273*x^3 + 200328*x^2 + 892738*x + 536749

Run in calculator

In this example we see that the prime \(17\) splits in the endomorphism ring of \(E\), so we have exactly two parameterized isogenies defined over the base field of \(E\).