"Source: Text/Geometry/CrvEllQNF.text";
"Line: 4111";
"Date: Fri Apr 14 10:35:14 2023";
"Main: Thu May 25 10:02:38 2023";
// original file: Text/Geometry/CrvEllQNF.text, line: 4111
// Example: H130E32 ()
print "Example: H130E32";
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);
