Bill Allombert on Thu, 30 Nov 2023 11:00:02 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: tossing out an idea to use heights of algebraic points on elliptic curves to help sort isogenies for point searches


On Wed, Nov 29, 2023 at 06:50:02PM -0800, American Citizen wrote:
> Let's look at one of my typical curves for face cuboids:
> 
> py:{4,1}+ (15,8) Elliptic Curve: [0,-31679,0,-1493049600,0]
>  Rank:1 Tate-Sha:1 Regulator:4.0697304843631873930432752505566566024
>  W1:[78408,13046616]
>  Generator:26/7,15/8,190/99 Height:4.0697304843631873930432752505566566024
>  Pentacycle:[26,7],[15,8],[190,99],[627,161],[299,49]
>  Torsion: Z4xZ2 Pts: [ [0], [0, 0], [-11760, 3398640], [57600, 0], [-11760,
> -3398640], [126960, 36691440], [-25921, 0], [126960, -36691440] ]
> 
> From the curve E = [0, -31679, 0, -149309600,0] we find the minimal model
> curve and from that we find the 8-isgenous curves:
> 
>  Minimal model: M = [1, 0, 0, -114223080, -283150929600]
> 
>  isog(F,E)->my(S=ellisomat(E)[1]);my([f,fd,urst]=findisom(S,F));[P->ellchangepoint(ellisogenyapply(f,P),urst),P->ellisogenyapply(fd,ellchangepointinv(P,urst))]

Note that you could just have used either ellisomat directly or use ellisogeny
to compute the isogenies associated to the torsion points. In both cases, you
would have obtained directly the curves and the isogenies, without the need to
try to match curves afterward.

> Now lets take a non-rational point on M (or I1) say P1 = [-2641,
> (2641+sqrt(373230717)/2] = approx = [-2641,
> 10980.0900145917166146328056490104100484287144219040808189].
> 
> This point is an algebraic point. Lets move it to the other 7 isogenies
> using the maps. After some careful work and adjustment of GP-Pari precision
> to successfully identifie the surds, we find that:

You could just use elliptic curves over number fields, this is fully supported,
and use ellisogenyapply.

M = ellinit([1, 0, 0, -114223080, -283150929600]);
P1 = [-2641, (2641+Mod(a,a^2-373230717))/2];
L=ellisomat(M)[1];
F=ellinit(L[2][1]);
iso = L[2][2];
Q=ellisogenyapply(iso,P1)
%10 = [157597441/8639,Mod(-746628476/671690889*a,a^2-373230717)]
ellisoncurve(F,Q)
%11 = 1

> I would like to find a height function of these points such that the
> possible regulator size of the curve might be found this way. I previously
> started work on a C++ program to do heights of points who are in the real
> decimal field (doubles, etc). I was able to get values which seemed to make
> sense (to me).

PARI supports elliptic curves over number fields, so you can use ellheight
over number fields:

E=ellinit([0, -31679, 0, -149309600,0]);
M=ellinit([1, 0, 0, -114223080, -283150929600]);
P1 = [-2641, (2641+Mod(a,a^2-373230717))/2]
ellisoncurve(M,P1)
K=nfinit(a^2-373230717);
MK=ellinit(M,K);
ellheight(MK,P1)
%21 = 18.351564077458714575387532095240588314

Cheers,
Bill.