"Source: Text/Geometry/CrvEllQNF.text";
"Line: 4115";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/CrvEllQNF.text, line: 4115
// Example: H133E32 ()
print "Example: H133E32";
ei := GetEchoInput();
SetEchoInput(true);
E := EllipticCurve([0, 977, 0, 976, 0]);
#TwoTorsionSubgroup(E);
assert $1 eq 4;
RankBound(E);
assert $1 eq 2;
ptsE := [E| [-4, 108], [4, 140]];
IsLinearlyIndependent(ptsE); // they are non-torsion points
assert $1;
// So E is really of rank 2
d := 109;
Ed := QuadraticTwist(E, d);
Points(Ed, -976);
_<x> := PolynomialRing(Rationals());
K := NumberField(x^2 - d);
EK := BaseChange(E, K);
Ngens(TwoSelmerGroup(EK));
assert $1 eq 5;
Ngens(TwoSelmerGroup(Ed));
assert $1 eq 5;
RankBound(Ed);
SetEchoInput(ei);
