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 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:
- 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
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
-
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. 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
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
For CM curves, the mod-p representation is never surjective:
sage: K.<a> = NumberField(x^2-x+1) sage: E = EllipticCurve([0,0,0,0,a]) sage: E.has_cm() True sage: rho = E.galois_representation() sage: any(rho.is_surjective(p) for p in [2,3,5,7]) False
-
isogeny_bound
(A=100)¶ 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:
A
- int (a bound on the number of traces of Frobenius to- use while trying to prove the mod-
representation is not contained in a Borel).
OUTPUT:
list
- A list of primes which contains (but may not be equal to) allfor which the image of the mod-
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
defined over
, 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]
For curves with rational CM, there are infinitely many primes
for which the mod-
representation is reducible, and [0] is returned:
sage: K.<a> = NumberField(x^2-x+1) sage: E = EllipticCurve([0,0,0,0,a]) sage: E.has_rational_cm() True sage: rho = E.galois_representation() sage: rho.isogeny_bound() [0]
An example (an elliptic curve with everywhere good reduction over an imaginary quadratic field with quite large discriminant), which failed until fixed at trac ticket #21776:
sage: K.<a> = NumberField(x^2 - x + 112941801) sage: E = EllipticCurve([a+1,a-1,a,-23163076*a + 266044005933275,57560769602038*a - 836483958630700313803]) sage: E.conductor().norm() 1 sage: GR = E.galois_representation() sage: GR.isogeny_bound() []
-
non_surjective
(A=100)¶ Return a list of primes
including all primes for which the mod-
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-representation is very likely not surjective. At any prime not in this list, the representation is definitely surjective. If
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]
TESTS:
An example which failed until fixed at trac ticket #19229:
sage: K.<a> = NumberField(x^2-x+1) sage: E = EllipticCurve([a+1,1,1,0,0]) sage: rho = E.galois_representation() sage: rho.non_surjective() [2, 3]
-
reducible_primes
()¶ Returns a list of primes
for which the mod-
representation is reducible, or [0] for CM curves.
OUTPUT:
list
- A list of those primesfor which the mod-
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() []
For curves with rational CM, there are infinitely many primes
for which the mod-
representation is reducible, and [0] is returned:
sage: K.<a> = NumberField(x^2-x+1) sage: E = EllipticCurve([0,0,0,0,a]) sage: E.has_rational_cm() True sage: rho = E.galois_representation() sage: rho.reducible_primes() [0]
-
-
sage.schemes.elliptic_curves.gal_reps_number_field.
deg_one_primes_iter
(K, principal_only=False)¶ Return an iterator over degree 1 primes of
K
.INPUT:
K
– a number fieldprincipal_only
– bool; ifTrue
, only yield principal primes
OUTPUT:
An iterator over degree 1 primes of
up to the given norm, optionally yielding only principal primes.
EXAMPLES:
sage: K.<a> = QuadraticField(-5) sage: from sage.schemes.elliptic_curves.gal_reps_number_field import deg_one_primes_iter sage: it = deg_one_primes_iter(K) sage: [next(it) for _ in range(6)] [Fractional ideal (2, a + 1), Fractional ideal (3, a + 1), Fractional ideal (3, a + 2), Fractional ideal (-a), Fractional ideal (7, a + 3), Fractional ideal (7, a + 4)] sage: it = deg_one_primes_iter(K, True) sage: [next(it) for _ in range(6)] [Fractional ideal (-a), Fractional ideal (-2*a + 3), Fractional ideal (2*a + 3), Fractional ideal (a + 6), Fractional ideal (a - 6), Fractional ideal (-3*a + 4)]