From 5ea79c7ae0d44686f1df05c4a016652afbe58968 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sun, 14 Jun 2026 09:58:21 +0200 Subject: Initial commit --- necessity_52b/2_division.sage | 126 ++++++++++++++++++++++++++++++++ necessity_52b/2_division_counterex.sage | 59 +++++++++++++++ necessity_52b/necessity_52b.pdf | Bin 0 -> 118096 bytes necessity_52b/necessity_52b.tex | 96 ++++++++++++++++++++++++ 4 files changed, 281 insertions(+) create mode 100755 necessity_52b/2_division.sage create mode 100755 necessity_52b/2_division_counterex.sage create mode 100755 necessity_52b/necessity_52b.pdf create mode 100755 necessity_52b/necessity_52b.tex (limited to 'necessity_52b') 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 @@ + +R1. = PolynomialRing(QQ) +R2. = PolynomialRing(QQ) + +def extended_field( f, A, B, deg_mult ): + # f: a polynomial whose roots are the x-coordinates of some points of an + # elliptic curve E: y^2 = x^3 + Ax + B. + # return value: a field containing the x and y coordinates of those points + # deg_mult: a positive integer known to be a multiple of the degree of the + # extended field. + # + # This function uses the properties of resultants (I can provide a pdf + # explaining how it works). + # + # It is useful to compute, e.g., the fields obtained by adjoining the + # coordinates of the n-division points of a point (using the n-uplication + # formulas to get the required polynomials). + # + # When used to compute the 2-division fields, it gives the same output as + # E.division_field(2). + + + g = y^2 - x^3 - A*x - B + res = f.resultant(g,x) + res = res.subs(y=x) + + #K. = f.splitting_field() + #print aux + print "+++ Computing splitting field of the following: +++" + + pol = R1(res*f) + print pol + + K. = NumberField( R( pari(pol).nfsplitting(deg_mult) ) ) + + return K + +L = [] + +for A in range(1,9): + for B in range(1,9): + + print "Current list of examples:", len(L), "elements. List:" + print L + + E = EllipticCurve([0,0,0,A,B]) + print "*************************" + print E + print "of rank ", E.rank(), "with (some) points of infinite order:", E.gens() + print "CM:", E.has_cm() + + rep = E.galois_representation() + print "mod 2 rep is surjective:", rep.is_surjective(2) + + if E.rank() == 0: + print "Stopping because rank 0" + print "" + continue + if len(E.gens()) == 0: + print "Stopping because no points of infinite order found" + print "" + continue + if E.has_cm(): + print "Stopping because CM" + print "" + print "" + continue + if not rep.is_surjective(2): + print "Stopping because mod 2 rep is not surjective" + print "" + continue + + K_2. = E.division_field(2) + print "2-division field:", K_2 + P = E(0) + flag = False + for P in E.gens(): + if len(P.division_points(2)) == 0: + flag = True + break + if not flag: + print "Stopping because the points found are 2-divisible" + print "" + continue + print "Taking the 2-division of P =", P + + # The following polynomial is derived from the duplication formula + # (Silverman, p.54) using the x-coordinate of the 2-division point as + # an indeterminate.x + 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]) + #print f_P.roots() + + M = extended_field( f_P, A, B, 24 ) # The 2-division field of P + print "2-division field of P:", M + + if M.degree() != 24: + print "Stopping because 2-division of P is too small" + print "" + continue + + div_pol_4 = E.division_polynomial(4) + + #if div_pol_4.splitting_field('zz').degree() < 48: + # print "Stopping because splitting field of div_pol_4 < 48" + # exit() + + K_4 = extended_field( div_pol_4, A, B, 96 ) + print "4-division field:", K_4 + + if K_4.degree() != 96: + print "Stopping because mod 4 representation not surjective" + print "" + continue + + if len(f_P.roots(ring=K_4)) == 0: + print "Stopping because M is not contained in K_4" + print "" + continue + + print "----------------" + print "|Example Found!|" + print "----------------" + L.append((A,B)) + + print "*************************" + 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 @@ + +R1. = PolynomialRing(QQ) +R2. = PolynomialRing(QQ) + +def extended_field( f, A, B, deg_mult ): + # f: a polynomial whose roots are the x-coordinates of some points of an + # elliptic curve E: y^2 = x^3 + Ax + B. + # return value: a field containing the x and y coordinates of those points + # deg_mult: a positive integer known to be a multiple of the degree of the + # extended field. + # + # This function uses the properties of resultants (I can provide a pdf + # explaining how it works). + # + # It is useful to compute, e.g., the fields obtained by adjoining the + # coordinates of the n-division points of a point (using the n-uplication + # formulas to get the required polynomials). + # + # When used to compute the 2-division fields, it gives the same output as + # E.division_field(2). + + + g = y^2 - x^3 - A*x - B + res = f.resultant(g,x) + res = res.subs(y=x) + + #print "Splitting field of division pol:" + #print R1(f).splitting_field('r') + K. = (R1(res*f)).splitting_field(degree_multiple=deg_mult) + + return K + + +A = -3 +B = 17/4 + +E = EllipticCurve([0,0,0,A,B]) +print E +print "of rank ", E.rank(), "with (some) points of infinite order:", E.gens() +print "CM:", E.has_cm() + +rep = E.galois_representation() +print "mod 2 rep is surjective:", rep.is_surjective(2) + +K_2. = E.division_field(2) +print "2-division field:", K_2 +P = [4,15/2] + +# The following polynomial is derived from the duplication formula +# (Silverman, p.54) using the x-coordinate of the 2-division point as +# an indeterminate.x +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]) + +M = extended_field( f_P, A, B, 24 ) # The 2-division field of P +print "2-division field of P:", M + +if M.degree() != 24: + print "Stopping because 2-division of P is too small" + exit() diff --git a/necessity_52b/necessity_52b.pdf b/necessity_52b/necessity_52b.pdf new file mode 100755 index 0000000..1e2d18e Binary files /dev/null and b/necessity_52b/necessity_52b.pdf 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 @@ +\documentclass[10pt,a4paper]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath} +\usepackage{amsthm} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage[a4paper, top=3cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry} + +\DeclareMathOperator{\alg}{alg} +\DeclareMathOperator{\obj}{Obj} +\DeclareMathOperator{\Hom}{Hom} +\DeclareMathOperator{\End}{End} +\DeclareMathOperator{\hol}{Hol} +\DeclareMathOperator{\aut}{Aut} +\DeclareMathOperator{\gal}{Gal} +\DeclareMathOperator{\id}{id} +\DeclareMathOperator{\res}{res} +\DeclareMathOperator{\im}{Im} +\DeclareMathOperator{\Id}{Id} +\DeclareMathOperator{\fib}{Fib} +\DeclareMathOperator{\spec}{Spec} +\DeclareMathOperator{\proj}{Proj} +\DeclareMathOperator{\trdeg}{trdeg} +\DeclareMathOperator{\car}{char} +\DeclareMathOperator{\Frac}{Frac} +\DeclareMathOperator{\reduced}{red} +\DeclareMathOperator{\real}{Re} +\DeclareMathOperator{\imag}{Im} +\DeclareMathOperator{\vol}{vol} +\DeclareMathOperator{\den}{den} +\DeclareMathOperator{\rank}{rank} +\DeclareMathOperator{\lcm}{lcm} +\DeclareMathOperator{\rad}{rad} +\DeclareMathOperator{\ord}{ord} +\DeclareMathOperator{\Br}{Br} +\DeclareMathOperator{\inv}{inv} +\DeclareMathOperator{\Nm}{Nm} +\DeclareMathOperator{\Tr}{Tr} +\DeclareMathOperator{\an}{an} +\DeclareMathOperator{\op}{op} +\DeclareMathOperator{\sep}{sep} +\DeclareMathOperator{\unr}{unr} +\DeclareMathOperator{\et}{\acute et} +\DeclareMathOperator{\ev}{ev} +\DeclareMathOperator{\gl}{GL} +\DeclareMathOperator{\SL}{SL} + +\newcommand{\grp}{\textsc{Grp}} +\newcommand{\set}{\textsc{Set}} +\newcommand{\x}{\mathbf{x}} +\newcommand{\naturalto}{\overset{.}{\to}} +\newcommand{\qbar}{\overline{\mathbb{Q}}} +\newcommand{\zbar}{\overline{\mathbb{Z}}} + +\newcommand{\pro}{\mathbb{P}} +\newcommand{\aff}{\mathbb{A}} +\newcommand{\quat}{\mathbb{H}} +\newcommand{\rea}{\mathbb{R}} +\newcommand{\kiu}{\mathbb{Q}} +\newcommand{\F}{\mathbb{F}} +\newcommand{\zee}{\mathbb{Z}} +\newcommand{\ow}{\mathcal{O}} +\newcommand{\mcx}{\mathcal{X}} +\newcommand{\mcy}{\mathcal{Y}} +\newcommand{\mcs}{\mathcal{S}} +\newcommand{\mca}{\mathcal{A}} +\newcommand{\mcb}{\mathcal{B}} +\newcommand{\mcf}{\mathcal{F}} +\newcommand{\mcg}{\mathcal{G}} +\newcommand{\mct}{\mathcal{T}} +\newcommand{\mcq}{\mathcal{Q}} +\newcommand{\mcr}{\mathcal{R}} +\newcommand{\adl}{\mathbf{A}} +\newcommand{\mbk}{\mathbf{k}} +\newcommand{\m}{\mathfrak{m}} +\newcommand{\p}{\mathfrak{p}} + +\newcommand{\kbar}{\overline{K}} +\newtheorem{lemma}{Lemma} + +\author{Sebastiano Tronto} +\title{On the Second Condition of Theorem 5.2 ($\ell=2$)} + +\begin{document} + +\maketitle + +\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? + +I 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). + +A 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. + +The 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). + +\end{document} \ No newline at end of file -- cgit v1.3