#6045: [with patch, with review, needs work] Computation of Heegner points
---------------------------+------------------------------------------------
 Reporter:  robertwb       |       Owner:  was     
     Type:  defect         |      Status:  new     
 Priority:  major          |   Milestone:  sage-4.1
Component:  number theory  |    Keywords:          
 Reviewer:                 |      Author:          
   Merged:                 |  
---------------------------+------------------------------------------------

Comment(by cremona):

 NB this requires #6386.  Applies fine to 4.1.alpha2 + the four patches
 there.  Tests in ell_rational_field pass.

 Modular param: type "and and" in a comment.

 Heegner:  typo "give" -> "given" in 2 or 3 places in docstrings.  Why
 do you reverse the order of summation of a_n/n?  Can you sum the
 series using an iterator for the an instead of forming the whole list?

  _heegner_forms_list: (this only depends on N and D so could perhaps be
  factored out of the class to a stand-alone function).

 More seriously, this function is *wrong*!  (Though in a way which does
 not matter for the use which is made of it here so far.)  The point is
 this:  To get a complete set of forms you need to choose *one* sqrt of
 D mod 4*N and use the same b for all the forms.  Otherwise the points
 you get are not Galois conjugate.  [Changing b to another sqrt amounts
 to applying to the point in the upper half plane one of the
 Atkin-Lehner involutions.  This has two effects: firstly, it may
 change the sign of the integral (depending on the A-L eigenvalue;
 secondly, it maps \infty to another cusp, hence adds a torsion point
 to the Heegner point.  So instead of getting come conjugate point P
 you get either P+T or -P+T with T torsion.  The reason that this does
 not make the rest of the code wrong here is that you only actually use
 one of the forms (the one with smallest a to get best accuracy) and
 then use algdep.  But we should have code that could in principal
 deliver a set of Galois conjugate points.

 To get around this:  try all the sqrt of D mod 4*N;  for each, try to
 find a complete set of forms with that same b.  If that fails, either
 look at another b, or choose a different lift of b from Z/2N to Z
 (since larger b's will give more possible forms).  I implemented this
 in gp ages ago, so I have gp code which does this!

 Future work: one useful application of Heegner points is to find
 rational points on curves of rank 1.   I have been doing this
 successfully for years, and in 2005 work of Delaunay and Watkins made
 it vastly more efficient.  That excellent efficient version found its
 way into Magma (thanks for Mark) and it would be good to get something
 as good in Sage.  The idea is to compute all the complex z (mod period
 lattice L) for a complete set of forms, then take the trace by adding
 those up (as complex numbers) before mapping to the curve, at which
 point you only need to recognise the coordinates as rational numbers.
 You can use the action of complex conjugation on the forms to halve
 the number of evaluations (and in each pair can choose the smallest
 a).  The Delaunay-Watkins improvement allows to use even smaller a,
 and I can explain further if asked!

 Lastly:  I tried 873b1 and D=-11, which works fine, though the point
 constructed has height 14.785 but the heegner_point_height function
 returns double that.  This might need a different ticket.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6045#comment:16>
Sage <http://sagemath.org/>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to