Parameterized Families of Elliptic Curves with Large Rational Torsion Subgroups

CaptionResourceCreateNotebook

The set of rational points E(ℚ) on an elliptic curve E/ℚ defined over the rationals ℚ with at least one rational point O is endowed with a group law that can be described geometrically using the chord-and-tangent method. Further, it is a well-known result that if P∈E(ℚ) is a rational point of order n for n ∈ {4,5,6,7,8,9,10,12}, then E is birationally equivalent to an elliptic curve with an equation E:(y^2)+f(t) x y+g(t)y =(x^3)+g(t)(x^2), where f(t),q(t)∈ℚ(t) and (0,0) is a rational point of order n. That is, all elliptic curves E/ℚ with a rational point of order n are in a one-parameter family if n∈ {4,5,6,7,8,9,10,12}.

In this Demonstration, you can pick from a torsion subgroup of order n∈ {4,5,6,7,8,9,10,12} and select integer values for the parameter t to vary the curve E:(y^2)+f(t) x y+g(t)y =(x^3)+g(t)(x^2). Vary t and n to see changes in the plot of the curve, the n-1 points in the torsion subgroup that are not the point at infinity, and a geometric illustration of the sum (0,0)+[k](0,0) for all 1≤k<n.

Initialization CodeResourceCreateNotebook

(* put polynomial in descending order *)
OrderedForm=HoldForm[+##]&@@MonomialList[#][[Ordering[Total[#]&@@@CoefficientRules[#],All,GreaterEqual]]]&;

(* Group operations on elliptic curves *)
ellipticcurve[a1_,a2_,a3_,a4_,a5_,a6_]:={a1,a2,a3,a4,a6};

opposite[P0_,EC_]:={P0[[1]],-P0[[2]]-EC[[1]] P0[[1]]-EC[[3]]};

λ[P_,Q_,EC_]:=If[P[[1]]≠Q[[1]],(Q[[2]]-P[[2]])/(Q[[1]]-P[[1]]),(3 P[[1]]^2+2 EC[[2]] P[[1]]+EC[[4]]-EC[[1]] P[[2]])/(2 P[[2]]+EC[[1]] P[[1]]+EC[[3]])];

v[P_,Q_,EC_]:=If[P[[1]]≠Q[[1]],(P[[2]]Q[[1]]-Q[[2]] P[[1]])/(Q[[1]]-P[[1]]),(-P[[1]]^3+EC[[4]] P[[1]]+2 EC[[5]]-EC[[3]] P[[2]])/(2 P[[2]]+EC[[1]] P[[1]]+EC[[3]])];

add[P_,Q_,EC_]:=
If[Q===O,P,
If[P===O,Q,
If[P[[1]]==Q[[1]]&&P[[2]]+Q[[2]]+EC[[1]] Q[[1]]+EC[[3]]==0,O,
If[P==Q,double[P,EC],{λ[P,Q,EC]^2+EC[[1]] λ[P,Q,EC]-EC[[2]]-P[[1]]-Q[[1]],-(λ[P,Q,EC]+EC[[1]])(λ[P,Q,EC]^2+EC[[1]] λ[P,Q,EC]-EC[[2]]-P[[1]]-Q[[1]])-v[P,Q,EC]-EC[[3]]}
]
]
]
];

b2[EC_]:=EC[[1]]^2+4 EC[[2]];

b4[EC_]:=2 EC[[4]] + EC[[1]] EC[[3]];

b6[EC_]:=EC[[3]]^2+4 EC[[5]];

b8[EC_]:=EC[[1]]^2 EC[[5]] +4 EC[[2]] EC[[5]]-EC[[1]] EC[[3]] EC[[4]] +EC[[2]] EC[[3]]^2-EC[[4]]^2;

c4[EC_]:=b2[EC]^2-24 b4[EC];

c6[EC_]:=-b2[EC]^3+36 b2[EC] b4[EC]-216 b6[EC];

discriminant[EC_]:=-b2[EC]^2 b8[EC]-8 b4[EC]^3-27b6[EC]^2+9b2[EC] b4[EC] b6[EC];

jinvariant[EC_]:=c4[EC]^3/discriminant[EC];

double[P_,EC_]:=If[P===O,O,If[(4 P[[1]]^3+b2[EC] P[[1]]^2+2 b4[EC] P[[1]]+b6[EC])==0,O,{(P[[1]]^4-b4[EC] P[[1]]^2-2 b6[EC] P[[1]]-b8[EC])/(4 P[[1]]^3+b2[EC] P[[1]]^2+2 b4[EC] P[[1]]+b6[EC]),-(λ[P,P,EC]+EC[[1]])((P[[1]]^4-b4[EC] P[[1]]^2-2 b6[EC] P[[1]]-b8[EC])/(4 P[[1]]^3+b2[EC] P[[1]]^2+2 b4[EC] P[[1]]+b6[EC]))-v[P,P,EC]-EC[[3]]}]];

power[P_,EC_,n_]:=Fold[double,P,Table[EC,{i,1,n}]];

listmultiply[P_,EC_,n_]:=Module[{a,b,c,c1},a=Reverse[IntegerDigits[n,2]];b=Length[a];c={};Do[If[a[[k]]==1,c1=Append[c,power[P,EC,k-1]];c=c1],{k,1,b}];c];

addpair[list_,EC_]:=Module[{a,b,c,d,e},a=Length[list];b=list[[1]];If[a==1,b,c=list[[2]];d=add[b,c,EC];e=Drop[list,2];Join[{d},e]]];

addlist[list_,EC_]:=Fold[addpair,list,Table[EC,{i,1,Length[list]}]];

multiply[P_,EC_,n_]:=If[n>0,addlist[listmultiply[P,EC,n],EC],opposite[addlist[listmultiply[P,EC,n],EC],EC]];

(* plot elliptic curve and lines *)
plotellipticcurve[EC_,range_,centerpt_,zoom_]:=ContourPlot[y^2+EC[[1]] x y+EC[[3]] y==x^3+EC[[2]] x^2+EC[[4]] x +EC[[5]],{x,1.5 range[[1]][[1]]+centerpt[[1]]-zoom,1.5 range[[1]][[2]]+centerpt[[1]]+zoom},{y,1.5 range[[2]][[1]]+centerpt[[2]]-zoom,1.5range[[2]][[2]]+centerpt[[2]]+zoom},ContourStyle->{Blue,Thickness[.01]}];

firstsetoflines[EC_,n_]:=Module[{a,b},a=torsionsubgroup[EC,n];b=Length[torsionsubgroup[EC,n]];Graphics[{Thickness[.01],Yellow,Table[InfiniteLine[{a[[1]],a[[k]]}],{k,2,b}]}]];

secondsetoflines[EC_,n_]:=Module[{a,b},a=torsionsubgroup[EC,n];b=Length[torsionsubgroup[EC,n]];Graphics[{Thickness[.01],Yellow,Table[InfiniteLine[{a[[k]],opposite[a[[k]],EC]}],{k,2,b}]}]];

finalline[EC_,n_]:=Module[{a,b},a=torsionsubgroup[EC,n];b=Length[torsionsubgroup[EC,n]];Graphics[{Orange,Thickness[.02],InfiniteLine[a[[1]],a[[b]]]}]];

(* torsion information for curve *)
torsionfamily[t_,n_]:=Which[n==4,{1,t,t,0,0},n==5,{t+1,t,t,0,0},n==6,{1-t,-t(t+1),-t(t+1),0,0},n==7,{1-t-t^2,t^2(t+1),t^2(t+1),0,0},n==8,{(-2 t^2+1)/(t+1),-t(2 t + 1),-t(2 t + 1),0,0},n==9,{t^3+t^2+1,t^2(t^3+2t^2+2 t+1),t^2(t^3+2t^2+2 t+1),0,0},n==10,{1-(t^3+3t^2+2t)/(t^2+6 t+4),(t^5+3t^4+2t^3)/(t^4+12t^3+44t^2+48t+16),(t^5+3t^4+2t^3)/(t^4+12t^3+44t^2+48t+16),0,0},n==12,{(6t^4-8t^3+2t^2+2t-1)/(t^3-3t^2+3t-1),(-12t^6+30t^5-34t^4+21t^3-7t^2+t)/(t^4-4t^3+6t^2-4t+1),(-12t^6+30t^5-34t^4+21t^3-7t^2+t)/(t^4-4t^3+6t^2-4t+1),0,0}];

torsionsubgroup[EC_,n_]:=Table[multiply[{0,0},EC,k],{k,1,n-1}];

(* the vertical and horizontal bound functions below try to pick a window that will include the most interesting parts of the elliptic curve... namely the places where it has a vertical or horizontal tangent... this was found with F[x_,y_]=y^2+a1 x y + a3 y - x^3 - a2 x^2-a4 x -a6 and Solve[D[F[x,y[x]],x]==0,y'[x]] *)

verticalbounds[EC_,n_]:=Module[{a,b,c,c1,d,e,f,g},a=Join[Solve[EC[[4]]+2 EC[[2]]x+3 (x^2)-EC[[1]]y==0,x],Solve[EC[[3]]+EC[[1]] x+2 y==0,x]];b=Length[a];c={};Do[c1=Append[c,a[[k]][[1]][[2]]];c=c1,{k,1,b}];
d=Length[c];
e=Flatten[Table[NSolve[y^2+EC[[1]] x y + EC[[3]] y == x^3 + EC[[2]] x^2+EC[[4]] x +EC[[5]]/.x->c[[k]],y,Reals],{k,1,d}]];
f=Length[e];
g=Sort[Join[Table[e[[k]][[2]],{k,1,f}],Transpose[torsionsubgroup[EC,n]][[2]]]];
{Floor[First[g]],Ceiling[Last[g]]}
];

horizontalbounds[EC_,n_]:=Module[{a,b,c,c1,d,e,f,g},a=Join[Solve[EC[[4]]+2 EC[[2]]x+3 (x^2)-EC[[1]]y==0,y],Solve[EC[[3]]+EC[[1]] x+2 y==0,y]];b=Length[a];c={};Do[c1=Append[c,a[[k]][[1]][[2]]];c=c1,{k,1,b}];
d=Length[c];
e=Flatten[Table[NSolve[y^2+EC[[1]] x y + EC[[3]] y == x^3 + EC[[2]] x^2+EC[[4]] x +EC[[5]]/.y->c[[k]],x,Reals],{k,1,d}]];
f=Length[e];
g=Sort[Join[Table[e[[k]][[2]],{k,1,f}],Transpose[torsionsubgroup[EC,n]][[1]]]];
{Floor[First[g]],Ceiling[Last[g]]}
];

ManipulateResourceCreateNotebook

Manipulate[Column[{
Grid[{{
Grid[
Table[
{
Row[{
Text["["],
Text[k],
Text["]"],
Text["{0,0} = "],
Text[
If[k==n,Style["O",Italic],torsionsubgroup[torsionfamily[t,n],n][[k]]]
]
}]
},
{k,1,n}
],Frame->All
],
Show[
If[showlines==True,
Show[firstsetoflines[torsionfamily[t,n],n],secondsetoflines[torsionfamily[t,n],n],finalline[torsionfamily[t,n],n]],
Graphics[Point[{0,0}]]],
plotellipticcurve[torsionfamily[t,n],{horizontalbounds[torsionfamily[t,n],n],verticalbounds[torsionfamily[t,n],n]},centerpt,zoom],
Table[Graphics[{Red,
PointSize[.03],
Tooltip[
Point[torsionsubgroup[torsionfamily[t,n],n][[k]]],
torsionsubgroup[torsionfamily[t,n],n][[k]]]
}],
{k,1,n-1}
],
PlotRange->{{1.5 horizontalbounds[torsionfamily[t,n],n][[1]]+centerpt[[1]]-zoom,1.5 horizontalbounds[torsionfamily[t,n],n][[2]]+centerpt[[1]]+zoom},{1.5 verticalbounds[torsionfamily[t,n],n][[1]]+centerpt[[2]]-zoom,1.5 verticalbounds[torsionfamily[t,n],n][[2]]+centerpt[[2]]+zoom}},
AxesOrigin->{0,0},
Frame->False,
Axes->True,
AspectRatio->1,
ImageSize->.9{400,400}
]
}}],
Row[{Text[y^2+torsionfamily[t,n][[1]] x y+torsionfamily[t,n][[3]] y //OrderedForm],
Text[" = "],
Text[x^3+torsionfamily[t,n][[2]] x^2+torsionfamily[t,n][[4]] x +torsionfamily[t,n][[5]] // TraditionalForm],
Text[" has a rational point of order " ],
Text[n],
Text[" at {0,0}"]
}]
}],
Grid[{{Control[{{t,2,Row[{"change curve (",Style["t", Italic]," value)"}]},{-15,-14,-13,-12,-10,-9,-8,-7,-6,-5,-4,-3,2,3,4,5,6,7,8,9,10,11,12,13,14,15},ControlType->Manipulator,ImageSize->Small,Appearance->"Labeled"}],Control[{{zoom,5,"         zoom"},0,20,ImageSize->Small,Appearance->"Labeled"}]},{Control[{{n,4,Row[{"order of torsion subgroup"}]},{4,5,6,7,8,9,10,12}}],Control[{{centerpt,{0,0},"recenter plot"},{-20,-20},{20,20},ImageSize->50}]},{Control[{{showlines,False,"show group law lines"},{True,False}}]}}],ControlPlacement->Top,SaveDefinitions->True]

SnapshotsResourceCreateNotebook

Source & Additional Information

Contributed ByResourceCreateNotebook

Christopher Grattoni

Details & CitationsResourceCreateNotebook

Snapshot 1: this elliptic curve has a rational point of order 8, and a geometric representation of the group law is visible

Snapshot 2: this elliptic curve has a rational point of order 5

Snapshot 3: this elliptic curve has a rational point of order 12, and a geometric representation of the group law is visible

The notation[n](0,0) for an elliptic curve E is the multiplication-by-n map on E. That is, if we call the group law on the elliptic curve "addition," then[n](0,0) is defined as "adding" (0,0) to itself n times. The identity element for this group law is the point at infinity O for the projective plane. Two points sum to O when they intersect the same vertical line. The yellow lines in the Demonstration are the lines that arise from repeatedly adding (0,0) to itself. The vertical orange line is meant to signify the final sum, (0,0)+[n-1](0,0)=[n](0,0)=O. The Demonstration "Addition of Points on an Elliptic Curve over the Reals" shows this chord-and-tangent formulation of the elliptic curve group law.

You may want to know how to compute f(t),q(t)∈ℚ(t) such that E:(y^2)+f(t) x y+g(t)y =(x^3)+g(t)(x^2) has a rational point of order n ∈ {4,5,6,7,8,9,10,12} at the point (0,0). First, suppose E has a rational point of order n. This implies that E is birationally equivalent to an elliptic curve in Tate normal form, E:(y^2)+(1-w) x y+v y =(x^3)+v (x^2) for v,w∈ℚ, such that (0,0) is a rational point of order n. Next, compute[n](0,0) and suppose it equals O. This allows one to find a relation between v and w. Once this relation is found, use this in E:(y^2)+(1-w) x y+v y =(x^3)+v (x^2), which results in the desired one-parameter family of curves with a rational point of order n for n ∈ {4,5,6,7,8,9,10,12}. These results are summarized below:

({{n, f(t), g(t)}, {4, 1, t}, {5, t+1, t}, {6, 1-t, -t(t+1)}, {7, 1-t-(t^2), (t^2)(t+1)}, {8, ((-2(t^2)+1)/(t+1)), -t(2t+1)}, {9, (t^3)+(t^2)+1, (t^2)((t^3)+2(t^2)+2t+1)}, {10, 1-(((t^3)+3(t^2)+2t)/((t^2)+6t+4)), (((t^5)+3(t^4)+2(t^3))/((t^4)+12(t^3)+44(t^2)+48t+16))}, {12, ((6(t^4)-8(t^3)+2(t^2)+2t-1)/((t^3)-3(t^2)+3t-1)), ((-12(t^6)+30(t^5)-34(t^4)+21(t^3)-7(t^2)+t)/((t^4)-4(t^3)+6(t^2)-4t+1))}})

ReferencesResourceCreateNotebook

[1] J. H. Silverman, The Arithmetic of Elliptic Curves, New York: Springer-Verlag, 1986.

[2] I. García, M. A. Olalla, and J. M. Tornero, "Computing the Rational Torsion of an Elliptic Curve Using Tate Normal Form," Journal of Number Theory, 96(1), 2002 pp. 76–88. doi:10.1006/jnth.2002.2780.

[3] E. V. Flynn and C. Grattoni, "Descent via Isogeny on Elliptic Curves with Large Rational Torsion Subgroups," Journal of Symbolic Computation, 43(4), 2008 pp. 293–303. doi:10.1016/j.jsc.2007.11.001.

Submission NotesResourceCreateNotebook

Additional information for the reviewer.

KeywordsResourceCreateNotebook

elliptic curves

torsion

torsion subgroup

parameterized family

group law

elliptic curve group law

chord-and-tangent

point addition

algebraic curve

genus 1 curve

CategoriesResourceCreateNotebook

Related DemonstrationsResourceCreateNotebook

Link to a related demonstration

External LinksResourceCreateNotebook

Rational Points on Elliptic Curves

Addition of Points on an Elliptic Curve over the Reals

Related SymbolsResourceCreateNotebook

SymbolName (documented Wolfram Language symbol)

Published DateResourceCreateNotebook

2015-06-18

CompatibilityResourceCreateNotebook

AR SupportResourceCreateNotebook

Wolfram Language VersionResourceCreateNotebook

6

Cloud SupportResourceCreateNotebook