Opened 4 months ago

Closed 4 weeks ago

#27884 closed defect (invalid)

Bug in quadratic twist of elliptic curves

Reported by: cremona Owned by: cremona
Priority: trivial Milestone: sage-duplicate/invalid/wontfix
Component: elliptic curves Keywords: quadratic twist
Cc: defeo Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

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 Y2=X3+aX+b then *usually* the twist by d is obtained by replacing (a,b) by (a*d2,b*d3), but 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:

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

Change History (6)

comment:1 Changed 4 months ago by cremona

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:

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]

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.

comment:2 Changed 4 months ago by defeo

  • Cc defeo added

comment:3 Changed 3 months ago by embray

  • Milestone sage-8.8 deleted

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

comment:4 Changed 4 weeks ago by cremona

  • Owner changed from (none) to cremona

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*/(K*)2, in the case j(E)=1728 they are parametrized by K*/(-1,(K*)2). This is because the inflation map H1(G_K,\mu_2) -> H1(G_K,\mu_4) has kernel 2: after applying the Kummer isomorphism this becomes the squaring map K*/(K*)2 -> K*/(K*)4 whose kernel contains -1. Alternatively, since -4=(1+sqrt(-1))4, the quartic twist by -4 becomes trivial over K(sqrt(-1)).

I have discussed this with several experts, who agree. So nothing needs changing.

This should be set to invalid/don't-fix.

comment:5 Changed 4 weeks ago by cremona

  • Milestone set to sage-duplicate/invalid/wontfix
  • Priority changed from major to trivial

comment:6 Changed 4 weeks ago by chapoton

  • Resolution set to invalid
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.