Bill Allombert on Sat, 16 Dec 2023 14:26:29 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Some comments on Isogenous Curves, algebraic points on those curves and SHA |
On Fri, Dec 15, 2023 at 11:58:32AM +0100, Bill Allombert wrote: > On Thu, Dec 14, 2023 at 04:56:51PM -0800, American Citizen wrote: > Let us start here. > > E=ellinit([0,-9271247,0,-659737307363904,0]); > P = [-119064,8855385000]; > [S,M]=ellisomat(E); > C=apply(e->ellinit(e[1]),S); > L=lfun(E,1,1); > Q=vector(#S,i,ellisogenyapply(S[i][2],P)); > F=vector(#S,i,ellsaturation(C[i],[Q[i]],2)[1]); > F==Q > round(vector(#S,i,L/ellbsd(C[i])/ellheight(C[i],F[i]))) > [1,1,1,4,4,4,64,64] > > The conclusion is that, assuming P is indeed a generator of E, the > Sha of the twists are 1,1,1,4,4,4,64,64. > > Practically speaking you should search points on the curve which has the largest > ellbsd. Note that this does not require to compute L. In this case: B=apply(ellbsd,C) [16.194555031523637396914183858019918121,8.0972775157618186984570919290099590607,4.0486387578809093492285459645049795303,1.0121596894702273373071364911262448826,2.0243193789404546746142729822524897652,2.0243193789404546746142729822524897652,0.063259980591889208581696030695390305162,0.063259980591889208581696030695390305162] So the first curve is the best. If you start by the second one instead, you get E=C[2];P=F[2]; [S,M]=ellisomat(E); C=apply(e->ellinit(e[1]),S); Q=vector(#S,i,ellisogenyapply(S[i][2],P)); F=vector(#S,i,ellsaturation(C[i],[Q[i]],2)[1]); bestappr(vector(#S,i,ellheight(C[i],Q[i])/ellheight(C[i],F[i]))) %18 = [1,1,1,4,4,4,4,4] That is, the image points are not all generators (what you call entanglement). PARI has a function ellisotree which can be useful too: ? E=ellinit([0,-9271247,0,-659737307363904,0]); ? ellisotree(E)[2] %5 = [0 0 0 0 2 2 0 0] [2 0 0 2 0 0 0 0] [0 2 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 2 2] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] Cheers, Bill