SD22: '389a' worksheet

693 days ago by Justin

Some quick definitions: Given an elliptic curve E,

1) Heegner Hypothesis: Given values D,N,  a fundamental discriminant D<0 satisfies the Heegner Hypothesis relative to N if each unramified prime dividing N splits in K=\QQ(\sqrt{D}) and each ramified prime exactly divides N.  We do not require that D<-4.

2) Heegner discriminant: A fundamental discriminant for an imaginary quadratic field K that is coprime to N\ell, where N is the conductor of a Heegner point, H (\ell is a prime determined by H, auxiliary for our purposes).
    The condition is that `D<0` is a fundamental discriminant and that              
    each unramified prime dividing `N` splits in `K=\QQ(\sqrt{D})` and              
    each ramified prime exactly divides `N`.  We also do not require                
    that `D<-4`.                                                 

3) Kolyvagin prime: \ell is a Kolyvagin prime (w.r.to a fixed prime p and an imaginary quadratic field K) if \ell is inert in K, and \ell+1 is zero\pmod{p} and p divides a_\ell, the fourier coefficient of the L-series of the elliptic curve that started all this.

The purpose of this worksheet is to establish whether the morphism

F\colon E(K)/pE(K)\to E(GF(\ell^2))/pE(GF(\ell^2)

is surjective.  This is equivalent to the non-vanishing of the p-selmer group.  In what follows, we take p=3, and set

E=EllipticCurve('389a')

The bounds set in the code limit the search for Heegner discriminants and Kolyvagin primes.

 

# The INPUTS are an elliptic curve over Q of rank 2 and a # (small, if possible) odd prime p. # We choose a Heegner discriminant D. The corresponding quadratic field # will be K, and we'll list Kolyvagin primes for D and ell. # # E(K) is isomorphic (up to 2-torsion) to the direct sum of E(Q) and ED(Q), # the quadratic twist of E by D. # # Then we need to find whether the reduction, mod ell, from E(K)/pE(K) to # E(GF(ell^2))/pE(GF(ell^2) is surjective, and in case it is, find a # generator for its kernel (this is related to the Kolyvagin class \tau_ell). # # This map is the direct sum (modulo some possible problems at 2) of the # reductions of E and ED mod ell. # # First we study the part coming from the twist (a map of 1-dimensional # F_p-vector spaces). # # Then the part coming from E/QQ is 2-dimensional, that from E_D/QQ has dimension 1. # WHAT ARE WE DOING (assuming Sha(E/K)[p]=0): the reduction map is # surjective if and only if the modified Selmer group # H(ell)=H^1_{F(\ell)}(K,E[p]) # has dimension 1. # Otherwise, the dimension would be bigger, as the dimension of the # Selmer group H(1)=Sel(K,E[p]) is 3 [=rank E/K]. # This is a necessary condition for having a non-vanishing Kolyvagin class \tau_ell # In this case, H(ell) is a line in Sel(K,E[p])^+=E(Q)/p (a Z/p-module of rank 2), # and we identify this line. # FIXME: we still should check that the Galois action on E[p] has full image # in GL(2,Z/p) (this should fail only rarely). E=EllipticCurve('389a'); p=3 disc_bound=50 koly_bound=500 gens=E.gens(); if len(gens)!=2: print 'The elliptic curve you chose does not have rank 2' P1=gens[0]; P2=gens[1]; heegner_discriminants_good=[D for D in E.heegner_discriminants(disc_bound) if GF(p)(D)!=0 and GF(p)(E.base_extend(QuadraticField(D, 'a')).torsion_order())!=0] for D in heegner_discriminants_good: K.<a>=QuadraticField(D); print 'Discriminant =', D ED=E.quadratic_twist(D) if len(ED.gens())>1: print 'Bad luck: the twist of E by your discriminant has too large rank (>1)' else: PD=ED.gens()[0] kolyprimes=[ell for ell in prime_range(koly_bound) if GF(E.conductor())(ell)!=0 and E.heegner_point(D,ell).satisfies_kolyvagin_hypothesis(p)] print 'List of Kolyvagin primes for', D, ':', kolyprimes for ell in kolyprimes: print ell EDred=ED.change_ring(GF(ell)) PDred=EDred(PD) if PDred.is_divisible_by(p): print 'The part of the reduction map coming from the twist is not surjective (i.e., it is zero).\nTherefore tau_%s=0'%ell else: Ered=E.change_ring(GF(ell)) Ker=[] for i,j in GF(p)^2: if Ered(ZZ(i)*P1+ZZ(j)*P2).is_divisible_by(p): Ker.append((i,j)) if len(Ker)>p : print 'The part of the map coming from E/QQ is not surjective.\nTherefore tau_', ell,'=0' else: print 'The reduction mod', ell, 'map is surjective.\nThe Kolyvagin class tau_%s is a multiple of %s*%s + %s*%s in E(Q)/%sE(Q).'%(ell,Ker[1][0],P1,Ker[1][1], P2,p) print ''