"Source: Text/Geometry/CrvHyp.text";
"Line: 4746";
"Date: Fri Sep 26 09:12:34 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/CrvHyp.text, line: 4746
// Example: H137E34 ()
print "Example: H137E34";
ei := GetEchoInput();
SetEchoInput(true);
Q:=Rationals();
Qx<x>:=PolynomialRing( Q );
C:=HyperellipticCurve(2*x^6+x+2);
Hk,AtoHk:=TwoCoverDescent(C);
#Hk;
assert $1 eq 0;
C:=HyperellipticCurve(-x^6+2*x^5+3*x^4-x^3+x^2+x-3);
Hk,AtoHk:=TwoCoverDescent(C);
#Hk;
assert $1 eq 0;
f:=2*x^6+x^4+3*x^2-2;
C:=HyperellipticCurve(f);
Hk,AtoHk:=TwoCoverDescent(C:PrimeBound:=30);
A<theta>:=Domain(AtoHk);
deltas:={-1-theta,1-theta};
{AtoHk(d): d in deltas} eq Hk;
assert $1;
L<alpha>:=NumberField(x^2+x+2);
LX<X>:=PolynomialRing(L);
g:=(X^2-1/2)*(X^2-alpha);
h:=2*(X^2+alpha+1);
g*h eq Evaluate(f,X);
assert $1;
LTHETA<THETA>:=quo<LX|g>;
j:=hom<A->LTHETA|THETA>;
gamma:=1/2*(-alpha + 1);
{Norm(j(delta)):delta in deltas} eq {gamma};
assert $1;
E:=HyperellipticCurve( gamma * g );
P1:=ProjectiveSpace(Rationals(),1);
EtoP1:=map<E->P1|[E.1,E.3]>;
P0:=E![1,(1-alpha)/2];
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);
success;
assert $1;
MWgrp;
V,R:=Chabauty(MWmap,EtildeToP1:IndexBound:=2);
V;
R;
assert $1 eq 4;
CtoP1 := map< C -> P1 | [C.1,C.3] >;
pi := Extend( EtildeToP1 );
{ pi( MWmap( v ) ) : v in V };
[ RationalPoints( p@@CtoP1 ): p in { P1(Q)| pi( MWmap( v ) ) : v in V } ];
SetEchoInput(ei);
