#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.