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.
  • [get | view] (2010-06-29 02:11:31, 0.5 KB) [[attachment:eg.sage]]
  • [get | view] (2010-07-02 00:52:16, 18.0 KB) [[attachment:intpts.sage]]
  • [get | view] (2010-06-30 05:54:50, 1.8 KB) [[attachment:mwnf.m]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.