From: rusin@vesuvius.math.niu.edu (Dave Rusin) Newsgroups: sci.math.research Subject: Re: ...and another elliptic curve (LONG attachment) Date: 19 Oct 1996 06:27:19 GMT In article <53t05d$snb@rzsun02.rrz.uni-hamburg.de>, Hauke Reddmann wrote: >Please give me solutions to >8a^2b^2c^2+4abc(a+b+c)-2ab-2ac-2bc-1=0 where >c=1 (fixed) and a,b are NOT from {1/4,3/2,-2/3} Come now, how could you have missed this one? ( :-) -- see attachment) 36009253949378846165315 8336464853263978857266 [- -----------------------, -----------------------] 7871834486276828474046 26833447366876080174067 >This means solving an EC. Is there a public >software for answering such questions, so that >I don't have to post to s.m.r. everytime? Yes. Among several options, I recommend the apecs package for Maple. It has a robust command set for EC calculations; it's quite informative about what it's doing; and calculations which are done on the basis of conjectures are clearly labelled. I've attached a log of the maplev session which produced the output above; I beg the readers' indulgence for the length of the post this creates. dave %% Maple session edited for formatting by rusin (My comments flagged '%%'.) |\^/| Maple V Release 3 (N I U) ._|\| |/|_. Copyright (c) 1981-1994 by Waterloo Maple Software and the \ MAPLE / University of Waterloo. All rights reserved. Maple and Maple V <____ ____> are registered trademarks of Waterloo Maple Software. | Type ? for help. > read apecs; There will be a pause of up to 70 seconds, depending on the machine. Welcome to a a p p e e c c s s a a p p e e c c s s a a p p e e c s a a p p e e e e e e e c s s a a p p e c s a a p e c s a a p e e c c s s a aa p e e c c s s p arithmetic of plane elliptic curves Version 3.7 July 22, 1996 (The apecs command Ver(); explains how to get the latest version.) The usual first apecs command is Ein (for Elliptic curve input). Other input commands are Ell, Ein0, Gcub, Quar, Genj, Exam. Type in the command menu(); to see a list of all the apecs commands and Menu(xxx); for more details about command xxx. Nota(); lists the most important notation used by apecs. Zpecs(); is the apecs command to update the catalog then exit. You can exit without updating by the maple command quit. At the prompt enter an apecs (or maple) command. Use distinctive names for any variables you wish to introduce to avoid overwriting apecs variables. In particular don't use single letters. (The capitals A,..,Z are needed for the catalog names A11,.. of curves.) Please let me know about bugs, glitches, your suggestions.. . The command Ver(); gives my address. %% Hauke wanted to know where to get it: > Ver(); Version 3.7, July 22, 1996 To see the latest version number, and the changes made since this version you need to ftp in the file "README"; this will also remind you how to update your apecs program: ftp math.mcgill.ca (internet 132.206.150.3) anonymous your_name cd pub/apecs get README Please let me know about any bugs; also suggestions for additions and improvements are always welcome. My e-mail and ordinary mail addresses are: connell@math.mcgill.ca (internet 132.206.150.3) Ian Connell Mathematics Dept. McGill University 805 Sherbrooke W. Montreal, Quebec Canada H3A 2K6 %% load in the curve > eq1:= 8*a^2*b^2*1^2+4*a*b*1*(a+b+1)-2*a*b-2*a*1-2*b*1-1; 2 2 eq1 := 8 a b + 4 a b (a + b + 1) - 2 a b - 2 a - 2 b - 1 %% Trick to turn a biquadratic into a cubic > taylor(eq1,b); 2 2 (- 2 a - 1) + (4 a (a + 1) - 2 a - 2) b + (8 a + 4 a) b > subs({b=V/(8*U^2+4*U),a=U},eq1): > eq2:=numer(simplify(")); 3 2 2 2 eq2 := - 16 U + 4 U V - 16 U + 2 U V - 4 U + V - 2 V %% Apecs can deal with cubics: > Gcub(-16,4,0,0,-16,2,1,-4,-2,0); The equation of the curve is 3 2 2 2 - 16 U + 4 U V - 16 U + 2 U V - 4 U + V - 2 V, = 0. The point at infinity with homogeneous coordinates [0, 1, 0] will be taken as the group O. Q = point at infinity We now invoke the apecs command ein( 0 100 0 2816 36864 ) to determine the minimal Weierstrass form. curve is A218 = .[1, 0, 0, -2, 4] The coordinates U,V of the original equation are related to the coordinates X,Y of the Weierstrass equation by 2 2 X - 4 - 2 Y + Y X (X - 2) X U =, -------------------, V =, - ------------ 2 2 4 Y + 2 X + 8 2 Y + X + 4 2 X =, 4 U - V + 2, Y =, 8 U + 4 U - 2 U V + 2 - 2 V To transfer points between the original curve and the Weierstrass form use the commands Trcw(u,v) and Trwc(x,y). These commands remain available during this apecs session. %% The big question is the rank of the curve: > Rk(); First we must determine the torsion subgroup. From calculations done in Tate's algorithm we see that NN divides 12 Reduction mod odd good primes up to 13 improves this to NN divides 3 NN =3 The procedure rohr() has found that the sign of the functional eqn. is -1 which conjecturally implies that the rank is odd This information will be used if necessary. Before proceeding with rk we complete the isogeny network. the torsion group is cyclic generated by [0, 2, 3] We now calculate isogenies: A218 /< [0, 2, 3] > = B218 curve is B218 = .[1, 0, 0, 18, -104] B218 has no points of finite order. curve is A218 = .[1, 0, 0, -2, 4] The torsion subgroup has order 3 Mazur's upper bound for the rank is 1 Lower bound for rank increased to 1 by parity result rank = 1 Values of rc,r4,r1 for curve B218 were -1 -1 -1 now updated to 1 1 1 %% Those r's encode a lot of information about which conjectures were used %% to get upper and lower bounds on the rank. %% OK, we _think_ the rank is one. Find a basis for it: > Bas(); We try to get rank without conj.: Rank already determined to be 1 using the T-p conjecture. We now make a modest attempt to verify this value directly. The torsion subgroup has order 3 Mazur's upper bound for the rank is 1 rank is between 0 and 1 Since A218 has no point of order 2 we can't use simple 2-descent. Searching for [x,y] on A218 not in the subgroup generated by RR; our starting list RR = [] Rational points where x has naive height between log 1 and log 50 [0, 2] has finite order. New point [2, 2] now makes RR of A218 = [[2, 2]] [4, 6] is redundant for RR of A218 [24, 106] is redundant for RR of A218 [3/4, 11/8] is redundant for RR of A218 [-8/9, 74/27] is redundant for RR of A218 The rank unconditionally = 1 -- no conj.'s assumed. Values of rc,r4,r1 for curve B218 were 1 1 1 now updated to 6 1 1 So the rank and "quality" of the rank are now r4,rc = 1 7 Searching for [x,y] on A218 not in the subgroup generated by RR; our starting list RR = [[2, 2]] Rational points where x has naive height between log 50 and log 200 [130/121, 1732/1331] is redundant for RR of A218 isog already done the real period = , 3.6044066451460528930 RR is a Mordell-Weil basis: [[2, 2]] %% So now the rank really is one, and we know a generator. %% There are the torsion points too: > Tor(); Tor already done with the following results. Torsion subgroup of E(Q) has order NN = 3 with points in the notation [x,y,d] where d is the order O, [0, 2, 3], [0, -2, 3] %% OK so now we can get oodles of points: small multiples of the generator: > Ford(2,2,3); 1 *z = [2, 2, 0] 2 *z = [-8/9, 74/27, 0] 3 *z = [-220/169, -3394/2197, 0] 4 *z = etc %% Negative of the generator and multiples of it: > Neg(2,2); - [2, 2] = [2, -4] > Ford(2,-4,3); 1 *z = [2, -4, 0] 2 *z = [-8/9, -50/27, 0] 3 *z = [-220/169, 6254/2197, 0] 4 *z = etc %% Add the torsion elements to at least one of these: > Eadd(2,2,0,2); [2, 2] + [0, 2] = [-2, 0] > Eadd(2,2,0,-2); [2, 2] + [0, -2] = [4, -10] %% Let's go far out in the group: > Mult(10,2,2); .[10].[2, 2] = 19336981707292056017080408 93056673486239294091280322701863893414 [--------------------------, - --------------------------------------] 644012714148905732085009 516822796863771046573608977677492473 %% Now we convert to the U-V coordinates; apecs does this for us: > Trwc(2,2); 2 curves birationally equivalent to A218 are listed in bec, yet no code n was passed as a parameter to Trcw in the form Trcw(z,n). The first one (n=1) is taken by default. [2, 2], |---->, [0, 0] %% No good: does not correspond to a point (a,b); try 2.[generator]: > Trwc(-8/9, 74/27,1); 74 [-8/9, ----], |---->, [-2/3, 2/9] 27 %% Have to switch back to (a,b) coordinate system ourselves: > subs({U=-2/3,V=2/9},[U,V/(8*U^2+4*U)]); [-2/3, 1/4] %% Oh well, nothing new. Try the next multiple: > Trwc(-220/169, -3394/2197,1); 220 3394 15 363 [- ---, - ----], |---->, [- ----, ---] 169 2197 52 169 %% This time we get something new in the (a,b) coordinates: > subs({U=-15/52,V=363/169},[U,V/(8*U^2+4*U)]); 15 [- ----, -22/5] 52 %% I cut-and-paste at the terminal: > Trwc(19336981707292056017080408/644012714148905732085009, -93056673486239294091280322701863893414/516822796863771046573608977677492473,1); 19336981707292056017080408 93056673486239294091280322701863893414 [--------------------------, - --------------------------------------], 644012714148905732085009 516822796863771046573608977677492473 36009253949378846165315 146317063786221430329078936170635120 |---->, [- -----------------------, - ------------------------------------] 7871834486276828474046 3158589439513466413444881867421431 > subs({U=-36009253949378846165315/7871834486276828474046,V=146317063786221430329078936170635120/3158589439513466413444881867421431},[U,V/(8*U^2+4*U)]); 36009253949378846165315 8336464853263978857266 [- -----------------------, -----------------------] 7871834486276828474046 26833447366876080174067 %% Enough playing! > quit;