201106022 - isogeny_check_version_1 - q(sqrt5)

336 days ago by arabindr

Authors: Ben and Ashwath

x = var('x') K.<a> = NumberField(x^2 - x -1) K 
       
Number Field in a with defining polynomial x^2 - x - 1
Number Field in a with defining polynomial x^2 - x - 1
E = EllipticCurve(K, [1,a+1,a,a,0]) N = E.conductor(); N.norm() 
       
31
31
def ap(E,p): return E.change_ring(p.residue_field()).cardinality() 
       
import psage.modform.hilbert.sqrt5.tables as sqrt5 
       
P = [p for p in sqrt5.ideals_of_bounded_norm(100) if p.is_prime()] i = 0 while i < (len(P) - 1): print P[i] i=i+1 print len(P) 
       
Fractional ideal (2)
Fractional ideal (2*a - 1)
Fractional ideal (3)
Fractional ideal (3*a - 1)
Fractional ideal (3*a - 2)
Fractional ideal (-4*a + 1)
Fractional ideal (-4*a + 3)
Fractional ideal (-a + 6)
Fractional ideal (a + 5)
Fractional ideal (5*a - 3)
Fractional ideal (5*a - 2)
Fractional ideal (a - 7)
Fractional ideal (a + 6)
Fractional ideal (7)
Fractional ideal (7*a - 5)
Fractional ideal (7*a - 2)
Fractional ideal (7*a - 4)
Fractional ideal (7*a - 3)
Fractional ideal (a - 9)
Fractional ideal (a + 8)
Fractional ideal (-8*a + 3)
Fractional ideal (-8*a + 5)
Fractional ideal (a - 10)
24
Fractional ideal (2)
Fractional ideal (2*a - 1)
Fractional ideal (3)
Fractional ideal (3*a - 1)
Fractional ideal (3*a - 2)
Fractional ideal (-4*a + 1)
Fractional ideal (-4*a + 3)
Fractional ideal (-a + 6)
Fractional ideal (a + 5)
Fractional ideal (5*a - 3)
Fractional ideal (5*a - 2)
Fractional ideal (a - 7)
Fractional ideal (a + 6)
Fractional ideal (7)
Fractional ideal (7*a - 5)
Fractional ideal (7*a - 2)
Fractional ideal (7*a - 4)
Fractional ideal (7*a - 3)
Fractional ideal (a - 9)
Fractional ideal (a + 8)
Fractional ideal (-8*a + 3)
Fractional ideal (-8*a + 5)
Fractional ideal (a - 10)
24
def ap(E,p): return E.change_ring(p.residue_field()).trace_of_frobenius() 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 while len(w) > 0 and i < len(P): d = disc(E, P[i]) w = [ell for ell in w if not (legendre_symbol(mod(d,ell),ell) == -1)] i = i +1 return w 
       
E = EllipticCurve(K, [a,-a,a+1,-5,-a+3]) L = [] M = [] 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 j=0 while j < len(t): M.append(ap(E,t[j])) j +=1 
       
print L, M 
       
[Fractional ideal (3), Fractional ideal (2*a - 1), Fractional ideal (7),
Fractional ideal (3*a - 2), Fractional ideal (3*a - 1), Fractional ideal
(-4*a + 1), Fractional ideal (-4*a + 3), Fractional ideal (-a + 6),
Fractional ideal (a + 5), Fractional ideal (5*a - 2), Fractional ideal
(5*a - 3), Fractional ideal (a - 7), Fractional ideal (a + 6),
Fractional ideal (7*a - 2), Fractional ideal (7*a - 5), Fractional ideal
(7*a - 3), Fractional ideal (7*a - 4), Fractional ideal (a - 9),
Fractional ideal (a + 8), Fractional ideal (-8*a + 5), Fractional ideal
(-8*a + 3), Fractional ideal (a - 10), Fractional ideal (a + 9)] [-5,
-4, 10, -3, -3, -5, 0, 0, 10, 7, -8, -3, -8, 0, 0, 7, -3, -3, -13, -15,
0, -15, 10]
[Fractional ideal (3), Fractional ideal (2*a - 1), Fractional ideal (7), Fractional ideal (3*a - 2), Fractional ideal (3*a - 1), Fractional ideal (-4*a + 1), Fractional ideal (-4*a + 3), Fractional ideal (-a + 6), Fractional ideal (a + 5), Fractional ideal (5*a - 2), Fractional ideal (5*a - 3), Fractional ideal (a - 7), Fractional ideal (a + 6), Fractional ideal (7*a - 2), Fractional ideal (7*a - 5), Fractional ideal (7*a - 3), Fractional ideal (7*a - 4), Fractional ideal (a - 9), Fractional ideal (a + 8), Fractional ideal (-8*a + 5), Fractional ideal (-8*a + 3), Fractional ideal (a - 10), Fractional ideal (a + 9)] [-5, -4, 10, -3, -3, -5, 0, 0, 10, 7, -8, -3, -8, 0, 0, 7, -3, -3, -13, -15, 0, -15, 10]
time isogeny_primes(EllipticCurve(K, [1,a+1,a,a,0]), 20, 50) 
       
Traceback (click to the left of this block for traceback)
...
ValueError: p must be odd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_46.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("dGltZSBpc29nZW55X3ByaW1lcyhFbGxpcHRpY0N1cnZlKEssIFsxLGErMSxhLGEsMF0pLCAyMCwgNTAp"),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpsIyBWU/___code___.py", line 3, in <module>
    exec compile(u'__time__=misc.cputime(); __wall__=misc.walltime(); isogeny_primes(EllipticCurve(K, [_sage_const_1 ,a+_sage_const_1 ,a,a,_sage_const_0 ]), _sage_const_20 , _sage_const_50 ); print "Time: CPU %.2f s, Wall: %.2f s"%(misc.cputime(__time__), misc.walltime(__wall__))
  File "", line 1, in <module>
    
  File "/tmp/tmpNBU29I/___code___.py", line 16, in isogeny_primes
    w = [ell for ell in w if not (legendre_symbol(mod(d,ell),ell) == -_sage_const_1 )]
  File "/sagenb/sage_install/sage-4.7/local/lib/python2.6/site-packages/sage/rings/arith.py", line 3331, in legendre_symbol
    raise ValueError, "p must be odd"
ValueError: p must be odd
time isogeny_primes(EllipticCurve(K, [0,-a,a,0,0]), 200, 1000) 
       
[7]
Time: CPU 4.78 s, Wall: 4.78 s
[7]
Time: CPU 4.78 s, Wall: 4.78 s
time isogeny_primes(EllipticCurve(K, [0,a,1,1,0]), 200, 1000) 
       
[5]
Time: CPU 2.53 s, Wall: 2.53 s
[5]
Time: CPU 2.53 s, Wall: 2.53 s
E = EllipticCurve(K, [0,a,1,1,0]) 
       
E.j_invariant() 
       
4096/7
4096/7
time isogeny_primes(EllipticCurve(K, [0,a,1,1,0]), 200, 1000) 
       
[5]
Time: CPU 1.57 s, Wall: 1.56 s
[5]
Time: CPU 1.57 s, Wall: 1.56 s
E.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/5 associated to the Elliptic Curve
defined by y^2 + y = x^3 + a*x^2 + x over Number Field in a with
defining polynomial x^2 - x - 1
Torsion Subgroup isomorphic to Z/5 associated to the Elliptic Curve defined by y^2 + y = x^3 + a*x^2 + x over Number Field in a with defining polynomial x^2 - x - 1
time isogeny_primes(EllipticCurve(K, [a,a+1,0,a+1,0]), 200, 1000) 
       
[2]
Time: CPU 1.27 s, Wall: 1.28 s
[2]
Time: CPU 1.27 s, Wall: 1.28 s
E = EllipticCurve(K, [(281880*(2*a-1) - 630315), 328392630 - 146861640*(2*a-1)]) E = E.global_minimal_model() 
       
T = E.torsion_points(); T 
       
[(15*a - 24 : 39*a - 64 : 1), (-11*a + 18 : 39*a - 64 : 1), (-79*a + 128
: -1003*a + 1622 : 1), (-3*a + 5 : -37*a + 59 : 1), (5*a - 8 : 65*a -
106 : 1), (-21*a + 34 : 133*a - 216 : 1), (-21*a + 34 : -113*a + 182 :
1), (5*a - 8 : -71*a + 114 : 1), (-3*a + 5 : 39*a - 64 : 1), (-79*a +
128 : 1081*a - 1750 : 1), (-11*a + 18 : -29*a + 46 : 1), (15*a - 24 :
-55*a + 88 : 1), (-7*a + 12 : 25*a - 42 : 1), (0 : 1 : 0), (-7*a + 12 :
-19*a + 30 : 1)]
[(15*a - 24 : 39*a - 64 : 1), (-11*a + 18 : 39*a - 64 : 1), (-79*a + 128 : -1003*a + 1622 : 1), (-3*a + 5 : -37*a + 59 : 1), (5*a - 8 : 65*a - 106 : 1), (-21*a + 34 : 133*a - 216 : 1), (-21*a + 34 : -113*a + 182 : 1), (5*a - 8 : -71*a + 114 : 1), (-3*a + 5 : 39*a - 64 : 1), (-79*a + 128 : 1081*a - 1750 : 1), (-11*a + 18 : -29*a + 46 : 1), (15*a - 24 : -55*a + 88 : 1), (-7*a + 12 : 25*a - 42 : 1), (0 : 1 : 0), (-7*a + 12 : -19*a + 30 : 1)]
Q = 5*T[0]; Q.order() 
       
3
3
       
(-3*a + 5 : 39*a - 64 : 1)
(-3*a + 5 : 39*a - 64 : 1)
phi = E.isogeny(Q) 
       
phi 
       
Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + a*y = x^3
+ (-a+1)*x^2 + (434*a-703)*x + (-6025*a+9748) over Number Field in a
with defining polynomial x^2 - x - 1 to Elliptic Curve defined by y^2 +
x*y + a*y = x^3 + (-a+1)*x^2 + (-3166*a+5122)*x + (44490*a-71987) over
Number Field in a with defining polynomial x^2 - x - 1
Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (-a+1)*x^2 + (434*a-703)*x + (-6025*a+9748) over Number Field in a with defining polynomial x^2 - x - 1 to Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (-a+1)*x^2 + (-3166*a+5122)*x + (44490*a-71987) over Number Field in a with defining polynomial x^2 - x - 1
F = phi.codomain() 
       
F.a_invariants() 
       
(1, -a + 1, a, -3166*a + 5122, 44490*a - 71987)
(1, -a + 1, a, -3166*a + 5122, 44490*a - 71987)
E.a_invariants() 
       
(1, -a + 1, a, 434*a - 703, -6025*a + 9748)
(1, -a + 1, a, 434*a - 703, -6025*a + 9748)
E = EllipticCurve([1,a+1,a,a,0]) 
       
P = E.torsion_subgroup().0; P = E(P) 
       
P.additive_order() 
       
8
8
Q = 4*P 
       
f = E.isogeny(Q); f 
       
Isogeny of degree 2 from Elliptic Curve defined by y^2 + x*y + a*y = x^3
+ (a+1)*x^2 + a*x over Number Field in a with defining polynomial x^2 -
x - 1 to Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 +
(a-5)*x + (3*a-5) over Number Field in a with defining polynomial x^2 -
x - 1
Isogeny of degree 2 from Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + a*x over Number Field in a with defining polynomial x^2 - x - 1 to Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (a-5)*x + (3*a-5) over Number Field in a with defining polynomial x^2 - x - 1
F = f.codomain(); F.a_invariants() 
       
(1, a + 1, a, a - 5, 3*a - 5)
(1, a + 1, a, a - 5, 3*a - 5)
F.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/2 + Z/4 associated to the Elliptic
Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (a-5)*x + (3*a-5)
over Number Field in a with defining polynomial x^2 - x - 1
Torsion Subgroup isomorphic to Z/2 + Z/4 associated to the Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (a-5)*x + (3*a-5) over Number Field in a with defining polynomial x^2 - x - 1
v = [Q for Q in F.torsion_points() if Q.order()==2] v 
       
[(-a + 2 : -1 : 1), (-a - 2 : 1 : 1), (a - 5/4 : -a + 5/8 : 1)]
[(-a + 2 : -1 : 1), (-a - 2 : 1 : 1), (a - 5/4 : -a + 5/8 : 1)]
f0 = F.isogeny(v[0]) G0 = f0.codomain(); G0.a_invariants() 
       
(1, a + 1, a, 41*a - 70, 170*a - 276)
(1, a + 1, a, 41*a - 70, 170*a - 276)
G0.is_isomorphic(E) 
       
False
False
f1 = F.isogeny(v[1]) G1 = f1.codomain(); G1.a_invariants() 
       
(1, a + 1, a, -39*a - 20, 108*a + 46)
(1, a + 1, a, -39*a - 20, 108*a + 46)
G1.is_isomorphic(E) 
       
False
False
G1.is_isomorphic(F) 
       
False
False
f2 = F.isogeny(v[2]) G2 = f2.codomain(); G2.a_invariants() 
       
(1, a + 1, a, 6*a - 205/16, -111/16*a + 759/64)
(1, a + 1, a, 6*a - 205/16, -111/16*a + 759/64)
G2.is_isomorphic(E) 
       
True
True
G0.is_isomorphic(G1) 
       
False
False
G0.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/2 + Z/2 associated to the Elliptic
Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (41*a-70)*x +
(170*a-276) over Number Field in a with defining polynomial x^2 - x - 1
Torsion Subgroup isomorphic to Z/2 + Z/2 associated to the Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (41*a-70)*x + (170*a-276) over Number Field in a with defining polynomial x^2 - x - 1
G1.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/4 associated to the Elliptic Curve
defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (-39*a-20)*x + (108*a+46)
over Number Field in a with defining polynomial x^2 - x - 1
Torsion Subgroup isomorphic to Z/4 associated to the Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (-39*a-20)*x + (108*a+46) over Number Field in a with defining polynomial x^2 - x - 1
v = [Q for Q in G1.torsion_points() if Q.order()==2] v 
       
[(a + 11/4 : -a - 11/8 : 1)]
[(a + 11/4 : -a - 11/8 : 1)]
f0 = G1.isogeny(v[0]); H0 = f0.codomain(); H0.a_invariants() 
       
(1, a + 1, a, 6*a - 1485/16, 4241/16*a - 13321/64)
(1, a + 1, a, 6*a - 1485/16, 4241/16*a - 13321/64)
H0.is_isomorphic(F) 
       
True
True
v = [Q for Q in G0.torsion_points() if Q.order()==2] v 
       
[(-5*a + 8 : 2*a - 4 : 1), (3*a - 4 : -2*a + 2 : 1), (a - 21/4 : -a +
21/8 : 1)]
[(-5*a + 8 : 2*a - 4 : 1), (3*a - 4 : -2*a + 2 : 1), (a - 21/4 : -a + 21/8 : 1)]
f0 = G0.isogeny(v[0]); H1 = f0.codomain(); H1.a_invariants() 
       
(1, a + 1, a, 691*a - 1105, 10487*a - 16933)
(1, a + 1, a, 691*a - 1105, 10487*a - 16933)
H1.is_isomorphic(E) 
       
False
False
H1.is_isomorphic(F) 
       
False
False
H1.is_isomorphic(G1) 
       
False
False
f1 = G0.isogeny(v[1]); H2 = f1.codomain(); H2.a_invariants() 
       
(1, a + 1, a, 31*a - 75, 141*a - 303)
(1, a + 1, a, 31*a - 75, 141*a - 303)
H2.is_isomorphic(E) 
       
False
False
H2.is_isomorphic(F) 
       
False
False
H2.is_isomorphic(G1) 
       
False
False
f2 = G0.isogeny(v[2]); H3 = f2.codomain(); H3.a_invariants() 
       
(1, a + 1, a, 6*a - 1485/16, 4241/16*a - 13321/64)
(1, a + 1, a, 6*a - 1485/16, 4241/16*a - 13321/64)
H3.is_isomorphic(E) 
       
False
False
H3.is_isomorphic(F) 
       
True
True
H3.is_isomorphic(G1) 
       
False
False
H2.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/2 associated to the Elliptic Curve
defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (31*a-75)*x + (141*a-303)
over Number Field in a with defining polynomial x^2 - x - 1
Torsion Subgroup isomorphic to Z/2 associated to the Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (31*a-75)*x + (141*a-303) over Number Field in a with defining polynomial x^2 - x - 1
H2.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/2 associated to the Elliptic Curve
defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (691*a-1105)*x +
(10487*a-16933) over Number Field in a with defining polynomial x^2 - x
- 1
Torsion Subgroup isomorphic to Z/2 associated to the Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (a+1)*x^2 + (691*a-1105)*x + (10487*a-16933) over Number Field in a with defining polynomial x^2 - x - 1
gr = 
       
 
       
time isogeny_primes(E, 200, 1000) 
       
[3, 5]
Time: CPU 0.89 s, Wall: 0.90 s
[3, 5]
Time: CPU 0.89 s, Wall: 0.90 s
[f.degree() for f in E.isogenies_prime_degree()] 
       
[3, 5]
[3, 5]
E.torsion_subgroup() 
       
Torsion Subgroup isomorphic to Z/15 associated to the Elliptic Curve
defined by y^2 + x*y + a*y = x^3 + (-a+1)*x^2 + (434*a-703)*x +
(-6025*a+9748) over Number Field in a with defining polynomial x^2 - x -
1
Torsion Subgroup isomorphic to Z/15 associated to the Elliptic Curve defined by y^2 + x*y + a*y = x^3 + (-a+1)*x^2 + (434*a-703)*x + (-6025*a+9748) over Number Field in a with defining polynomial x^2 - x - 1
E = EllipticCurve(K, [0, -1, 1, -7820, -263580]) 
       
E.torsion_order() 
       
1
1
isogeny_primes(E, 200, 100) 
       
[5]
[5]
k = GF(11) E = EllipticCurve(k,[1,1]) Q = E(6,5) phi = E.isogeny(Q) 
       
phi 
       
Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x + 1
over Finite Field of size 11 to Elliptic Curve defined by y^2 = x^3 +
7*x + 8 over Finite Field of size 11
Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 11 to Elliptic Curve defined by y^2 = x^3 + 7*x + 8 over Finite Field of size 11
phi.codomain() 
       
Traceback (click to the left of this block for traceback)
...
NameError: name 'phi' is not defined
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_26.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("cGhpLmNvZG9tYWluKCk="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpj5fiAB/___code___.py", line 2, in <module>
    exec compile(u'phi.codomain()
  File "", line 1, in <module>
    
NameError: name 'phi' is not defined
(7*a - 2)*(7*a - 5) 
       
59
59