Magma V2.14-7 Mon Mar 10 2008 10:56:50 on stan [Seed = 1171747939] Type ? for help. Type -D to quit. > Attach("twocovdesc.m"); > > Qx:=PolynomialRing(Rationals()); > > /////////////////////////////////////////////////////////////////////////////// > //Example 7.1 > > C:=HyperellipticCurve(2*x^6+x+2); > Hk,AtoHk:=TwoCoverDescent(C); > #Hk; 0 > > /////////////////////////////////////////////////////////////////////////////// > //Example 7.2 > > C:=HyperellipticCurve(-x^6+2*x^5+3*x^4-x^3+x^2+x-3); > Hk,AtoHk:=TwoCoverDescent(C); > #Hk; 0 > > /////////////////////////////////////////////////////////////////////////////// > //Example 8.1 > > f:=2*x^6+x^4+3*x^2-2; > C:=HyperellipticCurve(f); > Hk,AtoHk:=TwoCoverDescent(C); > A:=Domain(AtoHk); > deltas:={-1-theta,1-theta}; > {AtoHk(d): d in deltas} eq Hk; true > L:=NumberField(x^2+x+2); > LX:=PolynomialRing(L); > g:=(X^2-1/2)*(X^2-alpha); > h:=2*(X^2+alpha+1); > g*h eq Evaluate(f,X); true > > LTHETA:=quo; > j:=homLTHETA|THETA>; > {Norm(j(delta)):delta in deltas} eq {1/2*(-alpha + 1)}; true > E:=HyperellipticCurve( (1-alpha)*(2*X^2-1)*(X^2-alpha)); > P1:=ProjectiveSpace(Rationals(),1); > EtoP1:=mapP1|[E.1,E.3]>; > > P0:=E![1,alpha-1]; > Eprime,EtoEprime:=EllipticCurve(E,P0); > Etilde:=EllipticCurve(X^3+(1-alpha)*X^2+(2-9*alpha)*X+(16-2*alpha)); > EprimeToEtilde:=Isomorphism(Eprime,Etilde); > > EtoEtilde:=EtoEprime*EprimeToEtilde; > > EtildeToP1:=Expand(Inverse(EtoEtilde)*EtoP1); > > success,MWgrp,MWmap:=PseudoMordellWeilGroup(Etilde); > assert success; > MWgrp; Abelian Group isomorphic to Z/2 + Z Defined on 2 generators Relations: 2*MWgrp.1 = 0 > N,V,R:=Chabauty(MWmap,EtildeToP1,5); > N eq #V; true > R; 4 > {EvaluateByPowerSeries(EtildeToP1,MWmap(g)):g in V}; { (1 : 1), (-1 : 1) } > RationalPoints(C,1); {@ (1 : 2 : 1), (1 : -2 : 1) @} > RationalPoints(C,-1); {@ (-1 : 2 : 1), (-1 : -2 : 1) @} > > /////////////////////////////////////////////////////////////////////////////// > // Example 9.1 > > k:=NumberField(x^2-2); > kX:=PolynomialRing(k); > E:=EllipticCurve(X^3+(2-2*alpha)*X+(2-9*alpha)); > Hk,AtoHk:=TwoCoverDescent(HyperellipticCurve(E)); > A:=Domain(AtoHk); > delta:=theta^2+(8-4*alpha)*theta+13-6*alpha; > two:=MultiplicationByMMap(E,2); > mu,tor:=CasselsMap(two); > Sel2,mp:=SelmerGroup(two); > B:=Domain(mp); > Modulus(A) eq Modulus(B); true > AtoB:=homB|B.1>; > {mp(AtoB(d@@AtoHk)):d in Hk} eq {a: a in Sel2}; true > D:=Domain(tor(AtoB(delta))); > C:=Quartic(D); > HkC:=TwoCoverDescent(C); > #HkC; 0 > > Total time: 74.769 seconds, Total memory usage: 36.61MB