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 and
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:
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. |
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 over a number field
and a rational prime number
, the
-torsion
points of
is a representation of the
absolute Galois group
of
. As
varies
we obtain the Tate module
which is a
a representation of
on a free
-module
of rank
. As
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
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
Return True if the mod-p representation is (provably)
surjective onto . Return
False if it is (probably) not.
INPUT:
p - int - a prime number.
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 is defined over
, then the exceptional primes for
are the same as the exceptional primes for
, except for those primes
that are ramified in
or are less than
:
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
Returns a list of primes including all primes for which
the image of the mod-
representation is contained in a
Borel.
Note
For the actual list of primes at which the
representation is reducible see reducible_primes().
INPUT:
use while trying to prove the mod-
representation is not contained in a Borel).
OUTPUT:
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]
Return a list of primes including all primes for which the mod-
representation might not be surjective.
INPUT:
while trying to prove surjectivity).
OUTPUT:
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]
Returns a list of primes for which the mod-
representation is reducible, or [0] for CM curves.
OUTPUT:
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()
[]