3Selmer

585 days ago by daniel.disegni

#Given an elliptic curve E, a Heegner discriminant D, a Kolyvagin prime ell, we do the first step towards computing #the ell-modified 3-Selmer group of E. The quadratic Heegner field is replaced by QQ to be able to carry the #computations. #We use the function division_points_scheme, copied below. #Dictionary to Jared's blackboard exposition on Monday: A = L, A_+ = L.base_field() def division_points_scheme(P,n): """ INPUT P: a point on an elliptic curve over a field n: a positive integer (not divisible by the characteristic of the aforementioned field) OUTPUT The finite subscheme of E consisting of n-th roots of P, given as a list of at most n points with coordinates in extensions of the ground field. This means that there is exactly one element of the list for each Galois orbit of n-th roots of P. *Warning*: each element of the output is a point defined over a different field; in particular, the "a"s that may appear in its coordinates bear no relations with those appearing in the coordinates of other elements of the output. """ nRootsofP=[] if P==E(0): nRootsofP.append(P) g = P.division_points(n,poly_only=true) for g1,e in factor(g): g1monic,d = sage.schemes.elliptic_curves.heegner.make_monic(g1); K.<a> = QQ.extension(g1monic) R.<y> = K['y'] EK = E.change_ring(K) ypoly = E.defining_polynomial()(a/d,y,1) ypoly1=factor(ypoly)[0][0] if ypoly1.degree()>1: ypoly1m, dd= sage.schemes.elliptic_curves.heegner.make_monic(ypoly1) J.<b> = K.extension(ypoly1m); EJ=EK.change_ring(J); newpoints=[EJ.lift_x(a/d)] else: EJ=EK; J=K; newpoints=[Q for Q in EJ.lift_x(a/d, all=True) if n*Q==EJ(P)] nRootsofP+=newpoints return nRootsofP 
       
E = EllipticCurve('37a') E.heegner_discriminants(30) 
       
[-3, -4, -7, -11]
[-3, -4, -7, -11]
D=-7; #K.<a>=QuadraticField(D); K=QQ; EK=E.change_ring(K); [ell for ell in prime_range(50) if GF(ell)(E.conductor())!=0 and E.heegner_point(D,ell).satisfies_kolyvagin_hypothesis(3)] 
       
[17, 41, 47]
[17, 41, 47]
ell=17 L=division_points_scheme(E(0),3)[1].domain().base_ring(); L I3 = [x[0] for x in L.factor(3)] Iell = [x[0] for x in L.factor(ell)] T=L.selmer_group(I3+Iell,3); print len(T); print(T) 
       
10
[(19/2997*a^3 - 11/2997*a^2 - 44/333*a + 7/37)*b - 3/37*a^3 - 8/37*a^2 +
45/37*a + 39/37, (-14/2997*a^3 - 25/2997*a^2 + 70/999*a - 25/333)*b -
7/111*a^3 + 2/37*a^2 + 72/37*a - 56/37, (43/2997*a^3 - 7/999*a^2 -
289/999*a + 164/333)*b - 28/333*a^3 - 29/111*a^2 + 59/37*a + 98/37,
(-23/2997*a^3 - 4/999*a^2 + 152/999*a - 49/333)*b - 16/333*a^3 -
2/37*a^2 + 39/37*a - 92/37, (16/2997*a^3 + 2/333*a^2 - 80/999*a +
2/37)*b + 8/111*a^3 + 3/37*a^2 - 40/37*a + 64/37, (16/2997*a^3 +
2/333*a^2 - 80/999*a + 2/37)*b + 8/111*a^3 + 3/37*a^2 - 40/37*a - 10/37,
(2/999*a^3 + 16/2997*a^2 - 10/333*a - 7/111)*b + 1/37*a^3 + 8/111*a^2 -
15/37*a - 13/37, (-11/2997*a^3 - 17/2997*a^2 + 55/999*a - 17/333)*b +
2/333*a^3 + 10/111*a^2 + 9/37*a - 7/37, (-2/2997*a^3 + 7/2997*a^2 +
10/999*a + 7/333)*b - 1/111*a^3 - 5/37*a^2 + 5/37*a + 29/37,
(-2/2997*a^3 + 7/2997*a^2 + 10/999*a + 7/333)*b - 1/111*a^3 + 22/111*a^2
+ 5/37*a - 8/37]
10
[(19/2997*a^3 - 11/2997*a^2 - 44/333*a + 7/37)*b - 3/37*a^3 - 8/37*a^2 + 45/37*a + 39/37, (-14/2997*a^3 - 25/2997*a^2 + 70/999*a - 25/333)*b - 7/111*a^3 + 2/37*a^2 + 72/37*a - 56/37, (43/2997*a^3 - 7/999*a^2 - 289/999*a + 164/333)*b - 28/333*a^3 - 29/111*a^2 + 59/37*a + 98/37, (-23/2997*a^3 - 4/999*a^2 + 152/999*a - 49/333)*b - 16/333*a^3 - 2/37*a^2 + 39/37*a - 92/37, (16/2997*a^3 + 2/333*a^2 - 80/999*a + 2/37)*b + 8/111*a^3 + 3/37*a^2 - 40/37*a + 64/37, (16/2997*a^3 + 2/333*a^2 - 80/999*a + 2/37)*b + 8/111*a^3 + 3/37*a^2 - 40/37*a - 10/37, (2/999*a^3 + 16/2997*a^2 - 10/333*a - 7/111)*b + 1/37*a^3 + 8/111*a^2 - 15/37*a - 13/37, (-11/2997*a^3 - 17/2997*a^2 + 55/999*a - 17/333)*b + 2/333*a^3 + 10/111*a^2 + 9/37*a - 7/37, (-2/2997*a^3 + 7/2997*a^2 + 10/999*a + 7/333)*b - 1/111*a^3 - 5/37*a^2 + 5/37*a + 29/37, (-2/2997*a^3 + 7/2997*a^2 + 10/999*a + 7/333)*b - 1/111*a^3 + 22/111*a^2 + 5/37*a - 8/37]
L.absolute_polynomial() 
       
x^8 + 108*x^7 + 6561*x^6 + 255879*x^5 + 5491557*x^4 + 52612659*x^3 -
3486784401*x - 73222472421
x^8 + 108*x^7 + 6561*x^6 + 255879*x^5 + 5491557*x^4 + 52612659*x^3 - 3486784401*x - 73222472421
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
#SCRATCH PAPER I0=Iell[0] I0 
       
Fractional ideal ((-14/2997*a^3 - 25/2997*a^2 + 70/999*a - 25/333)*b -
7/111*a^3 + 2/37*a^2 + 72/37*a - 56/37)
Fractional ideal ((-14/2997*a^3 - 25/2997*a^2 + 70/999*a - 25/333)*b - 7/111*a^3 + 2/37*a^2 + 72/37*a - 56/37)
I0 
       
Fractional ideal ((-14/2997*a^3 - 25/2997*a^2 + 70/999*a - 25/333)*b -
7/111*a^3 + 2/37*a^2 + 72/37*a - 56/37)
Fractional ideal ((-14/2997*a^3 - 25/2997*a^2 + 70/999*a - 25/333)*b - 7/111*a^3 + 2/37*a^2 + 72/37*a - 56/37)
 
       
for t in T: print t.valuation(Iell[4]) 
       
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
 
       
I0.id 
       
Traceback (click to the left of this block for traceback)
...
AttributeError: 'NumberFieldFractionalIdeal_rel' object has no attribute
'id'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_30.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("STAuaWQ="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpi4FJGs/___code___.py", line 2, in <module>
    exec compile(u'I0.id
  File "", line 1, in <module>
    
  File "element.pyx", line 305, in sage.structure.element.Element.__getattr__ (sage/structure/element.c:2628)
  File "parent.pyx", line 267, in sage.structure.parent.getattr_from_other_class (sage/structure/parent.c:2828)
  File "parent.pyx", line 171, in sage.structure.parent.raise_attribute_error (sage/structure/parent.c:2622)
AttributeError: 'NumberFieldFractionalIdeal_rel' object has no attribute 'id'