// ==================================================== // SECTION 3 :: TWO DESCENT AND COVERING COLLECTIONS // ==================================================== function Squarefreepart(d) dd,r:=Squarefree(Numerator(d)*Denominator(d)); return dd; end function; //----------------------------------------- // (2) //----------------------------------------- _:=PolynomialRing(Rationals()); p:=36*t^4 + 96*t^3 - 236*t^2 + 80*t + 25; a2:=4;b2:=54; F2:=HyperellipticCurve(p); P2:=F2![1,1]; EE2,mapF2EE2:=EllipticCurve(F2,P2); E2:=EllipticCurve(t*(t+a2)*(t+b2)); E2; boo,mapEE2E2:=IsIsomorphic(EE2,E2); boo; /* true */ mapF2E2:=Extend(mapF2EE2*mapEE2E2); A3:=AffineSpace(Rationals(),3); p1:=6*t^2-4*t-1; p2:=6*t^2+20*t-25; F2p:=Curve(A3,[y1^2-p1,y2^2-p2]); F2pP:=ProjectiveClosure(F2p); P2p:=F2pP![1,1,1,1]; EE2p:=EllipticCurve(F2pP,P2p); Q2:=E2![0,0]; phi2:=DualIsogeny(TwoIsogeny(Q2)); E2p:=Domain(phi2); boo,mapEE2pE2p:=IsIsomorphic(EE2p,E2p); boo; /* true */ phi2m:=Extend(phi2); E2p; /* Elliptic Curve defined by y^2 = x^3 - 116*x^2 + 2500*x over Rational Field */ phi2m; /* Mapping from: CrvEll: E2p to CrvEll: E2 with equations : 1/4*x^3 - 29*x^2*z + 625*x*z^2 1/8*x^2*y - 625/2*y*z^2 x^2*z and alternative equations : 1/4*x*y^2 - 29*y^2*z 1/8*y^3 - 625*x*y*z + 36250*y*z^2 y^2*z - 2500*x*z^2 1/4*x^2*y - 29*x*y*z + 625*y*z^2 1/8*x*y^2 - 625/2*x^2*z + 36250*x*z^2 - 781250*z^3 x*y*z */ S2,map2:=SelmerGroup(phi2); Delta2:=[Inverse(map2)(delta) : delta in S2]; Delta2; /* [ 1, 6, -1, -6 ] */ //----------------------------------------- // (4) //----------------------------------------- _:=PolynomialRing(Rationals()); q:=36*t^4 - 72*t^3 + 72*t^2 - 60*t + 25; a4:=-12;b4:=-15; F4:=HyperellipticCurve(q); P4:=F4![1,1]; EE4,mapF4EE4:=EllipticCurve(F4,P4); E4:=EllipticCurve(t*(t+a4)*(t+b4)); boo,mapEE4E4:=IsIsomorphic(EE4,E4); boo; /* true */ mapF4E4:=Extend(mapF4EE4*mapEE4E4); _:=PolynomialRing(Rationals()); L:=NumberField(X^2-6); A3:=AffineSpace(L,3); q1:=(5+2*a)*(5 - 6*t - 2*a*t + 6*t^2); q2:=(5-2*a)*(5 - 6*t + 2*a*t + 6*t^2); F4p:=Curve(A3,[y1^2-q1,y2^2-q2]); F4pP:=ProjectiveClosure(F4p); P4p:=F4pP![1,1,1,1]; EE4p:=EllipticCurve(F4pP,P4p); Q4:=E4![0,0]; phi4:=DualIsogeny(TwoIsogeny(Q4)); E4p:=Domain(phi4); phi4m:=Extend(phi4); boo,mapEE4pE4p:=IsIsomorphic(EE4p,BaseChange(E4p,L)); boo; /* true */ E4p; /* Elliptic Curve defined by y^2 = x^3 + 54*x^2 + 9*x over Rational Field */ phi4m; /* Mapping from: CrvEll: E4p to CrvEll: E4 with equations : 1/4*x^3 + 27/2*x^2*z + 9/4*x*z^2 1/8*x^2*y - 9/8*y*z^2 x^2*z and alternative equations : 1/4*x*y^2 + 27/2*y^2*z 1/8*y^3 - 9/4*x*y*z - 243/4*y*z^2 y^2*z - 9*x*z^2 1/4*x^2*y + 27/2*x*y*z + 9/4*y*z^2 1/8*x*y^2 - 9/8*x^2*z - 243/4*x*z^2 - 81/8*z^3 x*y*z */ S4,map4:=SelmerGroup(phi4); Delta4:=[Inverse(map4)(delta) : delta in S4]; Delta4; /* [ 1, 3, 2, 6, 5, 15, 10, 30 ] */