Opened 16 years ago

Closed 15 years ago

#84 closed enhancement (fixed)


Reported by: burhanud Owned by: ncalexan
Priority: major Milestone:
Component: number theory Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges


E.torsion_subgroup() returns an abstract group. There is no way to get hold of the torsion points (without some hacking).

---------- Forwarded message ----------
Date: Mon, 25 Sep 2006 08:00:43 -0400
From: David Harvey <>
Reply-To: bug reports and users' support questions
To: bug reports and users' support questions
Cc: Iftikhar Burhanuddin <>
Subject: Re: [SAGEsupport] E(Q) torsion

On Sep 25, 2006, at 1:50 AM, Iftikhar Burhanuddin wrote:

> How do I get hold of the actual torsion points?
> ===
> sage: E = EllipticCurve([-5699,427500,427500,0,0])
> sage: G = E.torsion_subgroup()
> sage: G
>  Multiplicative Abelian Group isomorphic to C7
> sage: G[1]
>  f

Use the source, Luke!


You'll see the line:

G = self.pari_curve().elltors(flag)

Then later on you see

self.__torsion = sage.groups.all.AbelianGroup(G[1].python())

So pari computes the group, puts it in G (including generators!) and
then SAGE throws away the generators and only stores G[1].

So I guess you want self.pari_curve().elltors(0)[2].

(Actually what you *really* want is to wrap this in a new function in
SAGE so that others don't have this problem again! My recommendation:
add a new cached private attribute __torsion_generators which gets
computed whenever pari.elltors() gets called, and add a new function
E.torsion_subgroup_generators() which returns it. Even better would

be if somehow SAGE's abelian group type knows how to store
information about the "meaning" of its underlying group, but I don't
know anything about SAGE's abelian groups.

In other words, "implement it and send me -- ahem, William -- a patch!")

If this is not your style, file a bug on trac, and assign it to
dmharvey :-)


Change History (3)

comment:1 Changed 15 years ago by was

  • Type changed from defect to enhancement

comment:2 Changed 15 years ago by ncalexan

  • Owner changed from dmharvey to ncalexan

comment:3 Changed 15 years ago by ncalexan

  • Resolution set to fixed
  • Status changed from new to closed

Addressed in 2.1.5.

Added class EllipticCurveTorsionSubgroup? class which exposes the points as generators. This is very much a 'first cut', but it's closer to the expected behaviour. Use E.torsion_subgroup() to access, as usual.

Note: See TracTickets for help on using tickets.