Monday, January 31, 2011

Higher rank curves with nontrivial Sha

I wonder if all of the problems are open. Here we consider pairs (E,p) where E is an elliptic curve over Q and p is a prime.

  1. Prove there are infinitely many pairs (E,p) such that: (a) E(Q) has rank >= 2, and (b) Sha(E/Q)(p) is finite.
  2. Prove there are infinitely many pairs (E,p) such that: (a) E(Q) has rank >= 2, and (b) Sha(E/Q)(p) is nonzero.
  3. Prove there are infinitely many pairs (E,p) such that: (a) E(Q) has rank >= 2, and (b) Sha(E/Q)(p) is nonzero and finite.
  4. Prove 2 assuming the full BSD conjecture. (1 is trivially implied by BSD and the existence of families of curves with 2 marked points.)
  5. Prove 1 assuming the BSD rank conjecture, but not the BSD formula.
  6. Same questions but over a number field K.
  7. Same questions but for triples (E,p,K), where E is over K and we vary over all K.

Thursday, November 18, 2010

Current Research Papers and Books

This post is about the papers I'm working on these days. Each of the papers below are papers that wouldn't be too difficult to finish and submit. As far as I know, most of the serious theoretical issues in all of the papers are resolved. I'm also putting links below into a snapshot of each of the papers as of this post (which might vanish or get updated in the future).

  1. Calegari-Stein: Non-eisenstein descent
    • Numerous small technical questions to answer, still
    • Most of it should now be do-able in Sage; patch up anything that isn't
  2. Stein: Computing End(Af) and minimal degree of Af^ --> Af
    • The computations that I did with Tseno Tselkov a few years ago...
    • Polish and publish
    • More data should be computable these days
    • I'm not sure the algorithm is even implemented in Sage, but it shouldn't be too hard
  3. Kamienny-Stein-Stoll: Quartic torsion points
    • Easy approach: just let it depend on Magma. Lame. Or just put the Magma part in a separate paper not by me (use a pseudonym or just Stoll).
    • Harder: determine cupsidal torsion subgroup using new ideas; at least helps
    • Hard as hell: implement Hesse's algorithm in Sage for this (this is what I want to do -- it's weak to apply Hesse to solve this problem, if I don't truly understand it, anyways.)
    • Do a better writeup of the intro based on talks I've given
  4. Stein: Kolyvagin's conjecture
    • First ever verification of it
    • Interesting theoretical results about kolyvagin derivative: highlight in intro
    • Just needs polish, at this point. Maybe improve algorithm and redo tables, better.
    • Should add more about what is in Stein-Weinstein
  5. Stein-Weinstein: Kolyvagin densities
    • Explains data from Kolyvagin conj
    • Need tex file
    • Just needs polish, I think. Jared wants to push the results too far, maybe?
  6. Stein-Wuthrich: Aplying p-adic methods to bound Shafarevich-Tate groups
    • Need to apply it to get some big interesting tables/computational results, or what is the point!?
    • There is a weird merge issue regarding reducible case
  7. Bradshaw-Stein: Provable computation of motivic L-functions
    • Put his thesis into a paper, and give it my spin and numerical data
    • Motivate with quote from Dokchitser's paper; once this paper is published, people will be able to reference it when claiming the existence of algorithms to do blah, blah, even if they don't actually use it as such.
    • Just a part of the thesis!
  8. Bardshaw-Stein: A conjectural Kolyvagin-style bound over ring
    class fields for curves with analytic rank at least 2
    • Based on Robert's calculations in his thesis
    • Very easy sell to publish this in a good journal
    • Can be viewed as a sort of follow up to a Bertolini-Darmon paper
  9. Mazur-Stein: A popular book on the Riemann-Hypothesis
    • Tricky because of theoretical issues with non-tempered disributions, which we're confronted with. Despite being a popular book, it's definitely interesting research, as is the case with anything Barry touches!
  10. Ribet-Stein: Lectures on Modular Forms and Hecke operators
    • Just needs polish and more examples.
    • Did get some work done polishing this when I taught out of it in 2003


Thursday, September 2, 2010

Purple Sage

In order to support my computational research projects, I've decided to start a new project called "Purple Sage" (PSAGE).  This is based on the Sage math software project that I started nearly 6 years ago, but has very different goals.    The main goal of the Sage project is to Create a viable free open source alternative to Magma, Maple, Mathematica, and Matlab, whereas the goal of the PSAGE project is to Create viable free open source software for arithmetic geometry research.  These are very different goals.  

I intend to spend most of my mathematical programming effort during the next year on PSAGE, though I'll continue to support Sage by providing infrastructure, helping with releases, and sponsoring Sage Days workshops.  During the last 2-3 years, the Sage project has become large, stable, and democratic, and has substantial momentum behind it.   It is time for me to do work that much more directly supports my research.

PSAGE will consist of (1) a stable subset of Sage, which includes only C/C++/Python/Cython code (no Fortran or Lisp), and has no Pexpect interfaces, (2) numerous research-oriented cutting edge Python/Cython libraries, and (3) a large network-accessible database of mathematical objects, probably built using MongoDB.     The target audience for the documentation and code will be research mathematicians (e.g., like the members of http://mathoverflow.net).   I will focus on writing code for arithmetic geometry, though I'm open to including in PSAGE other code contributions.

The development process will focus on making cutting edge code for arithmetic geometry available quickly to other researchers.   The requirements of 100% test coverage, documentation, and peer review will be removed, so that useful code, e.g., for computing with Maass forms, Siegel modular forms, Hilbert modular forms, etc., will get into researchers hands quickly.

PSAGE could in the long run lead to a more modular approach to Sage itself.  For example, the PSAGE library will be a Python library like any other, and it should be possible to just install it into an existing Sage as an optional package.   There could be similar projects, e.g., NSAGE = Numerical Sage, which focus on numerical computation.   And, having a smaller core will help with porting, maintenance, and flexibility.

Tuesday, August 24, 2010

Computational Projects: Part 1

I made a diagram that illustrates most of the algorithms I wish Sage had to support my current mathematical research program. I am focusing most of my Sage development effort on ensuring that these get implemented as soon as possible.  I will not depend on anybody else to help me with any of this, though if people would like to help in various ways that would be greatly appreciated. Over half of these are in the closed commercial Magma software already, which makes it much easier for me to implement them in Sage.

Research Versus the Goals of the Sage Project

A concern I have is that there might be disagreement in the Sage community about some of the design decisions that are necessary to support the implementation of my planned algorithms.  For example, improving number field arithmetic to be dramatically faster requires making some sacrifices so that the implementation takes one week instead of two months (e.g., fundamentally depending on FLINT for basic arithmetic, which at least one Sage developer will be quite unhappy about).  Even though I'm the leader of the Sage project, I won't just add code to Sage that a lot of people don't like.   However, implementing everything planned here is a lot of work, and given the time and resources I have available, it will be impossible to fully document and test everything up to the standard necessary for inclusion in Sage.  If this gets to be a nontrivial problem, I will maintain my own alternative ``fork'' of Sage, which I'll distribute separately.  It will have `bleeding edge'' code that I'm developing, and I'll make full source releases available on a separate website, but I will not have to worry about constantly updating packages (like Maxima and Scipy) that are irrelevant to my research. The architecture of Sage makes creating such a fork easy, and of course I know how to manage this.  In a few years, once I've built everything and complete the research I plan to do with it, I can spend the time merging back the good parts into mainline Sage.  I know that several other Sage developers (e.g., Nick Alexander, David Roe, etc.) do something similar, since their personal research is so important to them, and getting code into Sage is overly difficult.   It is very important that I acknowledge this tension, because currently the demands of "publishing" code in Sage -- and indeed of maintaining Sage as a general purpose system -- are so tough that they make genuine development of Sage as a research tool too difficult.  Solution: create something that isn't Sage.

The Diagram

Here is the diagram.  It is a tiny picture, but if you click on it you should get a bigger PDF that you can zoom into (if you are using Linux, download this PNG instead). 





I will spend the rest of this post discussing the first few algorithms at the top of the diagram, and my motivation for implementing them. Future posts will address the rest of the algorithms.





Number Fields
The top of the diagram lists number fields, and the two projects involve greatly speeding up basic arithmetic in Sage with elements of number fields. This is important to my research, since I intend to do explicit comptutations with elliptic curves and modular forms over number fields, including making large tables, hence fast arithmetic is important. Arithmetic in some cases in Sage is ridiculously slow, especially for relative fields. Fixing this involves switching from using NTL for all number field arithmetic to using FLINT (via Sebastian Pancratz's new rational polynomials) for absolue fields and Singular for relative extensions. I spent some time on this project and the results are at Trac 9541, but the code there should not be used as is. Instead, I'll finish this project by extracting out the best ideas from those patches, and adding more. The main idea for relative number fields is to create a C interface (written in Cython!) to Singular for computing with transcendence degree 1 function fields over the rational numbers. The other lesson I learned when working on Trac 9541 is that it is orders of magnitude easier to delete all code related to using NTL for number fields instead of trying to simultaneously support several different models for numbers fields.


Function Fields
Continuing clockwise, the next cluster of algorithms involves function fields of transcedence degree 1 over the prime subfield, i.e., function fields of algebraic curves. Function fields are important for my research because an application of explicit Riemann-Roch spaces and divisor reduction is a key step in completing a paper on torsion points on elliptic curves over quartic fields that I'm writing with Kamienny and Stoll. Function field arithmetic, rings, ideals, polynomial factorization, norm, traces, ``Poppov reduction'', etc., are the subject of Trac 9054, which should be relatively easy to finish. The next step is to implement Florian Hesse's algorithm for Riemann-Roch spaces, by following the description in Florian's papers and talks on the topic. Next, I'll have to implement divisor reduction and computation of maximal orders (normalization of curves).  I suspect that Chris Hall will help. Parallel to this, it is also a good idea to use the same code as in the number field case to make basic arithmetic in certain function fields much faster than the generic code of Trac 9054.

Elliptic Curves over Function Fields
I am also interested in code for computing with elliptic curves that are defined over function fields (usually over finite fields). This is related to work of Chris Hall, Sal Baig, and others at recent Sage
Days on function fields. This code will make it easier to computationally explore function field analogues of new ideas related to the Gross-Zagier formula and the BSD conjecture. The main goals  are to implement algorithms for computing every quantity appearing in the Birch and Swinnerton-Dyer conjecture, including torsion, Tamagawa numbers, L-functions, Mordell-Weil groups (2-descent), and regulators. Also, I need to implement code for doing computations with Drinfeld modules, since Drinfled modules provide the analogue of modular curves and Heegner points in the function field setting.

Friday, August 20, 2010

Kolyvagin's Conjecture: a status report

During the Summer of 2009, I read some papers of Cornut, Vatsal, and Jetchev-Kane that were motivated by Mazur's conjecture about Heegner points. Meanwhile, I was thinking about Kolyvagin's conjecture on nontriviality of his Euler system of Heegner points. This is a conjecture about any elliptic curve E over Q along with any prime p and a fixed choice of quadratic imaginary field K that satisfies the Heegner hypothesis (e.g., each prime dividing the conductor of E splits in K). The conjecture is simply that one of Kolyvagin's cohomology classes in H^1(K, E[p^n]) is nonzero, for some n. When E has analytic rank 1 over K this conjecture holds for the class tau_1 for n sufficiently large, by the Gross-Zagier formula.

Three years ago, I wrote a paper with Dimitar Jetchev and Kristen Lauter where we gave *numerical evidence* that Kolyvagin's conjecture holds for the curve 389a with p=3, K=Q(sqrt(-7)), n=1, and tau_5!=0. But we didn't *prove* that tau_5 is nonzero. Moreover, our numerical approach was so inefficient that we couldn't have done many more examples. Nonetheless, this was good news - at least there was evidence thst Kolyvagin's construction doesn't completely degenerate for curves of rank > 1.

Last summer, when reading Cornut, Jetchev-Kane, etc., I figured out how to make some of what they do explicit and machine computable, and I implemented code. This was several weeks of focused programming work in Sage, starting from scratch, partly because I refuse to used the closed Magma math software system (which had maybe half of what I would have needed).

Anyway, running all this code for a week on my (big NSF funded!) cluster, and also Jon Hanke's at Univ of Georgia resulted in provable verification of Kolyvagin's conjecture for around 100 triples (E,K,p) with E of rank 2, and K of class number 1. I am right now working on polishing the write up of this for publication (I plan to submit the paper sometime in the next month).

At a Sage Days we had out on Lopez in late summer 2009, Jared Weinstein got interested in this project, and with some input from Karl Rubin about how to apply Kolyvagin systems, we figured out how to compute the distribution of Kolyvagin classes which massively clarified the numerical data I had obtained. He also found a completely different *conditional* algorithm to compute Kolyvagin classes: when I implemented it the results exactly matched what I got with my algorithm the previous month: nice.

In December 2009, at another Sage Days at the Clay Math Institute in Cambridge, MA, Jennifer Balakrishnan became interested in the project and ran my code (with some modifications) to verify Kolyvagin's conjecture for the rank 3 curve 5077a and p=3. The relevant quadratic imaginary field K had larger class number so we had to improve the theory a bit. The computer calculations also took many hours. Meanwhile, Jared Weinstein came up with some preliminary rank 3 analogues of his results from the previous summer, which gave Jen and me confidence that our rank 3 verification of Kolyvagin's conjecture was correct. We also plan to write a paper about this soon, but still haven't really done much (Jen has though, actually).

During the next few months (early 2010) Jared worked on refining and generalizing his density arguments, with some input from me. I also finally read the Mazur-Rubin book on Kolyvagin systems.

In June at Sage Days 22 at MSRI Jared ran a very coherent 2 week minicourse on Kolyvagin and had several students do projects making explicit subtle cases of explicit computation with Kolyvagin's Euler system when p=3. They were forced to use Magma, since they had to adapt some general 3-descent code, and there is only one implementation of 3-descent in the world: Michael Stoll's in Magma. (My student Robert Miller started along the path to a free open implementation last year, but we decided he should finish his thesis first. That said, it will be a great contribution to math when somebody finally implements a free 3-descent.) Anyway, I think their Magma computation with a modified 3-descent led to some great new data related to Kolyvagin's Euler system, I think when Sha(E/K)[3] is nontrivial.

There are a few other related directions that I haven't mentioned above. First it is possible to use similar techniques to verify the natural analogue of Kolyvagin's conjecture for modular abelian varieties of larger rank and I have done this for a few examples. It would also be interested to extend the Stein-Weinstein density business to this case. There is probably an analogue of everything for modular motives (in the sense of Scholl) and maybe Kimberly Hopkins would have some interest in this.

Another interesting direction to pursue is totally real fields. Around 2001, Zhang generalized some of the Gross-Zagier formula and also some of Kolyvagin's Euler system to this setting.  A natural Ph.D. (?) project is to generalize enough to state an analogue of Kolyvagin's conjecture, then verify the conjecture in at least one case of a curve of rank 2. This will inevitably involve Hilbert modular forms, and certain explicit computation with quaternion algebras over a totally real field. Currently all existing code in this direction is in Magma, so step 1 is to understand enough of the recent work of Voight and Dembelle to implement open source code in Sage (it appears neither Dembelle or Voight have any plans to do this, unfortunately). But for this project doing only one single verification of Kolyvagin means that one doesn't have to write very general code, so this should be much easier than a general implementation (which would likely take at least a year fulltime work). Probably my Ph.D. student Aly Deines will take on this project.

I will close this blog post with some remarks about the whole point of this line of investigation. In first learned about Kolyvagin's conjecture from Christophe Cornut back in 2001 when we were both B.P. Assistant Professors at Harvard together. At the time, I think Christophe was perhaps trying to prove the conjecture, maybe using similar tools (e.g. Ratner's theorem) to what he used to prove Mazur's conjecture on nontriviality of Heegner points. I only wondered about verifying the conjecture in a few cases later in 2007, since I started wondering about BSD for rank 2 curves, and it is natural to wonder whether or not Kolyvagin's approach just falls apart for rank 2 or not. (Answer: it doesn't!) Anyway, I stumbled on a way of checking the conjecture computationally in specific cases, and this has led to some potentially interesting questions and results that explain the computations. Also, one gets a new algorithm to compute something about Selmer groups, which applies in some cases where p-adic techniques don't, e.g. additive primes.

I personally do not think anything mentioned above will prove Kolyvagin's conjecture in general. I.e. the above techniques are very unlikely to say anything much about the question that Cornut was attacking back in 2001. I published in IMRN a (fairly naive and formal!) conjectural analogue of the Gross-Zagier formula for arbitrary rank. This is in a totally diffent direction to the work of Zhang, Yang, etc. generalizing Gross-Zagier.  A "suitably form" of this conjectural formula does imply Kolyvagin's conjecture (and the full Birch and Swinnerton-Dyer rank conjecture). I personally think the most likely way in which Kolyvagin's conjecture will be proved is that somebody will prove something nontrivial toward the above mentioned generalization of Gross-Zagier.

Thursday, February 11, 2010

Tamagawa numbers and components groups at additive primes

I had an idea while driving back from snowboarding today that could lead to a nice paper if worked out. The problem is to find an algorithm to compute Tamagawa numbers of optimal newform modular abelian varieties $A$ at primes~$p$ of additive reduction, say quotients of $J_0(N)$ with $p^2\mid N$.

Idea. We have $A^{\vee} \to J_0(N) \to A$ is a morphism with computable degree (basically the modular degree). We can compute the component group of $J_0(N)$ explicitly as a $\T$-module, I think, by work of Raynaud. Using functoriality of the component group, we can thus probably in many cases locate the prime-to-the-modular degree part of the image of the component group of $A$ in $J_0(N)$. Since $p$ is an additive prime, there is a pretty tight bound on the primes that can divide the component group's order, so in some (many?) cases this may already be enough to nail down the component group.

When it isn't we can also look for congruences with lower level, and if there aren't any, then conclude in many cases (when representation is irreducible) by Ribet's theorem that those primes don't divide the component group.

Another thought is that we should be able to use the modular degree and computation of the component group of $J_0(N)$ at $p$ to give a bound on the powers of primes that can divide $c_{A,p}$, which is also new.

I'm sure putting together everything above would (a) yield some very interesting tables, and (b) be easily publishable as a paper.

Wednesday, December 17, 2008

Hermite forms and torsion points

I spent most of the day polishing off a paper called Heuristically Fast Computation of Hermite Normal Forms of Random Integer Matrices with Clement Pernet and Robert Bradshaw. It's about a very fast algorithm Clement and I came up with (building on lots of existing work!) to compute Hermite forms. Some interesting things happened -- first, of course, we didn't completely finish the paper today. Second, Robert nailed down a very serious but "silly" efficiency bug in our current Sage implementation that Craig Citro had introduced, which made it VASTLY slower than it should be (I had stupidly positively reviewed that patch, too). Third, as with writing any paper, we had to carefully prove several key points in the algorithm that we had brushed aside before, and some of these were quite surprising to me. For example, in computing the Hermite form of a square nonsingular matrix with determinant d, one should in fact work modulo d, not 2*d as we had done before (we had blindly followed what Allan Steel says he does in Magma, which is actually overkill). We're running a bunch of benchmarks of Sage versus Magma on one of my new Sun 24-core 128GB RAM boxes, which is very fun. If our paper is sufficiently well written, Allan will referee it and the next version of Magma will be at least as fast as our implementation, since we explain all of our tricks.

I also talked with Ralph Greenberg for a while today about the field Q(E[ell^n]) where E is an elliptic curve over Q, and we assume that the ell-adic representation is surjective. We used group and Galois theory to compute all the abelian quotients of the Galois group G of Q(E[ell^n]). One deduces that the only abelian quotient is (Z/ell*Z)^*, hence the maximal abelian subfield of Q(E[ell^n]) is Q(zeta_ell). This can be used along with the Chebotarev density theory to prove that if P is a point on E(Q) of infinite order and m is an integer divisible only by primes such that the ell-adic representation is surjective, then there are infinitely many primes p such that the reduction of P modulo p has order divisible by m. And that's interesting, since it's a step in a paper I'm writing about a generalization of the Gross-Zagier formula to higher rank. There are other ways to prove the above reduction statement, I think in more generality, which I thought through last night. But I was just very curious about the structure of G, which is why Ralph and I talked it through. The basic idea for understanding it is to use a few tricks, including that PSL_2 is simple, that there is always a square root of the matrix -1 in SL_2(F_ell), and that the kernel of reduction from SL_2(Z/ell^nZ) to SL_2(F_{ell}) is isomorphic to trace zero matrices with the conjugation action, hence a simple representation.