/////////////////////////////////////////////////////////////////////////// // // "An algorithm for determining torsion growth of elliptic curves" // Enrique González-Jiménez & Filip Najman // // Magma script related to Section 5: A degree 6 sporadic point on X_1(4,12) // // file: section5_sporadic4x12.txt // /////////////////////////////////////////////////////////////////////////// // 25/3/2019 - Magma 2.24 ////////////////////////////////////////////////////////////////////////// // If E(Q)_tors has a point of order dividing 4 and torsio (4,4) over a subfield of a sextic number field, then it is over a quadratic. load "2primary_Ss.txt"; assert {r[3][3,1] : r in RZB | r[3][1,2] eq 1 and IsDivisibleBy(6,r[3][3,1])} eq {2}; //////////////////////////////////////////////////////////////////////// // Fiber product of X20b and X_{3Cs} A2:=AffineSpace(Rationals(),2); C:=Curve(A2,(t+1)*z^3+4*(t^2-8*t-11)); assert Genus(C) eq 2; X:=ProjectiveClosure(C); Pts:=Points(X:Bound:=1000); boo,curve,map:=IsHyperelliptic(X); /* > curve; Hyperelliptic Curve defined by y^2 = x^6 - 10*x^3 + 27 over Rational Field */ J:=Jacobian(curve); a,b:=RankBounds(J); assert a eq 0 and b eq 0; Cha:=Chabauty0(J); /* >Cha; {@ (1 : -1 : 0), (1 : 1 : 0) @} >{map(pt) : pt in Pts}; { (1 : -1 : 0), (1 : 1 : 0) } */ //////////////////////////////////////////////////////////////////////// // Fiber product of X20b and X_{3Cs} _:=RationalFunctionField(Rationals()); s:=t; J3:=27*(s+1)*(s+9)^3/s^3; J0:=-4*(-3+t^2)^3*(-11-8*t+t^2)/((1+t)^4); R:=PolynomialRing(Rationals(),2); g:=Numerator(Evaluate(J3,x)-Evaluate(J0,y)); X:=ProjectiveClosure(Curve(AffineSpace(R),g)); PtsX:=Points(X:Bound:=1000); assert Genus(X) eq 1; E,mp1:=EllipticCurve(X,X![-4/3,7]); assert CremonaReference(E) eq "48a3"; EE,mm := MinimalModel(E); mm:=mm^-1; MW:=AbelianInvariants(MordellWeilGroup(EE)); T,mp2 := TorsionSubgroup(EE); assert AbelianInvariants(T) eq [2,4]; rE:=Rank(EE); assert rE eq 0; PtsC := { }; for p in T do PtsC := PtsC join RationalPoints(mm(mp2(p)) @@ mp1); end for; assert PtsC eq PtsX; //////////////////////////////////////////////////////////////////////// procedure cuenta(t) E:=EllipticCurve([0,0,0,-27*t^8 + 648*t^7 - 4212*t^6 - 2376*t^5 + 60102*t^4 + 79704*t^3 - 105732*t^2 - 235224*t - 107811,54*t^12 - 1944*t^11 + 24300*t^10 - 97848*t^9 - 251262*t^8 + 1722384*t^7 + 4821768*t^6 - 8697456*t^5 - 64323558*t^4 - 140447736*t^3 - 157012020*t^2 - 90561240*t - 21346578]); printf "t = %o - label = %o - Torsion over Q = %o\n",t,CremonaReference(E),AbelianInvariants(TorsionSubgroup(E)); end procedure; for t0 in {pt[2] : pt in PtsX | pt[3] ne 0 and pt[2]ne -1} do cuenta(t0); end for; print "Done"; quit;