Sage: Ticket #27884: Bug in quadratic twist of elliptic curves
https://trac.sagemath.org/ticket/27884
<p>
If E is an elliptic curve defined over a field K and L/K is a quadratic extension then there is an elliptic curve E'/K isomorphic to E over L but not over K, called the quadratic twist of E by L/K. In case L=K(sqrt(d)) for some non-square d in K, this is also called the quadratic twist of E by d; this is always the case except in characteristic 2. When the characteristic is not 2 or 3 and E has short Weierstrass equation Y<sup>2=X</sup>3+aX+b then *usually* the twist by d is obtained by replacing (a,b) by (a*d<sup>2,b*d</sup>3), <strong>but</strong> there is one case for which this is incorrect, namely when d=-1 and b=0. In this case, the twist takes (a,0) to (-4*a,0). We do not implement this properly:
</p>
<pre class="wiki">sage: E = EllipticCurve([0,0,0,1,0]); E
Elliptic Curve defined by y^2 = x^3 + x over Rational Field
sage: E.quadratic_twist(-1)
Elliptic Curve defined by y^2 = x^3 + x over Rational Field
</pre>en-usSagehttps://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/27884
Trac 1.1.6cremonaTue, 28 May 2019 14:35:20 GMT
https://trac.sagemath.org/ticket/27884#comment:1
https://trac.sagemath.org/ticket/27884#comment:1
<p>
For the record, Magma gives the same result as Sage in the preceding example, which (in my opinion) means that both have a bug. I will seek more opinions. Meanwhile, continuing the example:
</p>
<pre class="wiki">sage: E = EllipticCurve([0,0,0,1,0]); E
Elliptic Curve defined by y^2 = x^3 + x over Rational Field
sage: K.<i> = QuadraticField(-1)
sage: E.change_ring(K).descend_to(QQ)
[Elliptic Curve defined by y^2 = x^3 + x over Rational Field,
Elliptic Curve defined by y^2 = x^3 - 4*x over Rational Field]
</pre><p>
This means that the last two curves (being the original and one other) are non-isomorphic over Q but isomorphic over K=Q(i), which according tm me means that the second curve listed is *the* quadratic twist of E by -1. But then I wrote the descend_to method.
</p>
TicketdefeoTue, 28 May 2019 14:41:13 GMTcc set
https://trac.sagemath.org/ticket/27884#comment:2
https://trac.sagemath.org/ticket/27884#comment:2
<ul>
<li><strong>cc</strong>
<em>defeo</em> added
</li>
</ul>
TicketembrayFri, 14 Jun 2019 14:55:02 GMTmilestone deleted
https://trac.sagemath.org/ticket/27884#comment:3
https://trac.sagemath.org/ticket/27884#comment:3
<ul>
<li><strong>milestone</strong>
<em>sage-8.8</em> deleted
</li>
</ul>
<p>
As the Sage-8.8 release milestone is pending, we should delete the sage-8.8 milestone for tickets that are not actively being worked on or that still require significant work to move forward. If you feel that this ticket should be included in the next Sage release at the soonest please set its milestone to the next release milestone (sage-8.9).
</p>
TicketcremonaTue, 20 Aug 2019 10:16:01 GMTowner set
https://trac.sagemath.org/ticket/27884#comment:4
https://trac.sagemath.org/ticket/27884#comment:4
<ul>
<li><strong>owner</strong>
changed from <em>(none)</em> to <em>cremona</em>
</li>
</ul>
<p>
I was wrong. The definition of quadratic twist is not that the curves become isomorphic (only) over a quadratic extension, but is that the twisting cocycle has values in {+1,-1}. The quadratic twist by d of a curve with j=1728 is trivial for d=-1, and more generally is the same for +d and -d. So while normally the quadratic twists over a field K (of characteristic not 2, anyway) are parametrized by K<sup>*/(K</sup>*)<sup>2, in the case j(E)=1728 they are parametrized by K</sup>*/(-1,(K<sup>*)</sup>2). This is because the inflation map H<sup>1(G_K,\mu_2) -> H</sup>1(G_K,\mu_4) has kernel 2: after applying the Kummer isomorphism this becomes the squaring map K<sup>*/(K</sup>*)2 -> K<sup>*/(K</sup>*)<sup>4 whose kernel contains -1. Alternatively, since -4=(1+sqrt(-1))</sup>4, the quartic twist by -4 becomes trivial over K(sqrt(-1)).
</p>
<p>
I have discussed this with several experts, who agree. So nothing needs changing.
</p>
<p>
This should be set to invalid/don't-fix.
</p>
TicketcremonaTue, 20 Aug 2019 10:16:39 GMTpriority changed; milestone set
https://trac.sagemath.org/ticket/27884#comment:5
https://trac.sagemath.org/ticket/27884#comment:5
<ul>
<li><strong>priority</strong>
changed from <em>major</em> to <em>trivial</em>
</li>
<li><strong>milestone</strong>
set to <em>sage-duplicate/invalid/wontfix</em>
</li>
</ul>
TicketchapotonThu, 22 Aug 2019 07:10:47 GMTstatus changed; resolution set
https://trac.sagemath.org/ticket/27884#comment:6
https://trac.sagemath.org/ticket/27884#comment:6
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>closed</em>
</li>
<li><strong>resolution</strong>
set to <em>invalid</em>
</li>
</ul>
Ticket