Torsion Points on Elliptic Curves over Quartic Number Fields

Sheldon Kamienny and William Stein

March 2, 2010

Contents

1 Introduction 1

2 Geometric Arguments: p = 19, 23, 29, ... 2

3 The Quartic Criterion 2 3.1 p = 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2 p = 43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 p = 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.4 p = 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.5 p = 59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.6 p = 61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.7 p = 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.8 p = 71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.9 p = 73 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.10 p = 79 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.11 p = 83 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.12 p = 89 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.13 p = 97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Appendix: The Code 8

1 Introduction

The goal of this paper is to prove the following statement:

Theorem 1.1. Suppose E is an elliptic curve over a quartic number field K. If a prime p divides #E(K)_{tor} then p ≤ 13.

Something about [Jeon, Kim, Park]. Something about [Parent]

2 Geometric Arguments: p = 19, 23, 29, ...

Kamienny’s arguments that don’t require using Section 3.

3 The Quartic Criterion

Let p be a prime and ℓ ≠ p another prime. Let I_{e} be the annihilator in 𝕋_{Γ_{1}(p)} of the winding element e = {0, ∞}, so the winding quotient is J_{1}(p)/IJ_{1}(p), which is an optimal quotient of J_{1}(p), which may or may not be simple, but which does have rank 0 (by Kato’s theorem).

Let t_{1} ∈ 𝕋_{Γ_{1}(p)} be an element such that t_{1}I_{e} = 0. We can construct examples of such elements as follows. Suppose T ∈ 𝕋_{Γ_{1}(p)}. Factor f = ∏ f_{i}^{e_{i}} and let

J = {j : (f/f_{j}^{e_{j}})(T)({0, ∞}) = 0}.

Then t_{1} = ∏_{j∈J} f_{j}^{e_{j}}(T) has the property that t_{1}I_{e} = 0. The above calculation of J would be very expensive if done naively in general. Instead, we compute all the iterates T^{i}({0, ∞}), so that we can then very efficiently compute g(T)({0, ∞}) for any polynomial g.

If ℓ > 2 let t_{2} = 1. If ℓ = 2, we take

t_{2} = T_{q} − q⟨q⟩ − 1

for any choice of q ≠ p.

Remark 3.1. In the definition of t_{1}, one could also use linear algebra to find a basis for the ℤ-module of all possible t_{1} that kill I, instead of just giving examples. This may turn out to be necessary. Likewise, Parent allows t_{2} to more generally be any element that kills all μ_{2} in J_{1}(p), so if the above special examples of t_{2} don’t suffice, then we may have to find construct the space of all possible t_{2}.

Theorem 3.2 (Parent). Let d be an integer and p a prime number. Choose a prime number ℓ ≠ p and two elements t_{1}, t_{2} ∈ 𝕋 as defined above, and let t = t_{1}t_{2} ∈ 𝕋. For each partition n_{1} + n_{2} + ⋯ + n_{m} = d of d into m positive integers and (m − 1)-tuple v = (d_{2}, …, d_{m}) with 1 < d_{2}, d_{3}, …, d_{m} < p/2 pairwise distinct. Consider the following sequence

B_{d,v} = (tT_{1}, tT_{2}, …, tT_{n_{1}}, t⟨d_{2}⟩T_{1}, …, t⟨d_{2}⟩T_{n_{2}}, …, t⟨d_{m}⟩T_{1}, …, t⟨d_{m}⟩T_{n_{m}})

of elements of 𝕋⊗𝔽_{ℓ}. If p > (1+ℓ^{d/2})^{2} and the elements of every sequence B_{d,v} are linearly independent, then there is no elliptic curve over a degree d number field with a rational torsion point of order p.

We need an analogue of Proposition 1.12 of Parent but for degree 4 instead of degree 3. We take d = 4 and ℓ = 2, so

(1 + ℓ^{d/2})^{2} = 25.

For d = 4, the partitions are:

(1, 1, 1, 1), (1, 1, 2), (2, 2), (1, 3), (4).

Proposition 3.3. Let p > 25 be a prime and consider Hecke operators T_{n} in the Hecke algebra 𝕋 = 𝕋_{Γ_{1}(p)} ⊗ 𝔽_{2} associated to S_{2}(Γ_{1}(p); 𝔽_{2}). Consider the following sequences of 4 elements of the Hecke algebra mod 2:

1. Partition 4=4: (t, tT_{2}, tT_{3}, tT_{4})

2. Partition 4=1+3: (t, t⟨d⟩, t⟨d⟩T_{2}, t⟨d⟩T_{3}), for 1 < d < p/2.

3. Partition 4=2+2: (t, tT_{2}, t⟨d⟩, t⟨d⟩T_{2}), for 1 < d < p/2.

4. Partition 4=1+1+2: (t, t⟨d_{1}⟩, t⟨d_{2}⟩, t⟨d_{2}⟩T_{2}), for 1 < d_{1} ≠ d_{2} < p/2.

5. Partition 4=1+1+1+1: (t, t⟨d_{1}⟩, t⟨d_{2}⟩, t⟨d_{3}⟩), for 1 < d_{1} ≠ d_{2} ≠ d_{3} < p/2.

If the entries in every single one of these sequences (for all choices of d_{i}) are linearly independent then there is no elliptic curve over a degree 4 number field with a rational point of order p.

To make the computations like the above efficient, the approach Parent takes is to explicitly represent the relevant Hecke algebra as univariant polynomial quotient ring over ℤ/3ℤ. Unfortunately, this only works in a few special cases, and is far less likely to work for ℓ = 2. Already for p = 29 the approach in Parent seems to break down, since modulo 2 we do not have that T_{2} is in the ring spanned by the diamond bracket operators.

An implementation in Sage of an algorithm based on the above proposition is given in the appendix (see Section 4). The next few subsections report on the results of running that algorithm.

3.1 p = 41

Running the code:

sage: C = KamiennyCriterion(41)
sage: time C.verify_criterion()
J = []
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
(True, 'All conditions are satified')
Time: CPU 115.97 s, Wall: 139.65 s

3.2 p = 43

Running the code:

sage: time C = KamiennyCriterion(43); C
CPU times: user 1.01 s, sys: 0.13 s, total: 1.14 s
Wall time: 1.14 s
sage: time C.verify_criterion()
J = [0]
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 84.17 s, sys: 0.01 s, total: 84.18 s
Wall time: 84.27 s
(True, 'All conditions are satified')

3.3 p = 47

sage: time C = KamiennyCriterion(47); C
CPU times: user 1.32 s, sys: 0.16 s, total: 1.48 s
Wall time: 1.48 s
sage: time C.verify_criterion()
J = []
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 178.90 s, sys: 0.01 s, total: 178.91 s
Wall time: 178.92 s
(True, 'All conditions are satified')

3.4 p = 53

sage: time C = KamiennyCriterion(53); C
CPU times: user 1.84 s, sys: 0.33 s, total: 2.17 s
Wall time: 2.18 s
sage: time C.verify_criterion()
J = [0]
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 407.35 s, sys: 0.12 s, total: 407.47 s

Wall time: 407.52 s
(True, 'All conditions are satified')

3.5 p = 59

sage: time C = KamiennyCriterion(59); C
CPU times: user 2.73 s, sys: 0.50 s, total: 3.23 s
Wall time: 3.23 s
sage: time C.verify_criterion()
J = []
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 951.67 s, sys: 0.36 s, total: 952.03 s
Wall time: 952.29 s
(True, 'All conditions are satified')

3.6 p = 61

sage: time C = KamiennyCriterion(61); C
CPU times: user 3.12 s, sys: 0.54 s, total: 3.66 s
Wall time: 3.66 s
sage: time C.verify_criterion()
J = [0, 1]
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 1184.62 s, sys: 0.34 s, total: 1184.96 s
Wall time: 1185.82 s
(True, 'All conditions are satified')

3.7 p = 67

sage: time C = KamiennyCriterion(67); C
CPU times: user 4.33 s, sys: 0.87 s, total: 5.20 s
Wall time: 5.21 s
sage: time C.verify_criterion()
J = [1]
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...

partition 4=1+1+1+1...
^[^[^[CPU times: user 2356.57 s, sys: 1.08 s, total: 2357.65 s
Wall time: 2357.92 s
(True, 'All conditions are satified')

3.8 p = 71

sage: time C = KamiennyCriterion(71); C
CPU times: user 5.33 s, sys: 1.09 s, total: 6.42 s
Wall time: 6.41 s
sage: time C.verify_criterion()
pJ = []
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 3688.55 s, sys: 1.39 s, total: 3689.94 s
Wall time: 3690.35 s
(True, 'All conditions are satified')

3.9 p = 73

sage: time C = KamiennyCriterion(73); C
CPU times: user 6.28 s, sys: 1.18 s, total: 7.46 s
Wall time: 7.47 s
sage: time C.verify_criterion()
J = [3]
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 4388.02 s, sys: 0.83 s, total: 4388.85 s
Wall time: 4389.08 s
(True, 'All conditions are satified')

3.10 p = 79

sage: time C = KamiennyCriterion(79); C
CPU times: user 8.03 s, sys: 1.45 s, total: 9.48 s
Wall time: 9.49 s
sage: time C.verify_criterion()
J = [0]
partition 4=4...
partition 4=1+3...

partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
n^[^[^[^[CPU times: user 8010.69 s, sys: 0.90 s, total: 8011.59 s
Wall time: 8015.41 s
(True, 'All conditions are satified')

3.11 p = 83

sage: time C = KamiennyCriterion(83); C
CPU times: user 9.94 s, sys: 1.77 s, total: 11.71 s
Wall time: 11.71 s
sage: time C.verify_criterion()
J = [0]
partition 4=4...
partition 4=1+3...
partition 4=2+2...
partition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 11968.65 s, sys: 3.08 s, total: 11971.73 s
Wall time: 11979.33 s
(True, 'All conditions are satified')

3.12 p = 89

The following means we need to use an integral basis, which will take a long time.

sage: time C = KamiennyCriterion(89); C
CPU times: user 13.88 s, sys: 2.34 s, total: 16.22 s
Wall time: 16.22 s
sage: time C.verify_criterion()
J = [0]
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
sage: time C = KamiennyCriterion(89, use_integral_structure=True); C

3.13 p = 97

sage: time C = KamiennyCriterion(97); C
CPU times: user 20.14 s, sys: 3.79 s, total: 23.93 s
Wall time: 23.92 s
sage: time C.verify_criterion()
J = [0, 2]
partition 4=4...
partition 4=1+3...

partition 4=2+2...
        npartition 4=1+1+2...
partition 4=1+1+1+1...
CPU times: user 36558.55 s, sys: 239.50 s, total: 36798.05 s
Wall time: 36843.94 s
(True, 'All conditions are satified')

4 Appendix: The Code

For now, it is best to see

      http://wstein.org/home/wstein/comp/kamienny/code.sage.