"Source: Text/Geometry/CrvEllQNF.text";
"Line: 4070";
"Date: Fri Apr 14 10:35:14 2023";
"Main: Thu May 25 10:02:38 2023";
// original file: Text/Geometry/CrvEllQNF.text, line: 4070
// Example: H130E31 ()
print "Example: H130E31";
ei := GetEchoInput();
SetEchoInput(true);
P<x> := PolynomialRing(Integers());
d := &*[ p : p in [1..50] | IsPrime(p) ];
E := EllipticCurve(HyperellipticCurve(d*x*(x + 1)*(x + 3)));
A, mp := TorsionSubgroup(E);
T := [ t : a in A | t ne E!0 where t := mp(a) ];
phis := [ TwoIsogeny(t) : t in T ];
[ RankBound(E : Isogeny := phi) : phi in phis ];
two := MultiplicationByMMap(E,2);
RankBound(E : Isogeny := two);
assert $1 eq 1;
OtherTwos := [ MultiplicationByMMap(Codomain(phi), 2) : phi in phis ];
[ RankBound(Domain(two) : Isogeny := two) : two in OtherTwos ];
SetEchoInput(ei);
