Prime_Isogeny_Values

335 days ago by Ben.LeVeque

x = var('x') K.<a> = NumberField(x^2 - x -1) K import psage.modform.hilbert.sqrt5.tables as sqrt5 
       
def ap(E,p): return E.change_ring(p.residue_field()).trace_of_frobenius() R.<y> = GF(2)[] def frob(E,p): t = ap(E,p) return y^2 - ap(E, p)*y + int(p.norm()) def disc(E, p): t = ap(E, p) return t^2 - 4*p.norm() def isogeny_primes(E, norm_bound, isog_degree_bound): P = [p for p in sqrt5.ideals_of_bounded_norm(norm_bound) if p.is_prime() and E.has_good_reduction(p)] w = set(primes(isog_degree_bound+1)) i = 0 w.remove(2) while len(w) > 0 and i < len(P): d = disc(E, P[i]) w = [ell for ell in w if not (legendre_symbol(d,ell) == -1)] i = i +1 i = 0 while i < len(P): if frob(E,P[i]).is_irreducible(): break i = i+1 if i == len(P): w.insert(0,2) return w 
       
def grabber(s): return s.split()[3] #returns a-invariants as a string #p_iso_conf essentially goes through the lines of IsogenyTable7.txt, finds the inputted prime if it appears in #the isogeny degree column, and uses William and Ashwath's code to see if it is actually a possible isogeny #degree. def p_iso_conf(p,g): for line in g.readlines(): for i in eval(line.split()[2]): if i == p: E = EllipticCurve(K,eval(grabber(line))) output = isogeny_primes(E,2000,2000) if p in output: print p, '*is* an isogeny degree. Example curve: ', grabber(line) return print p, 'is *not* an isogeny degree for any curve in the list' 
       
for p in [2,3,5,7,11,13,17,37,67,173,229,421,577,593,617,709,823,859,883]: f = open('/home/bleveque/IsogenyTable7.txt') p_iso_conf(p,f) 
       
2 *is* an isogeny degree. Example curve:  [1,a+1,a,a,0]
3 *is* an isogeny degree. Example curve:  [1,-a+1,1,-a,0]
5 *is* an isogeny degree. Example curve:  [a,a-1,a,-1,-a+1]
7 *is* an isogeny degree. Example curve:  [0,-a,a,0,0]
11 is *not* an isogeny degree for any curve in the list
13 *is* an isogeny degree. Example curve:  [0,-a,a,-7*a-4,15*a+9]
17 *is* an isogeny degree. Example curve:  [1,1,a,-3*a-2,2*a]
37 *is* an isogeny degree. Example curve:  [a+1,-a-1,1,-2*a-2,-a-1]
67 is *not* an isogeny degree for any curve in the list
173 is *not* an isogeny degree for any curve in the list
229 is *not* an isogeny degree for any curve in the list
421 is *not* an isogeny degree for any curve in the list
577 is *not* an isogeny degree for any curve in the list
593 is *not* an isogeny degree for any curve in the list
617 is *not* an isogeny degree for any curve in the list
709 is *not* an isogeny degree for any curve in the list
823 is *not* an isogeny degree for any curve in the list
859 is *not* an isogeny degree for any curve in the list
883 is *not* an isogeny degree for any curve in the list
2 *is* an isogeny degree. Example curve:  [1,a+1,a,a,0]
3 *is* an isogeny degree. Example curve:  [1,-a+1,1,-a,0]
5 *is* an isogeny degree. Example curve:  [a,a-1,a,-1,-a+1]
7 *is* an isogeny degree. Example curve:  [0,-a,a,0,0]
11 is *not* an isogeny degree for any curve in the list
13 *is* an isogeny degree. Example curve:  [0,-a,a,-7*a-4,15*a+9]
17 *is* an isogeny degree. Example curve:  [1,1,a,-3*a-2,2*a]
37 *is* an isogeny degree. Example curve:  [a+1,-a-1,1,-2*a-2,-a-1]
67 is *not* an isogeny degree for any curve in the list
173 is *not* an isogeny degree for any curve in the list
229 is *not* an isogeny degree for any curve in the list
421 is *not* an isogeny degree for any curve in the list
577 is *not* an isogeny degree for any curve in the list
593 is *not* an isogeny degree for any curve in the list
617 is *not* an isogeny degree for any curve in the list
709 is *not* an isogeny degree for any curve in the list
823 is *not* an isogeny degree for any curve in the list
859 is *not* an isogeny degree for any curve in the list
883 is *not* an isogeny degree for any curve in the list