2Pt<t> := PolynomialRing(Rationals());
3Ri<i> := ext<Rationals() | t^2 + 1>;
4Ra<A> := PolynomialRing(Ri);
5RxPyP<xP, yP> := PolynomialRing(Ra, 2);
8print
"\nBaseline curve model, F: y² = x³ + Ax² + x";
10h := y^2 - x^3 - A*x^2 - x;
11f := Evaluate(h, [x + xP, y +
yP]);
18print
"\n3-isogeny curve model, E: y² + a₁xy + a₃y = x³\nwhere";
19printf
"a1:\t %o\n",
a1;
20printf
"a3:\t %o\n\n",
a3;
22function j_invariant(
a1,
a3, a2, a4, a6)
26 b8 :=
a1^2 * a6 -
a1 *
a3 * a4 + a2 *
a3^2 + 4 * a2 * a6 - (a4^2);
27 Disc := -(b2^2) * b8 + 9 * b2 *
b4 * b6 - 8 *
b4^3 - 27 * b6^2;
30 c6 := -(b2^3) + 36 * b2 *
b4 - 216 * b6;
33 var2 :=
c4^3 / ((
c4^3 -
c6^2) / 1728);
43print
"\nIsomorphic 3-isogeny curve, Ẽ: y² + ã₁xy + ã₃y = x³\nwhere";
44printf
"\nã1:\t %o\n",
a1 *
yP;
45printf
"ã3:\t %o\n\n",
a3 * (
yP^3);
48printf
"Do we have j(E) = j(Ẽ)? %o\n",
_num/_den eq
num_/
den_;
function j_invariant(a1, a3, a2, a4, a6) b2 b4
RxPyP< xP, yP > Rxy< x, y >
f x MonomialCoefficient(f, y)