Galois representations attached to elliptic curves

If E is an elliptic curve over a global field K, currently only implemented over \QQ.

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.

Currently sage can decide whether the Galois module E[p] is reducible, i.e. if E admits an isogeny of degree p, and whether the image of the representation on E[p] is surjective onto Aut(E[p]) = GL_2(\mathbb{F}_p).

EXAMPLES:

sage: E = EllipticCurve('196a1')
sage: rho = E.galois_representation()
sage: rho.is_irreducible(7)
True
sage: rho.is_reducible(3)
True
sage: rho.is_irreducible(2)
True
sage: rho.is_surjective(2)
False
sage: rho.is_surjective(3)
False
sage: rho.is_surjective(5)
True
sage: rho.reducible_primes()
[3]
sage: rho.non_surjective()
[2, 3]

For semi-stable curve it is known that the representation is surjective if and only if it is irreducible:

sage: E = EllipticCurve('11a1')
sage: rho = E.galois_representation()
sage: rho.non_surjective()
[5]
sage: rho.reducible_primes()
[5]

For cm curves it is not true that there are only finitely many primes for which the Galois representation mod p is surjective onto GL_2(\mathbb{F}_p):

sage: E = EllipticCurve('27a1')
sage: rho = E.galois_representation()
sage: rho.non_surjective()
[0]
sage: rho.reducible_primes()
[3]
sage: E.has_cm()
True

REFERENCES:

[Se1]Jean-Pierre Serre, Propriétés galoisiennes des points d’ordre fini des courbes elliptiques. Invent. Math. 15 (1972), no. 4, 259–331.
[Se2]Jean-Pierre Serre, Sur les représentations modulaires de degré 2 de Gal`(overlineQQ/QQ)`. Duke Math. J. 54 (1987), no. 1, 179–230.
[Co]Alina Carmen Cojocaru, On the surjectivity of the Galois representations associated to non-CM elliptic curves. With an appendix by Ernst Kani. Canad. Math. Bull. 48 (2005), no. 1, 16–31.

AUTHORS:

  • chris wuthrich (02/10) - moved from ell_rational_field.py.
class sage.schemes.elliptic_curves.gal_reps.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: rho = EllipticCurve('11a1').galois_representation()
sage: rho
Compatible family of Galois representations associated to the Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
elliptic_curve()

The elliptic curve associated to this representation.

EXAMPLES:

sage: E = EllipticCurve('11a1')
sage: rho = E.galois_representation()
sage: rho.elliptic_curve() == E
True
is_irreducible(p)

Return True if the mod p representation is irreducible.

EXAMPLES:

sage: rho = EllipticCurve('37b').galois_representation()
sage: rho.is_irreducible(2)
True
sage: rho.is_irreducible(3)
False
sage: rho.is_reducible(2)
False
sage: rho.is_reducible(3)
True
is_reducible(p)

Return True if the mod-p representation is reducible. This is equivalent to the existence of an isogeny of degree p from the elliptic curve.

INPUT:

  • p - a prime number

Note

The answer is cached.

EXAMPLES:

sage: rho = EllipticCurve('121a').galois_representation()
sage: rho.is_reducible(7)
False
sage: rho.is_reducible(11)
True
sage: EllipticCurve('11a').galois_representation().is_reducible(5)
True
sage: rho = EllipticCurve('11a2').galois_representation()
sage: rho.is_reducible(5)
True
sage: EllipticCurve('11a2').torsion_order()
1
is_surjective(p, A=1000)

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

False if it is not, or None if we were unable to determine whether it is or not.

Note

The answer is cached.

INPUT:

  • p - int (a prime number)
  • A - int (a bound on the number of a_p to use)

OUTPUT:

boolean. True if the mod-p representation is surjective
and False if (probably) not

EXAMPLES:

sage: rho = EllipticCurve('37b').galois_representation()
sage: rho.is_surjective(2)
True
sage: rho.is_surjective(3)
False

REMARKS:

  1. If p = 5 then the mod-p representation is surjective if and only if the p-adic representation is surjective. When p = 2, 3 there are counterexamples. See a very recent paper of Elkies for more details when p=3.
  2. When p = 3 this function always gives the correct result irregardless of A, since it explicitly determines the p-division polynomial.
non_surjective(A=1000)

Returns a list of primes p such that the mod-p representation might not be surjective (this list usually contains 2, because of shortcomings of the algorithm). If p is not in the returned list, then the mod-p representation is provably surjective.

By a theorem of Serre, there are only finitely many primes in this list, except when the curve has complex multiplication.

If the curve has CM, we simply return the sequence [0] and do no further computation.

INPUT:

  • A - an integer

OUTPUT:

  • list - if curve has CM, returns [0]. Otherwise, returns 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.

EXAMPLES:

sage: E = EllipticCurve([0, 0, 1, -38, 90])  # 361A
sage: E.galois_representation().non_surjective()   # CM curve
[0]
sage: E = EllipticCurve([0, -1, 1, 0, 0]) # X_1(11)
sage: E.galois_representation().non_surjective()
[5]
sage: E = EllipticCurve([0, 0, 1, -1, 0]) # 37A
sage: E.galois_representation().non_surjective()
[]
sage: E = EllipticCurve([0,-1,1,-2,-1])   # 141C
sage: E.galois_representation().non_surjective()
[13]

ALGORITHM: When p = 3 use division polynomials. For 5 = p = B, where B is Cojocaru’s bound, use the results in Section 2 of

reducible_primes()

Returns a list of the primes p such that the mod p representation is reducible. For all other primes the representation is irreducible.

EXAMPLES:

sage: rho = EllipticCurve('225a').galois_representation()
sage: rho.reducible_primes()
[3]

Previous topic

Modular parametrization of elliptic curves over \QQ.

Next topic

Tate-Shafarevich group

This Page