Attachment 'mwnf.m'
Download 1 // Functions for finding MW groups of elliptic curves over number
2 // fields. Uses RankBound() and MyRationalPoints() and height
3 // functions, together with saturaration at small primes.
4
5 intrinsic LLLpoints(Plist::[PtEll] : verb:=false, hprec:=10) -> SeqEnum
6 {Takes a list of points and returns a Z-independent set with the same Z-span}
7 n:=#Plist;
8 if n eq 0 then return Plist; end if;
9 E:=Curve(Plist[1]);
10 if verb then
11 print "Max height of original generators = ",
12 Maximum([Height(P) : P in Plist]);
13 print "Starting to compute height pairing matrix";
14 end if;
15 M:=Matrix(RealField(),n,n,[0:i in [1..n*n]]);
16 for i in [1..n] do M[i,i]:=Height(Plist[i]); end for;
17 for i in [1..n] do for j in [i+1..n] do
18 M[i,j]:=(Height(Plist[i]+Plist[j])-M[i,i]-M[j,j])/2;
19 M[j,i]:=M[i,j];
20 end for; end for;
21 if verb then
22 print "Finished computing h.p. matrix: ",M;
23 end if;
24 R:=Determinant(M);
25 if verb then
26 print "Regulator = ",R;
27 end if;
28 M2,T,r:=LLLGram(M);
29 if verb then
30 print "M2 = ",M;
31 print "T = ",T;
32 print "r = ",r;
33 end if;
34 newPlist:=[&+[T[i,j]*Plist[j]:j in [1..r]]:i in [1..r]];
35 if verb and r gt 0 then
36 print "Max height of new generators = ",Maximum([Height(P):P in newPlist]);
37 end if;
38 return newPlist;
39 end intrinsic;
40
41
42
43 intrinsic MyMordellWeilGroup(E::CrvEll,Bound::RngIntElt : verb:=false)
44 -> SeqEnum
45 {Attempts to find MW group of an elliptic curve over a number field}
46 m2:=MultiplicationByMMap(E,2);
47 rb:=RankBound(E);
48 if verb then
49 print "rank bound = ",rb;
50 end if;
51 if rb eq 0 then
52 TE,Tf:=TorsionSubgroup(E);
53 pts:=[Tf(P) : P in TE | P ne TE!0];
54 else
55 pts:=RationalPoints(E : Bound:=Bound , DenominatorBound:=Round(Sqrt(Bound)));
56 pts:=[P : P in pts];
57 end if;
58 if verb then
59 print "points found: ",pts;
60 end if;
61 pts:=LLLpoints(pts: verb:=verb);
62 if verb then
63 print "LLL-reduced basis of points found: ",pts;
64 end if;
65 return(pts);
66
67 end intrinsic;
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.