### Navigation

- index
- modules |
- next |
- previous |
- Plane curves »

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

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

### Navigation

- index
- modules |
- next |
- previous |
- Plane curves »