Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
j-invariants.m
Go to the documentation of this file.
2function j_invariant(a1, a3, a2, a4, a6)
3 b2 := a1^2 + 4 * a2;
4 b4 := a1 * a3 + 2 * a4;
5 b6 := a3^2 + 4 * a6;
6 b8 := a1^2 * a6 - a1 * a3 * a4 + a2 * a3^2 + 4 * a2 * a6 - (a4^2);
7 Disc := -(b2^2) * b8 + 9 * b2 * b4 * b6 - 8 * b4^3 - 27 * b6^2;
8
9 c4 := b2^2 - 24 * b4;
10 c6 := -(b2^3) + 36 * b2 *b4 - 216 * b6;
11
12 var1 := c4^3 / Disc;
13 var2 := c4^3 / ((c4^3 - c6^2) / 1728);
14
15 assert(var1 eq var2);
16 return c4^3, (c4^3 - c6^2) / 1728;
17end function;
18
19Pt<t> := PolynomialRing(Rationals());
20Ru<u> := ext<Rationals() | t^2 - 3>;
21Px<x> := PolynomialRing(Ru);
22Ri<i> := ext<Ru | x^2 + 1>;
23Ra<a1, a3, alpha> := PolynomialRing(Ri, 3);
24
25zeta3 := (-1 + i * u) / 2;
26alpha_ := zeta3 * alpha;
27_alpha := zeta3^2 * alpha;
28
29num, den := j_invariant(a1, a3, 0, 0, 0);
30fac_num := Factorization(num);
31assert num div &*[fk[1]^fk[2] : fk in fac_num] eq 1;
32fac_den := Factorization(den);
33printf "j(G):\n(%o)\n-------------------------------------------------------\n\t\t(%o)\n", num,den;
34assert den div &*[fk[1]^fk[2] : fk in fac_den] eq 1;
35printf "\nits numerator factors as: %o\n", fac_num;
36printf "its denominator factors as: %o\n\n", fac_den;
37
38
39num, den := j_invariant(a1, a3, 0, -5 * a1 * a3, -a1^3 * a3 - 7 * a3^2);
40fac_num := Factorization(num);
41assert num div &*[fk[1]^fk[2] : fk in fac_num] eq 1;
42fac_den := Factorization(den);
43printf "j(E):\n(%o)\n-------------------------------------------------------------\n (%o)\n", num,den;
44assert den div &*[fk[1]^fk[2] : fk in fac_den] eq 1;
45printf "\nits numerator factors as: %o\n", fac_num;
46printf "its denominator factors as: %o\n\n", fac_den;
47
48
49RA<A> := PolynomialRing(Ri);
50
51num, den := j_invariant(0, 0, A, 1, 0);
52fac_num := Factorization(num);
53c_num := num div &*[fk[1]^fk[2] : fk in fac_num];
54fac_den := Factorization(den);
55printf "j(F₀):\n(%o)\n--------------------------------------------\n (%o)\n", num,den;
56c_den := den div &*[fk[1]^fk[2] : fk in fac_den];
57printf "\nits numerator factors as: %o\n", fac_num;
58printf "its denominator factors as: %o\n", fac_den;
59printf "and constant factor: %o\n\n", c_num / c_den;
60
61num, den := j_invariant(0, 0, A + 6, 4 * (2 + A), 0);
62fac_num := Factorization(num);
63c_num := num div &*[fk[1]^fk[2] : fk in fac_num];
64fac_den := Factorization(den);
65printf "j(F₋₁):\n(%o)\n-----------------------------------------------\n (%o)\n", num,den;
66c_den := den div &*[fk[1]^fk[2] : fk in fac_den];
67printf "\nits numerator factors as: %o\n", fac_num;
68printf "its denominator factors as: %o\n", fac_den;
69printf "and constant factor: %o\n\n", c_num / c_den;
70
71exit;
Ra< a1, a3, alpha > zeta3
id c6()
function j_invariant(a1, a3, a2, a4, a6) b2 b4
Definition j-invariants.m:2
den a3
assert(var1 eq var2)
num
den fac_num
return c4
for i
clear
Definition prime_search.m:1
g a1
Definition to_model.m:15