#16456: Bug in descend_to method for elliptic curves
----------------------------------------------+------------------------
       Reporter:  cremona                     |        Owner:  cremona
           Type:  defect                      |       Status:  new
       Priority:  major                       |    Milestone:  sage-6.3
      Component:  elliptic curves             |   Resolution:
       Keywords:  elliptic curve base change  |    Merged in:
        Authors:                              |    Reviewers:
Report Upstream:  N/A                         |  Work issues:
         Branch:                              |       Commit:
   Dependencies:                              |     Stopgaps:
----------------------------------------------+------------------------
Description changed by cremona:

Old description:

> The function descend_to which was implemented in #9384 is incorrect.  The
> twisting parameter d in L* is only defined modulo {{{(L*)^2}}} and one
> has to determine whether there is a representative which lies in K*,
> which the implementation does not do, so some "positive" results are
> missed.  I will post an example of this.  The heart of the problem being
> solved here is to determine whether (given that j(E) is in K of course)
> the twisting parameter in {{{L*/(L*)^2}}} is in the image of
> {{{K*/(K*)^2}}} or not, and the implementation ignores this.  (For j=0 or
> 1728 the principle is the same with squares replaced by 6th or 4th powers
> respectively.)
>

> I can see how to fix this for number fields (one can restrict from
> K*/(K*)^2 to a finite K(S,2) for an easily determined set S of primes) or
> for finite fields, but it may not be possible to have this implemented
> for arbitrary fields, which will cause a problem with the patching.
>
> A second and independent bug is reported by Warren Moore:
> {{{
> sage: k.<i> = QuadraticField(-1)
> sage: E = EllipticCurve(k,[0,0,0,1,0])
> sage: E.descend_to(QQ) == None
> True
> }}}
> This caused by a "naked Except" clause plus a call to f.preimage() for a
> map f which has no attribute/method "preimage".

New description:

 The function descend_to which was implemented in #9384 is incorrect.  The
 twisting parameter d in L* is only defined modulo {{{(L*)^2}}} and one has
 to determine whether there is a representative which lies in K*, which the
 implementation does not do, so some "positive" results are missed.  I will
 post an example of this.  The heart of the problem being solved here is to
 determine whether (given that j(E) is in K of course) the twisting
 parameter in {{{L*/(L*)^2}}} is in the image of {{{K*/(K*)^2}}} or not,
 and the implementation ignores this.  (For j=0 or 1728 the principle is
 the same with squares replaced by 6th or 4th powers respectively.)


 I can see how to fix this for number fields (one can restrict from
 {{{K*/(K*)^2}}} to a finite K(S,2) for an easily determined set S of
 primes) or for finite fields, but it may not be possible to have this
 implemented for arbitrary fields, which will cause a problem with the
 patching.

 A second and independent bug is reported by Warren Moore:
 {{{
 sage: k.<i> = QuadraticField(-1)
 sage: E = EllipticCurve(k,[0,0,0,1,0])
 sage: E.descend_to(QQ) == None
 True
 }}}
 This caused by a "naked Except" clause plus a call to f.preimage() for a
 map f which has no attribute/method "preimage".

--

--
Ticket URL: <http://trac.sagemath.org/ticket/16456#comment:2>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to