Torsion subgroups of elliptic curves over number fields (including \(\QQ\))¶
AUTHORS:
 Nick Alexander: original implementation over \(\QQ\)
 Chris Wuthrich: original implementation over number fields
 John Cremona: rewrote pprimary part to use division
 polynomials, added some features, unified Number Field and \(\QQ\) code.

class
sage.schemes.elliptic_curves.ell_torsion.
EllipticCurveTorsionSubgroup
(E)¶ Bases:
sage.groups.additive_abelian.additive_abelian_wrapper.AdditiveAbelianGroupWrapper
The torsion subgroup of an elliptic curve over a number field.
EXAMPLES:
Examples over \(\QQ\):
sage: E = EllipticCurve([4, 0]); E Elliptic Curve defined by y^2 = x^3  4*x over Rational Field sage: G = E.torsion_subgroup(); G Torsion Subgroup isomorphic to Z/2 + Z/2 associated to the Elliptic Curve defined by y^2 = x^3  4*x over Rational Field sage: G.order() 4 sage: G.gen(0) (2 : 0 : 1) sage: G.gen(1) (0 : 0 : 1) sage: G.ngens() 2
sage: E = EllipticCurve([17, 120, 60, 0, 0]); E Elliptic Curve defined by y^2 + 17*x*y  60*y = x^3  120*x^2 over Rational Field sage: G = E.torsion_subgroup(); G Torsion Subgroup isomorphic to Trivial group associated to the Elliptic Curve defined by y^2 + 17*x*y  60*y = x^3  120*x^2 over Rational Field sage: G.gens() () sage: e = EllipticCurve([0, 33076156654533652066609946884,0,\ 347897536144342179642120321790729023127716119338758604800,\ 1141128154369274295519023032806804247788154621049857648870032370285851781352816640000]) sage: e.torsion_order() 16
Constructing points from the torsion subgroup:
sage: E = EllipticCurve('14a1') sage: T = E.torsion_subgroup() sage: [E(t) for t in T] [(0 : 1 : 0), (9 : 23 : 1), (2 : 2 : 1), (1 : 1 : 1), (2 : 5 : 1), (9 : 33 : 1)]
An example where the torsion subgroup is not cyclic:
sage: E = EllipticCurve([0,0,0,49,0]) sage: T = E.torsion_subgroup() sage: [E(t) for t in T] [(0 : 1 : 0), (7 : 0 : 1), (0 : 0 : 1), (7 : 0 : 1)]
An example where the torsion subgroup is trivial:
sage: E = EllipticCurve('37a1') sage: T = E.torsion_subgroup() sage: T Torsion Subgroup isomorphic to Trivial group associated to the Elliptic Curve defined by y^2 + y = x^3  x over Rational Field sage: [E(t) for t in T] [(0 : 1 : 0)]
Examples over other Number Fields:
sage: E = EllipticCurve('11a1') sage: K.<i> = NumberField(x^2+1) sage: EK = E.change_ring(K) sage: from sage.schemes.elliptic_curves.ell_torsion import EllipticCurveTorsionSubgroup sage: EllipticCurveTorsionSubgroup(EK) Torsion Subgroup isomorphic to Z/5 associated to the Elliptic Curve defined by y^2 + y = x^3 + (1)*x^2 + (10)*x + (20) over Number Field in i with defining polynomial x^2 + 1 sage: E = EllipticCurve('11a1') sage: K.<i> = NumberField(x^2+1) sage: EK = E.change_ring(K) sage: T = EK.torsion_subgroup() sage: T.ngens() 1 sage: T.gen(0) (5 : 6 : 1)
Note: this class is normally constructed indirectly as follows:
sage: T = EK.torsion_subgroup(); T Torsion Subgroup isomorphic to Z/5 associated to the Elliptic Curve defined by y^2 + y = x^3 + (1)*x^2 + (10)*x + (20) over Number Field in i with defining polynomial x^2 + 1 sage: type(T) <class 'sage.schemes.elliptic_curves.ell_torsion.EllipticCurveTorsionSubgroup_with_category'>
AUTHORS:
 Nick Alexander  initial implementation over \(\QQ\).
 Chris Wuthrich  initial implementation over number fields.
 John Cremona  additional features and unification.

curve
()¶ Return the curve of this torsion subgroup.
EXAMPLES:
sage: E = EllipticCurve('11a1') sage: K.<i> = NumberField(x^2+1) sage: EK = E.change_ring(K) sage: T = EK.torsion_subgroup() sage: T.curve() is EK True

points
()¶ Return a list of all the points in this torsion subgroup.
The list is cached.
EXAMPLES:
sage: K.<i> = NumberField(x^2 + 1) sage: E = EllipticCurve(K,[0,0,0,1,0]) sage: tor = E.torsion_subgroup() sage: tor.points() [(0 : 1 : 0), (i : 0 : 1), (0 : 0 : 1), (i : 0 : 1)]