Sei sulla pagina 1di 19

Tra curve ellittiche e congettura di Birch e Swinnerton-Dyer con PARI/GP

Rosario Turco Dicembre 2013 Introduzione Le curve ellittiche sono delle curve ottenibili da una equazione cubica, quindi abbastanza semplici, ma su esse lindagine ancora troppo poco sviluppata. Solo ultimamente si rinnovato linteresse su di esse perch si sono dimostrate efficaci in almeno tre cose: soluzioni di problemi famosi legati alle equazioni diofantee (Ultimo Teorema di Fermat, congettura abc, etc.) permettono chiavi di crittografia pi piccole, adatte a nodi di rete di non grossa potenza di elaborazione (Access Point WiFi, telefonini, etc.) permettono la fattorizzazione

Le curve ellittiche sono legate a numerosi argomenti, o meglio molti argomenti sono una diversa vista riconducibile sempre alle curve ellittiche: equazioni diofantee numeri congruenti congettura abc congettura di Birch e Swinnerton-Dyer zeta di Riemann fattorizzazione crittografia algoritmi deterministici in tempo polinomiale

Il loro studio pu permettere di chiarire o risolvere molte delle problematiche di sopra. Nel seguito esamineremo aspetti matematici generali, cercando di non rendere troppo complesso largomento ma di mantenere un sufficiente rigore matematico. I lettori interessati agli approfondimenti potranno approfondire largomento con rigore matematico con ulteriori letture scientifiche. Larticolo essenzialmente una introduzione di tutti gli strumenti necessari a trattare numericamente la congettura di Birch e Swinnerton-Dyer, con PARI/GP. Per gli aspetti grafici stato usato semplicemente GrafEq32 ma si sarebbe potuto usare anche il plotting di PARI/GP. Cenni teorici Una curva ellittica E su un campo K pu essere espressa con la forma di Weiestrass E : y^2 + a1xy + a3y = x^3 + a2x^2 + a4x + a6; dove a1; a2; a3; a4; a6 K. Siamo ovviamente interessati a K=Q, quindi a E(Q). (1)

Se la caratteristica di K non 2, n 3 allora con un cambio di variabili si dimostra che si pu mettere E in una forma pi semplice: E(Q): y^2 = x^3 + a*x + b (2)

Nella crittografia in particolare di interesse avere curve ellittiche non singolari. Unequazione f(x , y)=0 si dice non singolare se essa ammette rette tangenti ben definite in ogni punto. Il che significa che la curva ellittica non deve avere cuspidi, n intersecare s stessa. Se intersecasse s stessa si dice che ha un nodo. In realt un nodo dovuto alla presenza di una singolarit che evidenzia una radice multipla. Qualche esempio di singolarit. Esempio 1

y^2= x^3 -3x +2 = (x + 2)(x - 1)^2 La curva ha un punto di singolarit in (x=1,y=0) con molteplicit 2, quindi ha un nodo in tale punto.

Esempio 2 y^2= x^3 La curva ha un punto di singolarit in (x=0,y=0) con molteplicit 3, quindi ha un nodo in tale punto.

Singolarit della curva Un curva ellittica non singolare se il suo discriminante non nullo, cio se: D = -16(4a^3+27b^2) (3) Supponendo a=-3 b=2 D=0, riotteniamo lesempio 1 di prima. Ricerca dei punti razionali su una curva ellittica legge di gruppo Una curva ellittica definita sui numeri razionali linsieme di punti (x, y) appartenenti alla equazione (2) con a, b Q, insieme al punto allinfinito O. Le domande che ci si pone sulle curve ellittiche, di solito, sono: lequazione ha soluzioni razionali? Quante sono le soluzioni? Che costituisce il famoso conteggio dei punti razionali Esiste un algoritmo veloce ed efficace per trovare le soluzioni?

In realt trovato un punto, per identit dallequazione(2), se ne possono trovare altri con la legge di gruppo. Lidea della legge di gruppo semplice. Se ho un punto P, con una retta interseco la curva e ottengo un altro punto Q, il quale appartenendo alla curva razionale. Vediamo come si pu fare ci sia graficamente che come calcolo numerico successivamente. Data una curva E(Q) vogliamo calcolare P+Q dove P(x1,y1) e Q(x2,y2). (E(Q),+) un gruppo abeliano, nel quale O il punto identit tale che: P E(Q) Si possono verificare tre casi: a. x1 != x2 b. x1 = x2 e y1 = -y2 c. x1 = x2 e y1 = y2 caso a E(Q) = y^2 = x^3 7x P(-2,35,-1.86) Q(-0.1,0.836) P+O=O+P=P

D = -16(4a^3+27b^2) =-16(-4*7^3)=21952 Da E(Q) si nota che il discriminante diverso da 0. P e Q, a meno delle approssimazioni, sono punti di E(Q). La retta che passa per P e Q ha equazione y y1 = m ( x x1) dove il coefficiente angolare m = (y2-y1)/(x2-x1)= 1.198222, quindi: 3

y + 1.86 = 1.198222*(x+2.35) Il terzo punto di intersezione R (3,89,5,62). Se sommiamo il punto R con il punto allinfinito troviamo R che simmetrico di R (retta verticale a partire da R) : R(3,89,-5.62) Quindi abbiamo trovato P+Q=R

In figura il risultato di quanto esposto sopra. Le coordinate di R (x3,y3) sono date da: ponendo =(y2-y1)/(x2-x1) Come ci siamo costruiti lesempio? Innanzitutto ci siamo fatti il grafico di E(Q) per vedere come era fatta. Poi, sapendo il caso a da simulare, ci siamo scelti il punto P in basso a sinistra, quindi con x negativa e y negativa. Per il punto P, in realt la cosa pi semplice scegliere solo la x, ad esempio x=-2.35 di conseguenza y=sqrt(x^3-7*x)= 1.863363893607472474682908647 Abbiamo fatto la stessa cosa a con Q, che doveva essere in alto a sinistra con x negativa e y positiva (x1!=x2). Ci siamo, poi, ricavati la retta per P e Q, che interseca la curva anche in R Da qui si ottiene R, con la retta verticale. x3=^2 x1-x2 y3=(x1-x3)-y1

Lequazione di partenza era: E(Q) = y^2 = x^3 7x P(-2,35,-1.86) Q(-0.1,0.836)

Assegniamo i coefficienti a1..a6 ad un vettore v=[0,0,0,-7,0] 4

e=ellinit(v); Verifichiamo il discriminante della curva: e.disc 21952 Altre informazioni si ottengono con gli attributi di e: e.j d il j-invariant e.c4 etc. I punti trovati appartengono alla curva? Attenzione, occorre tener conto delle approssimazioni. Ricaviamoci di nuovo (x,y) nel seguente modo: x=-2.35; y=sqrt(x^3-7*x); P=[x,y]; oppure pi semplicemente per ottenere lordinata y: ellordinate(e,x) ellisoncurve(e,P) restituisce 1 (true) x=-0.1; y=sqrt(x^3-7*x); Q=[x,y]; ellisoncurve(e,Q) restituisce 1 (true)

Sommiamo P+Q: P=[-2.35,-1.86];Q=[-0.1,0.836]; gp > elladd(e,P,Q) 66 = [3.885736493827160493827160494, -5.611798038825788751714677640] Sommiamo P+Q: P=[-2.35,-1.86];Q=[-0.1,0.836]; gp > elladd(e,P,Q) 66 = [3.885736493827160493827160494, -5.611798038825788751714677640] Ritrovando il risultato precedente a conferma. Caso b E(Q): y^2 = x^3 -6x + 6 Se x1 = x2 e y1 = -y2 allora P+Q=O o in altri termini P+(-P)=O Infatti: (x, y) + (x,-y) = O per ogni (x, y) E 5

Questo vuol dire che (x, y) linverso rispetto a (x,-y).

Caso c E(Q): y^2 = x^3 3x + 5 In questo caso stiamo sommando P a s stesso. Il caso c si usa anche per i prodotti attraverso pi somme. Assumiamo P(2,2.64). Se di P fissiamo x = 2 si ottiene y=sqrt(x^3-3x+5)= 2.645751311064590590501615754 Dobbiamo trovare la retta tangente a E(Q) in P(x1,y1) che interseca E(Q) in R(x2,y2) da cui si pu ricavare 2P=R. In realt sappiamo che le coordinate di R (x3, y3) si ricavano nel seguente modo: ponendo =(3 x1^2+a)/(2 y1) x3=^2 x1-x2 y3=(x1-x3)-y1 Per cui per 2P=R (-1.11,2.64) =3*2^2-3/2*2.65=1.6981 x3= -1.116411534353862584549661801 y3= 2.642019586638634577537161550 mentre R (-1.11,-2.64) Esempio di somma e prodotto di punti Consideriamo lequazione E: y^2 = x^3+1 6

Con PARI/GP poniamo: v=[0,0,0,0,1]; e = ellinit(v); P=[0,1]; Q=[-1,0]; ellisoncurve(e,P) restituisce 1 (true) ellisoncurve(e,Q) restituisce 1 (true) Cerchiamo i punti P+Q, 2P, 4P, 6P elladd(e,P,Q) [2,-3] P2=elladd(e,P,P) [0,-1] P4=elladd(e,P2,P2) [0,1] P6=elladd(e,P4,P2) [0] Cio il punto allinfinito. Avremmo ottenuto la stessa cosa pi rapidamente con: [0] Esiste anche la sottrazione dei punti: ellsub ellpow(e,P,6)

Riduzioni cattive e buone Dato un numero primo p e una curva E(Q) nella forma di Weiestrass a coefficienti interi possibile considerare E come una curva su Z/pZ. Per i numeri primi che dividono il discriminante della curva sono detti primi cattivi o con cattiva riduzione. In PARI/GP si pu ottenere questa informazione pi dettagliata col tipo Kodaira I, II, III, IV etc. Ad esempio se poniamo: p=3; E(Q): y^2=x^3+1 dal discriminante non singolare e.disc -432 7

Per e.disc%p (cattiva riduzione) 0 elllocalred(e,p) [2, 3, [1, -1, 0, 0], 2] Hint: elllocalred(E,p): E being an elliptic curve, returns [f,kod,[u,r,s,t],c],where f is the conductor's exponent, kod is the Kodaira type for E at p,[u,r,s,t] is the change of variable needed to make E minimal at p, and c is the local Tamagawa number c_p. Se E(Q) ha una buona riduzione a p, allora E una curva sul campo finito Z/pZ e possiamo contare il numero di punti modulo p (comprensivo di punto allinfinito). Con Np indichiamo questo numero di punti mentre : ap = p+1 Np (4). Il Kodaira type serve per tirare fuori il tipo preciso di riduzione. Per una spiegazione dei simboli di Kodaira abbiamo tratto le informazioni da [1]: 1 means good reduction (type I_0), 2, 3 and 4 mean types II, III and IV respectively, 4+nu with nu > 0 means type I_nu; finally the opposite values -1, -2, etc.refer to the starred types I_0^*, II^*, etc. The third component v is itself a vector [u,r,s,t] giving the coordinate changes done during the local reduction. Normally, this has no use if u is 1, that is, if the given equation was already minimal. Finally, the last component c is the local Tamagawa number c_p.

In PARI/GP: ellap(e,p) ritorna il coefficiente ap nellesempio esce con p=3 esce ap=0 (difatti il discriminante divisibile per p=3) ap=0 se una cuspidale singolare (additivo) ap=1 se la riduzione nodale e la retta tangente Fp-razionale (split moltiplicativa) ap=-1 se la riduzione nodale e la retta tangente non Fp-razionale (non split moltiplicativa) Se si usasse p=13 e.disc%p != 0 ap=2 ellan(e,n) ritorna un array con I primi n coefficienti ak della funzione L serie della curva e. Con n=3 nellesempio esce [1,0,0] ellak(e,k) restituisce il k-esimo coefficiente della L seriedella curva e ellglobalred (e) [5292, [1, 0, 0, 0], 3] 8

ellglobalred(E): E being an elliptic curve, returns [ N,[u,r,s,t],c], where N is the conductor of E, [u,r,s,t] leads to the standard model for E, and c is the product of the local Tamagawa numbers c_p. Sottogruppo di torsione Sui sottogruppi di torsione sono noti alcuni risultati (Vedi [2]): Teorema di Mordell-Weil che dice il sottogruppo di torsione di una curva ellittica su un campo numerico un gruppo finito abeliano Teorema di B. Mazur: Su Q il sottogruppo di torsione uno tra i seguenti: o Z/nZ con 1<= n <= 10 o Z/2Z x Z/2mZ with 1 m 4.

Si pu a questo punto, grazie ai risultati di Nagel e Rutz, calcolare il sottogruppo di torsione nel seguente modo: elltors(e,1) [1,[],[]] Loutput un vettore del tipo [t, [n, m], [P,Q]] Dove t la size del sottogruppo di torsione che isomorfo a Z/nZ x Z/mZ, generatio dai punti P and Q. Se P un punto di torsione, ellorder(P) fornisce lordine dellelemento.

Altezza, indipendenza e rango Per determinare se un insieme di punti razionali sono algebricamente indipendenti si usa il global NeronTate canonical heights di un punto razionale P su E: ellheight(e,P)

Se S={P1, ..., Pn} un insieme di punti razionali possiamo testare se essi sono indipendenti usando la canonical height matrix. Laccoppiamento daltezza di P e Q definito da <P,Q> = h(P+Q) - h(P) - h(Q), dove h laltezza canonica su E. La altezza matriciale relativa a S la matrice H le cui coordinate ij sono date da <Pi, Pj>. Laltezza canonica un positive definito come forma quadratica su E(Q). Il determinante di H non nullo se e solo se i punti in S sono indipendenti modulo torsione. Per lavorarci basta fare: S = [P1,P2,P3]; H=ellheightmatrix(E,S); matdet(H)

Questa anche una tecnica, come vedremo pi in l con gli esempi, per trovareil rango. Ovvero il rango il massimo numero di punti linearmente indipendenti. Qualche esempio Y^2 + Y = X^3 + 50X + 31.

E : y^2 + a1xy + a3y = x^3 + a2x^2 + a4x + a6; 9

v=[0,0,1,50,31] e=ellinit(v); e.disc -8421875 factor(e.disc) [-1 1] [5 6] [7 2] [11 1] Ovvero -1*5^6*7^2*11 A p=5 c una riduzione additiva e a5=0; a p=7 ha una riduzione split moltiplicativo (a7=1) e a p=11, a11=-1 e non ha una riduzione con split moltiplicativo. Difatti: ellap(e,5) 0 ellap(e,7) 1 ellap(e,11) -1 E evidente che avendo cercato i fattori primi del discriminante esso divisibile per tali fattori. Se scegliamo, invece, p=2 e.disc%2 != 0 ellap(e,2) 10

0 La funzione L In PARI/GP si pu fare: L=[1,I} ellisnum(L,4) 2268.872641550806227516736758 ellisnum(L,6) -1.397887211 E-23 Cos L corrisponde ad una equazione ellittica: E: y^2=x^3-(1.4)x Applicazione degli strumenti su varie equazioni Giochiamo con varie equazioni per assimilare gli strumenti e il significato delle operazioni sulle curve ellittiche. E(Q): y^2 + 6xy + 9y = x^3 3x^2 16x 14 v=[ 6,-3,9,-16,-14]; e0 = ellinit(v); e0.disc 37 Tra laltro 37 numero primo, quindi ci aspettiamo che N il conductor di e sia 37. Non sempre primo, dipende dalla curva. (15:07) gp > gr = ellglobalred(e0) %34 = [37, [1, -2, -3, 2], 1] La curva sicuramente in forma minimale perch il discriminante libero da potenze 12-esime, ma non nella forma standard ridotta e per farlo facciamo: e = ellminimalmodel(e0) Il secondo componente di gr, ovvero gr[2], ha 4 elementi, che rappresentano lequazione in forma minimale Se si verifica, e corrisponde difatti a: ellchangecurve(e0,gr[2]) Consideriamo il punto: Q0=[-2,2]; ellisoncurve(e0,Q0) 1 11 corrisponde a G4(L) corrisponde a G6(L)

Per portare questo punto anche su e: Q=ellchangepoint(Q0,gr[2]); ellisoncurve(e,Q) 1

E(Q): y^2+y = x^3x. v=[0,0,1,-1,0]; e = ellinit(v); Q0=[0,0]; ellisoncurve(e,Q0) 1 Il punto Q lo posso ottenere sommandoci il punto allinfinito [0] quindi: ellsub(e,[0],Q0) 49 = [0, -1] mentre 2Q si ottiene da ellpow(e,Q0,2) 50 = [1, 0] Adesso Q0 potrebbe essere un punto di torsione. Verifichiamolo con ellheight(e, Q0) 0.05111140823996884023588609976 questa funzione computa il canonical Neron-Tate height di Q0, quindi si aspetta che la curva e sia minimale. Poich otteniamo un valore non nullo, Q0 non un punto di torsione. Per conferma basta vedere: ellorder(e,Q0) che restituisce 0

E(Q): y^2+y = x^3x^2. V=[0,-1,1,0,0]; e = ellinit(v); ellglobalred(e) [11, [1, 0, 0, 0], 1] e.disc -11 Il conductor 11. Se confrontiamo e con ellminimalmodel(e) si capisce che lequazione nella forma minimale. 12

(16:50) gp > Q0=[0,0];ellheight(e,Q0) %63 = 1.175494351 E-37 Questa volta otteniamo un valore di h molto prossimo a zero, per cui Q0 un punto di torsione. Ad esempio se si fa ellorder(e,Q0) otteniamo 5. Lo stesso potevamo scoprirlo con: (16:52) gp > for(k=1, 5, print(ellpow(e, Q0,k))) [0, 0] [1, -1] [1, 0] [0, -1] [0] Daltra parte se facciamo: (16:54) gp > elltors(e) %65 = [5, [5], [[0, 0]]] Q0 genera tutte le torsioni di e ed ciclico di ordine 5.

E: y^2 + y = x^37x+6. v=[0,0,1,-7,6]; e=ellinit(v); ellglobalred(e) %68 = [5077, [1, 0, 0, 0], 1] e.disc 5077 Da qui sappiamo che una equazione minimale. Il conductor 5077, uguale al discriminante. Anche qua numero primo (quindi sono uguali). Guardiamo il punto di torsione. elltors(e) %70 = [1, [], []] Abbiamo ottenuto ora una soluzione banale. e.roots %71 = [1.946609824897100520216918725, 1.065820547696204967144896352, -3.01243037 13

2593305487361815077] Cio lequazione minimale ha 3 radici reali. Se (x,y) un numero reale appartenente alla curva allora x maggiore o uguale alla pi piccola radice. Quindi x-3. Se conosco x posso ricavarmi y con ellordinate. Un piccolo script ci pu aiutare a trovare tutti i punti [x,y] per x x-3:
startP()=local();{ v = listcreate(1000); for (x = -3, 1000, s = ellordinate(e,x); if (#s, listput(v, [x,s[1]])) \\ if #s != 0 ); v }

Lo script fa semplicemente i seguenti passi: crea una lista di 1000 posizioni in ciclo per x che parta da -3 a 1000, si calcola la coordinata y se tale coordinata y !=0 inserisce in v le coordinate [x,y] del punto trovato alla fine stampa il vettore dei punti

Ecco il risultato 74 = List([[-3, 0], [-2, 3], [-1, 3], [0, 2], [1, 0], [2, 0], [3, 3], [4, 6], [8, 21], [11, 35], [14, 51], [21, 95], [37, 224], [52, 374], [93, 896], [342, 632], [406, 8180], [816, 23309]]) Sono 18 punti trovati. Se si considerano gli opposti [x,-y-1] e il punto allinfinito sono 2*length(v)+1 37 Un valore grande per una curva con un piccolo valore di conductor. Quindi il rango di una curva del genere forse grande (vedremo alla fine che una curva famosa!). hv= ellheight(e,Vec(v)) Abbiamo riportato v che una Lista in vettore come richiede la funzione ellheight. Otteniamo un elenco di canonical heigth dei punti. Ordiniamo il vettore per altezza con le seguenti istruzioni: iv = vecsort(hv,, 1); \\ indirect sorting hv = vecextract(hv, iv); v = vecextract(Vec(v), iv); 14

v [[1, 0], [2, 0], [0, 2], [3, 3], [-1, 3], [-2, 3], [4, 6], [-3, 0], [8, 21], [11, 35], [14, 51], [21, 95], [37, 224], [52, 374], [93, 896], [342, 6324], [406, 8180], [816, 23309]] A questo punto ragionevole prendere i numeri di altezza pi bassi come possibili generatori MordellWeils di gruppo. Ad esempio prendiamo i primi 4: (17:44) gp > m = ellheightmatrix(e, vecextract(v,[1,2,3,4])); matdet(m) %85 = 2.1433320878300932154 E-29 Poich la curva non ha punto di torsione, il determinante della matrice prossimo a zero, quindi i primi 4 punti sono dipendenti. Per trovare una dipendenza occorre trovare il kernel della matrice. Quindi matker(m). Abbiamo bisogno di due cose: un kernel non banale e coefficienti interi. Il che non avviene. (17:48) gp > matker(m) Usiamo altri punti ad esempio solo i primi 3: (17:52) gp > vp = [v[1],v[2],v[3]]~; m = ellheightmatrix(e,vp); matdet(m) %87 = 0.4171435587583839698171195446 Adesso il determinante non nullo, per cui i 3 punti sono linearmente indipendenti ed un segnale che il massimo rango 3. La curva nota per avere rango 3 con il pi piccolo conductor. Ci piacerebbe sapere se ci sono altri punti dipendenti. Si pu anche introdurre a questo punto ellbil. (17:57) gp > ? ellbil ellbil(E,z1,z2): canonical bilinear form for the points z1,z2 on the elliptic curve E. Either z1 or z2 can also be a vector/matrix of points. Se esiste un punto Q che dipende da v[1],v[2],v[3] allora matsolve(m,ellbil(e,vp,Q)) ci dar i coefficienti della relazione di dipendenza. Se i coefficienti sono prossimi a zero, esiste la dipendenza, altrimenti no. Ed pi sicuro che usare matker. w = vector(#v, k, matsolve(m, ellbil(e, vp,v[k]))) I coefficienti sono prossimi agli interi. Possiamo anche trov are il limite superiore della differenza dallintero nel seguente modo: wr = round(w); sqrt(norml2(w - wr)) %89 = 1.710710144 E-28 wr

15

%90 = [[1, 0, 0]~, [0, 1, 0]~, [0, 0, 1]~, [1, 0, 1]~, [0, -1, -1]~, [-1, 1, 0]~, [-1, -1, -1]~, [-1, -1, 0]~, [-1, 0, 1]~, [-1, 1, -1]~, [2, 0, 0]~, [0, -2, 0]~, [0, -1, -2]~, [-1, 2, 1]~, [2, 1, 2]~, [0, -1, 2]~, [2, 2, 0]~, [-3, 1, -1]~] wr rappresenta tutte le componenti di v, nelle sue prime 3. Quindi le componenti non sono nulle e siamo certi che il rango 3. Nota: Lesempio ci ha facilitato perch le componenti v[j] sono Z-linear dipendenti da v[1],v[2],v[3]. In generale potrebbero essere Q-linear dipendenti, cio matsolve(m, ellbil(e, vp,v[k]))) pu dare un vettore di razionali. Esploriamo un po di pi altre funzioni legate alle curve ellittiche, sfruttando sempre la curva ellittica di rango 3 di prima. (18:30) gp > ? ellpointtoz ellpointtoz(E,P): lattice point z corresponding to the point P on the elliptic curve E. Poniamo: (18:30) gp > v1 = [1,0]; z1 = ellpointtoz(e, v1) %91 = 0.9038293562686711336717648789 + 0.7402741341207074966536655554*I (18:30) gp > v2 = [2,0]; z2 = ellpointtoz(e, v2) %92 = 1.147199946710465729703642088 + 0.E-38*I Per avere la somma v1 + v2 potremmo usare elladd(e,v1,v2) oppure ellpointtoz(e,v1+v2) ma operando in questo modo abbiamo dei valori complessi in gioco (parametrizzazione complessa delle curve). In ogni caso la legge di gruppo delladdizione funzione innanzitutto in C. Facciamo adesso delle considerazioni sulle funzioni modulari. (18:46) gp > f = x * Ser(ellan(e, 30)) %94 = x - 2*x^2 - 3*x^3 + 2*x^4 - 4*x^5 + 6*x^6 - 4*x^7 + 6*x^9 + 8*x^10 - 6*x^1 1 - 6*x^12 - 4*x^13 + 8*x^14 + 12*x^15 - 4*x^16 - 4*x^17 - 12*x^18 - 7*x^19 - 8* x^20 + 12*x^21 + 12*x^22 - 6*x^23 + 11*x^25 + 8*x^26 - 9*x^27 - 8*x^28 - 6*x^29 - 24*x^30 + O(x^31) Quello di sopra in definitiva lo sviluppo in serie di Fourier di una forma modulare di peso 2 per la curva e, in pratica lo sviluppo di 0(5047). La cercare la forma modulare della curva e si pu procedere come segue: (18:46) gp > modul = elltaniyama(e) %95 = [x^-2 + 2*x^-1 + 5 + 9*x + 20*x^2 + 29*x^3 + 57*x^4 + 108*x^5 + 173*x^6 + 282*x^7 + 511*x^8 + 812*x^9 + 1309*x^10 + 2202*x^11 + 3566*x^12 + 5618*x^13 + 92 16

52*x^14 + O(x^15), -x^-3 - 3*x^-2 - 9*x^-1 - 21 - 46*x - 98*x^2 - 201*x^3 - 374* x^4 - 727*x^5 - 1359*x^6 - 2435*x^7 - 4350*x^8 - 7846*x^9 - 13556*x^10 - 23457*x ^11 - 40589*x^12 - 69065*x^13 + O(x^14)] (18:47) gp > u=modul[1];v=modul[2]; (18:47) gp > (v^2 + v) - (u^3 - 7*u + 6) %97 = O(x^11) Questo ci fa vedere che con le funzioni u e v che parametrizzata la curva, allinfinito la differenza trascurabile. Ultimo passaggio: (18:58) gp > x * u' / (2*v + 1) %98 = x - 2*x^2 - 3*x^3 + 2*x^4 - 4*x^5 + 6*x^6 - 4*x^7 + 6*x^9 + 8*x^10 - 6*x^1 1 - 6*x^12 - 4*x^13 + 8*x^14 + 12*x^15 - 4*x^16 - 4*x^17 + O(x^18) Nel comando lapicetto indica a PARI/GP la derivata. Con lultimo passaggio siamo tornati alla f di partenza. Inoltre ellan(e,30) d i primi 30 coefficienti della L serie della curva. Per un primo p accade che ellan(e,p) = ellak(e,p). Su Fp Il numero di punti Np = 1+p-ap

E(Q): y^2+y = x^3x^2. Parte 2 Riprendiamo la curva precedente. v=[0,-1,1,0,0]; e = ellinit(v); ellglobalred(e) Q0=[0,0]; ellorder(e,Q0) 5 Per ottenere il segno dellequazione funzionale: ellrootno(e) 1 Se ipotizziamo vera la congettura della parit di rango di Mordell-Weil la curva e avrebbe rango pari. Calcoliamo la L(e,1) e per check la L(e,1,2) (19:11) gp > ls = elllseries(e,1) %103 = 0.2538418608559106843377589237 17

(19:20) gp > elllseries(e,1,2) %104 = 0.2538418608559106843377589233 I risultati sono simili. La L(e,1) != 0 ma di valore basso quindi la e ha rango 0. Per Birch e Swinnerton-Dyer ls, per questo tipo di curva, dato da: L(e,1) = c |III| / |Etors|^2 , Dove: il periodo reale di e, c il numero globale di Tamagawa, prodotto del locale cp per i primi p che dividono il conductor, |III| lordine del Tate-Shafarevich group, e Etors il sottogruppo di torsione di e. Conosciamo diverse di queste grandezze (19:34) gp > e.omega[1] %105 = 6.346046521397767108443973084 Nota: se ci fossero state 3 radici reali anzicch 1 come nell esempio, andava calcolato come 2*e.omega[1] (19:34) gp > e.roots
%106 = [-0.4196433776070805662759262823, 0.7098216888035402831379631412 - 0.3031 453646035996846296710985*I, 0.7098216888035402831379631412 + 0.30314536460359968 46296710985*I]~

(5)

Con ellglobalred(e) troviamo il c, numero globale di Tamagawa,che lultimo dopo il vettore [u,r,s,t], quindi c=1. (19:35) gp > ellglobalred(e) %107 = [11, [1, 0, 0, 0], 1] Sappiamo gi il sottogruppo di torsione che 5. elltors(e) (19:41) gp > elltors(e,1) %109 = [5, [5], [[0, 0]]] (19:41) gp > ? elltors elltors(E,{flag=0}): torsion subgroup of elliptic curve E: order, structure, generators. If flag = 0, use Doud's algorithm; if flag = 1, use Lutz-Nagell. 18

Se facciamo ls*5^2/e.omega[1] dovremmo ottenere |III| che d 1. Quindi III un gruppo banale.

Riferimenti [1] Curve ellittiche PARI/GP http://pari.math.u-bordeaux.fr/dochtml/html.stable/Functions_related_to_elliptic_curves.html [2] Birch e Swinnerton-Dyer Rosario Turco http://www.scribd.com/doc/46194426/Congettura-di-Birch-e-Swinnerton-Dyer-curve-ellittiche [3] The Birch and Swinnerton-Dyer Conjecture, a Computational Approach - William A. Stein Department of Mathematics, University of Washington http://wstein.org/books/bsd/bsd.pdf

19