Galois representations for elliptic curves over number fields.

This file contains the code to compute for which primes the Galois representation attached to an elliptic curve (over an arbitrary number field) is surjective. The functions in this file are called by the is_surjective and non_surjective methods of an elliptic curve over a number field.

EXAMPLES:

sage: K = NumberField(x**2 - 29, 'a'); a = K.gen()
sage: E = EllipticCurve([1, 0, ((5 + a)/2)**2, 0, 0])
sage: rho = E.galois_representation()
sage: rho.is_surjective(29) # Cyclotomic character not surjective.
False
sage: rho.is_surjective(31) # See Section 5.10 of [Serre72].
True
sage: rho.non_surjective()  # long time (4s on sage.math, 2014)
[3, 5, 29]

sage: E = EllipticCurve_from_j(1728).change_ring(K) # CM
sage: E.galois_representation().non_surjective()  # long time (2s on sage.math, 2014)
[0]

AUTHORS:

  • Eric Larson (2012-05-28): initial version.
  • Eric Larson (2014-08-13): added isogeny_bound function.

REFERENCES:

[Serre72]Serre. Propriétés galoisiennes des points d’ordre fini des courbes elliptiques. Inventiones mathematicae, 1972.
[Sutherland12]Sutherland. A local-global principle for rational isogenies of prime degree. Journal de Theorie des Nombres de Bordeaux, 2012.
class sage.schemes.elliptic_curves.gal_reps_number_field.GaloisRepresentation(E)

Bases: sage.structure.sage_object.SageObject

The compatible family of Galois representation attached to an elliptic curve over a number field.

Given an elliptic curve E over a number field K and a rational prime number p, the p^n-torsion E[p^n] points of E is a representation of the absolute Galois group G_K of K. As n varies we obtain the Tate module T_p E which is a a representation of G_K on a free \ZZ_p-module of rank 2. As p varies the representations are compatible.

EXAMPLES:

sage: K = NumberField(x**2 + 1, 'a')
sage: E = EllipticCurve('11a1').change_ring(K)
sage: rho = E.galois_representation()
sage: rho
Compatible family of Galois representations associated to the Elliptic Curve defined by y^2 + y = x^3 + (-1)*x^2 + (-10)*x + (-20) over Number Field in a with defining polynomial x^2 + 1
elliptic_curve()

Return the elliptic curve associated to this representation.

EXAMPLES:

sage: K = NumberField(x**2 + 1, 'a'); a = K.gen()
sage: E = EllipticCurve_from_j(a)
sage: rho = E.galois_representation()
sage: rho.elliptic_curve() == E
True
is_surjective(p, A=100)

Return True if the mod-p representation is (provably) surjective onto Aut(E[p]) = GL_2(\mathbb{F}_p). Return False if it is (probably) not.

INPUT:

  • p - int - a prime number.

  • A - int - a bound on the number of traces of Frobenius to use

    while trying to prove surjectivity.

EXAMPLES:

sage: K = NumberField(x**2 - 29, 'a'); a = K.gen()
sage: E = EllipticCurve([1, 0, ((5 + a)/2)**2, 0, 0])
sage: rho = E.galois_representation()
sage: rho.is_surjective(29) # Cyclotomic character not surjective.
False
sage: rho.is_surjective(7) # See Section 5.10 of [Serre72].
True

If E is defined over \QQ, then the exceptional primes for E_{/K} are the same as the exceptional primes for E, except for those primes that are ramified in K/\QQ or are less than [K:\QQ]:

sage: K = NumberField(x**2 + 11, 'a')
sage: E = EllipticCurve([2, 14])
sage: rhoQQ = E.galois_representation()
sage: rhoK = E.change_ring(K).galois_representation()
sage: rhoQQ.is_surjective(2) == rhoK.is_surjective(2)
False
sage: rhoQQ.is_surjective(3) == rhoK.is_surjective(3)
True
sage: rhoQQ.is_surjective(5) == rhoK.is_surjective(5)
True
isogeny_bound(A=100)

Returns a list of primes p including all primes for which the image of the mod-p representation is contained in a Borel.

Note

For the actual list of primes p at which the representation is reducible see reducible_primes().

INPUT:

  • A - int (a bound on the number of traces of Frobenius to

    use while trying to prove the mod-p representation is not contained in a Borel).

OUTPUT:

  • list - A list of primes which contains (but may not be equal to) all p for which the image of the mod-p representation is contained in a Borel subgroup. At any prime not in this list, the image is definitely not contained in a Borel. If E has CM defined over K, the list [0] is returned.

EXAMPLES:

sage: K = NumberField(x**2 - 29, 'a'); a = K.gen()
sage: E = EllipticCurve([1, 0, ((5 + a)/2)**2, 0, 0])
sage: rho = E.galois_representation()
sage: rho.isogeny_bound() # See Section 5.10 of [Serre72].
[3, 5]
sage: K = NumberField(x**2 + 1, 'a')
sage: EllipticCurve_from_j(K(1728)).galois_representation().isogeny_bound() # CM over K
[0]
sage: EllipticCurve_from_j(K(0)).galois_representation().isogeny_bound() # CM NOT over K
[2, 3]
sage: E = EllipticCurve_from_j(K(2268945/128)) # c.f. [Sutherland12]
sage: E.galois_representation().isogeny_bound() # No 7-isogeny, but...
[7]
non_surjective(A=100)

Return a list of primes p including all primes for which the mod-p representation might not be surjective.

INPUT:

  • A - int (a bound on the number of traces of Frobenius to use

    while trying to prove surjectivity).

OUTPUT:

  • list - A list of primes where mod-p representation is very likely not surjective. At any prime not in this list, the representation is definitely surjective. If E has CM, the list [0] is returned.

EXAMPLES:

sage: K = NumberField(x**2 - 29, 'a'); a = K.gen()
sage: E = EllipticCurve([1, 0, ((5 + a)/2)**2, 0, 0])
sage: rho = E.galois_representation()
sage: rho.non_surjective() # See Section 5.10 of [Serre72].
[3, 5, 29]
sage: K = NumberField(x**2 + 3, 'a'); a = K.gen()
sage: E = EllipticCurve([0, -1, 1, -10, -20]).change_ring(K) # X_0(11)
sage: rho = E.galois_representation()
sage: rho.non_surjective()  # long time (4s on sage.math, 2014)
[3, 5]
sage: K = NumberField(x**2 + 1, 'a'); a = K.gen()
sage: E = EllipticCurve_from_j(1728).change_ring(K) # CM
sage: rho = E.galois_representation()
sage: rho.non_surjective()
[0]
sage: K = NumberField(x**2 - 5, 'a'); a = K.gen()
sage: E = EllipticCurve_from_j(146329141248*a - 327201914880) # CM
sage: rho = E.galois_representation()
sage: rho.non_surjective() # long time (3s on sage.math, 2014)
[0]
reducible_primes()

Returns a list of primes p for which the mod-p representation is reducible, or [0] for CM curves.

OUTPUT:

  • list - A list of those primes p for which the mod-p representation is contained in a Borel subgroup, i.e. is reducible. If E has CM defined over K, the list [0] is returned (in this case the representation is reducible for infinitely many primes).

EXAMPLES:

sage: K = NumberField(x**2 - 29, 'a'); a = K.gen()
sage: E = EllipticCurve([1, 0, ((5 + a)/2)**2, 0, 0])
sage: rho = E.galois_representation()
sage: rho.isogeny_bound() # See Section 5.10 of [Serre72].
[3, 5]
sage: rho.reducible_primes()
[3, 5]

sage: K = NumberField(x**2 + 1, 'a')
sage: EllipticCurve_from_j(K(1728)).galois_representation().isogeny_bound() # CM over K
[0]
sage: EllipticCurve_from_j(K(0)).galois_representation().reducible_primes() # CM but NOT over K
[2, 3]
sage: E = EllipticCurve_from_j(K(2268945/128)) # c.f. [Sutherland12]
sage: rho = E.galois_representation()
sage: rho.isogeny_bound() # ... but there is no 7-isogeny ...
[7]
sage: rho.reducible_primes()
[]

Previous topic

Galois representations attached to elliptic curves

Next topic

Isogeny class of elliptic curves over number fields

This Page