#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.  Here
 is an example of this.
 {{{
 sage: K.<a> = NumberField(x^3-2)
 sage: E = EllipticCurve('11a1').quadratic_twist(2)
 sage: EK = E.change_ring(K)
 sage: EK2 = EK.change_weierstrass_model((a,a,a,a+1))
 sage: EK2.descend_to(QQ)
 <None>
 }}}
 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 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:3>
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