5077: ModifiedSelmer

691 days ago by rmb

 

The goal is to compute the dimension of the modified Selmer group \mathcal{H}(\ell_1\ell_2) for the rank 3 elliptic curve 5077a and various pairs of Kolyvagin primes \ell_1, \ell_2.</p>
<p>Fix a prime p. Recall that a Kolyvagin prime \ell\neq p satisfies the following congruence condition: a_{\ell} \equiv \ell + 1 \equiv 0 \pmod{p}.

The goal is to compute the dimension of the modified Selmer group \mathcal{H}(\ell_1\ell_2) for the rank 3 elliptic curve E=5077a and various pairs of Kolyvagin primes \ell_1, \ell_2.

3-descent is fully implemented in Magma; we rely on this implementation to compute things like bases for \mathcal{H}(\ell)^-.

Fix a prime p.  We will set p = 3. Recall that a Kolyvagin prime \ell satisfies the following congruence condition:

a_{\ell} \equiv \ell + 1 \equiv 0 \pmod{p}.

First we create a list of Kolyvagin primes for a specific Heegner discriminant D. Fix D = -3.

proof.number_field(False) E=EllipticCurve('5077a') cond = E.conductor() D = -3 p = 3 kolyD=[ell for ell in prime_range(500) if GF(ell)(cond)!=0 and E.heegner_point(D,ell).satisfies_kolyvagin_hypothesis(p)] print kolyD 
       
[11, 23, 29, 41, 47, 53, 107, 137, 149, 173, 179, 233, 239, 257, 281,
293, 347, 359, 383, 389, 401, 431, 461]
[11, 23, 29, 41, 47, 53, 107, 137, 149, 173, 179, 233, 239, 257, 281, 293, 347, 359, 383, 389, 401, 431, 461]

Note that the Galois representation on the 3-torsion is surjective, so there is no rational 3-torsion and E[3]^{G_\mathbf{Q}} is trivial.

E.galois_representation().is_surjective(3) 
       
True
True

Let ED be the twist of E by D.  We will be working over a field we will call LJ, which will be a field where ED has (at least) one 3-torsion point.  We chose our Kolyvagin primes \ell to be inert in K=\mathbf{Q}(\sqrt{D}).

ED=E.quadratic_twist(D) P1,P2,P3=E.gens(); 
       

Since we want to use our knowledge of \mathcal{H}(\ell)^\pm to tell us about \mathcal{H}(\ell_1\ell_2)^\pm, the next step is to invoke the 3-descent code in M**** to compute a basis for \mathcal{H}(\ell)^-.  The basis elements are represented as elements of LJ^\times (they represent cosets of LJ^\times/(LJ^\times)^3, so we may actually assume they are algebraic integers).  We compute these basis elements for a bunch of Kolyvagin primes.

#Dictionary for 5077a: for each Kolyvagin prime ell, a generator for H(ell)^- represented as an element of LJ* (LJ=Q(ED(one 3-torsion point))) LJ.<u>=NumberField( x^8 - 1134*x^4 - 18225*x^2 - 107163 ) dic={11: 1/3402*(-78194096813332063817*u^7 - 226120053042379143270*u^6 + 370356230483142417591*u^5 + 3146670160662562282161*u^4 + 91124428396873011166719*u^3 + 228045575974541486007357*u^2 + 921614535402170900230413*u + 684196453833522406049448), 23: 1/1134*(760740550460831780162296273531698137613192*u^7 - 6884081769616656444697730149446130845488773*u^6 - 17884033888456782992428667525605002727774051*u^5 + 161835926301224098131050924193007751470708233*u^4 - 442249102658779623718059344809321211944243329*u^3 + 4001993824830796854784727663614544571214683834*u^2 - 3467787780001710069044502950375360643090500010*u + 31380652211516773934592954975740782605590272065) , 29 : 1/486*(-31214607373211512911973*u^7 + 5038319165847921205089*u^6 + 340982141547543269892285*u^5 + 637626852468552827913849*u^4 + 33076261072233604062341586*u^3 - 17174018897680340226599910*u^2 + 183583128811644083569677561*u - 690670375078829010553368720), 41:1/1134*(-10966988184217358086*u^7 - 44416731164204646835*u^6 + 257819815470641580373*u^5 + 1044180338321566047420*u^4 + 6375551665283870630589*u^3 + 25821233649904390674354*u^2 + 49992323382280300827195*u + 202470865350278374749060), 47: 1/3402*(-1185825696436316532857265239*u^7 + 8822126791814932076790842064*u^6 + 27877240049874076719596362869*u^5 - 207396877184351079589958731137*u^4 + 689368208176888446777345806157*u^3 - 5128657404759985133335888101141*u^2 + 5405511585813118989552065680893*u - 40215108112416397503841632915816), 53 : 1/162*(8572624172915204539108888450*u^7 + 54619940507689547917433072237*u^6 + 348007545984490811033091509746*u^5 + 2217308384748192600875224014081*u^4 + 4406086336233965117960396248353*u^3 + 28073104419670848512397607181535*u^2 + 22629959205297147813165161898105*u + 144185374344299733402620108569731), 107 : 1/3402*(2620654456761778466*u^7 + 1135108563202145553*u^6 - 30070623441986109864*u^5 + 48911071455199544283*u^4 - 2752293043898245852263*u^3 - 2250397617401182981221*u^2 - 14035668754281097556889*u - 65187444748095323589411), 137 : 1/3402*(-199299462735373897*u^7 - 6374279851387905303*u^6 - 10805862730013826363*u^5 + 45647724380033886579*u^4 + 433019315646327973122*u^3 + 7164241307114115335202*u^2 + 13562331029022273247467*u + 60377765484044818862640), 149 : 1/1134*(-233544073630146*u^7 + 1198121695758519*u^6 + 6244603402437925*u^5 - 10980526567677660*u^4 + 144871257819097215*u^3 - 1228262224302112356*u^2 - 547965057479790969*u - 12196897001758649376), 173 : 1/3402*(-1584903104*u^7 - 3405205482*u^6 + 23699071263*u^5 - 11948870304*u^4 + 1570279695642*u^3 + 4448283020811*u^2 + 3228365469501*u + 66920142322656), 179 : 1/3402*(194346102103*u^7 - 3860118862824*u^6 - 4568827406304*u^5 + 90746439786828*u^4 - 112981211803593*u^3 + 2244042469142586*u^2 - 885914438961177*u + 17596108178668593), 233 : 1/1134*(170713597719211269793075*u^7 + 4150643370036198268123989*u^6 - 10220474947340024110173325*u^5 - 23270837327098778001129804*u^4 - 38126489409373780846278036*u^3 - 4775288116663468057316876136*u^2 + 6970106205364006125557264556*u - 45473546788061429550968278803), 239 : 1/3402*(-305744886141881*u^7 - 1419691085411991*u^6 + 7187578834699221*u^5 + 33374926482024834*u^4 + 177744534874329150*u^3 + 825331227109449354*u^2 + 1393758374449283712*u + 6471574363490006925), 257 : 1/1134*(419901788283*u^7 - 3530364406233*u^6 - 8237620827562*u^5 - 15613619983983*u^4 - 801448366605642*u^3 + 1997873635345119*u^2 - 8832921978758688*u + 9728835319972188), 281 : 1/3402*(157059164678421969019771386604*u^7 - 477378711459665084850510385656*u^6 - 3692259367402069752217479495981*u^5 + 11222560764245799890590029931143*u^4 - 91304814238301681041617958103550*u^3 + 277519460009791214778884479993401*u^2 - 715944288337433879361555865512888*u + 2176100723209736255814628335676395), 293 : 1/3402*(-1610513608817246309341186097627977*u^7 - 10261287060541771043283218267530260*u^6 - 65379150826405876772063785841118612*u^5 - 416559183810246951226148478130837929*u^4 - 827758439305923396341783466225866961*u^3 - 5274011294286410286452638111922226648*u^2 - 4251423663510073522355421755744787810*u - 27087680841948963309547137801991430934), 347 : 1/3402*(-22494060096257*u^7 - 207131856271284*u^6 + 1721192648735385*u^5 + 5480103311360874*u^4 + 39319072086763665*u^3 + 423790556573790945*u^2 - 319143037144696740*u + 4243015872945218565), 359 : 1/486*(316132956130636033931182*u^7 + 2014221420033093147506019*u^6 + 12833486228807011469176131*u^5 + 81767757376997327525593032*u^4 + 162483397189075099881725229*u^3 + 1035252834831741900609910908*u^2 + 834525783048935091796016373*u + 5317128996486037068436978680), 383 : 1/3402*(-108610469673135457*u^7 - 237664861958993700*u^6 + 2553364834281297162*u^5 + 5586736468837659030*u^4 + 63140869650692442735*u^3 + 138156301346493101112*u^2 + 495102066414603987573*u + 1083328687670258431647), 389 : 1/567*(-24947673314868718692741306*u^7 + 120388756836374254316078886*u^6 + 20389450688337674050426921*u^5 - 1317043415193734087483913450*u^4 + 30743651313865771782699626568*u^3 - 127535639168034876598046906553*u^2 + 387347164458278820075609590781*u - 706192881801524425254826644093), 401 : 1/1134*(-14923902440962031949803858483809654*u^7 - 95086714059308640941209487284293237*u^6 - 605839071004669108255169020621761682*u^5 - 3860065873418096766387795475888778310*u^4 - 7670463711236044728950100222881100261*u^3 - 48871881366010588028729188849162333347*u^2 - 39396023505828588481197235506849795930*u - 251009307853066659835804699937881000314), 431 : 1/3402*(-3168207929132022760*u^7 + 17116071548575846560*u^6 - 113597040913151605614*u^5 + 747101262781847949633*u^4 - 1071951115162296273156*u^3 + 10257400629011486676852*u^2 - 3582058149518017526901*u + 50623027981583205248037), 461 : 1/1134*(13569171902371728719347562*u^7 + 129645098157464043619223696*u^6 + 118943498480665746721739185*u^5 - 1132765268813605184058492849*u^4 - 18943451460683008643562597468*u^3 - 142220393572248415915357562577*u^2 - 334776471379613260240009604364*u - 1032994362495251641982948037279) } 
       

Recall the exact sequence 0\rightarrow E(\mathbb{Q})/pE(\mathbb{Q})\rightarrow Sel^{(p)}\rightarrow Sha[p]\rightarrow 0.  Since Sha=0 for us, we can represent elements of Sel^{(p)} as elements of E(\mathbb{Q})/3E(\mathbb{Q}).  Our modified Selmer groups \mathcal{H}(n) were defined in terms of the vanishing of certain cocycles under restriction to G_{\mathbf{Q}_\ell} for \ell | n, and we check this condition by localizing the corresponding elements of E(\mathbf{Q})/3E(\mathbf{Q}).  But checking whether a point of E(\mathbf{Q}_\ell) is divisible by p can be checked residually.

def I(ell): return [x[0] for x in LJ.factor(ell) if x[0].residue_class_degree()==2] def dimHminus(ell1, ell2): """ INPUT: two kolyagin primes OUTPUT: the dimension of H(el11*ell2)^-. It is 0 if the Kolyvagin class dic[ell1] (a generator of H(ell1)^-) is nonzero in the localization_at_ell2 map. It is 2 otherwise. Although not obvious from the code, the function is symmetric. By default, if you input ell1=ell2 (which you shouldn't), the output is zero. """ n=0 if ell1!=ell2: for J in I(ell2): F.<uu>=J.residue_field() if F(dic[ell1])^((ell2^2-1)/3) != 1: n+=1 if n==3: return 0 else: return 2 else: return 0 
       

Recall the exact sequence 0\rightarrow E(\mathbb{Q})/pE(\mathbb{Q})\rightarrow Sel^{(p)}\rightarrow Sha[p]\rightarrow 0.  Since Sha=0 for us, we can represent elements of Sel^{(p)} as elements of E(\mathbb{Q})/3E(\mathbb{Q}).  Our modified Selmer groups \mathcal{H}(n) were defined in terms of the vanishing of certain cocycles under restriction to G_{\mathbb{Q}_\ell} for \ell | n, and we check this condition by localizing the corresponding elements of E(\mathbb{Q})/3E(\mathbb{Q}).  But checking whether a point of E(\mathbb{Q}_\ell) is divisible by p can be checked residually.

#Now for the plus + part : we check whether the reduction of E(QQ) is nonzero mod ell1, ell2. def Hplus(ell1,ell2): p=3 Ered1=E.change_ring(GF(ell1)) Ered2=E.change_ring(GF(ell2)) Ker=[] for i,j,k in GF(p)^3: if Ered1(ZZ(i)*P1+ZZ(j)*P2+ZZ(k)*P3).is_divisible_by(p) and Ered2(ZZ(i)*P1+ZZ(j)*P2+ZZ(k)*P3).is_divisible_by(p): Ker.append((i,j,k)) return Ker 
       
def H(ell1,ell2): HH=Hplus(ell1, ell2) if dimHminus(ell1, ell2)!=0 or len(HH)>3 : print 'H(',ell1,'*',ell2,') has dim>1 so the Kolyvagin class vanishes.'; return 0 else: print 'H(',ell1,'*',ell2,') is generated by', HH[1][0],'*', P1,'+',HH[1][1],'*', P2,'+',HH[1][2],'*', P3; return HH 
       
Hplus(29,53); dimHminus(29,53); H(29,53) 
       
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]
0
H( 29 * 53 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) +
0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]
0
H( 29 * 53 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]
for ell1 in dic.keys(): for ell2 in dic.keys(): print ell1, ell2; H(ell1, ell2); print '' 
       
WARNING: Output truncated!  
full_output.txt



257 257
H( 257 * 257 ) has dim>1 so the Kolyvagin class vanishes.
0

257 389
H( 257 * 389 ) has dim>1 so the Kolyvagin class vanishes.
0

257 137
H( 257 * 137 ) is generated by 2 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1)
+ 0 * (1 : -1 : 1)
[(0, 0, 0), (2, 1, 0), (1, 2, 0)]

257 11
H( 257 * 11 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1) +
1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

257 401
H( 257 * 401 ) has dim>1 so the Kolyvagin class vanishes.
0

257 149
H( 257 * 149 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 23
H( 257 * 23 ) has dim>1 so the Kolyvagin class vanishes.
0

257 281
H( 257 * 281 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 47
H( 257 * 47 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1) +
1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

257 29
H( 257 * 29 ) is generated by 2 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) +
0 * (1 : -1 : 1)
[(0, 0, 0), (2, 1, 0), (1, 2, 0)]

257 293
H( 257 * 293 ) has dim>1 so the Kolyvagin class vanishes.
0

257 41
H( 257 * 41 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) +
1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 173
H( 257 * 173 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 431
H( 257 * 431 ) has dim>1 so the Kolyvagin class vanishes.
0

257 179
H( 257 * 179 ) has dim>1 so the Kolyvagin class vanishes.
0

...

383 47
H( 383 * 47 ) has dim>1 so the Kolyvagin class vanishes.
0

383 29
H( 383 * 29 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) +
0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]

383 293
H( 383 * 293 ) has dim>1 so the Kolyvagin class vanishes.
0

383 41
H( 383 * 41 ) is generated by 1 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) +
1 * (1 : -1 : 1)
[(0, 0, 0), (1, 1, 1), (2, 2, 2)]

383 173
H( 383 * 173 ) has dim>1 so the Kolyvagin class vanishes.
0

383 431
H( 383 * 431 ) has dim>1 so the Kolyvagin class vanishes.
0

383 179
H( 383 * 179 ) is generated by 1 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 1, 1), (2, 2, 2)]

383 53
H( 383 * 53 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) +
0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]

383 461
H( 383 * 461 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

383 347
H( 383 * 347 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1)
+ 0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]

383 359
H( 383 * 359 ) is generated by 1 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 0, 1), (2, 0, 2)]

383 233
H( 383 * 233 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

383 107
H( 383 * 107 ) is generated by 1 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 0, 1), (2, 0, 2)]

383 239
H( 383 * 239 ) is generated by 1 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1)
+ 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 0, 1), (2, 0, 2)]

383 383
H( 383 * 383 ) has dim>1 so the Kolyvagin class vanishes.
0
WARNING: Output truncated!  
full_output.txt



257 257
H( 257 * 257 ) has dim>1 so the Kolyvagin class vanishes.
0

257 389
H( 257 * 389 ) has dim>1 so the Kolyvagin class vanishes.
0

257 137
H( 257 * 137 ) is generated by 2 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 0 * (1 : -1 : 1)
[(0, 0, 0), (2, 1, 0), (1, 2, 0)]

257 11
H( 257 * 11 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

257 401
H( 257 * 401 ) has dim>1 so the Kolyvagin class vanishes.
0

257 149
H( 257 * 149 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 23
H( 257 * 23 ) has dim>1 so the Kolyvagin class vanishes.
0

257 281
H( 257 * 281 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 47
H( 257 * 47 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

257 29
H( 257 * 29 ) is generated by 2 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 0 * (1 : -1 : 1)
[(0, 0, 0), (2, 1, 0), (1, 2, 0)]

257 293
H( 257 * 293 ) has dim>1 so the Kolyvagin class vanishes.
0

257 41
H( 257 * 41 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 173
H( 257 * 173 ) is generated by 0 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (0, 0, 1), (0, 0, 2)]

257 431
H( 257 * 431 ) has dim>1 so the Kolyvagin class vanishes.
0

257 179
H( 257 * 179 ) has dim>1 so the Kolyvagin class vanishes.
0

...

383 47
H( 383 * 47 ) has dim>1 so the Kolyvagin class vanishes.
0

383 29
H( 383 * 29 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]

383 293
H( 383 * 293 ) has dim>1 so the Kolyvagin class vanishes.
0

383 41
H( 383 * 41 ) is generated by 1 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 1, 1), (2, 2, 2)]

383 173
H( 383 * 173 ) has dim>1 so the Kolyvagin class vanishes.
0

383 431
H( 383 * 431 ) has dim>1 so the Kolyvagin class vanishes.
0

383 179
H( 383 * 179 ) is generated by 1 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 1, 1), (2, 2, 2)]

383 53
H( 383 * 53 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]

383 461
H( 383 * 461 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

383 347
H( 383 * 347 ) is generated by 0 * (-2 : 3 : 1) + 1 * (-7/4 : 25/8 : 1) + 0 * (1 : -1 : 1)
[(0, 0, 0), (0, 1, 0), (0, 2, 0)]

383 359
H( 383 * 359 ) is generated by 1 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 0, 1), (2, 0, 2)]

383 233
H( 383 * 233 ) is generated by 1 * (-2 : 3 : 1) + 2 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 2, 1), (2, 1, 2)]

383 107
H( 383 * 107 ) is generated by 1 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 0, 1), (2, 0, 2)]

383 239
H( 383 * 239 ) is generated by 1 * (-2 : 3 : 1) + 0 * (-7/4 : 25/8 : 1) + 1 * (1 : -1 : 1)
[(0, 0, 0), (1, 0, 1), (2, 0, 2)]

383 383
H( 383 * 383 ) has dim>1 so the Kolyvagin class vanishes.
0
def Hlens(ell1,ell2): HH=Hplus(ell1, ell2) if dimHminus(ell1, ell2)!=0 or len(HH)>3 : return 0 else: return len(HH) 
       
m = [] for i in kolyD: for j in kolyD: m = m + [Hlens(i,j)] 
       
m = matrix(23,23,m) 
       
\left(\begin{array}{rrrrrrrrrrrrrrrrrrrrrrr} 0 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 0 \\ 3 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 0 & 3 & 0 & 3 & 0 & 3 & 3 & 3 & 0 & 3 \\ 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 0 & 3 & 3 & 0 & 3 & 0 & 0 & 3 & 3 & 3 & 0 & 3 & 3 & 3 \\ 3 & 3 & 3 & 0 & 3 & 3 & 0 & 3 & 0 & 3 & 3 & 0 & 3 & 3 & 0 & 0 & 0 & 3 & 3 & 0 & 3 & 3 & 3 \\ 3 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 0 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 3 \\ 0 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 3 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 \\ 3 & 3 & 3 & 0 & 3 & 0 & 0 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 0 & 3 & 0 \\ 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 0 & 3 & 3 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 0 & 0 & 3 & 3 \\ 3 & 3 & 3 & 0 & 0 & 3 & 3 & 3 & 0 & 3 & 3 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 0 & 0 & 3 & 0 & 0 \\ 3 & 3 & 0 & 3 & 0 & 0 & 3 & 0 & 3 & 0 & 3 & 0 & 3 & 3 & 3 & 0 & 0 & 0 & 0 & 3 & 0 & 0 & 0 \\ 0 & 3 & 3 & 3 & 3 & 3 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 0 & 3 & 0 & 3 & 0 & 3 & 0 & 3 & 0 & 0 \\ 0 & 0 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 0 & 0 & 0 & 3 & 0 & 3 & 0 & 0 & 3 & 3 & 3 & 3 & 3 & 0 \\ 3 & 3 & 0 & 3 & 0 & 0 & 0 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 0 & 3 & 0 & 3 & 0 & 0 & 3 & 3 \\ 3 & 0 & 3 & 3 & 3 & 3 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 0 & 3 & 0 & 3 & 3 & 3 & 0 & 0 & 0 & 3 \\ 0 & 3 & 0 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 3 & 3 & 3 & 3 & 3 & 0 \\ 3 & 0 & 0 & 0 & 3 & 3 & 3 & 3 & 3 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 3 & 3 & 0 & 3 & 3 & 0 & 3 \\ 3 & 3 & 3 & 0 & 3 & 0 & 3 & 3 & 3 & 0 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 \\ 3 & 0 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 0 & 0 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 0 & 0 & 3 & 3 \\ 3 & 3 & 3 & 3 & 0 & 3 & 3 & 3 & 0 & 0 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 0 & 0 & 3 & 0 & 3 \\ 0 & 3 & 0 & 0 & 3 & 3 & 3 & 0 & 0 & 3 & 0 & 3 & 0 & 0 & 3 & 3 & 3 & 0 & 0 & 0 & 3 & 3 & 0 \\ 0 & 3 & 3 & 3 & 3 & 3 & 0 & 0 & 3 & 0 & 3 & 3 & 0 & 0 & 3 & 3 & 3 & 0 & 3 & 3 & 0 & 0 & 3 \\ 3 & 0 & 3 & 3 & 3 & 0 & 3 & 3 & 0 & 0 & 0 & 3 & 3 & 0 & 3 & 0 & 0 & 3 & 0 & 3 & 0 & 0 & 3 \\ 0 & 3 & 3 & 3 & 3 & 3 & 0 & 3 & 0 & 0 & 0 & 0 & 3 & 3 & 0 & 3 & 3 & 3 & 3 & 0 & 3 & 3 & 0 \end{array}\right)
m.is_symmetric() 
       
True
True