Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement modularity test for elliptic curves #34989

Draft
wants to merge 20 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
37c12b6
#22697: modularity test for elliptic curves over totally real fields
JohnCremona Jan 19, 2023
a752d28
#22697: modularity test for elliptic curves over imaginary quadratic …
JohnCremona Feb 3, 2023
9dee295
fix two lint issues
JohnCremona Feb 8, 2023
5d629bc
Merge branch 'develop' into 22697modularity
JohnCremona Feb 8, 2023
01cbca9
Merge remote-tracking branch 'upstream/develop' into 22697modularity
JohnCremona Feb 8, 2023
844c1e8
Merge branch 'develop' into 22697modularity
JohnCremona Feb 8, 2023
b159ce7
Merge branch 'sagemath:develop' into 22697modularity
JohnCremona Feb 8, 2023
d5e0e30
#22697 changes suggested by reviewer
JohnCremona Feb 10, 2023
162782d
Merge remote-tracking branch 'upstream/develop' into 22697modularity
JohnCremona Feb 20, 2023
392cc13
implemented reviewers' suggestions
JohnCremona Feb 20, 2023
e8cb50f
added new tests for Galois reps over number fields being Borel, Carta…
JohnCremona Feb 20, 2023
7891a96
rewrite is_modular to use new GalRep functionality
JohnCremona Feb 20, 2023
0aeaa66
Merge branch '22697modularity' of github.com:JohnCremona/sage into 22…
JohnCremona Feb 20, 2023
f891f77
small fixes after review
JohnCremona Feb 20, 2023
d369bd3
fix docstring typos
JohnCremona Feb 21, 2023
22f547b
added the t.r. cubic and quartic cases
JohnCremona Feb 24, 2023
9afba37
Merge remote-tracking branch 'upstream/develop' into 22697modularity
JohnCremona Feb 27, 2023
d09e52a
#22697 modularity: work in progress
JohnCremona Nov 14, 2023
2a0429e
Merge remote-tracking branch 'upstream/develop' into 22697modularity
JohnCremona Nov 14, 2023
03a0823
Merge branch 'develop' into 22697modularity
fchapoton Jan 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/doc/en/reference/references/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -802,6 +802,10 @@ REFERENCES:
Cambridge Univ Press, 2001.
:doi:`10.1017/S0963548301004813`.

.. [Box2022] Josha Box.
Elliptic curves over totally real quartic fields not containing `\sqrt{5}` are modular.
Trans. Amer. Math. Soc. 375 (2022), 3129-3172.

.. [BF2005] \R.L. Burden and J.D. Faires. *Numerical Analysis*.
8th edition, Thomson Brooks/Cole, 2005.

Expand Down Expand Up @@ -1282,6 +1286,10 @@ REFERENCES:
.. [Bre1997] \T. Breuer "Integral bases for subfields of cyclotomic
fields" AAECC 8, 279--289 (1997).

.. [Breuil2001] Breuil, Christophe, Brian Conrad, Fred Diamond, and Richard Taylor.
*On the modularity of elliptic curves over Q: wild 3-adic exercises*.
Journal of the American Mathematical Society 14, no. 4 (2001): 843-940.

.. [Bre2000] Enno Brehm, *3-Orientations and Schnyder 3-Tree-Decompositions*,
2000.
https://page.math.tu-berlin.de/~felsner/Diplomarbeiten/brehm.ps.gz
Expand Down Expand Up @@ -1457,6 +1465,10 @@ REFERENCES:
.. [Can1990] \J. Canny. Generalised characteristic polynomials.
J. Symbolic Comput. Vol. 9, No. 3, 1990, 241--250.

.. [CarNew2023] Ana Caraiani and James Newton.
*On the modularity of elliptic curves over imaginary quadratic fields.*
:arxiv:`2301.10509`

.. [Car1972] \R. W. Carter. *Simple groups of Lie type*, volume 28 of
Pure and Applied Mathematics. John Wiley and Sons, 1972.

Expand Down Expand Up @@ -1945,6 +1957,11 @@ REFERENCES:
*Counting smaller elements in the tamari and m-tamari lattices*.
Journal of Combinatorial Theory, Series A. (2015). :arxiv:`1311.3922`.

.. [Chen1996] Imin Chen.
*The Jacobian of Modular Curves Associated to Cartan Subgroups*.
Oxford DPhil thesis (1996).
https://ora.ouls.ox.ac.uk/objects/uuid:46babaa0-c498-4211-a4ad-8dbabb8f05d9

.. [CP2016] \N. Cohen, D. Pasechnik,
*Implementing Brouwer's database of strongly regular graphs*,
Designs, Codes, and Cryptography, 2016
Expand Down Expand Up @@ -2185,6 +2202,10 @@ REFERENCES:
Chapman & Hall/CRC
2012

.. [DNS2020] Maarten Derickx, Filip Najman, Samir Siksek
*Elliptic curves over totally real cubic fields are modular.*
Algebra and Number Theory. (2020) 14 no.7, pp. 1791--1800.

.. [DerZak1980] Nachum Dershowitz and Schmuel Zaks,
*Enumerations of ordered trees*,
Discrete Mathematics (1980), 31: 9-28.
Expand Down Expand Up @@ -2763,6 +2784,10 @@ REFERENCES:
"Nearly rigid analytic modular forms and their values at CM points",
Ph.D. thesis, McGill University, 2011.

.. [FLHS2015] Nuno Freitas, Bao Le Hung, and S. Siksek.
*Elliptic curves over Real Quadratic Fields are Modular.*
Invent. math. (2015) 201, pp. 159--206.

.. [FRT1990] Faddeev, Reshetikhin and Takhtajan.
*Quantization of Lie Groups and Lie Algebras*.
Leningrad Math. J. vol. **1** (1990), no. 1.
Expand Down Expand Up @@ -6540,6 +6565,10 @@ REFERENCES:
height on elliptic curves over number fields, Math. Comp. 79
(2010), pages 2431-2449.

.. [Thorne2016] Jack Thorne.
*Automorphy of some residually dihedral Galois representations.*
Mathematische Annalen 364 (2016), No. 1--2, pp. 589--648.

.. [Tho2011] Anders Thorup. *ON THE INVARIANTS OF THE SPLITTING ALGEBRA*,
2011, :arxiv:`1105.4478`

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noted Wiles, etc. are missing. Maybe they could be added as a reference for All elliptic curves over QQ are modular?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, will do

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added two references for the Q case, and expanded the ALGORITHM section to be much more explicit, explaining the exact checks carried out. So the extra information is in the docstring, not in the message output with verbose=True. Is That OK?

Expand Down Expand Up @@ -6810,6 +6839,10 @@ REFERENCES:
.. [Wie2000] \B. Wieland. *A large dihedral symmetry of the set of
alternating sign matrices*. Electron. J. Combin. 7 (2000).

.. [Wiles1995] Andrew Wiles.
*Modular elliptic curves and Fermat's last theorem*.
Annals of mathematics, 141(3), 443-551.

.. [Wilson2008] Steve Wilson. *Rose Window Graphs*. Ars Mathematica
Contemporanea 1(1):7-19, 2008.
:doi:`10.26493/1855-3974.13.5bb`
Expand Down
33 changes: 33 additions & 0 deletions src/sage/rings/rational_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,39 @@ def signature(self):
"""
return (Integer(1), Integer(0))

def is_totally_real(self):
r"""
Return ``True``, since `\QQ` has no non-real complex embeddings.

EXAMPLES::

sage: QQ.is_totally_real()
True
"""
return True

def is_CM(self):
r"""
Return ``False``, since `\QQ` is not a CM field.

EXAMPLES::

sage: QQ.is_CM()
False
"""
return False

def is_abelian(self):
r"""
Return ``True``, since `\QQ` is an abelian Galois extension of itself.

EXAMPLES::

sage: QQ.is_abelian()
True
"""
return True

def embeddings(self, K):
r"""
Return the list containing the unique embedding of `\QQ` into `K`,
Expand Down
235 changes: 225 additions & 10 deletions src/sage/schemes/elliptic_curves/ell_number_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@
by a Weierstrass equation whose coefficients lie in `K` or by
using ``base_extend`` on an elliptic curve defined over a subfield.

One major difference to elliptic curves over `\QQ` is that there
might not exist a global minimal equation over `K`, when `K` does
not have class number one.
Another difference is the lack of understanding of modularity for
general elliptic curves over general number fields.

Currently Sage can obtain local information about `E/K_v` for finite places
`v`, it has an interface to Denis Simon's script for 2-descent, it can compute
the torsion subgroup of the Mordell-Weil group `E(K)`, and it can work with
isogenies defined over `K`.
One major difference to elliptic curves over `\QQ` is that there might
not exist a global minimal equation over `K`, when `K` does not have
class number one. When a minimal model does exist the method
:meth:`global_minimal_model()` will compute it, and otherwise compute
a model which is minimal at all primes except one. Another difference
is the relative lack of understanding of modularity for elliptic
curves over general number fields; the method :meth:`is_modular()`
does implement recent methods to prove modularity of elliptic curves,
over totally real and imaginary quadratic fields only.

Currently Sage can obtain local information about `E/K_v` for finite
places `v`, it has an interface to Denis Simon's script for 2-descent,
it can compute the torsion subgroup of the Mordell-Weil group `E(K)`,
and it can work with isogenies defined over `K`, including the
determination of the complete isogeny class of any curve.

EXAMPLES::

Expand Down Expand Up @@ -77,6 +82,7 @@

- [Sil2] Silverman, Joseph H. Advanced topics in the arithmetic of elliptic curves. Graduate Texts in
Mathematics, 151. Springer, 1994.

"""

# ****************************************************************************
Expand Down Expand Up @@ -4158,3 +4164,212 @@ def rational_points(self, **kwds):
E = E.change_ring(kwds['F'])

return [E(pt) for pt in Curve(self).rational_points(**kwds)]

def is_modular(self, verbose=False):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this is the right name for the function, since E.is_modular() == False does not mean E is not modular, only that this code doesn't know how to prove it.

Perhaps: is_known_modular? is_provable_modular?

Alternatively, maybe is_modular() could return None instead of False when it doesn't know? So:

  • True: proved modular
  • False: proved non-modular (??)
  • None: unknown to current code

I'm just thinking out loud; I don't know what is done in other similar cases (are there?).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs wider discussion, I will leave it for now

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps raising a NotImplementedError, with a suitable comment, instead of returning False?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After talking to a few people at COUNT I have a different suggestion: call the method prove_modularity, to be similar to E.prove_BSD(). I'll look at this furthher on Tuesday.

r"""Return ``True`` if the base field is totally real or imaginary
quadratic and modularity of this curve can be proved,
otherwise ``False``.

INPUT:

- ``verbose`` (bool, default ``False``) -- if ``True``, outputs a reason for the conclusion.

.. NOTE::

When ``False`` is returned, it does not mean that the
curve is not modular! Only that modularity cannot be
proved with current knowledge and implemented methods. It
is expected that the return value will be ``True`` for most
curves defined over totally real fields, and for all
defined over imaginary quadratic fields over which the
modular curve `X_0(15)` (which is the elliptic curve with
label `15a1`) has rank zero. Any curve defined over
totally real fields for which the return value is
``False`` is of interest, as its mod `p` Galois
representations for the primes 3, 5 and 7 are
simultaneously small.

Note that for over half of all imaginary quadratic fields,
there exist infinitely many elliptic curves (even up to
twist) whose mod 3 and mod 5 Galois representations are
both reducible (in other words, which possess a rational
15-isogeny). Such curves can be proved to be modular, but
not using the methods implemented here.

There are currently no theoretical results which allow
modularity to be proved over fields other than totally
real fields and imaginary quadratic fields.

ALGORITHM:

This is based on code provided by S. Siksek for the totally
real case, and relies on theorems in the following papers:
[Wiles1995]_, [Breuil2001]_, [Chen1996]_, [FLHS2015]_,
[Thorne2016]_, [CarNew2023]_, [DNS2020]_, [Box2022]_.

It relies on checking that the images of the mod-`p` Galois
representation attached to the elliptic curve for `p=3,5,7`
are not simultaneously small, except for the cases (base field
`\QQ`, real quadratic, totally real cubic, or totally real quartic
not containing `\sqrt{5}`) where theoretical results show this to
be impossible.

Over `\QQ`: all curves are modular with no further checks
needed, by [Wiles1995]_ and [Breuil2001]_.

Over real quadratic fields: all curves are modular with no further checks
needed, by [FLHS2015]_.

Over totally real cubic fields: all curves are modular with no further checks
needed, by [DNS2020]_.

Over totally real quartic fields not containing `\sqrt{5}`:
all curves are modular with no further checks needed, by
[Box2022]_.

Over other totally real fields: modularity is implied by
conditions on the mod-`\ell` representations for `\ell=3,5,7`
by [FLHS2015]_. It is sufficient for one of the following to
hold: (1) the image of the mod-3 representation is not
contained in either a Borel or the normaliser of a split
Cartan subgroup; (2) image of the mod-5 representation is
irreducible, and either 5 is not square in the field, or the
image is not contained in the normaliser of either a split or
nonsplt Cartan subgroup; (3) the image of the mod-7
representation is be not contained in either a Borel or the
normaliser of a split or nonsplt Cartan subgroup.

Over imaginary quadratic fields: by [CarNew2023]_, it is
sufficient for the mod-3 or mod-5 images to satisfy conditions
(1) or (2) above, respectively.

EXAMPLES:

Set ``verbose=True`` to see a reason for the conclusion::

sage: E = EllipticCurve('11a1')
sage: E.is_modular(verbose=True)
All elliptic curves over QQ are modular
True
sage: K.<a> = QuadraticField(5)
sage: E = EllipticCurve([0,1,0,a,0])
sage: E.is_modular(verbose=True)
All elliptic curves over real quadratic fields are modular
True
sage: E = EllipticCurve([0,0,0,a,0])
sage: E.is_modular(verbose=True)
All elliptic curves over real quadratic fields are modular
True
sage: K.<a> = CyclotomicField(5)
sage: E = EllipticCurve([0,1,0,a,0])
sage: E.is_modular(verbose=True)
Unable to determine modularity except over totally real and imaginary quadratic fields
False

Some examples from the LMFDB. Over a totally real quintic field::

sage: R.<x> = PolynomialRing(QQ)
sage: K.<a> = NumberField(R([1, 3, -1, -5, 0, 1]))
sage: E = EllipticCurve([K([3,0,-5,0,1]),K([-3,-7,9,2,-2]),K([1,0,0,0,0]),K([-22,-79,-92,14,21]),K([12,-87,-324,7,74])])
sage: E.is_modular(verbose=True)
Modular since the mod 3 Galois image is neither reducible nor split
True

Over imaginary quadratic fields `K` over which `X_0(15)` has
positive rank, there are many curves where current results do
not imply modularity::

sage: R.<x> = PolynomialRing(QQ)
sage: K.<a> = NumberField(R([2, -1, 1]))
sage: EllipticCurve('15a1').change_ring(K).rank()
1
sage: E = EllipticCurve([K([1,0]),K([1,-1]),K([1,1]),K([-105,98]),K([-615,1188])])
sage: E.is_modular(verbose=True)
Modularity not established: this curve has small image at 3 and 5
False
sage: EllipticCurve('15a1').change_ring(K).rank() # long time
1

Nevertheless, over the same field, most curves pass::

sage: E = EllipticCurve([K([0,0]),K([0,1]),K([1,1]),K([-8,-3]),K([-5,-5])])
sage: E.is_modular(verbose=True)
Modular since the mod 3 Galois image is neither reducible nor split
True

Over a field which is neither totally real nor imaginary
quadratic, no conclusion is currently possible::

sage: R.<x> = PolynomialRing(QQ)
sage: K.<a> = NumberField(R([1, 0, -1, 1]))
sage: K.is_totally_real()
False
sage: E = EllipticCurve([K([0,0,1]),K([1,0,0]),K([0,0,1]),K([0,0,0]),K([0,0,0])])
sage: E.is_modular(verbose=True)
Unable to determine modularity except over totally real and imaginary quadratic fields
False

"""
K = self.base_field()
d = K.degree()

if d == 1: # base field QQ: [Wiles1995], [Breuil2001]
if verbose:
print("All elliptic curves over QQ are modular")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps add here references to theorems that prove the fact used in each case?

Could be in a comment, or maybe nicer in the string printed in the verbose case.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous reply. It would not be possible to give the citations in the verbose message without duplicating the citations I already put in, which would be very tedious to do. Perhaps it is possible to give a URL for the official docstring in the reference manual on the sagemath website.

return True

TR = K.is_totally_real()

if TR and d <= 3: # base field real quadratic or totally real cubic
if verbose:
if d==2:
print("All elliptic curves over real quadratic fields are modular")
else:
print("All elliptic curves over totaly real cubic fields are modular")
return True

if TR and d==4 and not K(5).is_square():
if verbose:
print("All elliptic curves over totally real quartic fields not containing sqrt(5) are modular")

if d > 2 and not TR:
if verbose:
print("Unable to determine modularity except over totally real and imaginary quadratic fields")
return False # meaning 'unknown'

# from here either K is totally real of degree at least 4 (TR is True) or imaginary quadratic

if self.has_cm():
if verbose:
print("All CM elliptic curves over totally real and imaginary quadratic fields are modular")
return True

G = self.galois_representation()

if not (G.is_borel(3) or G.is_split_normaliser(3)):
if verbose:
print("Modular since the mod 3 Galois image is neither reducible nor split")
return True

if not G.is_borel(5):
if not (TR and K(5).is_square()):
if verbose:
print("Modular since the mod 5 Galois image is irreducible, and 5 not square")
return True
if TR and not (G.is_split_normaliser(5) or G.is_nonsplit_normaliser(5)):
if verbose:
print("Modular since the mod 5 Galois image is not reducible, split, or nonsplit")
return True

if TR and not (G.is_borel(7) or G.is_split_normaliser(7) or G.is_nonsplit_normaliser(7)):
if verbose:
print("Modular since the mod 7 Galois image is not being reducible, split, or nonsplit")
return True

if verbose:
if TR:
print("Modularity not established: this curve has small image at 3, 5 and 7")
else:
print("Modularity not established: this curve has small image at 3 and 5")

return False # We've run out of tricks!
Loading
Loading