#8829: Saturation for curves over number fields.
-------------------------------+--------------------------------------------
   Reporter:  robertwb         |       Owner:  cremona   
       Type:  enhancement      |      Status:  needs_work
   Priority:  major            |   Milestone:  sage-4.4.2
  Component:  elliptic curves  |    Keywords:            
     Author:  Robert Bradshaw  |    Upstream:  N/A       
   Reviewer:  John Cremona     |      Merged:            
Work_issues:                   |  
-------------------------------+--------------------------------------------
Changes (by newvalueoldvalue):

  * status:  needs_review => needs_work
  * reviewer:  => John Cremona
  * author:  => Robert Bradshaw


Comment:

 Patch applies fine to 4.4.1 and tests pass.

 This functionality is badly needed!

 We now have heights for points on curves defined over number_fields
 but no associated regulator function.  I suggest that the function
 regulator_of_points() be moved up from ell_rational_field to
 ell_number_field.  This tcan then be called instead of the code in
 lines 424-432 [line numbers are from the patched file, not the patch].

 Line 439 uses a function self.height_function() which does not exist.
 This block needs to be replaced by something sensible.  If one has a lower
 bound on the height of non-torsion
 points, then a bound on the index can be deduced from standard
 geometry of numbers estimates.   To get such a lower bound, see papers
 of Cremona & Siksek (over Q) and Thongjunthug (over number fields) for
 an algorithm which would need to be implemented.  (Not hard over Q,
 not much harder for totally real fields, quite a lot worse over fields
 with a complex embedding).  Until this is done, I don't think this
 saturation function can allow maxprime==0.

 In the rank one code:   when large primes p (say, over 20!) are being
 tested then the division_points code will be expensive since it
 involves constructing the multiplication-by-p map.  I would recommend
 using a reduction strategy here just as in the general case.  To check
 p-saturation just find primes q such that #E(Fq) is divisible by p and
 then see if the reduction of P mod q is a multiple of p.  This will
 almost always prove saturation very quickly.  If it fails for several
 (say 5) q then try to divide P by p;  else use more q, and so on.
 There is one theoretical drawback here:  this strategy might fail if
 there is a rational p-isogeny.  Over Q,  we know which p this might
 happen for and I would first test for the existence of isogenies of
 primes degree, and use the division test (as here) for any primes that
 show up.  Over number fields that's harder to deal with, but again we
 can fall back on the division test to rpove that P cannot be divided
 by p.

 The function list_of_multiples(P,n) duplicated the generic function
 multiples() which I wrote for just this sort of purpose!

 I don't like the loop through all linear combinations for small
 primes.  Even with p=2 there are curves with 24 independent points out
 there and {{{2^24}}} divisions is not nice to contemplate.  If you want
 this
 short cut, do it based on the size of {{{p^r}}}.

 The main code with reduction etc looks fine to me (but I did not check
 the logic rigorously).

 The gens function for E(K) when E is defined over Q and [K:Q]=2 looks
 fine.  For a more general case we could always try using
 simon_two_descent (followed by saturation).  Trying such an examples
 led me to:
 {{{
 sage: K.<a> = NumberField(x^2-2)
 sage: E = EllipticCurve([a,0])
 sage: P = E(0,0)
 sage: P.has_finite_order()
 True
 sage: P.order()
 2
 sage: P.height()
 0
 sage: E.saturation([P], verbose=True, max_prime=5)
 ## infinite loop
 }}}
 This is caused as follows:   The height matrix is [0] with det=0 but
 reg / min(heights) is NaN so reg / min(heights) < 1e-6 is False!.
 This will need fixing.  At the very least, I would discard any points
 of finite order before doing anything else with them.  Then
 min(heights) will never be 0.

 Most of the above is easy to deal with.  The hard part is computing a
 suitable max_prime form a lower height bound on points.  I suggest
 that for now you make it compulsory to have a positive max_prime and
 add a TODO.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8829#comment:5>
Sage <http://www.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