201106022 - isogeny_check_version_1 - q(sqrt5)

337 days ago by WilliamStein

Authors: Stein 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 
       
E.has_good_reduction(v[0]) 
       
True
True
def frob(p): R.<x> = ZZ[] t = ap(E, p) return x^2 - t*x + p.norm() 
       
frob(v[1]) 
       
x^2 - 8*x + 5
x^2 - 8*x + 5
K.pr 
       
def ap(E,p): return E.change_ring(p.residue_field()).trace_of_frobenius() def frob(E, p): R.<x> = ZZ[] t = ap(E, p) return x^2 - t*x + 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): f = frob(E, P[i]) w = [ell for ell in w if not f.change_ring(GF(ell)).is_irreducible()] i += 1 return w 
       
time isogeny_primes(EllipticCurve(K, [1,a+1,a,a,0]), 20, 50) 
       
[2]
Time: CPU 0.24 s, Wall: 0.24 s
[2]
Time: CPU 0.24 s, Wall: 0.24 s
time isogeny_primes(EllipticCurve(K, [0,-a,a,0,0]), 200, 1000) 
       
[7]
Time: CPU 1.57 s, Wall: 1.56 s
[7]
Time: CPU 1.57 s, Wall: 1.56 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() 
       
Elliptic Curve defined by y^2 = x^3 + 7*x + 8 over Finite Field of size
11
Elliptic Curve defined by y^2 = x^3 + 7*x + 8 over Finite Field of size 11