test9.gp (1204B)
1 /* Candidate counterex mod3 not surj, unexpected density, rank >=1 */ 2 label = [ "220a3", "220a4", "660c3", "660c4", "770f3", "770f4" ]; 3 4 { 5 for( i = 1, length( data ), 6 print( "Testing curve ", i, ", label ", label[i] ); 7 E = ellinit( label[i] ); 8 f9 = elldivpol( E, 9 ); /* 3-division polynomial */ 9 eqn = y^2 + E[1]*x*y + E[3]*y - x^3 - E[2]*x^2 - E[4]*x - E[5]; /* eqn of E */ 10 res = substpol( polresultant( f9, eqn ), y, x ); /* Keep x for consistency */ 11 print( "Computing K9..." ); 12 K9 = nfinit( nfsplitting( res, 3^5*2 ) ); /* mo3 is at most 6 */ 13 print( "Computed!" ); 14 E_ext = ellinit( E[1..5], K9 ); 15 Egens = ellgenerators(E); 16 for( j = 1, length( Egens ), 17 P = Egens[j]; 18 if( ellisdivisible( substpol(E_ext,x,y), P, 3, &Q ), 19 print( "Found EC ", cremona_label, " with point ", P, 20 " and 3-division point ", Q, " over K9" ); 21 /* Check for 3-divisibility up to torsion */ 22 /* T = elltors(E)[3][1]; 23 if( ellisdivisible( E, elladd(E,P,T), 3 ), 24 print( "P+T_1 is 3-divisible!" ); 25 ); 26 T = ellmul(E,T,2); 27 if( ellisdivisible( E, elladd(E,P,T), 3 ), 28 print( "P+T_2 is 3-divisible!" ); 29 ); */ 30 ); 31 ); 32 ); 33 } 34