Bill Allombert on Wed, 05 Aug 2015 22:53:22 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
new GP function ellisomat |
Dear PARI developers, I have added a new experimental GP function ellisomat(), to compute the isogeny matrix of an elliptict curve, but it actually do more. For example: ? E=ellinit("11a1"); ? [L,M] = ellisomat(E); M %2 = [1,5,5;5,1,25;5,25,1] (So E is 5-isogenous to two curves E2 and E3 which are 25-isogenous). Of course E2 and E3 are isomorphic to the curves "11a2" and "11a3" in John Cremona's table, but the function also work for curves too large to be in the table. For example the curve E2 is given by [a4,a6] as follow: ? L[2][1] %3 = [-23461/3,-28748141/108] ? ellidentify(ellinit(L[2][1])) %4 = [["11a2",[0,-1,1,-7820,-263580],[]],[1,-1/3,0,1/2]] Furthermore, let P a 5-torsion point on E: ? P=elltors(E)[3][1] %3 = [5,5] The isogeny from E to E2 is give by ? iso2=L[2][2] %4 = [x^5-127/3*x^4+2177*x^3-91861/3*x^2+171618*x-980197/3,(y+1/2)*x^6+(-63*y-63/2)*x^5+(y+1/2)*x^4+(1977*y+1977/2)*x^3+(7626*y+3813)*x^2+(11654*y+5827)*x+(6682*y+3341),x^2-21*x+80] and ? ellisogenyapply(iso2,P) %5 = [0] So P is in the kernel of the isogeny. For E3 we get the following model ? L[3][1] %6 = [-625/3,296875/108] The isogeny from E to E3 is given by ? iso3=L[3][2] %7 = [x^5+5/3*x^4+85/3*x^3-935/3*x^2-2245/3*x-3166/3,(y+1/2)*x^6+(3*y+3/2)*x^5+(-54*y-27)*x^4+(613*y+613/2)*x^3+(1752*y+876)*x^2+(8585*y+8585/2)*x+(6451*y+6451/2),x^2+x-29/5] and ? P3=ellisogenyapply(iso3,P) %8 = [-25/3,125/2] is a rational point on E3: ? E3=ellinit(L[3][1]);ellisoncurve(E3,P3) %9 = 1 ? ellorder(E3,P3) %22 = 5 which is of order 5 as expected. This is the documentation: Given an elliptic curve E defined over Q, compute representatives of the isomorphism classes of elliptic curves isogenous to E. The function returns a vector [L,M] where L is a list of couples [E_i, f_i], where E_i is an elliptic curve and f_i is a rationale isogeny from E to E_i, and M is the matrix such that M_{i,j} is the degree of the isogeny between E_i and E_j. Furthermore the first curve E_1 is isomorphic to E by f_1. Example ? E = ellinit("14a1"); ? [L,M]=ellisomat(E); ? L ? apply(x->x[1],L) %3 = [[215/48,-5291/864],[-675/16,6831/32],[-8185/48,-742643/864], ? L[2] %4 = [[-675/16,6831/32],[x^3+3/4*x^2+19/2*x-311/12, 1/2*x^4+(y+1)*x^3+(y-4)*x^2+(-9*y+23)*x+(55*y+55/2),x+1/3]] ? M %5 = [1,3,3,2,6,6;3,1,9,6,2,18;3,9,1,6,18,2;2,6,6,1,3,3;6,2,18,3,1,9;6,18,2,3,9,1] ? apply(E->ellidentify(ellinit(E[1]))[1][1],L) %6 = ["14a1","14a4","14a3","14a2","14a6","14a5"] Cheers, Bill.