aboutsummaryrefslogtreecommitdiff
path: root/necessity_52b
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2026-06-14 09:58:21 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2026-06-14 09:58:21 +0200
commit5ea79c7ae0d44686f1df05c4a016652afbe58968 (patch)
tree05f6a052373f5fe0942777a48303b2f8b884cbe1 /necessity_52b
downloadkummer-notes-code-5ea79c7ae0d44686f1df05c4a016652afbe58968.tar.gz
kummer-notes-code-5ea79c7ae0d44686f1df05c4a016652afbe58968.zip
Initial commit
Diffstat (limited to '')
-rwxr-xr-xnecessity_52b/2_division.sage126
-rwxr-xr-xnecessity_52b/2_division_counterex.sage59
-rwxr-xr-xnecessity_52b/necessity_52b.pdfbin0 -> 118096 bytes
-rwxr-xr-xnecessity_52b/necessity_52b.tex96
4 files changed, 281 insertions, 0 deletions
diff --git a/necessity_52b/2_division.sage b/necessity_52b/2_division.sage
new file mode 100755
index 0000000..68cea80
--- /dev/null
+++ b/necessity_52b/2_division.sage
@@ -0,0 +1,126 @@
1
2R1.<x> = PolynomialRing(QQ)
3R2.<x,y> = PolynomialRing(QQ)
4
5def extended_field( f, A, B, deg_mult ):
6 # f: a polynomial whose roots are the x-coordinates of some points of an
7 # elliptic curve E: y^2 = x^3 + Ax + B.
8 # return value: a field containing the x and y coordinates of those points
9 # deg_mult: a positive integer known to be a multiple of the degree of the
10 # extended field.
11 #
12 # This function uses the properties of resultants (I can provide a pdf
13 # explaining how it works).
14 #
15 # It is useful to compute, e.g., the fields obtained by adjoining the
16 # coordinates of the n-division points of a point (using the n-uplication
17 # formulas to get the required polynomials).
18 #
19 # When used to compute the 2-division fields, it gives the same output as
20 # E.division_field(2).
21
22
23 g = y^2 - x^3 - A*x - B
24 res = f.resultant(g,x)
25 res = res.subs(y=x)
26
27 #K.<b> = f.splitting_field()
28 #print aux
29 print "+++ Computing splitting field of the following: +++"
30
31 pol = R1(res*f)
32 print pol
33
34 K.<b> = NumberField( R( pari(pol).nfsplitting(deg_mult) ) )
35
36 return K
37
38L = []
39
40for A in range(1,9):
41 for B in range(1,9):
42
43 print "Current list of examples:", len(L), "elements. List:"
44 print L
45
46 E = EllipticCurve([0,0,0,A,B])
47 print "*************************"
48 print E
49 print "of rank ", E.rank(), "with (some) points of infinite order:", E.gens()
50 print "CM:", E.has_cm()
51
52 rep = E.galois_representation()
53 print "mod 2 rep is surjective:", rep.is_surjective(2)
54
55 if E.rank() == 0:
56 print "Stopping because rank 0"
57 print ""
58 continue
59 if len(E.gens()) == 0:
60 print "Stopping because no points of infinite order found"
61 print ""
62 continue
63 if E.has_cm():
64 print "Stopping because CM"
65 print ""
66 print ""
67 continue
68 if not rep.is_surjective(2):
69 print "Stopping because mod 2 rep is not surjective"
70 print ""
71 continue
72
73 K_2.<a> = E.division_field(2)
74 print "2-division field:", K_2
75 P = E(0)
76 flag = False
77 for P in E.gens():
78 if len(P.division_points(2)) == 0:
79 flag = True
80 break
81 if not flag:
82 print "Stopping because the points found are 2-divisible"
83 print ""
84 continue
85 print "Taking the 2-division of P =", P
86
87 # The following polynomial is derived from the duplication formula
88 # (Silverman, p.54) using the x-coordinate of the 2-division point as
89 # an indeterminate.x
90 f_P = R1(x^4 - 4*P[0]*x^3 - 2*A*x^2 - 4*(2*B + A*P[0])*x + A^2 - 4*B*P[0])
91 #print f_P.roots()
92
93 M = extended_field( f_P, A, B, 24 ) # The 2-division field of P
94 print "2-division field of P:", M
95
96 if M.degree() != 24:
97 print "Stopping because 2-division of P is too small"
98 print ""
99 continue
100
101 div_pol_4 = E.division_polynomial(4)
102
103 #if div_pol_4.splitting_field('zz').degree() < 48:
104 # print "Stopping because splitting field of div_pol_4 < 48"
105 # exit()
106
107 K_4 = extended_field( div_pol_4, A, B, 96 )
108 print "4-division field:", K_4
109
110 if K_4.degree() != 96:
111 print "Stopping because mod 4 representation not surjective"
112 print ""
113 continue
114
115 if len(f_P.roots(ring=K_4)) == 0:
116 print "Stopping because M is not contained in K_4"
117 print ""
118 continue
119
120 print "----------------"
121 print "|Example Found!|"
122 print "----------------"
123 L.append((A,B))
124
125 print "*************************"
126 print ""
diff --git a/necessity_52b/2_division_counterex.sage b/necessity_52b/2_division_counterex.sage
new file mode 100755
index 0000000..f1193fb
--- /dev/null
+++ b/necessity_52b/2_division_counterex.sage
@@ -0,0 +1,59 @@
1
2R1.<x> = PolynomialRing(QQ)
3R2.<x,y> = PolynomialRing(QQ)
4
5def extended_field( f, A, B, deg_mult ):
6 # f: a polynomial whose roots are the x-coordinates of some points of an
7 # elliptic curve E: y^2 = x^3 + Ax + B.
8 # return value: a field containing the x and y coordinates of those points
9 # deg_mult: a positive integer known to be a multiple of the degree of the
10 # extended field.
11 #
12 # This function uses the properties of resultants (I can provide a pdf
13 # explaining how it works).
14 #
15 # It is useful to compute, e.g., the fields obtained by adjoining the
16 # coordinates of the n-division points of a point (using the n-uplication
17 # formulas to get the required polynomials).
18 #
19 # When used to compute the 2-division fields, it gives the same output as
20 # E.division_field(2).
21
22
23 g = y^2 - x^3 - A*x - B
24 res = f.resultant(g,x)
25 res = res.subs(y=x)
26
27 #print "Splitting field of division pol:"
28 #print R1(f).splitting_field('r')
29 K.<b> = (R1(res*f)).splitting_field(degree_multiple=deg_mult)
30
31 return K
32
33
34A = -3
35B = 17/4
36
37E = EllipticCurve([0,0,0,A,B])
38print E
39print "of rank ", E.rank(), "with (some) points of infinite order:", E.gens()
40print "CM:", E.has_cm()
41
42rep = E.galois_representation()
43print "mod 2 rep is surjective:", rep.is_surjective(2)
44
45K_2.<a> = E.division_field(2)
46print "2-division field:", K_2
47P = [4,15/2]
48
49# The following polynomial is derived from the duplication formula
50# (Silverman, p.54) using the x-coordinate of the 2-division point as
51# an indeterminate.x
52f_P = R1(x^4 - 4*P[0]*x^3 - 2*A*x^2 - 4*(2*B + A*P[0])*x + A^2 - 4*B*P[0])
53
54M = extended_field( f_P, A, B, 24 ) # The 2-division field of P
55print "2-division field of P:", M
56
57if M.degree() != 24:
58 print "Stopping because 2-division of P is too small"
59 exit()
diff --git a/necessity_52b/necessity_52b.pdf b/necessity_52b/necessity_52b.pdf
new file mode 100755
index 0000000..1e2d18e
--- /dev/null
+++ b/necessity_52b/necessity_52b.pdf
Binary files differ
diff --git a/necessity_52b/necessity_52b.tex b/necessity_52b/necessity_52b.tex
new file mode 100755
index 0000000..8de27b3
--- /dev/null
+++ b/necessity_52b/necessity_52b.tex
@@ -0,0 +1,96 @@
1\documentclass[10pt,a4paper]{article}
2\usepackage[utf8]{inputenc}
3\usepackage{amsmath}
4\usepackage{amsthm}
5\usepackage{amsfonts}
6\usepackage{amssymb}
7\usepackage[a4paper, top=3cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry}
8
9\DeclareMathOperator{\alg}{alg}
10\DeclareMathOperator{\obj}{Obj}
11\DeclareMathOperator{\Hom}{Hom}
12\DeclareMathOperator{\End}{End}
13\DeclareMathOperator{\hol}{Hol}
14\DeclareMathOperator{\aut}{Aut}
15\DeclareMathOperator{\gal}{Gal}
16\DeclareMathOperator{\id}{id}
17\DeclareMathOperator{\res}{res}
18\DeclareMathOperator{\im}{Im}
19\DeclareMathOperator{\Id}{Id}
20\DeclareMathOperator{\fib}{Fib}
21\DeclareMathOperator{\spec}{Spec}
22\DeclareMathOperator{\proj}{Proj}
23\DeclareMathOperator{\trdeg}{trdeg}
24\DeclareMathOperator{\car}{char}
25\DeclareMathOperator{\Frac}{Frac}
26\DeclareMathOperator{\reduced}{red}
27\DeclareMathOperator{\real}{Re}
28\DeclareMathOperator{\imag}{Im}
29\DeclareMathOperator{\vol}{vol}
30\DeclareMathOperator{\den}{den}
31\DeclareMathOperator{\rank}{rank}
32\DeclareMathOperator{\lcm}{lcm}
33\DeclareMathOperator{\rad}{rad}
34\DeclareMathOperator{\ord}{ord}
35\DeclareMathOperator{\Br}{Br}
36\DeclareMathOperator{\inv}{inv}
37\DeclareMathOperator{\Nm}{Nm}
38\DeclareMathOperator{\Tr}{Tr}
39\DeclareMathOperator{\an}{an}
40\DeclareMathOperator{\op}{op}
41\DeclareMathOperator{\sep}{sep}
42\DeclareMathOperator{\unr}{unr}
43\DeclareMathOperator{\et}{\acute et}
44\DeclareMathOperator{\ev}{ev}
45\DeclareMathOperator{\gl}{GL}
46\DeclareMathOperator{\SL}{SL}
47
48\newcommand{\grp}{\textsc{Grp}}
49\newcommand{\set}{\textsc{Set}}
50\newcommand{\x}{\mathbf{x}}
51\newcommand{\naturalto}{\overset{.}{\to}}
52\newcommand{\qbar}{\overline{\mathbb{Q}}}
53\newcommand{\zbar}{\overline{\mathbb{Z}}}
54
55\newcommand{\pro}{\mathbb{P}}
56\newcommand{\aff}{\mathbb{A}}
57\newcommand{\quat}{\mathbb{H}}
58\newcommand{\rea}{\mathbb{R}}
59\newcommand{\kiu}{\mathbb{Q}}
60\newcommand{\F}{\mathbb{F}}
61\newcommand{\zee}{\mathbb{Z}}
62\newcommand{\ow}{\mathcal{O}}
63\newcommand{\mcx}{\mathcal{X}}
64\newcommand{\mcy}{\mathcal{Y}}
65\newcommand{\mcs}{\mathcal{S}}
66\newcommand{\mca}{\mathcal{A}}
67\newcommand{\mcb}{\mathcal{B}}
68\newcommand{\mcf}{\mathcal{F}}
69\newcommand{\mcg}{\mathcal{G}}
70\newcommand{\mct}{\mathcal{T}}
71\newcommand{\mcq}{\mathcal{Q}}
72\newcommand{\mcr}{\mathcal{R}}
73\newcommand{\adl}{\mathbf{A}}
74\newcommand{\mbk}{\mathbf{k}}
75\newcommand{\m}{\mathfrak{m}}
76\newcommand{\p}{\mathfrak{p}}
77
78\newcommand{\kbar}{\overline{K}}
79\newtheorem{lemma}{Lemma}
80
81\author{Sebastiano Tronto}
82\title{On the Second Condition of Theorem 5.2 ($\ell=2$)}
83
84\begin{document}
85
86\maketitle
87
88\textbf{Question:} is Lemma 1 of Lang's \emph{Elliptic Curves Diophantine Analysis}, Chapter 5 Section 5, page 117 (References/Kummer theory/LANG-book-EC.pdf) consistent with Jones-Rouse's Theorem 5.2, i.e. can we deduce that $F(\beta_1)$ is partially contained in $F(A[2])$ already?
89
90I believe the answer is no. Lang is working over a base field that contains all the $\ell^\infty$ torsion of $A$, so it doesn't apply in our case (J\&R assume surjectivity of the torsion part).
91
92A counterexample is actually given by J\&R right after the proof of the theorem (``Remark''). They don't say explicitly that $\kiu(\beta_1)\cap \kiu(A[2])=\kiu$ in this case, but I have tested this with sage (see the file \texttt{2-division-counterex.sage}): $\kiu(\beta_1)$ has degree $24$ over $\kiu$ and $\kiu(A[2])$ has degree $2$, which together imply that $[\kiu(A[2],\beta_1):\kiu(A[2])]\geq 4$, so it is maximal.
93
94The file \texttt{2-division.sage} contains some code that looks for other counterexamples (varying the parameters of a short Weierstrass equation), but it is quite slow (about 3 minutes on my pc for each elliptic curve of which it computes the 4-torsion field).
95
96\end{document} \ No newline at end of file

Generated with cgit - Back to sebastiano.tronto.net