"Source: Text/Geometry/CrvEll.text";
"Line: 1678";
"Date: Wed Sep 19 23:00:01 2018";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/CrvEll.text, line: 1678
// Example: H131E16 ()
print "Example: H131E16";
ei := GetEchoInput();
SetEchoInput(true);
FF := FiniteField(167);
a := FF!2; b := FF!3; r := a^2 - 4*b;
E1 := EllipticCurve([0, a, 0, b, 0]);
E2 := EllipticCurve([0, -2*a, 0, r, 0]);
_<x> := PolynomialRing(BaseRing(E1));
Ff, f := IsogenyFromKernel(E1, x);
Fg, g := IsogenyFromKernel(E2, x);
b, m1 := IsIsomorphic(Ff, E2); assert b;
b, m2 := IsIsomorphic(Fg, E1); assert b;
// Verify that f and g are dual isogenies of degree 2
&and[ m2(g(m1(f(P)))) eq 2*P : P in RationalPoints(E1) ];
assert $1;
&and[ m1(f(m2(g(Q)))) eq 2*Q : Q in RationalPoints(E2) ];
assert $1;
SetEchoInput(ei);
