CodeIso

331 days ago by Ben.LeVeque

x = var('x') K.<a> = NumberField(x^2 - x -1) 
       
E = EllipticCurve(K, [1,1,a+1,-a+1,-a]) #no primes of bad reduction L = [] for p in primes(100): t = K.primes_above(p) if E.has_good_reduction(t[0]) and norm(t[0]) <= 100: L = L + t #print L #print len(L) ############# Now L (list of primes) is defined ############## def apdictionary(line): #feed in line aps = line_parser(line) d = {} for i in range(24): d[str(L[i])] = aps[i] #assigns proper ap value for each prime return d def line_parser(s): r=s[24:100];r t=r.split() return [modified_eval(i) for i in t] def modified_eval(s): if s == '?': return s else: return eval(s) ############################################################### def ap(p,line): #returns a particular aps value from d return (apdictionary(line))[str(p)] R.<x> = GF(2)[] def frob(p,line): return x^2 - ap(p,line)*x + int(p.norm()) def disc(p,line): t = ap(p,line) return t^2 - 4*p.norm() ############################################################### def isogeny_primes_readin(norm_bound, isog_degree_bound, line): dic = apdictionary(line) P = [p for p in L if dic[str(p)] != '?'] w = set(primes(isog_degree_bound+1)) i = 0 w.remove(2) while len(w) > 0 and i < len(P): d = disc(P[i],line) w = [ell for ell in w if not (legendre_symbol(d,ell) == -1)] i = i +1 i = 0 while i < len(P): if frob(P[i],line).is_irreducible(): break i = i+1 if i == len(P): w.insert(0,2) return w 
       
line2='45 6*a-3 0 -3 ? ? -14 -4 -4 4 4 -2 -2 0 0 10 10 -4 -4 -2 -2 -8 -8 0 0 -6 -6 [1,1,1,0,0] 8' isogeny_primes_readin(200,1000,line2) 
       
[2, 421]
[2, 421]
f = open('/Users/bleveque/Sage/matched2.txt') 
       
f.readlines()[0] 
       
'31      5*a-2       0   -3 2 -2 2 4 -4 4 -4 -2 -2 ? ? -6 -6 12 -4 6 -2
-8 0 0 16 10 -6              [1,a+1,a,a,0]                 8\n'
'31      5*a-2       0   -3 2 -2 2 4 -4 4 -4 -2 -2 ? ? -6 -6 12 -4 6 -2 -8 0 0 16 10 -6              [1,a+1,a,a,0]                 8\n'
def grabber(s): return '['+s.split('[')[1].split(']')[0]+']' #returns a-invariants data=[] isowidth = 0 ainvwidth = 0 #primes_in_table = set([]) for line in f.readlines(): isooutput = isogeny_primes_readin(200,1000,line) isostring = '[' astring = grabber(line) for i in isooutput: #primes_in_table.add(i) isostring += str(i) isostring += ',' if len(isooutput)>=1: isostring = isostring[:-1] isostring += ']' if len(isostring)>isowidth: isowidth = len(isostring) if len(astring)>ainvwidth: ainvwidth = len(astring) data.append(line[0:20]+isostring+(12-len(isostring))*' '+astring) lnwidth = 32 + ainvwidth + 3 #print primes_in_table #awidth = lnwidth+ainvwidth+2 g = open('/Users/bleveque/Sage/IsogenyTable7.txt','w') for current_data in data: returnstr = current_data returnstr += (lnwidth - len(current_data))*' ' returnstr += '\n' g.write(returnstr) 
       
def grabber(s): return eval('['+s.split('[')[1].split(']')[0]+']') #returns a-invariants