Parametrized Structures

As with the other modular equation databases in Magma there is functionality to explicitly compute a cyclic N-isogeny or cyclic subgroup of order N on an elliptic curve that is represented by a non-cuspidal point or place on the X0(N) models with the usual moduli space interpretation of the modular curves. The points represent equivalence classes of these structures (elliptic curve E with cyclic subgroup C, (E, C), or cyclic N-isogeny φ:E -> F) up to isomorphism. In particular, if (E, C) is an elliptic curve with cyclic subgroup with both E and C defined over a field K, then any quadratic twist E1 of E with the twisted subgroup C1, which is the image of C under the isomorphism from E to E1 over a quadratic extension, is represented by the same point on X0(N). If j != 0, 1728, any two elliptic curves over a field K with j-invariant j are quadratic twists of each other. Because of this, if j(p) != 0, 1728, any elliptic curve E over the field of definition K of the point p and j-invariant j(p) will have a cyclic subgroup C defined over K such that (E, C) is represented by p or, equivalently, there is a cyclic N-isogeny defined over K and with domain E that is represented by p. We allow the user to pass in his choice of E for the base elliptic curve.

If z is a non-real complex number, let Λz be the two dimensional complex lattice (Z) direct-sum (Z)z. Under the identification of the complex points of our model of X0(N) with H * 0(N) which follows from the identification of coordinate functions with specific modular functions or forms (see the next section), if a non-cuspidal point p corresponds to a point z in the upper halfplane H, the point p in the moduli interpretation is represented by (Ez, C), where Ez=(C)/Λz and C is the cyclic subgroup generated by (1/N) mod Λz, or the cyclic N-isogeny φ: Ez -> ENz, t |-> Nt.

The computation of structures uses well-known methods. If d is a suitable differential on X0(N), we start with the data p1=(N/12)(E2(N)/d)(p)qquad E4=(E4/d2)(p)qquad E6=(E6/d3)(p) tilde(E4)=N2((E4/d2)(wN(p))(wN * (d)/d)(p)2qquad tilde(E6)= N3((E6/d3)(wN(p))(wN * (d)/d)(p)3 p is represented by (E, C) where E is given by y2=x3 - (E4/48)x - (E6/864) and the monic polynomial in x that defines C is computed from p1, E4, E6, tilde(E4), tilde(E6) by the same algorithm as used in the SEA Elkies variant of Schoof's algorithm. The corresponding isogeny φ:E -> F with kernel C can then be computed using Velu's formulae.

SubgroupScheme(p,N) : Pt, RngIntElt -> SchGrpEll, CrvEll
SubgroupScheme(p,N) : PlcCrvElt, RngIntElt -> SchGrpEll, CrvEll
SubgroupScheme(p,N,E) : Pt, RngIntElt, CrvEll -> SchGrpEll
SubgroupScheme(p,N,E) : PlcCrvElt, RngIntElt, CrvEll -> SchGrpEll
Here p is a non-cuspidal point or place on CN, a base change of the curve from the small modular curve database of level N to a field of characteristic zero. When p is given as a point, it should be non-singular point on CN. The function returns an elliptic curve E1 and a subgroup scheme G of E1, both defined over the field of definition K of p (K if p is a point in CN(K); the residue class field of p if p is a place) such that G gives a cyclic subgroup of order N on E1 and (E1, G) represents p in the moduli space interpretation.

In the second version, when j(p) should not be 0 or 1728, E should be an elliptic curve over a subfield of K with j-invariant j(p). In this case, E1 is taken as E or the base change of E to K, and only G is returned.

Isogeny(p,N) : Pt, RngIntElt -> MapSch
Isogeny(p,N) : PlcCrvElt, RngIntElt -> MapSch
Isogeny(p,N,E) : Pt, RngIntElt, CrvEll -> MapSch
Isogeny(p,N,E) : PlcCrvElt, RngIntElt, CrvEll -> MapSch
Here p is a non-cuspidal point or place on CN, a base change of the curve from the small modular curve database of level N to a field of characteristic zero. When p is given as a point, it should be non-singular point on CN. The function returns a cyclic N-isogeny of elliptic curves φ: E1 -> F1, all defined over the field of definition K of p (K if p is a point in CN(K); the residue class field of p if p is a place), which represents p in the moduli space interpretation.

In the second version, when j(p) should not be 0 or 1728, E should be an elliptic curve over a subfield of K with j-invariant j(p). In this case, E1 is taken as E or the base change of E to K.

Example SmallModCrv_sm_mod_crvs_prms (H138E5)

> C := SmallModularCurve(14);
> rats := NonCuspidalQRationalPoints(C,14);
> rats;
[ (2 : 2 : 1), (9 : -33 : 1) ]
> jInvariant(rats[1],14);
16581375
> jNInvariant(rats[1],14);
-3375
> jInvariant(rats[2],14);
-3375
> jNInvariant(rats[2],14);
16581375
> G,E := SubgroupScheme(rats[2],14);
> E;
Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 2*x - 1 over Rational Field
> G;
Subgroup scheme of E defined by x^7 + 7*x^6 - 7*x^5 - 35*x^4 + 7*x^3 + 35*x^2
    + 7*x - 2
> jInvariant(E);
-3375
> phi := Isogeny(rats[2],14);
> phi;
Elliptic curve isogeny from: Elliptic Curve defined by y^2 + x*y = x^3 - x^2 -
2*x - 1 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 - x^2
- 1822*x + 30393 over Rational Field
taking (x : y : 1) to ((x^14 + 16*x^13 + 431*x^12 + 1604*x^11 - 768*x^10 -
    12344*x^9 - 7979*x^8 + 25044*x^7 + 29067*x^6 - 4796*x^5 - 12252*x^4 +
    3244*x^3 + 6789*x^2 + 2504*x + 371) / (x^13 + 16*x^12 + 67*x^11 - 34*x^10
    - 495*x^9 - 332*x^8 + 967*x^7 + 1048*x^6 - 431*x^5 - 834*x^4 - 205*x^3 +
    52*x^2 + 13*x - 2) : (x^20*y + 23*x^19*y - 364*x^19 - 192*x^18*y -
    2093*x^18 + 288*x^17*y - 2821*x^17 + 1248*x^16*y + 19201*x^16 -
    5484*x^15*y + 73430*x^15 + 5293*x^14*y - 59871*x^14 - 10840*x^13*y -
    398076*x^13 - 50135*x^12*y - 153384*x^12 - 107060*x^11*y + 723331*x^11 -
    175648*x^10*y + 619619*x^10 - 15884*x^9*y - 395549*x^9 + 540867*x^8*y -
    167643*x^8 + 1295892*x^7*y + 895937*x^7 + 1548467*x^6*y + 848974*x^6 +
    947584*x^5*y + 19075*x^5 + 32804*x^4*y - 348579*x^4 - 407788*x^3*y -
    218505*x^3 - 305738*x^2*y - 56084*x^2 - 95233*x*y - 3710*x - 9831*y + 371)
/ (x^20 + 23*x^19 + 172*x^18 + 288*x^17 - 1755*x^16 - 5757*x^15 + 4334*x^14 +
    29683*x^13 + 7538*x^12 - 65053*x^11 - 47954*x^10 + 59387*x^9 + 72098*x^8 -
    8621*x^7 - 37663*x^6 - 12228*x^5 + 2214*x^4 + 1215*x^3 - 83*x^2 - 40*x +
    4) : 1)
> F := Codomain($1);
> jInvariant(F);
16581375
V2.28, 13 July 2023