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 p-primary part to use division

    polynomials, added some features, unified Number Field and \QQ code.

class sage.schemes.elliptic_curves.ell_torsion.EllipticCurveTorsionSubgroup(E, algorithm=None)

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 Multiplicative Abelian Group isomorphic to C2 x C2 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 Abelian 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 (which is an abstract abelian group):

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), (0 : 0 : 1), (7 : 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 Abelian 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 Multiplicative Abelian Group isomorphic to C5 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

Note: this class is normally constructed indirectly as follows:

sage: T = EK.torsion_subgroup(); T
Torsion Subgroup isomorphic to Multiplicative Abelian Group isomorphic to C5 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'>

AUTHORS:

  • Nick Alexander - initial implementation over \QQ.
  • Chris Wuthrich - initial implementation over number fields.
  • John Cremona - additional features and unification.
__init__(E, algorithm=None)

Initialization function for EllipticCurveTorsionSubgroup class

INPUT:

  • E - An elliptic curve defined over a number field (including

    System Message: WARNING/2 (\Q)

    latex exited with error: [stderr] [stdout] This is pdfTeX, Version 3.141592-1.40.5 (Web2C 7.5.5) entering extended mode (./math.tex LaTeX2e <2005/12/01> Babel <v3.8h> and hyphenation patterns for american, french, german, ngerman, b ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur kish, ukrainian, nohyphenation, loaded. (/usr/share/texmf/tex/latex/base/article.cls Document Class: article 2005/09/16 v1.4f Standard LaTeX document class (/usr/share/texmf/tex/latex/base/size12.clo)) (/usr/share/texmf/tex/latex/base/inputenc.sty (/usr/share/texmf/tex/latex/base/utf8.def (/usr/share/texmf/tex/latex/base/t1enc.dfu) (/usr/share/texmf/tex/latex/base/ot1enc.dfu) (/usr/share/texmf/tex/latex/base/omsenc.dfu))) (/usr/share/texmf/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?’ option. (/usr/share/texmf/tex/latex/amsmath/amstext.sty (/usr/share/texmf/tex/latex/amsmath/amsgen.sty)) (/usr/share/texmf/tex/latex/amsmath/amsbsy.sty) (/usr/share/texmf/tex/latex/amsmath/amsopn.sty)) (/usr/share/texmf/tex/latex/amscls/amsthm.sty) (/usr/share/texmf/tex/latex/amsfonts/amssymb.sty (/usr/share/texmf/tex/latex/amsfonts/amsfonts.sty)) (/usr/share/texmf/tex/latex/tools/bm.sty) (./math.aux) (/usr/share/texmf/tex/latex/amsfonts/umsa.fd) (/usr/share/texmf/tex/latex/amsfonts/umsb.fd) ! Undefined control sequence. <recently read> \Q l.30 $\Q $ [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 152 bytes). Transcript written on math.log.

    )

  • algorithm - (string, default None): If not None, must be one

    of ‘pari’, ‘doud’, ‘lutz_nagell’. For curves defined over \QQ, pari is then used with the appropriate flag passed to pari’s elltors() function; this parameter is ignored for curves whose base field is not \QQ.

EXAMPLES:

sage: from sage.schemes.elliptic_curves.ell_torsion import EllipticCurveTorsionSubgroup
sage: E=EllipticCurve('11a1')
sage: K.<i>=NumberField(x^2+1)
sage: EK=E.change_ring(K)
sage: EllipticCurveTorsionSubgroup(EK)
Torsion Subgroup isomorphic to Multiplicative Abelian Group isomorphic to C5 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

Note: this class is normally constructed indirectly as follows:

sage: T = EK.torsion_subgroup(); T
Torsion Subgroup isomorphic to Multiplicative Abelian Group isomorphic to C5 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'>
_repr_()

String representation of an instance of the EllipticCurveTorsionSubgroup class.

EXAMPLES:

sage: E=EllipticCurve('11a1')
sage: K.<i>=NumberField(x^2+1)
sage: EK=E.change_ring(K)
sage: T = EK.torsion_subgroup(); T._repr_()
'Torsion Subgroup isomorphic to Multiplicative Abelian Group isomorphic to C5 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'
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
gen(i=0)

Return the i‘th torsion generator.

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.gen()
(16 : 60 : 1)
ngens()

Return the number of torsion generators.

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.ngens()
1
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()
[(i : 0 : 1), (0 : 0 : 1), (-i : 0 : 1), (0 : 1 : 0)]

Previous topic

Points on elliptic curves

Next topic

Local data for elliptic curves over number fields (including \QQ) at primes.

This Page