"Source: Text/Geometry/CrvHyp.text";
"Line: 4090";
"Date: Fri Sep 26 09:12:34 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/CrvHyp.text, line: 4090
// Example: H137E27 ()
print "Example: H137E27";
ei := GetEchoInput();
SetEchoInput(true);
_<x> := PolynomialRing(Rationals());
pol := x*(x+1344^2)*(x+10815^2)*(x+5406^2)*(x+2700^2);
C := HyperellipticCurve( pol );
J := Jacobian(C);
J;
ptsC := Points(C : Bound := 10^6);
ptsC;
pointAtInfinity := ptsC[1];
time ptsJ := Points(J : Bound := 2000);
ptsJ;
ptsJ[1] eq J!0;  // Is the first point equal to 0 on J?
assert $1;
Order( ptsJ[2] );
assert $1 eq 2;
Jtors, map := TorsionSubgroup(J);
Jtors;
map(Jtors.4); 
map(3*Jtors.4);
P := ptsC[3];
PJ := J![ P, pointAtInfinity ];
PJ;
Order(PJ);
assert $1 eq 0;
#TwoSelmerGroup(J);
assert $1 eq 64;
HasSquareSha(J);
assert $1;
SetEchoInput(ei);
