Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Project: Math 582b
Views: 2495

January 27, 2016: Explicitly computing the mod-5 representation attached to 11a

K.<a> = NumberField(x^4 - x^3 + x^2 - x + 1); K
Number Field in a with defining polynomial x^4 - x^3 + x^2 - x + 1
E = EllipticCurve('11a') EK = E.change_ring(K)
# Compute the ring of integers: R = K.maximal_order() show(R.basis())
[1\displaystyle 1, a\displaystyle a, a2\displaystyle a^{2}, a3\displaystyle a^{3}]
# Heh, it's just prime still. v = K.factor(2); v
Fractional ideal (2)

Compute the residue class field explicitly and reduction map:

F2 = v[0][0].residue_field(); F2 EK = E.change_ring(K) T = EK.torsion_subgroup(); T T.gens()
Residue field in abar of Fractional ideal (2) Torsion Subgroup isomorphic to Z/5 + Z/5 associated to the Elliptic Curve defined by y^2 + y = x^3 + (-1)*x^2 + (-10)*x + (-20) over Number Field in a with defining polynomial x^4 - x^3 + x^2 - x + 1 ((16 : 60 : 1), (7*a^3 - 2*a^2 + 4*a - 7 : 7*a^3 - 13*a^2 - 7*a - 18 : 1))
P1, P2 = T.gens() # move to actual points on the curve! (this is really annoying, but DO IT) P1 = P1.element() P2 = P2.element() P1[0] P1[1] P2[0] P2[1]
16 60 7*a^3 - 2*a^2 + 4*a - 7 7*a^3 - 13*a^2 - 7*a - 18
︠f64959f2-a289-439a-89bd-76b88cda2843i︠ %md Clearly $\text{Frob}_2$ acts trivially on $P_1$, since $P_1$ is already rational, hence reduces to a point in $E(\FF_5)$.

Clearly Frob2\text{Frob}_2 acts trivially on P1P_1, since P1P_1 is already rational, hence reduces to a point in E(F5)E(\FF_5).

Reduce the points P1P_1 and P2P_2 modulo 22:

# P1 reduces to something fixed by Frob2 [F2(P1[0]), F2(P1[1])]
[0, 0]
# P2 reduces to something NOT fixed by frob2: [F2(P2[0]), F2(P2[1])]
[abar^3 + 1, abar^3 + abar^2 + abar]
Frob2P2 = [F2(P2[0])^2, F2(P2[1])^2] Frob2P2
[abar + 1, abar^3 + 1]

Now we need to figure out what linear combination of P1 and P2 reduces to Frob2P2.

We'll just brute force it for now:

def write_point_in_terms_of_basis(P): k = P[0].parent() E_k = E.change_ring(k) # Reduce P1 and P2 from char 0. P1bar = E_k([k(P1[0]), k(P1[1])]) P2bar = E_k([k(P2[0]), k(P2[1])]) p = k.characteristic() for i in [0..4]: for j in [0..4]: if i*P1bar + j*P2bar == P: return [i,j]
write_point_in_terms_of_basis(Frob2P2)
[2, 2]

Conclusion: Frob2\text{Frob}_2 sends P1P_1 to P1P_1 and P2P_2 to 2P1+2P22P_1 + 2P_2.

Frob2 = matrix(GF(5), [[1,0], [2,2]]).transpose(); Frob2
[1 2] [0 2]

Double check: Is (x1)(x2)x2a2x+2(mod5)(x-1)(x-2) \equiv x^2 - a_2 x + 2 \pmod{5}?

E.ap(2)
-2
Frob2^4
[1 0] [0 1]
x = polygen(GF(5),'x') (x-1)*(x-2) x^2 - E.ap(2)*x + 2
x^2 + 2*x + 2 x^2 + 2*x + 2

YEP.

Final note: Computing Frob_p for other primes p>2p>2 is not more difficult. The difficulty is entirely a function of the original choice of \ell.

def Tmodp(p): v = K.factor(p) F = K.factor(p)[0][0].residue_field() return [ F(P1[0]), F(P1[1])], [ F(P2[0]), F(P2[1])] def frob(P): k = P[0].parent() p = k.characteristic() return [P[0]^p, P[1]^p] def rho_frob(p): P1mod, P2mod = Tmodp(p) im1 = write_point_in_terms_of_basis(frob(P1mod)) im2 = write_point_in_terms_of_basis(frob(P2mod)) return matrix(GF(5),2,2,[im1, im2]).transpose()
write_point_in_terms_of_basis(frob(Tmodp(2)[1]))
[2, 2]
rho_frob(2)
[1 2] [0 2]
R.<x> = GF(5)[] for p in [2,3,7] + prime_range(13,60): A = rho_frob(p) print '-'*10, '\n', p print A, A.fcp(), " = ", (x^2 - E.ap(p)*x + p).factor()
---------- 2 [1 2] [0 2] (x + 3) * (x + 4) = (x + 3) * (x + 4) ---------- 3 [1 4] [0 3] (x + 2) * (x + 4) = (x + 2) * (x + 4) ---------- 7 [1 2] [0 2] (x + 3) * (x + 4) = (x + 3) * (x + 4) ---------- 13 [1 4] [0 3] (x + 2) * (x + 4) = (x + 2) * (x + 4) ---------- 17 [1 2] [0 2] (x + 3) * (x + 4) = (x + 3) * (x + 4) ---------- 19 [1 1] [0 4] (x + 1) * (x + 4) = (x + 1) * (x + 4) ---------- 23 [1 4] [0 3] (x + 2) * (x + 4) = (x + 2) * (x + 4) ---------- 29 [1 1] [0 4] (x + 1) * (x + 4) = (x + 1) * (x + 4) ---------- 31 [1 0] [0 1] (x + 4)^2 = (x + 4)^2 ---------- 37 [1 2] [0 2] (x + 3) * (x + 4) = (x + 3) * (x + 4) ---------- 41 [1 0] [0 1] (x + 4)^2 = (x + 4)^2 ---------- 43 [1 4] [0 3] (x + 2) * (x + 4) = (x + 2) * (x + 4) ---------- 47 [1 2] [0 2] (x + 3) * (x + 4) = (x + 3) * (x + 4) ---------- 53 [1 4] [0 3] (x + 2) * (x + 4) = (x + 2) * (x + 4) ---------- 59 [1 1] [0 4] (x + 1) * (x + 4) = (x + 1) * (x + 4)