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