Ticket #5065 (closed defect: duplicate)

Opened 4 years ago

Last modified 3 years ago

elliptic curve torsion subgroup doesn't know its identity

Reported by: boothby Owned by:
Priority: minor Milestone: sage-duplicate/invalid/wontfix
Component: elliptic curves Keywords:
Cc: Work issues:
Report Upstream: N/A Reviewers:
Authors: Merged in:
Dependencies: Stopgaps:

Description

The torsion subgroup of an elliptic curve appears to be quite broken -- it barfs when trying to coerce in 0,

sage: E = EllipticCurve(1)
sage: T = E.torsion_subgroup()
sage: T(0)
...
...
TypeError: Argument x (= 0) is of wrong type.

further, it returns a mysterious 1 when coercing in a 1

sage: a = T(1); a
1
sage: b = T.gens()[0]-T.gens()[0]; b
(0 : 1 : 0)
sage: a+b
TypeError: unsupported operand parent(s) for '+': 'Abelian group of points on Elliptic Curve defined by y^2 + x*y + y = x^3 - 19*x + 26 over Rational Field' and 'Torsion Subgroup isomorphic to Multiplicative Abelian Group isomorphic to C6 x C2 associated to the Elliptic Curve defined by y^2 + x*y + y = x^3 - 19*x + 26 over Rational Field'

Yet, it's all cool with the original curve.

sage: E(0)
(0 : 1 : 0)
sage: E(1)
...
...
TypeError: v (=(1,)) must have 3 components
sage: 

Change History

comment:1 Changed 4 years ago by boothby

  • Summary changed from elliptic curve torsion subgroup doesn't know it's identity to elliptic curve torsion subgroup doesn't know its identity

comment:2 Changed 4 years ago by mabshoff

  • Milestone set to sage-4.0

comment:3 Changed 4 years ago by cremona

Here is the reason. the torsion subgroup class is derived from the Abelian group class, which in Sage is always a multiplicative group! So it can coerce in 1 to give the identity 1, but not 0.

I produced a lovely patch adding proper additive support to the AbelianGroup? class months ago, motivated mainly by situations such as this, but nobody else was interested and it never got in. (To be fair, the patch is on trac labelled "not for review" for some reason).

Of course, for this specific group we could easily write a call() function to handle this, but the whole point of my Abeliangroup patch was that if you say that a group is additive on creation then that was all automatic. Sigh.

I see that this was reported 3 months ago. Sorry, I never saw it until now!

comment:4 Changed 4 years ago by davidloeffler

  • Owner changed from was to davidloeffler
  • Component changed from number theory to elliptic curves

comment:5 Changed 4 years ago by davidloeffler

  • Owner davidloeffler deleted

comment:6 Changed 3 years ago by cremona

  • Status changed from new to closed
  • Resolution set to fixed
  • Report Upstream set to N/A

In 4.5.3.alpha3 this works fine:

sage: E = EllipticCurve(j=1)
sage: T = E.torsion_subgroup()
sage: T(0)
(0 : 1 : 0)

thanks to the new Abelian Groups support. So this ticket can be closed as fixed.

comment:7 Changed 3 years ago by mpatel

  • Resolution changed from fixed to duplicate
  • Milestone changed from sage-4.5.3 to sage-duplicate/invalid/wontfix

I'm setting the resolution to "duplicate" and changing the milestone accordingly.

Note: See TracTickets for help on using tickets.