Opened 12 years ago

Closed 11 years ago

Last modified 11 years ago

#5065 closed defect (duplicate)

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: Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

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

comment:1 Changed 12 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 12 years ago by mabshoff

  • Milestone set to sage-4.0

comment:3 Changed 12 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 12 years ago by davidloeffler

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

comment:5 Changed 12 years ago by davidloeffler

  • Owner changed from davidloeffler to (none)

comment:6 Changed 11 years ago by cremona

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

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 11 years ago by mpatel

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

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

Note: See TracTickets for help on using tickets.