# This is the file which follows the exposition in appendixmz.tex; ###################################################################### interface(prettyprint, prettyprint=false); # H_t is the curve: y^2 = x^6 + x + t (where the sextic has no repeated roots). sextic := x^6 + x + t; # First note that the following command: discrim(x^6 + x + t, x); # gives that the disciminant is: 3125-46656*t^5, and so there are # no repeated roots of the sextic provided that t is not a fifth # root of 3125/46656. In particular, for any t in Q, the sextic # has no repeated roots and H_t has genus 2. # Let J_t denote the Jacobian of H_t. # Let [ ] denote class under linear equivalence. # Let infty+, infty- represent the two points at infinity, which # should both be regarded as members of H_t(Q), since the coefficient # of x^6 is a square (and so infty+, infty+ will be Q-rationanl points # on the non-singular model for H_t). # Let {r1,r2} be the usual shorthand notation for [r1 + r2 - infty+ - infty-]. # Recall that any member of J_t(Q) can be expressed in the form # {P,Q} = [P + Q - infty+ - infty-], for some P,Q (not necessarily distinct) # such that with P,Q is in H_t(Q) or P,Q are in some H_t(Q(sqrt(d)), # and are conjugate. This representation of members of J_t(Q) is unique, # except that all {(x,y),(x,-y)} are in the same class (the identity). # We embed mu : H_t(Q) --> J_t(Q) by P |--> [P - infty+] = {P, infty-}. # Define q_t := [infty- - infty+] = {infty-, infty-}. # The divisor of the function y + x^3 gives that: # {infty-, infty-} + {infty-, infty-} + {infty-,(-t,t^3)} = identity class, # so that: {infty-, infty-} + {infty-, infty-} = {infty+, (-t,-t^3)}, # so that: 3*{infty-,infty-} = { (-t,-t^3), infty- }, # which is in the image of mu. # We would like values of t for which n*q_t is not in im mu, for n > 3. # Note that: # q_t = {infty-, infty-}. # 2*q_t = {infty+, (-t,-t^3)}. # 3*q_t = {infty-, (-t,-t^3)}. # 4*q_t = # {( (t^3+sqrt(-3*t^6+t))/(2*t^2), (8*t^8+3*t^3+sqrt(-3*t^6+t))/(8*t^5) ), # ( (t^3-sqrt(-3*t^6+t))/(2*t^2), (8*t^8+3*t^3-sqrt(-3*t^6+t))/(8*t^5) )} # 5*q_t = {(-t,-t^3),(-t,-t^3)}. # The computation for finding q_t + 3*q_t = 4*q_t, used the divisor # of the function y + x^3 + 2*t^3: # NOTE: from this point onwards, we shall consider H_{t0}, for specific t0, # and we shall assume that t0 is in Q, and that # there exists a prime p > 5 such that | t0 |_p < 1. This is the same # condition as: t0 = a/b, for some a,b in Z, hcf(a,b)=1, with p|a. # Observation: by Hensel's Lemma, there is a root w = w_t0 of the sextic # in Z_p (for p|t0), by HL, with w == -t0 (mod p) and so # D := D_t0 := { (-t0,-t0^3), (w,0) } is in the kernel of reduction mod p, # and it can be regarded as 1/2*E (within the kernel of reduction), # where E := E_t0 := 5*q_{t0}, so that m=1/2 should give D when inserted into: # exp(m*log E), where exp,log are the exp and log maps on the formal group. # This means that 2*q_t0 + (-1/2)*E = {infty+, (-t0,-t0^3)} + {(w,0),(-t0,t0^3)} # = {infty+,(w,0)} will give a Chabauty solution, regardless of p. # In a certain sense it give a lack of sharpness of upper bound # due to a global impediment: (Weierstrass point, (-t0,t0^3)}. # We can get the correct bound later by being aware of this. # First, an outline of the general strategy: # (1) Use E := 5*q_t0 = {(-t0,-t0^3),(-t0,-t0^3)}, where, as stated above, # t0 is in Q, and satisfies |t0|_p < 1 for some p > 5. # Note that H_t0 has good reduction mod p (since x^6 + x has # discriminant 5^5), as does J_t0, and note also # that E is in the kernel of reduction mod p. # Say that: t0 = p^k*u, where u is in Q, and |u|_p = 1. # Recall: our aim is to show that for n > 3, n*q_t0 is not in the image of: # mu : H_t(Q) --> J_t(Q) by P |--> [P - infty+] = {P, infty-}. # In fact, it is more natural to show the equivalent statement, that # for |n| > 3, n*q_t0 is not in the image of either of the two maps: # mu : H_t(Q) --> J_t(Q) by P |--> [P - infty+] = {P, infty-}. # mu' : H_t(Q) --> J_t(Q) by P |--> [P - infty-] = {P, infty+}. # For {P,Q} to be the image of either of these maps is equivalent to # saying that at least one of P,Q is a point at infinity. # So, we are trying to show that for |n| > 3, n*q_t0, when writting # in the form {P,Q}, has neither P nor Q being a point at infinity. # Convert each of 0*q_t0, 1*q_t0, 2*q_t0, 5*q_t0 # into members of P^15, using the embedding of the Jacobian variety # in P^15 with the coordinates described in Cassels and Flynn, # which are also described at the beginning of the file: # people.maths.ox.ac.uk/flynn/genus2/jacobian.variety/bilinear.forms # Denote these (in this file) as : dd0, dd1, dd2, dd5. # (2) Let ss1 = s1_E, ss2 = s2_E denote the local parameters for E, which are # ss1 := dd5[2]/dd5[1] and ss2 := dd5[3]/dd5[1]. # Let log = (log1,log2) and exp = (exp1,exp2) be the pairs of # power series which give the formal log and exp maps # on the 2-parameter formal group of J_t0. These are taken from: # people.maths.ox.ac.uk/flynn/genus2/local/exp # people.maths.ox.ac.uk/flynn/genus2/local/log # Construct power series # s1mE := exp1(m*log1(ss1,ss2), m*log2(ss1,ss2)), # s2mE := exp2(m*log1(ss1,ss2), m*log2(ss1,ss2)), # which give the pair of local parameters for m*E. # (3) Then use the file: # people.maths.ox.ac.uk/flynn/genus2/local.coordinates # which give the power series in the local parameters for the P^15 # embedding of a point in the kernel of reduction; apply these # to s1mE,s2mE, to obtain: z = [z0,z1,...,z15], which is m*E in P^15. # Each zi will be a power series in m, with coefficients in Z_p. # (4) Use the bilinear forms at: # people.maths.ox.ac.uk/flynn/genus2/jacobian.variety/bilinear.forms # which take any two members a,b of the Jacobian variety in P^15, # and give a square phi_{ij}(a,b) (1 <= i <= 4, 1 <= j <= 4) # of bilinear forms in a,b which give k_i(a-b)*k_j(a+b), # where k_1,k_2,k_3,k_4 are the Kummer coordinates. # Define phi11dd0 := phi11(z,dd0), ...., phi44dd0 := phi44(z,dd0), # Define phi11dd1 := phi11(z,dd1), ...., phi44dd1 := phi44(z,dd1), # Define phi11dd2 := phi11(z,dd2), ...., phi44dd2 := phi44(z,dd2). # (in general, might first replace b with ddi, to see # what repeated roots there might be). # Each of these is a power series in m, with coefficients in Z_p # (and the coefficients --> 0 in Z_p). # The condition of ddi + m*E having a point at infinity in the support # corresponds to k_1(ddi + m*E) = 0, and so we may use whichever # we prefer of phi11, phi21, phi31, phi41. # In fact, it turns out to be best to define: # psi0(m) := phi31dd0, psi1(m) := phi31dd1, psi2(m) := phi31dd2. # If m in Z is such that ddi + m*E has a point at infinity in # the support (i.e. is of the form {P,Q}, where at least one # of P,Q is a point at infinity) then psii(m) = 0. # (5) Finally, note that any n*q_t0, for n in Z, must be one of: # m*E, q_{t_0} + m*E, 2*q_{t_0} + m*E, # -q_{t_0} + m*E, -2*q_{t_0} + m*E. # We wish to show that n*q_{t0} (for n in Z) lies in either image # only when n = -3,-2,-1,0,1,2,3. Since E = 5*q_t0, this is # equivalent to showing that (for m in Z): # (a) m*E lies in either image only when m=0. # (this corresponds to n = 0 for n*q_{t_0}), # (b) q_{t_0} + m*E lies in either image only when m=0. # (this corresponds to n = 1 for n*q_{t_0}), # (c) 2*q_{t_0} + m*E lies in either image only when m=0,-1. # (these correspond to n = 2,-3 for n*q_{t_0}), # (d) -q_{t_0} + m*E lies in either image only when m=0. # (this corresponds to n = -1 for n*q_{t_0}), # (e) -2*q_{t_0} + m*E lies in either image only when m=0,1. # (these correspond to n = -2,3 for n*q_{t_0}), # Note that "lies in either image" is not affected by negation, # so that (b) is true for m iff (d) is true for -m, # and (c) is true for m iff (e) is true for -m. # So, it is sufficient to prove (a),(b),(c). # In view of (5), it is sufficient to show that: # (a)' psi0(m) has (for m in Z) only the solution m=0. # (b)' psi1(m) has (for m in Z) only the solution m=0. # (c)' psi2(m) has (for m in Z) only the solutions m=0,-1. # We then use Strassman's Theorem to bound the number of roots # m in Z_p, which we hope will be the same as the number of known # roots m in Z. Recall: Strassman's theorem tells us that, # for a power series c_0 + c_1*m + ...., with the c_i in Z_p, # and the c_i --> 0 in Z_p, if k satisfies: |c_k|_p > |c_i|_p # for all i > k, then there are at most k roots m in Z_p. # (a)' For psi0(m), there is the known root m = 0 in Z # and indeed Strassman's Thm gives no other roots in Z_p # and so there are no other roots in Z. # (b)' For psi1(m), there is the known root m = 0 in Z # and indeed Strassman's Thm gives no other roots in Z_p # and so there are no other roots in Z. # (c)' For psi2(m), there are the known roots m = 0,-1 in Z # and this case is rather interesting, as Strassman's Thm # on psi2(m) gives an upper bound of 3 on the number of # roots m in Z_p, and so the bound is not sharp (it is not the # same as the number of known roots m in Z). Normally this would # be an impasse and one would move to another prime; however, # after some thought, we find that this extra root can be # seen explicitly to be a known member of Z_p, but not in Z, # as follows. Under the given conditions (that | t_0 |_p < 1) # one can apply Hensel's Lemma to see that there must exist # w = w_{t_0} in Z_p such that: w is a root of x^6 + x + t_0, # and w is congruent to -t_0 (mod p). # Let D := D_{t_0} := [(-t_0,-t_0^3) - (w,0)] # = {(-t_0,-t_0^3), (w,0)}. # Then D is (like E) in the kernel of reduction mod p, # and 2*D = E. Now note that: # 2*q_{t_0} = [(-t_0,-t_0^3) - infty-] = {infty+, (-t,-t^3)}, # and so: 2*q_{t_0} - D = [(w,0) - infty-] = {(w,0), infty+}, # which p-adically satisfies our condition of being in the image of # one of the embeddings. Further, since D,E are in the kernel of # reduction mod p, putting m = -1/2 into the power series has the # effect of testing whether 2*q_{t_0} + (-1/2)*E = 2*q_{t_0} - D # satisfies the condition, which indeed it does. So, this forces # m = -1/2 to be a root of psi2(m), as well as the roots m=0,-1. # Since the Strassman bound is 3 on the number of roots m in Z_p, # these must be all roots in Z_p, with m=0,-1 being the only # roots in Z, as required. # So, this is quite a nice example where the naive Strassman's bound # (and therefore, in a certain sense, the naive Chabauty bound) # is not sharp for roots m in Z, but where we can recognise an # actual global m in Q (which is Q and in Z_p) which gives rise # to the extra root in Z_p, and so with this refinement we can # still recover a sharp bound on the number of roots m in Z. # We shall now perform each of these steps below, with relevant Maple # commands as required. ########################################################################## # (1) In this step, we wish to take our multiples: n*q_t for # n=0,1,-1,2,-2,5, and convert these into members of P^15. # First recall from the beginning of the file: # people.maths.ox.ac.uk/flynn/genus2/jacobian.variety/bilinear.forms # that the coordinates for our P^15 embedding are as follows. # Let C be the curve: # C: Y**2 = f6*X**6 + f5*X**5 + f4*X**4 + f3*X**3 + f2*X**2 + f1*X + f0. # For any divisor represented by # {(x,y),(u,v)} = (x,y) + (u,v) - infty+ - infty- # let (a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) be the # embedding of the Jacobian given by: # a15 := (x-u)**2; a14 := 1; a13 := x + u; a12 := x*u; # a11 := x*u*(x+u); a10 := (x*u)**2; a9 := (y-v)/(x-u); # a8 := (u*y-x*v)/(x-u); a7 := (u**2*y-x**2*v)/(x-u); # a6 := (u**3*y-x**3*v)/(x-u); a5 := (f0xu-2*y*v)/((x-u)**2); # a4 := (f1xu-(x+u)*y*v)/((x-u)**2); a3 := (x*u)*a5; # ## where f0xu, f1xu are # f0xu := 2*f0+f1*(x+u)+2*f2*(x*u)+f3*(x+u)*(x*u) # +2*f4*(x*u)**2+f5*(x+u)*(x*u)**2+2*f6*(x*u)**3; # f1xu := f0*(x+u)+2*f1*(x*u)+f2*(x+u)*(x*u)+2*f3*(x*u)**2 # +f4*(x+u)*(x*u)**2+2*f5*(x*u)**3+f6*(x+u)*(x*u)**3; # a2:=(gxu*y-gux*v)/((x-u)**3); a1:=(hxu*y-hux*v)/((x-u)**3); # where gxu, gux, hxu, hux are # gxu := f0*4+f1*(x+3*u)+f2*(2*x*u+2*u**2)+f3*(3*x*u**2+u**3) # +f4*(4*x*u**3)+f5*x*(x*u**3+3*u**4)+f6*2*x*(x*u**4+u**5); # gux := f0*4+f1*(u+3*x)+f2*(2*u*x+2*x**2)+f3*(3*u*x**2+x**3) # +f4*(4*u*x**3)+f5*u*(u*x**3+3*x**4)+f6*2*u*(u*x**4+x**5); # hxu := f0*2*(x+u)+f1*u*(3*x+u)+f2*4*x*u**2+f3*x*u**2*(x+3*u) # +f4*2*x*u**3*(x+u)+f5*x*u**4*(3*x+u)+f6*4*x**2*u**5; # hux := f0*2*(u+x)+f1*x*(3*u+x)+f2*4*u*x**2+f3*u*x**2*(u+3*x) # +f4*2*u*x**3*(u+x)+f5*u*x**4*(3*u+x)+f6*4*u**2*x**5; # a0 := a5**2; # # The next few procedures are: # convrep, convreg, convregg, convrepf, convregf, conv1inf, convall. # The last of these (convall) converts a divisor into a member # of P^15 according to the above embedding, taking into account all the # variations which can occur for repeated points, points at infinity, etc. # These procedures are not documented in detail, but essentially # they just deal with special cases by, for example, using the # defining equations of the Jacobian variety, to avoid divisions by 0 # which would arise from naively substituting the coordinates # into the above expressions. Note also that convall was written # when I was using a mildly different P^15 embedding, which was # the same as the above, except that a15,a14,a13,a12 were: # a15 := 1: a14 := x+u: a13 := x*u: a12 := x**2+u**2: # rather than: # a15 := (x-u)**2; a14 := 1; a13 := x + u; a12 := x*u; # So, I have left all procedures as they were, except with a few # lines at the end of convall which performs the linear change # from the old coordinate system to the new coordinate system. convrep := proc(divv,sex) local f0,f1,f2,f3,f4,f5,f6, sexd,dudt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15: # converts at [a0..a15] when divv is [[x1,y1],[x2,y2]] # where x1=x2<>infty and y1=y2<>0. # N.B. Global t,u sexx := expand(sex): f0 := subs(x=0,sexx): f1 := coeff(sexx,x,1): f2 := coeff(sexx,x,2): f3 := coeff(sexx,x,3): f4 := coeff(sexx,x,4): f5 := coeff(sexx,x,5): f6 := coeff(sexx,x,6): t := divv[1][1]: u := divv[1][2]: sexx := f6*t**6 + f5*t**5 + f4*t**4 + f3*t**3 + f2*t**2 + f1*t + f0: sexd := 6*f6*t**5 + 5*f5*t**4 + 4*f4*t**3 + 3*f3*t**2 + 2*f2*t + f1; dudt := sexd / (2*u); a15 := 1: a14 := 2*t: a13 := t**2: a12 := 2*t**2: a11 := 2*t**3: a10 := t**4: a9 := dudt; a8 := t*dudt - u; a7 := t**2*dudt - 2*t*u; a6 := t**3*dudt - 3*t**2*u; a5 := a9**2-f2*a15**2-f3*a15*a14-f4*a14**2-f5*a14*a13-f5*a14*a12 -f6*a15*a10-2*f6*a13*a12-f6*a12**2; a4 := a9*a8-f3*a15*a13-f4*a15*a11-f5*a13*a12-2*f5*a13**2 -f6*a11*a12-f6*a14*a10; a3 := a13*a5; a2 := a9*a5-f3*a15*a8-2*f4*a15*a7-2*f5*a15*a6-2*f6*a14*a6-f5*a13*a8; a1 := a8*a5-2*f6*a13*a6-f5*a13*a7; a0 := a5**2; [a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15]: end: convreg := proc(divv,sex) local f0,f1,f2,f3,f4,f5,f6, x1,x2,y1,y2,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15, f0x1x2,f1x1x2,gx1x2,gx2x1,hx1x2,hx2x1: # converts at [a0..a15] when divv is [[x1,y1],[x2,y2]] # where x1<>x2 and x1<>infty, x2<>infty. sexx := expand(sex): f0 := subs(x=0,sexx): f1 := coeff(sexx,x,1): f2 := coeff(sexx,x,2): f3 := coeff(sexx,x,3): f4 := coeff(sexx,x,4): f5 := coeff(sexx,x,5): f6 := coeff(sexx,x,6): x1 := divv[1][1]: y1 := divv[1][2]: x2 := divv[2][1]: y2 := divv[2][2]: a15 := 1: a14 := x1+x2: a13 := x1*x2: a12 := x1**2+x2**2: a11 := x1*x2*(x1+x2): a10 := (x1*x2)**2: a9 := (y1-y2)/(x1-x2): a8 := (x2*y1-x1*y2)/(x1-x2): a7 := (x2**2*y1-x1**2*y2)/(x1-x2): a6 := (x2**3*y1-x1**3*y2)/(x1-x2): f0x1x2 := 2*f0+f1*(x1+x2)+2*f2*(x1*x2)+f3*(x1+x2)*(x1*x2) +2*f4*(x1*x2)**2+f5*(x1+x2)*(x1*x2)**2+2*f6*(x1*x2)**3: f1x1x2 := f0*(x1+x2)+2*f1*(x1*x2)+f2*(x1+x2)*(x1*x2)+2*f3*(x1*x2)**2 +f4*(x1+x2)*(x1*x2)**2+2*f5*(x1*x2)**3+f6*(x1+x2)*(x1*x2)**3: a5 := (f0x1x2-2*y1*y2)/((x1-x2)**2): a4 := (f1x1x2-(x1+x2)*y1*y2)/((x1-x2)**2): a3 := (x1*x2)*a5: gx1x2 := f0*4+f1*(x1+3*x2)+f2*(2*x1*x2+2*x2**2)+f3*(3*x1*x2**2+x2**3) +f4*(4*x1*x2**3)+f5*x1*(x1*x2**3+3*x2**4)+f6*2*x1*(x1*x2**4+x2**5): gx2x1 := f0*4+f1*(x2+3*x1)+f2*(2*x2*x1+2*x1**2)+f3*(3*x2*x1**2+x1**3) +f4*(4*x2*x1**3)+f5*x2*(x2*x1**3+3*x1**4)+f6*2*x2*(x2*x1**4+x1**5): hx1x2 := f0*2*(x1+x2)+f1*x2*(3*x1+x2)+f2*4*x1*x2**2+f3*x1*x2**2*(x1+3*x2) +f4*2*x1*x2**3*(x1+x2)+f5*x1*x2**4*(3*x1+x2)+f6*4*x1**2*x2**5: hx2x1 := f0*2*(x2+x1)+f1*x1*(3*x2+x1)+f2*4*x2*x1**2+f3*x2*x1**2*(x2+3*x1) +f4*2*x2*x1**3*(x2+x1)+f5*x2*x1**4*(3*x2+x1)+f6*4*x2**2*x1**5: a2:=(gx1x2*y1-gx2x1*y2)/((x1-x2)**3): a1:=(hx1x2*y1-hx2x1*y2)/((x1-x2)**3): a0 :=a5**2: radsimp(a0,`tt`): a0 := expand(tt): unassign('tt'): radsimp(a1,`tt`): a1 := expand(tt): unassign('tt'): radsimp(a2,`tt`): a2 := expand(tt): unassign('tt'): radsimp(a3,`tt`): a3 := expand(tt): unassign('tt'): radsimp(a4,`tt`): a4 := expand(tt): unassign('tt'): radsimp(a5,`tt`): a5 := expand(tt): unassign('tt'): radsimp(a6,`tt`): a6 := expand(tt): unassign('tt'): radsimp(a7,`tt`): a7 := expand(tt): unassign('tt'): radsimp(a8,`tt`): a8 := expand(tt): unassign('tt'): radsimp(a9,`tt`): a9 := expand(tt): unassign('tt'): radsimp(a10,`tt`): a10 := expand(tt): unassign('tt'): radsimp(a11,`tt`): a11 := expand(tt): unassign('tt'): radsimp(a12,`tt`): a12 := expand(tt): unassign('tt'): radsimp(a13,`tt`): a13 := expand(tt): unassign('tt'): radsimp(a14,`tt`): a14 := expand(tt): unassign('tt'): radsimp(a15,`tt`): a15 := expand(tt): unassign('tt'): [a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15]: end: convregg := proc(divv,sex) local f0,f1,f2,f3,f4,f5,f6, x1,x2,y1,y2,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15, f0x1x2,f1x1x2,gx1x2,gx2x1,hx1x2,hx2x1: # converts at [a0..a15] when divv is [[x1,y1],[x2,y2]] # where x1<>x2 and x1<>infty, x2<>infty. # (alternative to convreg) sexx := expand(sex): f0 := subs(x=0,sexx): f1 := coeff(sexx,x,1): f2 := coeff(sexx,x,2): f3 := coeff(sexx,x,3): f4 := coeff(sexx,x,4): f5 := coeff(sexx,x,5): f6 := coeff(sexx,x,6): x1 := divv[1][1]: y1 := divv[1][2]: x2 := divv[2][1]: y2 := divv[2][2]: a15 := 1: a14 := x1+x2: a13 := x1*x2: a12 := x1**2+x2**2: a11 := x1*x2*(x1+x2): a10 := (x1*x2)**2: a9 := (y1-y2)/(x1-x2): a8 := (x2*y1-x1*y2)/(x1-x2): a7 := (x2**2*y1-x1**2*y2)/(x1-x2): a6 := (x2**3*y1-x1**3*y2)/(x1-x2): a5 := a9**2-f2*a15**2-f3*a15*a14-f4*a14**2-f5*a14*a13-f5*a14*a12 -f6*a15*a10-2*f6*a13*a12-f6*a12**2; a4 := a9*a8-f3*a15*a13-f4*a15*a11-f5*a13*a12-2*f5*a13**2-f6*a11*a12 -f6*a14*a10; a3 := a13*a5; a2 := a9*a5-f3*a15*a8-2*f4*a15*a7-2*f5*a15*a6-2*f6*a14*a6-f5*a13*a8; a1 := a8*a5-2*f6*a13*a6-f5*a13*a7; a0 := a5**2; [a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15]: end: convrepf := proc(divv,sex) local divvv, x1,y1,x2,y2, varsex, ychoice, arr, arrr: varsex := expand(x**6*subs(x=1/x,sex)): ychoice := divv[1][2]/(infty**3): # o.k. when x1=x2 <>0 and y1=y2 (but not y1=-y2) # flips to hat C and then does convrep if divv[1][1] = infty then divvv := [[0,ychoice],[0,ychoice]] else x1 := divv[1][1]: y1 := divv[1][2]: x2 := divv[2][1]: y2 := divv[2][2]: divvv := [[1/x1,y1/(x1**3)],[1/x2,y2/(x2**3)]] fi: arr := convrep( divvv , varsex ): arrr := [ arr[1], -arr[3], -arr[2], arr[6], arr[5], arr[4], -arr[10], -arr[9], -arr[8], -arr[7], arr[16], arr[15], arr[13], arr[14], arr[12], arr[11] ]: unassign('t'): unassign('u'): arrr: end: convregf := proc(divv,sex) local divvv, x1,y1,x2,y2, varsex, ychoice, arr, arrr: varsex := expand(x**6*subs(x=1/x,sex)): # o.k. as long as x1<>x2 and x1<>0 and x2<>0 # perform a flip to hat C and then does convreg if divv[1][1] = infty then ychoice := divv[1][2]/(infty**3): x2 := divv[2][1]: y2 := divv[2][2]: divvv := [[0,ychoice],[1/x2,y2/(x2**3)]] fi: if divv[2][1] = infty then x1 := divv[1][1]: y1 := divv[1][2]: ychoice := divv[2][2]/(infty**3): divvv := [[1/x1,y1/(x1**3)],[0,ychoice]] fi: if (not (divv[1][1] = infty)) and (not (divv[2][1] = infty)) then x1 := divv[1][1]: y1 := divv[1][2]: x2 := divv[2][1]: y2 := divv[2][2]: divvv := [[1/x1,y1/(x1**3)],[1/x2,y2/(x2**3)]] fi: arr := convreg( divvv , varsex ): arrr := [ arr[1], -arr[3], -arr[2], arr[6], arr[5], arr[4], -arr[10], -arr[9], -arr[8], -arr[7], arr[16], arr[15], arr[13], arr[14], arr[12], arr[11] ]: arrr: end: conv1inf := proc(divv,sex) local gamm,f0,f1,f2,f3,f4,f5,f6, x1,x2,y1,y2,a0,a1,a2,a3,a4,a5,a6,a7,a8, a9,a10,a11,a12,a13,a14,a15,sexx: # for when either x1=infty or x2=infty, but not both. sexx := expand(sex): f0 := subs(x=0,sexx): f1 := coeff(sexx,x,1): f2 := coeff(sexx,x,2): f3 := coeff(sexx,x,3): f4 := coeff(sexx,x,4): f5 := coeff(sexx,x,5): f6 := coeff(sexx,x,6): x1 := divv[1][1]: y1 := divv[1][2]: x2 := divv[2][1]: y2 := divv[2][2]: if x1 = infty then gamm := y1/(infty**3): else gamm := y2/(infty**3): x2 := x1: y2 := y1: fi: # After the above, the non-infty pt. will be [x2,y2]. # and gamm will rep. the brach of the inf. pt. (gamm**2 = f6) a15 := 0: a14 := 0: a13 := 0: a12 := 1: a11 := x2: a10 := x2**2: a9 := gamm: a8 := x2*gamm: a7 := x2**2*gamm: a6 := x2**3*gamm - y2: a5 := 0: a4 := f6*x2**3 - y2*gamm: a3 := f5*x2**3 + 2*f6*x2**4 - 2*gamm*x2*y2: a2 := f5*x2**3*gamm + 2*f6*x2**4*gamm - 2*f6*x2*y2: a1 := f3*x2**2*gamm + 2*f4*x2**3*gamm + 3*f5*x2**4*gamm + 4*f6*x2**5*gamm - f5*x2*y2 - 4*f6*x2**2*y2: a0 := (f5*x2**2 + 2*f6*x2**3 - 2*gamm*y2)**2: [a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15]: end: convall := proc(divv,sex) local x1,x2,y1,y2,divvv: # converts from divv = [[x1,y1],[x2,y2]] to [a0..a15] x1 := divv[1][1]: y1 := divv[1][2]: x2 := divv[2][1]: y2 := divv[2][2]: if (x1=x2) and (y1=-y2) then divvv := [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]: fi: if (not (x1=infty)) and (not (x2=infty)) and (x1=x2) and (not (y1=-y2)) then divvv := convrep(divv,sex) fi: if (not (x1=infty)) and (not (x2=infty)) and (not (x1=x2)) then divvv := convreg(divv,sex) fi: if (x1=infty) and (x2=infty) and (not (y1=-y2)) then divvv := convrepf(divv,sex) fi: if ( (x1=infty) and (not (x2=infty)) ) or ( (x2=infty) and (not (x1=infty)) ) then divvv := conv1inf(divv,sex) fi: divvv: # The following is a linear change from my old basis to my new basis. divvv := [divvv[1], divvv[2], divvv[3], divvv[4], divvv[5], divvv[6], divvv[7], divvv[8], divvv[9], divvv[10], divvv[11], divvv[12], divvv[14], divvv[15], divvv[16], divvv[13] - 2*divvv[14] ]; divvv: end: # Now that we have the above procedure for converting from divisors # to members of P^15, we apply this to n*q_t, for n = 0,1,2,5. # Let d0 := 0*q_t, d1 := 1*q_t, d2 := 2*q_t, d5 := 5*q_t. # Recall that: # 0*q_t = {infty+, infty-}. # 1*q_t = {infty-, infty-}. # 2*q_t = {infty+, (-t,-t^3)}. # 5*q_t = {(-t,-t^3),(-t,-t^3)}. # For inputting a divisor {(x,y),(u,v)} into convall, it should # be entered as: [[x,y],[u,v]], where infty+ should be inputted # as [infty,infty^3] and infty- should be inputted as infty,-infty^3]. # So, we assign d0,d1,d2,d5 as follows. d0 := [[infty,infty^3],[infty,-infty^3]]; d1 := [[infty,-infty^3],[infty,-infty^3]]; d2 := [[infty,infty^3],[-t,-t^3]]; d5 := [[-t,-t^3],[-t,-t^3]]; # The following converts our multiples of q_t into # arrays in P^15. dd0 := convall(d0,sextic); dd1 := convall(d1,sextic); dd2 := convall(d2,sextic); dd5 := simplify(convall(d5,sextic)); # Note that if |t|_p < 1 then 5*q_t is in the kernel of reduction mod p. # (where p is prime, distinct from 2,5). # The above gave (for the moment, we leave t as a variable): # dd0 := [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; # dd1 := [0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0]; # dd2 := [0, 0, 0, 0, 0, 0, 0, t^2, -t, 1, t^2, -t, 0, 0, 0, 1]; # dd5 := [1/16*(12*t^5-1)^2/t^12, 1/8*(40*t^10-16*t^5+1)/t^8, # -1/8*(56*t^10-18*t^5+1)/t^9, -1/4*(12*t^5-1)/t^4, # 1/4*(10*t^5-1)/t^5, -1/4*(12*t^5-1)/t^6, 1/2, # 1/2*(2*t^5-1)/t, -1/2*(4*t^5-1)/t^2, 1/2*(6*t^5-1)/t^3, # t^4, -2*t^3, t^2, -2*t, 1, 0]; #################################################################### # (2) In this step, we shall first find ss1,ss2, the local parameters # of E. We then use the LOG,EXP maps on the formal group # to find s1mE,s2mE, the local parameters of m*E, which # will be power series in m. For the moment, we continue # to keep t as a variable. # The following gives the pair of local parameters for dd5. ss1 := simplify( dd5[2]/dd5[1] ); ss2 := simplify( dd5[3]/dd5[1] ); # The above gave: # ss1 := 2*t^4*(40*t^10-16*t^5+1)/(12*t^5-1)^2; # ss2 := -2*t^3*(56*t^10-18*t^5+1)/(12*t^5-1)^2; # Now, use t = t0, where |t0|_p < 1, so we can write t = t0 = u0*p^k, # where |u0|_p = 1 and k >= 1, and p > 5 is prime. # Then, from the above: # ss1 = 2*u0^4*p^(4*k)*(1 + 8*u0^5*p^(5*k) + 88*u0^10*p^(10*k) + u1*p^(15*k)) # and: # ss2 = -2*u0^3*p^(3*k)*(1 + 6*u0^5*p^(5*k) + 56*u0^10*p^(10*k) + u2*p^(15*k)) # for some u1,u2 with |u1|_p, |u2|_p = 1. # This is a way of encoding: # ss1 = 2*u0^4*p^(4*k)*(1 + 8*u0^5*p^(5*k) + 88*u0^10*p^(10*k) + O(p^(15*k))) # and: # ss2 = -2*u0^3*p^(3*k)*(1 + 6*u0^5*p^(5*k) + 56*u0^10*p^(10*k) + O(p^(15*k))) # # Check this as follows: factor(simplify( (subs(t=u0*p^k,ss1)/(2*u0^4*p^(4*k)) - (1 + 8*u0^5*p^(5*k) + 88*u0^10*p^(10*k)) )/(p^(15*k)) )); factor(simplify( (subs(t=u0*p^k,ss2)/(-2*u0^3*p^(3*k)) - (1 + 6*u0^5*p^(5*k) + 56*u0^10*p^(10*k)) )/(p^(15*k)) )); # These gave: # u0^15*(-5+66*u0^5*p^(5*k))/(12*u0^5*p^(5*k)-1)^2 # -96*u0^15*(-5+84*u0^5*p^(5*k))/(12*u0^5*p^(5*k)-1)^2 # respectively, which are u1,u2 respectively, and these indeed satisfy # |u1|_p,|u2|_p = 1 (since this is true for the numerators,denominators). # For simplicity, let q denote p^k (k >=1). # So, now assign these to ss1,ss2. ss1 := 2*u0^4*q^4*(1 + 8*u0^5*q^5 + 88*u0^10*q^10 + u1*q^15); ss2 := -2*u0^3*q^3*(1 + 6*u0^5*q^5 + 56*u0^10*q^10 + u2*q^15); # We now extract the coefficients of our sextic, which we # have already defined to be: x^6 + x + t. ff6 := coeff(sextic,x,6); ff5 := coeff(sextic,x,5); ff4 := coeff(sextic,x,4); ff3 := coeff(sextic,x,3); ff2 := coeff(sextic,x,2); ff1 := coeff(sextic,x,1); ff0 := coeff(sextic,x,0); # The following is from: people.maths.ox.ac.uk/flynn/genus2/local/log # and gives the formal log map up to and uncluding the terms of degree 7. LOG1 := s1-20/7*s1^7*f4^3+6/5*s1^5*f4^2+1/3*f1*s2^3-2/3*s1^3*f4-4/7*f2*s1^7*f5^ 2+10/7*f2^2*f1*s2^7-f2*f1*s2^4*s1^3*f5+2*f2*f1*s2^3*f6*s1^4-8/7*f2*s2^7*f0*f3-4 *f2*s2^6*s1*f0*f4-4*f2*s2^5*s1^2*f0*f5-4*f2*s2^4*f6*s1^3*f0-64/7*f2*f6*s1^7*f4- 4/7*f1^2*s2^7*f3+f1^2*s2^5*s1^2*f5+6*f1^2*s2^4*f6*s1^3+20/7*f1*s2^7*f0*f4+7*f1* s2^6*s1*f0*f5+18*f1*s2^5*f6*s1^2*f0+4*f1*s2^2*f6*s1^5*f3-3*f1*s2^2*s1^5*f4*f5- 14*f1*s2*f6*s1^6*f4-f1*s2*s1^6*f5^2+13/7*f1*f6*s1^7*f5-4/7*s2^7*f0^2*f5-4*s2^6* f6*s1*f0^2-4*s2^4*s1^3*f0*f4^2+4*s2^4*s1^3*f0*f5*f3+16*s2^3*f6*s1^4*f0*f3-8*s2^ 3*s1^4*f0*f4*f5-24*s2^2*f6*s1^5*f0*f4+8*s2*f6*s1^6*f0*f5-4/7*f6^2*s1^7*f0-4/7* f6*s1^7*f3^2+20/7*s1^7*f4*f5*f3-3/5*f2*f1*s2^5+12/5*f2*f6*s1^5+f1*s2^2*s1^3*f5+ 5*f1*s2*f6*s1^4+2/5*s2^5*f0*f3+2*s2^4*s1*f0*f4+4*s2^3*s1^2*f0*f5+12*s2^2*f6*s1^ 3*f0-3/5*s1^5*f5*f3: LOG2 := s2-20/7*f2^3*s2^7+6/5*f2^2*s2^5-2/3*f2*s2^3+1/3*s1^3*f5-4*f2^2*s2^3*f6* s1^4+20/7*f2*f1*s2^7*f3-3*f2*f1*s2^5*s1^2*f5-8*f2*f1*s2^4*f6*s1^3-64/7*f2*s2^7* f0*f4-14*f2*s2^6*s1*f0*f5-24*f2*s2^5*f6*s1^2*f0-4*f2*s2*f6*s1^6*f4+20/7*f2*f6* s1^7*f5-4/7*f1^2*s2^7*f4-f1^2*s2^6*s1*f5+13/7*f1*s2^7*f0*f5+8*f1*s2^6*f6*s1*f0+ 4*f1*s2^3*f6*s1^4*f3-f1*s2^3*s1^4*f4*f5-4*f1*s2^2*f6*s1^5*f4+f1*s2^2*s1^5*f5^2+ 7*f1*s2*f6*s1^6*f5-4/7*f1*f6^2*s1^7-4/7*s2^7*f6*f0^2-4/7*s2^7*f0*f3^2+4*s2^5*s1 ^2*f0*f5*f3+16*s2^4*f6*s1^3*f0*f3+2*s2^4*s1^3*f0*f4*f5-4*s2^3*f6*s1^4*f0*f4+6* s2^3*s1^4*f0*f5^2+18*s2^2*f6*s1^5*f0*f5-4*s2*f6^2*s1^6*f0-8/7*f6*s1^7*f4*f3+10/ 7*s1^7*f4^2*f5-4/7*s1^7*f5^2*f3+2*f2*s2*f6*s1^4-3/5*f1*s2^5*f3+f1*s2^3*s1^2*f5+ 4*f1*s2^2*f6*s1^3+12/5*s2^5*f0*f4+5*s2^4*s1*f0*f5+12*s2^3*f6*s1^2*f0+2/5*f6*s1^ 5*f3-3/5*s1^5*f4*f5: # In fact, we only need up to degree 5 terms: LOG1 := sum(coeff(subs(s1=z*s1,s2=z*s2,LOG1),z,i), i=0..5); LOG2 := sum(coeff(subs(s1=z*s1,s2=z*s2,LOG2),z,i), i=0..5); # This gave: LOG1 := s1-2/3*s1^3*f4+1/3*f1*s2^3+6/5*s1^5*f4^2+f1*s2^2*s1^3*f5 +5*f1*s2*f6*s1^4+2*s2^4*s1*f0*f4-3/5*s1^5*f5*f3+12/5*f2*f6*s1^5 +2/5*s2^5*f0*f3-3/5*f2*f1*s2^5+4*s2^3*s1^2*f0*f5+12*s2^2*f6*s1^3*f0; LOG2 := s2+1/3*s1^3*f5-2/3*f2*s2^3+4*f1*s2^2*f6*s1^3+5*s2^4*s1*f0*f5 +12*s2^3*f6*s1^2*f0+2*f2*s2*f6*s1^4-3/5*f1*s2^5*f3+12/5*s2^5*f0*f4 +f1*s2^3*s1^2*f5+6/5*f2^2*s2^5-3/5*s1^5*f4*f5+2/5*f6*s1^5*f3; # We now see what these our for our sextic. LOG1 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, LOG1); LOG2 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, LOG2); # This gave: # LOG1 := s1+1/3*s2^3+12*s2^2*s1^3*t+5*s2*s1^4; # LOG1 := s2+4*s2^2*s1^3+12*s2^3*s1^2*t; # Now substitute in the actual local parameters ss1,ss2 for E = 5*q_t. LOG1E := simplify( subs(t = u0*q, s1=ss1, s2=ss2, LOG1) ); LOG2E := simplify( subs(t = u0*q, s1=ss1, s2=ss2, LOG2) ); # Note that p^(4*k)|ss1 and p^(3*k)|ss2, so that the next # terms of LOG1E,LOG2E would be of degree 7 in ss1,ss2 # with a denominator of 7 (which might be p) and so the # next terms of LOG1E,LOG1E would be divisible by p^(20*k), # and further terms of degree n would be divisible by even higher powers # of p, even taking into account the denominator of n. # Therefore, we consider the terms up to and including degree 19*k in p, # that is to say, terms up to and including q^19. LOG1E := factor(sum( coeff(LOG1E,q,i)*q^i, i=0..19)); LOG2E := factor(sum( coeff(LOG2E,q,i)*q^i, i=0..19)); # The above gave: # LOG1E := -2/3*u0^4*q^4*(-3-20*u0^5*q^5-192*u0^10*q^10-3*u1*q^15 # +768*u0^15*q^15); # LOG2E := -2*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+u2*q^15+128*u0^15*q^15); # Also note, since LOG1E = ss1 + ...,LOG2E = ss2 + ... # and since u0^4*q^4 | ss1, u0^3*q^3 | ss2, that # u0^4*q^4 is a factor of LOG1E and u0^3*q^3 is a factor of LOG2E. # Furthermore, we shall only use the other factor mod q^15. # So: LOG1E = 2/3*u0^4*q^4*(3+20*u0^5*q^5+192*u0^10*q^10+u3*q^15); # and LOG2E = -2*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+u4*q^15), # where |u3|_p,|u4|_p <= 1. # This could also have been phrased as: # So: LOG1E = 2/3*u0^4*q^4*(3+20*u0^5*q^5+192*u0^10*q^10+O(q^15)); # and LOG2E = -2*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+O(q^15)), # So, we assign these: LOG1E := 2/3*u0^4*q^4*(3+20*u0^5*q^5+192*u0^10*q^10+u3*q^15); LOG2E := -2*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+u4*q^15); # The following is from: people.maths.ox.ac.uk/flynn/genus2/local/exp # and gives the formal log map up to and uncluding the terms of degree 7. EXP1 := s1+4/315*s1^7*f4^3+2/15*s1^5*f4^2-1/3*f1*s2^3+2/3*s1^3*f4+4/7*f2*s1^7* f5^2-2/315*f2^2*f1*s2^7-2/9*f2*f1*s2^4*s1^3*f5+2/3*f2*f1*s2^3*f6*s1^4-4/21*f2* s2^7*f0*f3-4/3*f2*s2^6*s1*f0*f4-4*f2*s2^5*s1^2*f0*f5-12*f2*s2^4*f6*s1^3*f0-128/ 35*f2*f6*s1^7*f4-1/35*f1^2*s2^7*f3+2/3*f1^2*s2^5*s1^2*f5+14/3*f1^2*s2^4*f6*s1^3 +22/105*f1*s2^7*f0*f4+2/3*f1*s2^6*s1*f0*f5+6*f1*s2^5*f6*s1^2*f0-18/5*f1*s2^2*f6 *s1^5*f3-4/15*f1*s2^2*s1^5*f4*f5-28/3*f1*s2*f6*s1^6*f4+14/9*f1*s2*s1^6*f5^2-4/ 21*f1*f6*s1^7*f5+4/7*s2^7*f0^2*f5+4*s2^6*f6*s1*f0^2-4/3*s2^4*s1^3*f0*f4^2-10/3* s2^4*s1^3*f0*f5*f3-16*s2^3*f6*s1^4*f0*f3-8/3*s2^3*s1^4*f0*f4*f5-24*s2^2*f6*s1^5 *f0*f4+4/7*f6^2*s1^7*f0+4/7*f6*s1^7*f3^2+12/35*s1^7*f4*f5*f3-1/15*f2*f1*s2^5-12 /5*f2*f6*s1^5-2/3*f1*s2^2*s1^3*f5-5*f1*s2*f6*s1^4-2/5*s2^5*f0*f3-2*s2^4*s1*f0* f4-4*s2^3*s1^2*f0*f5-12*s2^2*f6*s1^3*f0+3/5*s1^5*f5*f3-2/15*f2*f1*f4*s1^2*s2^5+ 2/9*f1^2*f4*s1*s2^6-2/9*f1*f4^2*s1^4*s2^3-f1*f5*f3*s1^4*s2^3-4/5*f0*f4*f3*s1^2* s2^5+4*f0*f5^2*s1^5*s2^2-2/3*f1*f4*s1^2*s2^3: EXP2 := s2+4/315*f2^3*s2^7+2/15*f2^2*s2^5+2/3*f2*s2^3-1/3*s1^3*f5-4/3*f2^2*s2^3 *f6*s1^4+12/35*f2*f1*s2^7*f3-4/15*f2*f1*s2^5*s1^2*f5-8/3*f2*f1*s2^4*f6*s1^3-128 /35*f2*s2^7*f0*f4-28/3*f2*s2^6*s1*f0*f5-24*f2*s2^5*f6*s1^2*f0-4/3*f2*s2*f6*s1^6 *f4+22/105*f2*f6*s1^7*f5+4/7*f1^2*s2^7*f4+14/9*f1^2*s2^6*s1*f5-4/21*f1*s2^7*f0* f5-10/3*f1*s2^3*f6*s1^4*f3-2/9*f1*s2^3*s1^4*f4*f5-4*f1*s2^2*f6*s1^5*f4+2/3*f1* s2^2*s1^5*f5^2+2/3*f1*s2*f6*s1^6*f5+4/7*f1*f6^2*s1^7+4/7*s2^7*f6*f0^2+4/7*s2^7* f0*f3^2-18/5*s2^5*s1^2*f0*f5*f3-16*s2^4*f6*s1^3*f0*f3+2/3*s2^4*s1^3*f0*f4*f5-12 *s2^3*f6*s1^4*f0*f4+14/3*s2^3*s1^4*f0*f5^2+6*s2^2*f6*s1^5*f0*f5+4*s2*f6^2*s1^6* f0-4/21*f6*s1^7*f4*f3-2/315*s1^7*f4^2*f5-1/35*s1^7*f5^2*f3-2*f2*s2*f6*s1^4+3/5* f1*s2^5*f3-2/3*f1*s2^3*s1^2*f5-4*f1*s2^2*f6*s1^3-12/5*s2^5*f0*f4-5*s2^4*s1*f0* f5-12*s2^3*f6*s1^2*f0-2/5*f6*s1^5*f3-1/15*s1^5*f4*f5-2/9*f2^2*f5*s1^3*s2^4-4/5* f2*f6*f3*s1^5*s2^2-2/15*f2*f4*f5*s1^5*s2^2+2/9*f2*f5^2*s1^6*s2+4*f1^2*f6*s1^2* s2^5-f1*f5*f3*s1^3*s2^4-2/3*f2*f5*s1^3*s2^2: # In fact, we only need up to degree 5 terms: EXP1 := sum(coeff(subs(s1=z*s1,s2=z*s2,EXP1),z,i), i=0..5); EXP2 := sum(coeff(subs(s1=z*s1,s2=z*s2,EXP2),z,i), i=0..5); # This gave: EXP1 := s1+2/3*s1^3*f4-1/3*f1*s2^3+3/5*s1^5*f5*f3-12/5*f2*f6*s1^5 -2/3*f1*s2^2*s1^3*f5-5*f1*s2*f6*s1^4-4*s2^3*s1^2*f0*f5-12*s2^2*f6*s1^3*f0 -2*s2^4*s1*f0*f4-2/5*s2^5*f0*f3-2/3*f1*f4*s1^2*s2^3-1/15*f2*f1*s2^5 +2/15*s1^5*f4^2; EXP2 := s2-1/3*s1^3*f5+2/3*f2*s2^3-2/5*f6*s1^5*f3-1/15*s1^5*f4*f5 -2/3*f1*s2^3*s1^2*f5-12/5*s2^5*f0*f4+2/15*f2^2*s2^5-2*f2*s2*f6*s1^4 -4*f1*s2^2*f6*s1^3-5*s2^4*s1*f0*f5-12*s2^3*f6*s1^2*f0+3/5*f1*s2^5*f3 -2/3*f2*f5*s1^3*s2^2; EXP1 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, EXP1); EXP2 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, EXP2); # The above gave: # EXP1 := s1-1/3*s2^3-5*s2*s1^4-12*s2^2*s1^3*t; # EXP2 := s2-4*s2^2*s1^3-12*s2^3*s1^2*t; # The following give the local parameters of m*E, where E = 5*q_t. # This is using: exp(m*log). s1mE := simplify( subs( t = u0*q, s1 = m*LOG1E, s2 = m*LOG2E, EXP1 ) ); s2mE := simplify( subs( t = u0*q, s1 = m*LOG1E, s2 = m*LOG2E, EXP2 ) ); # Note that p^(4*k)|LOG1E and p^(3*k)|LOG2E, so that the next # terms of s1mE,s2mE would be of degree 7 in LOG1E,LOG2E # with a denominator of 7! (and 7 might be p) and so the # next terms of s1mE,s2mE would be divisible by p^(20*k), # and further terms of degree n would be divisible by even higher powers # of p, even taking into account the denominator of n!. # Therefore, we consider the terms up to and including degree 19*k in p, # that is to say, terms up to and including q^19. s1mE := factor(sum( coeff(s1mE,q,i)*q^i, i=0..19)); s2mE := factor(sum( coeff(s2mE,q,i)*q^i, i=0..19)); # The above gave: # s1mE := -2/3*u0^4*q^4*m*(336*u0^15*q^15*m^4-72*m^2*u0^10*q^10 # -1104*m^2*u0^15*q^15-4*m^2*u0^5*q^5-3-20*u0^5*q^5 # -192*u0^10*q^10-u3*q^15); # s2mE := 2*u0^3*q^3*m*(128*u0^15*q^15*m^4-1-6*u0^5*q^5-56*u0^10*q^10-u4*q^15); # Also note, since s1mE = m*LOG1E + ...,s2mE = m*LOG2E + ... # and since m*u0^4*q^4 | LOG1E, m*u0^3*q^3 | LOG2E, that # m*u0^4*q^4 is a factor of s1mE and m*u0^3*q^3 is a factor of s2mE. # Furthermore, we shall only use the other factor mod q^15. # s1mE := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5 # +72*m^2*u0^10*q^10+192*u0^10*q^10+u5*q^15); # s2mE := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+u6*q^15); # where |u5|_p,|u6|_p <= 1. # This could also have been phrased as: # s1mE := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5 # +72*m^2*u0^10*q^10+192*u0^10*q^10+O(q^15)); # s2mE := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+O(q^15)); # So, we assign these: s1mE := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5 +72*m^2*u0^10*q^10+192*u0^10*q^10+u5*q^15); s2mE := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+u6*q^15); ########################################################################### # (3) In this step, we find the power series in m, which give # the P^15 embedding [z0,..,z15] of m*E. # Each zi will be a power series in m, with coefficients in Z_p. # The following is from: # people.maths.ox.ac.uk/flynn/genus2/local/local.coordinates # and gives P^15 embedding of a point in the kernel of reduction # with local parameters s1,s2. z0 := 1; z1 := s1; z2 := s2; z3 := s1^2-f0*s2^4-f4*s1^4-5*f4^3*s1^8+2*f4^2*s1^6-f2*f5^2*s1^8-5*f2^2*f0*s2^8- f6^2*f0*s1^8-f6*f3^2*s1^8-f2*f5*f1*s1^4*s2^4-14*f2*f6*f0*s1^4*s2^4-16*f2*f6*f4* s1^8-4*f2*f5*f0*s1^3*s2^5-4*f2*f0*f4*s1^2*s2^6+3*f6*f5*f1*s1^8+3*f6*f1^2*s1^4* s2^4+f5*f1*s1^4*s2^2-f5*f3*s1^6+12*f6*f5*f0*s1^7*s2-8*f6*f1*f0*s1^3*s2^5-24*f6* f1*f4*s1^7*s2+6*f6*f1*f3*s1^6*s2^2-52*f6*f0^2*s1^2*s2^6-40*f6*f0*f4*s1^6*s2^2+ 24*f6*f0*f3*s1^5*s2^3-2*f5^2*f1*s1^7*s2-2*f5^2*f0*s1^6*s2^2-2*f5*f1*f0*s1^2*s2^ 6-4*f5*f1*f4*s1^6*s2^2-20*f5*f0^2*s1*s2^7-12*f5*f0*f4*s1^5*s2^3+5*f5*f0*f3*s1^4 *s2^4+5*f5*f4*f3*s1^8+2*f1*f0*f3*s2^8-9*f0^2*f4*s2^8-6*f0*f4^2*s1^4*s2^4+4*f2* f6*s1^6+2*f2*f0*s2^6+8*f6*f1*s1^5*s2+18*f6*f0*s1^4*s2^2+4*f5*f0*s1^3*s2^3+2*f0* f4*s1^2*s2^4; z4 := s1*s2-f2^2*f5*s1^4*s2^4+f2*f6*f5*s1^8-f6^2*f1*s1^8+f2*f6*f1*s1^4*s2^4+f5^ 2*f1*s1^6*s2^2-f5*f0^2*s2^8+f5*f1^2*s1^2*s2^6+f6*f3*s1^6+f1*f4*s1^2*s2^4+f0*f3* s2^6+f1*f0*f4*s2^8+f5*f0*f4*s1^4*s2^4-f1*f4^2*s1^4*s2^4+f2*f5*s1^4*s2^2-4*f2*f6 *f0*s1^3*s2^5-8*f2*f6*f4*s1^7*s2+2*f2*f6*f3*s1^6*s2^2-3*f2*f5*f1*s1^3*s2^5-10* f2*f5*f0*s1^2*s2^6-2*f2*f5*f4*s1^6*s2^2-2*f2*f1*f4*s1^2*s2^6-8*f2*f0*f4*s1*s2^7 -3*f2*f0*f3*s2^8-4*f6^2*f0*s1^7*s2+5*f6*f5*f1*s1^7*s2+16*f6*f5*f0*s1^6*s2^2+6* f6*f1^2*s1^3*s2^5+16*f6*f1*f0*s1^2*s2^6-10*f6*f1*f4*s1^6*s2^2+10*f6*f1*f3*s1^5* s2^3-4*f6*f0^2*s1*s2^7-4*f6*f0*f4*s1^5*s2^3+30*f6*f0*f3*s1^4*s2^4-3*f6*f4*f3*s1 ^8+6*f5^2*f0*s1^5*s2^3+5*f5*f1*f0*s1*s2^7-3*f5*f1*f4*s1^5*s2^3+2*f5*f1*f3*s1^4* s2^4+10*f5*f0*f3*s1^3*s2^5+2*f0*f4*f3*s1^2*s2^6+4*f2*f6*s1^5*s2+9*f6*f1*s1^4*s2 ^2+20*f6*f0*s1^3*s2^3+3*f5*f1*s1^3*s2^3+9*f5*f0*s1^2*s2^4+4*f0*f4*s1*s2^5; z5 := s2^2-f2*s2^4-f6*s1^4-5*f2^3*s2^8+2*f2^2*s2^6-f6*f0^2*s2^8-f0*f3^2*s2^8-f1 ^2*f4*s2^8-f5*f1*f4*s1^4*s2^4-6*f2^2*f6*s1^4*s2^4-9*f2*f6^2*s1^8-12*f2*f6*f1*s1 ^3*s2^5+f5*f1*s1^2*s2^4-f1*f3*s2^6-40*f2*f6*f0*s1^2*s2^6-4*f2*f6*f4*s1^6*s2^2-4 *f2*f5*f1*s1^2*s2^6-24*f2*f5*f0*s1*s2^7+5*f2*f1*f3*s2^8-16*f2*f0*f4*s2^8-20*f6^ 2*f1*s1^7*s2-52*f6^2*f0*s1^6*s2^2-2*f6*f5*f1*s1^6*s2^2-8*f6*f5*f0*s1^5*s2^3+2* f6*f5*f3*s1^8-2*f6*f1^2*s1^2*s2^6+12*f6*f1*f0*s1*s2^7-4*f6*f1*f4*s1^5*s2^3+5*f6 *f1*f3*s1^4*s2^4-14*f6*f0*f4*s1^4*s2^4+24*f6*f0*f3*s1^3*s2^5-5*f6*f4^2*s1^8+3* f5^2*f0*s1^4*s2^4-2*f5*f1^2*s1*s2^7+3*f5*f1*f0*s2^8+6*f5*f0*f3*s1^2*s2^6+2*f2* f6*s1^4*s2^2+4*f6*f1*s1^3*s2^3+18*f6*f0*s1^2*s2^4+2*f6*f4*s1^6+8*f5*f0*s1*s2^5+ 4*f0*f4*s2^6; z6 := s1^3-f4*s1^5-5*f4^3*s1^9+2*f4^2*s1^7-f2*f5^2*s1^9-f6*f3^2*s1^9-f6^2*f0*s1 ^9-f2*f1*f4*s1^4*s2^5+f0^2*f3*s2^9-f5*f3*s1^7-f1*f0*f3*s1*s2^8+f3*s1^4*s2+4*f2^ 3*s1^3*s2^6+20*f2^2*f6*s1^7*s2^2+6*f2^2*f1*s1^2*s2^7+9*f2^2*f0*s1*s2^8+2*f2^2* f4*s1^5*s2^4+70*f2*f6*f1*s1^6*s2^3+120*f2*f6*f0*s1^5*s2^4-22*f2*f6*f4*s1^9+12* f2*f6*f3*s1^8*s2+7*f2*f5*f1*s1^5*s2^4+f1^2*s1*s2^6+f1*f0*s2^7+f1*f4*s1^4*s2^3+ 24*f2*f5*f0*s1^4*s2^5-6*f2*f5*f4*s1^8*s2-2*f2*f5*f3*s1^7*s2^2-3*f2*f1^2*s1*s2^8 -3*f2*f1*f0*s2^9-8*f2*f1*f3*s1^3*s2^6-12*f2*f0*f3*s1^2*s2^7+4*f2*f4^2*s1^7*s2^2 +5*f6*f5*f1*s1^9+22*f6*f5*f0*s1^8*s2+66*f6*f1^2*s1^5*s2^4+231*f6*f1*f0*s1^4*s2^ 5-35*f6*f1*f4*s1^8*s2+34*f6*f1*f3*s1^7*s2^2+148*f6*f0^2*s1^3*s2^6-56*f6*f0*f4* s1^7*s2^2+96*f6*f0*f3*s1^6*s2^3+8*f5^2*f0*s1^7*s2^2+19*f5*f1^2*s1^4*s2^5+90*f5* f1*f0*s1^3*s2^6-16*f5*f1*f4*s1^7*s2^2+6*f5*f1*f3*s1^6*s2^3+64*f5*f0^2*s1^2*s2^7 -24*f5*f0*f4*s1^6*s2^3+39*f5*f0*f3*s1^5*s2^4+5*f5*f4*f3*s1^9-2*f5*f3^2*s1^8*s2+ 4*f1^2*f4*s1^3*s2^6-3*f1^2*f3*s1^2*s2^7+38*f1*f0*f4*s1^2*s2^7-2*f1*f4^2*s1^6*s2 ^3-3*f1*f4*f3*s1^5*s2^4+31*f0^2*f4*s1*s2^8-14*f0*f4^2*s1^5*s2^4+10*f0*f4*f3*s1^ 4*s2^5+4*f0*f3^2*s1^3*s2^6+5*f4^2*f3*s1^8*s2-2*f2^2*s1^3*s2^4+6*f2*f6*s1^7+2*f2 *f5*s1^6*s2-3*f2*f1*s1^2*s2^5-4*f2*f0*s1*s2^6-2*f2*f4*s1^5*s2^2+13*f6*f1*s1^6* s2+30*f6*f0*s1^5*s2^2+7*f5*f1*s1^5*s2^2+18*f5*f0*s1^4*s2^3+3*f1*f3*s1^3*s2^4+10 *f0*f4*s1^3*s2^4+6*f0*f3*s1^2*s2^5-2*f4*f3*s1^6*s2+2*f2*s1^3*s2^2+3*f1*s1^2*s2^ 3+3*f0*s1*s2^4; z7 := s1^2*s2+f0*s2^5-f6^2*f1*s1^9-f2*f5^2*s1^8*s2-f6*f3^2*s1^8*s2-f5*f3*s1^6* s2+5*f2^2*f0*s2^9+f1*s1*s2^4-f4*s1^4*s2+5*f2^2*f1*s1*s2^8+8*f2*f6*f1*s1^5*s2^4+ 6*f2*f6*f0*s1^4*s2^5-16*f2*f6*f4*s1^8*s2-2*f2*f5*f1*s1^4*s2^5-8*f2*f5*f0*s1^3* s2^6-12*f2*f0*f4*s1^2*s2^7-6*f2*f0*f3*s1*s2^8-7*f6^2*f0*s1^8*s2+2*f6*f5*f1*s1^8 *s2+8*f6*f5*f0*s1^7*s2^2+17*f6*f1^2*s1^4*s2^5+76*f6*f1*f0*s1^3*s2^6-24*f6*f1*f4 *s1^7*s2^2+8*f6*f1*f3*s1^6*s2^3+44*f6*f0^2*s1^2*s2^7-48*f6*f0*f4*s1^6*s2^3+34* f6*f0*f3*s1^5*s2^4-2*f5^2*f1*s1^7*s2^2+3*f5*f1^2*s1^3*s2^6+30*f5*f1*f0*s1^2*s2^ 7-6*f5*f1*f4*s1^6*s2^3+22*f5*f0^2*s1*s2^8-18*f5*f0*f4*s1^5*s2^4+11*f5*f0*f3*s1^ 4*s2^5+5*f5*f4*f3*s1^8*s2-2*f1^2*f3*s1*s2^8+12*f1*f0*f4*s1*s2^8-2*f1*f0*f3*s2^9 +11*f0^2*f4*s2^9-10*f0*f4^2*s1^4*s2^5-5*f4^3*s1^8*s2+4*f2*f6*s1^6*s2-2*f2*f1*s1 *s2^6-2*f2*f0*s2^7+8*f6*f1*s1^5*s2^2+22*f6*f0*s1^4*s2^3+2*f5*f1*s1^4*s2^3+10*f5 *f0*s1^3*s2^4+6*f0*f4*s1^2*s2^5+2*f0*f3*s1*s2^6+2*f4^2*s1^6*s2; z8 := s1*s2^2+f6*s1^5-f1^2*f4*s1*s2^8-f5*f0^2*s2^9-f1*f3*s1*s2^6-5*f2^3*s1*s2^8 -f0*f3^2*s1*s2^8-f2*s1*s2^4+f5*s1^4*s2-10*f2^2*f6*s1^5*s2^4+11*f2*f6^2*s1^9+12* f2*f6*f5*s1^8*s2-18*f2*f6*f1*s1^4*s2^5-48*f2*f6*f0*s1^3*s2^6-12*f2*f6*f4*s1^7* s2^2-6*f2*f5*f1*s1^3*s2^6-24*f2*f5*f0*s1^2*s2^7+5*f2*f1*f3*s1*s2^8-16*f2*f0*f4* s1*s2^8+22*f6^2*f1*s1^8*s2+44*f6^2*f0*s1^7*s2^2+30*f6*f5*f1*s1^7*s2^2+76*f6*f5* f0*s1^6*s2^3-2*f6*f5*f3*s1^9+8*f6*f1*f0*s1^2*s2^7-8*f6*f1*f4*s1^6*s2^3+11*f6*f1 *f3*s1^5*s2^4-7*f6*f0^2*s1*s2^8+6*f6*f0*f4*s1^5*s2^4+34*f6*f0*f3*s1^4*s2^5+5*f6 *f4^2*s1^9-6*f6*f4*f3*s1^8*s2+3*f5^2*f1*s1^6*s2^3+17*f5^2*f0*s1^5*s2^4-2*f5^2* f3*s1^8*s2-2*f5*f1^2*s1^2*s2^7+2*f5*f1*f0*s1*s2^8-2*f5*f1*f4*s1^5*s2^4+8*f5*f0* f4*s1^4*s2^5+8*f5*f0*f3*s1^3*s2^6+5*f5*f4^2*s1^8*s2+2*f2^2*s1*s2^6+6*f2*f6*s1^5 *s2^2+10*f6*f1*s1^4*s2^3+22*f6*f0*s1^3*s2^4-2*f6*f4*s1^7+2*f6*f3*s1^6*s2+2*f5* f1*s1^3*s2^4+8*f5*f0*s1^2*s2^5-2*f5*f4*s1^6*s2+4*f0*f4*s1*s2^6; z9 := -5*f2^3*s2^9+s2^3-f2*s2^5+2*f2^2*s2^7+f6^2*f3*s1^9-f6*f0^2*s2^9-f2*f5*f4* s1^5*s2^4-f1^2*f4*s2^9-f6*f5*f3*s1^8*s2+f2*f5*s1^3*s2^4+f6*f5*s1^7+f5^2*s1^6*s2 -f0*f3^2*s2^9+f3*s1*s2^4-14*f2^2*f6*s1^4*s2^5-2*f2^2*f5*s1^3*s2^6+4*f2^2*f4*s1^ 2*s2^7+5*f2^2*f3*s1*s2^8+31*f2*f6^2*s1^8*s2+38*f2*f6*f5*s1^7*s2^2-24*f2*f6*f1* s1^3*s2^6-56*f2*f6*f0*s1^2*s2^7+10*f2*f6*f3*s1^5*s2^4-f1*f3*s2^7+4*f2*f5^2*s1^6 *s2^3-16*f2*f5*f1*s1^2*s2^7-35*f2*f5*f0*s1*s2^8-3*f2*f5*f3*s1^4*s2^5-6*f2*f1*f4 *s1*s2^8+5*f2*f1*f3*s2^9-22*f2*f0*f4*s2^9+2*f2*f4^2*s1^4*s2^5+64*f6^2*f1*s1^7* s2^2+148*f6^2*f0*s1^6*s2^3+90*f6*f5*f1*s1^6*s2^3+231*f6*f5*f0*s1^5*s2^4-3*f6*f5 *f4*s1^9+8*f6*f1^2*s1^2*s2^7+22*f6*f1*f0*s1*s2^8+24*f6*f1*f4*s1^5*s2^4+39*f6*f1 *f3*s1^4*s2^5+120*f6*f0*f4*s1^4*s2^5+96*f6*f0*f3*s1^3*s2^6+9*f6*f4^2*s1^8*s2-12 *f6*f4*f3*s1^7*s2^2+4*f6*f3^2*s1^6*s2^3+19*f5^2*f1*s1^5*s2^4+66*f5^2*f0*s1^4*s2 ^5-3*f5^2*f4*s1^8*s2-3*f5^2*f3*s1^7*s2^2+5*f5*f1*f0*s2^9+7*f5*f1*f4*s1^4*s2^5+6 *f5*f1*f3*s1^3*s2^6+70*f5*f0*f4*s1^3*s2^6+34*f5*f0*f3*s1^2*s2^7+6*f5*f4^2*s1^7* s2^2-8*f5*f4*f3*s1^6*s2^3-2*f1*f4*f3*s1^2*s2^7-2*f1*f3^2*s1*s2^8+20*f0*f4^2*s1^ 2*s2^7+12*f0*f4*f3*s1*s2^8+4*f4^3*s1^6*s2^3+10*f2*f6*s1^4*s2^3-2*f2*f4*s1^2*s2^ 5-2*f2*f3*s1*s2^6+18*f6*f1*s1^3*s2^4+30*f6*f0*s1^2*s2^5-4*f6*f4*s1^6*s2+6*f6*f3 *s1^5*s2^2+7*f5*f1*s1^2*s2^5+13*f5*f0*s1*s2^6-3*f5*f4*s1^5*s2^2+3*f5*f3*s1^4*s2 ^3+2*f1*f4*s1*s2^6+6*f0*f4*s2^7-2*f4^2*s1^4*s2^3+3*f6*s1^4*s2+3*f5*s1^3*s2^2+2* f4*s1^2*s2^3; z10 := f0^2*s2^8-14*f4^3*s1^10+5*f4^2*s1^8-2*f4*s1^6+s1^4-2*f2*f5^2*s1^10-10*f2 ^2*f0*s1^2*s2^8-40*f2*f6*f4*s1^10-36*f2*f6*f0*s1^6*s2^4-2*f2*f5*f1*s1^6*s2^4-8* f2*f5*f0*s1^5*s2^5-4*f2*f0^2*s2^10-12*f2*f0*f4*s1^4*s2^6-2*f6^2*f0*s1^10+6*f6* f5*f1*s1^10+24*f6*f5*f0*s1^9*s2+6*f6*f1^2*s1^6*s2^4-32*f6*f1*f0*s1^5*s2^5-64*f6 *f1*f4*s1^9*s2+12*f6*f1*f3*s1^8*s2^2-140*f6*f0^2*s1^4*s2^6-116*f6*f0*f4*s1^8*s2 ^2+48*f6*f0*f3*s1^7*s2^3-2*f6*f3^2*s1^10-4*f5^2*f1*s1^9*s2-4*f5^2*f0*s1^8*s2^2- 6*f5*f1*f0*s1^4*s2^6-10*f5*f1*f4*s1^8*s2^2-48*f5*f0^2*s1^3*s2^7-32*f5*f0*f4*s1^ 7*s2^3+12*f5*f0*f3*s1^6*s2^4+12*f5*f4*f3*s1^10+4*f1*f0*f3*s1^2*s2^8-22*f0^2*f4* s1^2*s2^8-20*f0*f4^2*s1^6*s2^4+8*f2*f6*s1^8+4*f2*f0*s1^2*s2^6+16*f6*f1*s1^7*s2+ 36*f6*f0*s1^6*s2^2+2*f5*f1*s1^6*s2^2+8*f5*f0*s1^5*s2^3-2*f5*f3*s1^8+6*f0*f4*s1^ 4*s2^4-2*f0*s1^2*s2^4; z11 := 2*s1^3*s2+f5*s1^6-f6^2*f1*s1^10+f5^2*f1*s1^8*s2^2-f1*f3^2*s1^4*s2^6+f6* f3*s1^8-f0^2*f3*s2^10-f2*f3*s1^4*s2^4-2*f2^2*f5*s1^6*s2^4+5*f2^2*f1*s1^2*s2^8- 10*f2^2*f0*s1*s2^9+2*f2^2*f3*s1^4*s2^6+14*f2*f6*f5*s1^10+12*f2*f6*f1*s1^6*s2^4- 44*f2*f6*f0*s1^5*s2^5-56*f2*f6*f4*s1^9*s2+14*f2*f6*f3*s1^8*s2^2-f1*f0*s2^8+f1* f4*s1^4*s2^4+f1*s1^2*s2^4+f3*s1^4*s2^2-2*f2*f5^2*s1^9*s2-8*f2*f5*f1*s1^5*s2^5- 24*f2*f5*f0*s1^4*s2^6-6*f2*f5*f4*s1^8*s2^2+4*f2*f1*f0*s2^10-2*f2*f1*f4*s1^4*s2^ 6-24*f2*f0*f4*s1^3*s2^7+2*f2*f4*f3*s1^6*s2^4-10*f6^2*f0*s1^9*s2+40*f6*f5*f1*s1^ 9*s2+110*f6*f5*f0*s1^8*s2^2+34*f6*f1^2*s1^5*s2^5+54*f6*f1*f0*s1^4*s2^6-80*f6*f1 *f4*s1^8*s2^2+52*f6*f1*f3*s1^7*s2^3-152*f6*f0^2*s1^3*s2^7-128*f6*f0*f4*s1^7*s2^ 3+162*f6*f0*f3*s1^6*s2^4-4*f6*f4*f3*s1^10-2*f6*f3^2*s1^9*s2+20*f5^2*f0*s1^7*s2^ 3-3*f5^2*f3*s1^10+5*f5*f1^2*s1^4*s2^6+20*f5*f1*f0*s1^3*s2^7-20*f5*f1*f4*s1^7*s2 ^3+6*f5*f1*f3*s1^6*s2^4-57*f5*f0^2*s1^2*s2^8-28*f5*f0*f4*s1^6*s2^4+46*f5*f0*f3* s1^5*s2^5+9*f5*f4^2*s1^10+10*f5*f4*f3*s1^9*s2-2*f5*f3^2*s1^8*s2^2-2*f1^2*f3*s1^ 2*s2^8+10*f1*f0*f4*s1^2*s2^8+4*f1*f0*f3*s1*s2^9-2*f1*f4^2*s1^6*s2^4-26*f0^2*f4* s1*s2^9-20*f0*f4^2*s1^5*s2^5+12*f0*f4*f3*s1^4*s2^6-10*f4^3*s1^9*s2+5*f4^2*f3*s1 ^8*s2^2+16*f2*f6*s1^7*s2+2*f2*f5*s1^6*s2^2-2*f2*f1*s1^2*s2^6+4*f2*f0*s1*s2^7+32 *f6*f1*s1^6*s2^2+76*f6*f0*s1^5*s2^3+8*f5*f1*s1^5*s2^3+23*f5*f0*s1^4*s2^4-3*f5* f4*s1^8-2*f5*f3*s1^7*s2+12*f0*f4*s1^3*s2^5+4*f4^2*s1^7*s2-2*f4*f3*s1^6*s2^2-2* f0*s1*s2^5-2*f4*s1^5*s2; z12 := -f6*s1^6+s1^2*s2^2-f2*s1^2*s2^4-f0*s2^6-5*f2^3*s1^2*s2^8-10*f2^2*f6*s1^6 *s2^4-9*f2^2*f0*s2^10-2*f2^2*f4*s1^4*s2^6-13*f2*f6^2*s1^10-20*f2*f6*f1*s1^5*s2^ 5-76*f2*f6*f0*s1^4*s2^6-22*f2*f6*f4*s1^8*s2^2-f2*f5^2*s1^8*s2^2-6*f2*f5*f1*s1^4 *s2^6+5*f2*f1*f3*s1^2*s2^8-22*f2*f0*f4*s1^2*s2^8-2*f2*f4^2*s1^6*s2^4-28*f6^2*f1 *s1^9*s2-71*f6^2*f0*s1^8*s2^2+3*f6*f5*f3*s1^10+f6*f1^2*s1^4*s2^6+11*f6*f1*f3*s1 ^6*s2^4-71*f6*f0^2*s1^2*s2^8-76*f6*f0*f4*s1^6*s2^4+48*f6*f0*f3*s1^5*s2^5-9*f6* f4^2*s1^10-f6*f3^2*s1^8*s2^2-2*f5^2*f1*s1^7*s2^3+f5^2*f0*s1^6*s2^4-2*f5*f1^2*s1 ^3*s2^7-6*f5*f1*f4*s1^6*s2^4-28*f5*f0^2*s1*s2^9-20*f5*f0*f4*s1^5*s2^5+11*f5*f0* f3*s1^4*s2^6+5*f5*f4*f3*s1^8*s2^2-f1^2*f4*s1^2*s2^8+3*f1*f0*f3*s2^10-13*f0^2*f4 *s2^10-10*f0*f4^2*s1^4*s2^6-f0*f3^2*s1^2*s2^8-5*f4^3*s1^8*s2^2+2*f2^2*s1^2*s2^6 +6*f2*f6*s1^6*s2^2+3*f2*f0*s2^8+f2*f4*s1^4*s2^4+12*f6*f1*s1^5*s2^3+37*f6*f0*s1^ 4*s2^4+3*f6*f4*s1^8+2*f5*f1*s1^4*s2^4+12*f5*f0*s1^3*s2^5-f5*f3*s1^6*s2^2-f1*f3* s1^2*s2^6+6*f0*f4*s1^2*s2^6+2*f4^2*s1^6*s2^2-f4*s1^4*s2^2+f2*f5*f3*s1^6*s2^4+f1 *f4*f3*s1^4*s2^6-32*f2*f5*f0*s1^3*s2^7-32*f6*f1*f4*s1^7*s2^3; z13 := 2*s1*s2^3+f1*s2^6-f6^2*f3*s1^10+f5*f1^2*s1^2*s2^8-f5*f0^2*s2^10-f5*f3^2* s1^6*s2^4-10*f2^3*s1*s2^9+f2*f5*s1^4*s2^4-f6*f5*s1^8+f0*f3*s2^8-f4*f3*s1^4*s2^4 +f5*s1^4*s2^2+f3*s1^2*s2^4-20*f2^2*f6*s1^5*s2^5-2*f2^2*f5*s1^4*s2^6+9*f2^2*f1* s2^10+5*f2^2*f3*s1^2*s2^8-26*f2*f6^2*s1^9*s2+10*f2*f6*f5*s1^8*s2^2-28*f2*f6*f1* s1^4*s2^6-128*f2*f6*f0*s1^3*s2^7-24*f2*f6*f4*s1^7*s2^3+12*f2*f6*f3*s1^6*s2^4-20 *f2*f5*f1*s1^3*s2^7-80*f2*f5*f0*s1^2*s2^8-2*f2*f5*f4*s1^6*s2^4-6*f2*f1*f4*s1^2* s2^8+10*f2*f1*f3*s1*s2^9-56*f2*f0*f4*s1*s2^9-4*f2*f0*f3*s2^10+2*f2*f4*f3*s1^4* s2^6-57*f6^2*f1*s1^8*s2^2-152*f6^2*f0*s1^7*s2^3+20*f6*f5*f1*s1^7*s2^3+54*f6*f5* f0*s1^6*s2^4+4*f6*f5*f4*s1^10+4*f6*f5*f3*s1^9*s2+20*f6*f1^2*s1^3*s2^7+110*f6*f1 *f0*s1^2*s2^8-24*f6*f1*f4*s1^6*s2^4+46*f6*f1*f3*s1^5*s2^5-10*f6*f0^2*s1*s2^9-44 *f6*f0*f4*s1^5*s2^5+162*f6*f0*f3*s1^4*s2^6-10*f6*f4^2*s1^9*s2+5*f5^2*f1*s1^6*s2 ^4+34*f5^2*f0*s1^5*s2^5-2*f5^2*f3*s1^8*s2^2+40*f5*f1*f0*s1*s2^9-8*f5*f1*f4*s1^5 *s2^5+6*f5*f1*f3*s1^4*s2^6+12*f5*f0*f4*s1^4*s2^6+52*f5*f0*f3*s1^3*s2^7+5*f5*f4^ 2*s1^8*s2^2-2*f1^2*f4*s1*s2^9-3*f1^2*f3*s2^10+14*f1*f0*f4*s2^10-2*f1*f4^2*s1^4* s2^6-2*f1*f3^2*s1^2*s2^8+14*f0*f4*f3*s1^2*s2^8-2*f0*f3^2*s1*s2^9+2*f4^2*f3*s1^6 *s2^4+4*f2^2*s1*s2^7+12*f2*f6*s1^5*s2^3-3*f2*f1*s2^8-2*f2*f3*s1^2*s2^6+23*f6*f1 *s1^4*s2^4+76*f6*f0*s1^3*s2^5+4*f6*f4*s1^7*s2+8*f5*f1*s1^3*s2^5+32*f5*f0*s1^2* s2^6-2*f5*f4*s1^6*s2^2+2*f1*f4*s1^2*s2^6-2*f1*f3*s1*s2^7+16*f0*f4*s1*s2^7-2*f2* s1*s2^5-2*f6*s1^5*s2; z14 := s2^4-2*f2*s2^6-14*f2^3*s2^10+f6^2*s1^8+5*f2^2*s2^8-4*f6^2*f4*s1^10-20*f2 ^2*f6*s1^4*s2^6-22*f2*f6^2*s1^8*s2^2-32*f2*f6*f1*s1^3*s2^7-116*f2*f6*f0*s1^2*s2 ^8-12*f2*f6*f4*s1^6*s2^4-10*f2*f5*f1*s1^2*s2^8-64*f2*f5*f0*s1*s2^9+12*f2*f1*f3* s2^10-40*f2*f0*f4*s2^10-48*f6^2*f1*s1^7*s2^3-140*f6^2*f0*s1^6*s2^4-6*f6*f5*f1* s1^6*s2^4-32*f6*f5*f0*s1^5*s2^5+4*f6*f5*f3*s1^8*s2^2-4*f6*f1^2*s1^2*s2^8+24*f6* f1*f0*s1*s2^9-8*f6*f1*f4*s1^5*s2^5+12*f6*f1*f3*s1^4*s2^6-2*f6*f0^2*s2^10-36*f6* f0*f4*s1^4*s2^6+48*f6*f0*f3*s1^3*s2^7-10*f6*f4^2*s1^8*s2^2+6*f5^2*f0*s1^4*s2^6- 4*f5*f1^2*s1*s2^9+6*f5*f1*f0*s2^10-2*f5*f1*f4*s1^4*s2^6+12*f5*f0*f3*s1^2*s2^8-2 *f1^2*f4*s2^10-2*f0*f3^2*s2^10+6*f2*f6*s1^4*s2^4+8*f6*f1*s1^3*s2^5+36*f6*f0*s1^ 2*s2^6+4*f6*f4*s1^6*s2^2+2*f5*f1*s1^2*s2^6+16*f5*f0*s1*s2^7-2*f1*f3*s2^8+8*f0* f4*s2^8-2*f6*s1^4*s2^2; z15 := 4*f6*s1^6+4*f2*s1^2*s2^4+f5^2*s1^8+f1^2*s2^8+4*f0*s2^6+f3^2*s1^4*s2^4+20 *f2^3*s1^2*s2^8+40*f2^2*f6*s1^6*s2^4-8*f2^2*f5*s1^5*s2^5+20*f2^2*f1*s1*s2^9+36* f2^2*f0*s2^10+8*f2^2*f4*s1^4*s2^6+8*f2^2*f3*s1^3*s2^7+52*f2*f6^2*s1^10+56*f2*f6 *f5*s1^9*s2+128*f2*f6*f1*s1^5*s2^5+272*f2*f6*f0*s1^4*s2^6+24*f2*f6*f4*s1^8*s2^2 +56*f2*f6*f3*s1^7*s2^3+8*f2*f5^2*s1^8*s2^2-16*f2*f5*f4*s1^7*s2^3-4*f2*f1^2*s2^ 10-16*f2*f1*f4*s1^3*s2^7-26*f2*f1*f3*s1^2*s2^8+24*f2*f0*f4*s1^2*s2^8-12*f2*f0* f3*s1*s2^9+8*f2*f4^2*s1^6*s2^4+4*f2*f4*f3*s1^5*s2^5-2*f2*f3^2*s1^4*s2^6+108*f6^ 2*f1*s1^9*s2+252*f6^2*f0*s1^8*s2^2+136*f6*f5*f1*s1^8*s2^2+352*f6*f5*f0*s1^7*s2^ 3-10*f6*f5*f3*s1^10+108*f6*f1^2*s1^4*s2^6+352*f6*f1*f0*s1^3*s2^7+118*f6*f1*f3* s1^6*s2^4+252*f6*f0^2*s1^2*s2^8+272*f6*f0*f4*s1^6*s2^4+276*f6*f0*f3*s1^5*s2^5+ 36*f6*f4^2*s1^10-12*f6*f4*f3*s1^9*s2+6*f6*f3^2*s1^8*s2^2+36*f5^2*f1*s1^7*s2^3+ 108*f5^2*f0*s1^6*s2^4-4*f5^2*f4*s1^10-8*f5^2*f3*s1^9*s2+36*f5*f1^2*s1^3*s2^7+ 136*f5*f1*f0*s1^2*s2^8+36*f5*f1*f3*s1^5*s2^5+108*f5*f0^2*s1*s2^9+128*f5*f0*f4* s1^5*s2^5+118*f5*f0*f3*s1^4*s2^6+20*f5*f4^2*s1^9*s2-26*f5*f4*f3*s1^8*s2^2-4*f5* f3^2*s1^7*s2^3+8*f1^2*f4*s1^2*s2^8-8*f1^2*f3*s1*s2^9+56*f1*f0*f4*s1*s2^9-10*f1* f0*f3*s2^10-8*f1*f4^2*s1^5*s2^5-4*f1*f3^2*s1^3*s2^7+52*f0^2*f4*s2^10+40*f0*f4^2 *s1^4*s2^6+56*f0*f4*f3*s1^3*s2^7+6*f0*f3^2*s1^2*s2^8+20*f4^3*s1^8*s2^2+8*f4^2* f3*s1^7*s2^3-2*f4*f3^2*s1^6*s2^4-8*f2^2*s1^2*s2^6+8*f2*f6*s1^6*s2^2+8*f2*f5*s1^ 5*s2^3-8*f2*f1*s1*s2^7-12*f2*f0*s2^8-4*f2*f4*s1^4*s2^4-4*f2*f3*s1^3*s2^5+16*f6* f1*s1^5*s2^3+12*f6*f0*s1^4*s2^4-12*f6*f4*s1^8+4*f6*f3*s1^7*s2+18*f5*f1*s1^4*s2^ 4+16*f5*f0*s1^3*s2^5-8*f5*f4*s1^7*s2+6*f5*f3*s1^6*s2^2+8*f1*f4*s1^3*s2^5+6*f1* f3*s1^2*s2^6+8*f0*f4*s1^2*s2^6+4*f0*f3*s1*s2^7-8*f4^2*s1^6*s2^2-4*f4*f3*s1^5*s2 ^3+4*f5*s1^5*s2+4*f1*s1*s2^5+4*f4*s1^4*s2^2+4*f3*s1^3*s2^3-2*f2*f5*f3*s1^6*s2^4 -2*f1*f4*f3*s1^4*s2^6+64*f2*f5*f0*s1^3*s2^7+64*f6*f1*f4*s1^7*s2^3; # We now fix what these are in terms of our specific sextic. z0 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z0); z1 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z1); z2 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z2); z3 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z3); z4 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z4); z5 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z5); z6 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z6); z7 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z7); z8 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z8); z9 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z9); z10 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z10); z11 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z11); z12 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z12); z13 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z13); z14 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z14); z15 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, z15); # The following gives the P^15 embedding of m*E, where E = 5*q_t. z0 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z0 ) ); z1 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z1 ) ); z2 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z2 ) ); z3 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z3 ) ); z4 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z4 ) ); z5 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z5 ) ); z6 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z6 ) ); z7 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z7 ) ); z8 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z8 ) ); z9 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z9 ) ); z10 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z10 ) ); z11 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z11 ) ); z12 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z12 ) ); z13 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z13 ) ); z14 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z14 ) ); z15 := simplify( subs( t = u0*q, s1 = s1mE, s2 = s2mE, z15 ) ); # We only bother with terms up to q^20 (so: mod q^21), which gives us # enough p-adic accuracy. z0 := factor( simplify( sum( coeff(z0,q,i)*q^i, i=0..20 ) ) ); z1 := factor( simplify( sum( coeff(z1,q,i)*q^i, i=0..20 ) ) ); z2 := factor( simplify( sum( coeff(z2,q,i)*q^i, i=0..20 ) ) ); z3 := factor( simplify( sum( coeff(z3,q,i)*q^i, i=0..20 ) ) ); z4 := factor( simplify( sum( coeff(z4,q,i)*q^i, i=0..20 ) ) ); z5 := factor( simplify( sum( coeff(z5,q,i)*q^i, i=0..20 ) ) ); z6 := factor( simplify( sum( coeff(z6,q,i)*q^i, i=0..20 ) ) ); z7 := factor( simplify( sum( coeff(z7,q,i)*q^i, i=0..20 ) ) ); z8 := factor( simplify( sum( coeff(z8,q,i)*q^i, i=0..20 ) ) ); z9 := factor( simplify( sum( coeff(z9,q,i)*q^i, i=0..20 ) ) ); z10 := factor( simplify( sum( coeff(z10,q,i)*q^i, i=0..20 ) ) ); z11 := factor( simplify( sum( coeff(z11,q,i)*q^i, i=0..20 ) ) ); z12 := factor( simplify( sum( coeff(z12,q,i)*q^i, i=0..20 ) ) ); z13 := factor( simplify( sum( coeff(z13,q,i)*q^i, i=0..20 ) ) ); z14 := factor( simplify( sum( coeff(z14,q,i)*q^i, i=0..20 ) ) ); z15 := factor( simplify( sum( coeff(z15,q,i)*q^i, i=0..20 ) ) ); # The following is them the P^15 embedding of m*E, truncated # at terms of degree up to q^20. zarr := [z0,z1,z2,z3,z4,z5,z6,z7,z8,z9,z10,z11,z12,z13,z14,z15]; # Note that any further terms in the power series for z0,..,z15 # would have degree at least 7 in s1,s2, and we are substituting # s1mE,s2mE for s1,s2, and m*u0^4*q^4 | s1mE, m*u0^3*q^3 | s2mE, # so that any further terms would be divisible by q^21. # These gave: # z0 := 1 # z1 := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5+72*m^2*u0^10*q^10 # +192*u0^10*q^10+u5*q^15); # z2 := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+u6*q^15); # z3 := 4/9*m^2*u0^8*q^8*(9-12*m^2*u0^5*q^5+120*u0^5*q^5-272*m^2*u0^10*q^10 # +1552*u0^10*q^10+16*m^4*u0^10*q^10); # z4 := -4/3*m^2*u0^7*q^7*(3+4*m^2*u0^5*q^5+38*u0^5*q^5+480*u0^10*q^10 # +96*m^2*u0^10*q^10); # z5 := -4*m^2*u0^6*q^6*(-1-12*u0^5*q^5-148*u0^10*q^10+4*m^2*u0^10*q^10); # z6 := 8*m^3*u0^12*q^12*(1+20*u0^5*q^5+4*m^2*u0^5*q^5); # z7 := -8/3*m^3*u0^11*q^11*(3+8*m^2*u0^5*q^5+58*u0^5*q^5); # z8 := 8/3*m^3*u0^10*q^10*(3+56*u0^5*q^5+4*m^2*u0^5*q^5+876*u0^10*q^10 # +132*m^2*u0^10*q^10); # z9 := -8*m^3*u0^9*q^9*(1+18*u0^5*q^5+276*u0^10*q^10+12*m^2*u0^10*q^10); # z10 := 16*m^4*u0^16*q^16; # z11 := 32*u0^15*q^15*m^4*(-1-26*u0^5*q^5+2*m^2*u0^5*q^5); # z12 := -16/3*m^4*u0^14*q^14*(-3+4*m^2*u0^5*q^5-76*u0^5*q^5); # z13 := 32/3*u0^13*q^13*m^4*(-3-74*u0^5*q^5+2*m^2*u0^5*q^5); # z14 := 16*m^4*u0^12*q^12*(1+24*u0^5*q^5); # z15 := 0; # We can express this as follows (noting also that all terms of # z15 are of degree at least 6 in s1,s2 and so m^6 | z15, # noting that the above are accurate mod q^20, and noting that # all terms within any given zi have exponents of q which # are all congruent mod 5): # z0 := 1; # z1 := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5+72*m^2*u0^10*q^10 # +192*u0^10*q^10+v1*q^15); # z2 := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+v2*q^15); # z3 := 4/9*m^2*u0^8*q^8*(9-12*m^2*u0^5*q^5+120*u0^5*q^5-272*m^2*u0^10*q^10 # +1552*u0^10*q^10+16*m^4*u0^10*q^10+v3*q^15); # z4 := -4/3*m^2*u0^7*q^7*(3+4*m^2*u0^5*q^5+38*u0^5*q^5+480*u0^10*q^10 # +96*m^2*u0^10*q^10+v4*q^15); # z5 := -4*m^2*u0^6*q^6*(-1-12*u0^5*q^5-148*u0^10*q^10+4*m^2*u0^10*q^10 # +v5*q^15); # z6 := 8*m^3*u0^12*q^12*(1+20*u0^5*q^5+4*m^2*u0^5*q^5+v6*q^15); # z7 := -8/3*m^3*u0^11*q^11*(3+8*m^2*u0^5*q^5+58*u0^5*q^5+v7*q^10); # z8 := 8/3*m^3*u0^10*q^10*(3+56*u0^5*q^5+4*m^2*u0^5*q^5+v8*q^10); # z9 := -8*m^3*u0^9*q^9*(1+18*u0^5*q^5+v9*q^10); # z10 := 16*m^4*u0^16*q^16*(1+v10*q^5); # z11 := 32*u0^15*q^15*m^4*(-1+v11*q^5); # z12 := 16*m^4*u0^14*q^14*(1+v12*q^5); # z13 := -32*u0^13*q^13*m^4*(1+v13*q^5); # z14 := 16*m^4*u0^12*q^12*(1+v14*q^5); # z15 := m^6*v15*u0^20*q^20; # # These could alternatively be expressed as: # z0 := 1; # z1 := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5+72*m^2*u0^10*q^10 # +192*u0^10*q^10+O(q^15)); # z2 := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+O(q^15)); # z3 := 4/9*m^2*u0^8*q^8*(9-12*m^2*u0^5*q^5+120*u0^5*q^5-272*m^2*u0^10*q^10 # +1552*u0^10*q^10+16*m^4*u0^10*q^10+O(q^15)); # z4 := -4/3*m^2*u0^7*q^7*(3+4*m^2*u0^5*q^5+38*u0^5*q^5+480*u0^10*q^10 # +96*m^2*u0^10*q^10+O(q^15)); # z5 := -4*m^2*u0^6*q^6*(-1-12*u0^5*q^5-148*u0^10*q^10+4*m^2*u0^10*q^10 # +O(q^15)); # z6 := 8*m^3*u0^12*q^12*(1+20*u0^5*q^5+4*m^2*u0^5*q^5+O(q^15)); # z7 := -8/3*m^3*u0^11*q^11*(3+8*m^2*u0^5*q^5+58*u0^5*q^5+O(q^10)); # z8 := 8/3*m^3*u0^10*q^10*(3+56*u0^5*q^5+4*m^2*u0^5*q^5+O(q^10)); # z9 := -8*m^3*u0^9*q^9*(1+18*u0^5*q^5+O(q^10)); # z10 := 16*m^4*u0^16*q^16*(1+O(q^5)); # z11 := 32*u0^15*q^15*m^4*(-1+O(q^5)); # z12 := 16*m^4*u0^14*q^14*(1+O(q^5)); # z13 := -32*u0^13*q^13*m^4*(1+O(q^5)); # z14 := 16*m^4*u0^12*q^12*(1+O(q^5)); # z15 := m^6*u0^20*O(q^20); # # # So, now assign these: z0 := 1; z1 := 2/3*m*u0^4*q^4*(3+4*m^2*u0^5*q^5+20*u0^5*q^5+72*m^2*u0^10*q^10 +192*u0^10*q^10+v1*q^15); z2 := -2*m*u0^3*q^3*(1+6*u0^5*q^5+56*u0^10*q^10+v2*q^15); z3 := 4/9*m^2*u0^8*q^8*(9-12*m^2*u0^5*q^5+120*u0^5*q^5-272*m^2*u0^10*q^10 +1552*u0^10*q^10+16*m^4*u0^10*q^10+v3*q^15); z4 := -4/3*m^2*u0^7*q^7*(3+4*m^2*u0^5*q^5+38*u0^5*q^5+480*u0^10*q^10 +96*m^2*u0^10*q^10+v4*q^15); z5 := -4*m^2*u0^6*q^6*(-1-12*u0^5*q^5-148*u0^10*q^10+4*m^2*u0^10*q^10 +v5*q^15); z6 := 8*m^3*u0^12*q^12*(1+20*u0^5*q^5+4*m^2*u0^5*q^5+v6*q^15); z7 := -8/3*m^3*u0^11*q^11*(3+8*m^2*u0^5*q^5+58*u0^5*q^5+v7*q^10); z8 := 8/3*m^3*u0^10*q^10*(3+56*u0^5*q^5+4*m^2*u0^5*q^5+v8*q^10); z9 := -8*m^3*u0^9*q^9*(1+18*u0^5*q^5+v9*q^10); z10 := 16*m^4*u0^16*q^16*(1+v10*q^5); z11 := 32*u0^15*q^15*m^4*(-1+v11*q^5); z12 := 16*m^4*u0^14*q^14*(1+v12*q^5); z13 := -32*u0^13*q^13*m^4*(1+v13*q^5); z14 := 16*m^4*u0^12*q^12*(1+v14*q^5); z15 := m^6*v15*u0^20*q^20; # The following is them the P^15 embedding of m*E, as above: zarr := [z0,z1,z2,z3,z4,z5,z6,z7,z8,z9,z10,z11,z12,z13,z14,z15]; ########################################################################### # (4) In this step, we shall use the bilinear forms at: # people.maths.ox.ac.uk/flynn/genus2/jacobian.variety/bilinear.forms # which take any two members a,b of the Jacobian variety in P^15, # and give a square phi_{ij}(a,b) (1 <= i <= 4, 1 <= j <= 4) # of bilinear forms in a,b which give k_i(a-b)*k_j(a+b), # where k_1,k_2,k_3,k_4 are the Kummer coordinates. # Define phi11dd0 := phi11(z,dd0), ...., phi44dd0 := phi44(z,dd0), # Define phi11dd1 := phi11(z,dd1), ...., phi44dd1 := phi44(z,dd1), # Define phi11dd2 := phi11(z,dd2), ...., phi44dd2 := phi44(z,dd2). # Each of these is a power series in m, with coefficients in Z_p # (and the coefficients --> 0 in Z_p). # The condition of ddi + m*E having a point at infinity in the support # corresponds to k_1(ddi + m*E) = 0, and so we may use whichever # we prefer of phi11, phi21, phi31, phi41. # In fact, it turns out to be best to define: # psi0(m) := phi31dd0, psi1(m) := phi31dd1, psi2(m) := phi31dd2. # The following is from: # people.maths.ox.ac.uk/flynn/genus2/jacobian.variety/bilinear.forms # When (a0,..,a15), (b0,..,b15) are two points on the Jacobian # represented wrt the P^15 embedding, then phi41,phi42,phi43,phi44 # gives the image of the sum on the Kummer surface. phi31 := b0*a12-2*a8*b1+2*a7*b2+a5*b3-4*a4*b4+a3*b5+2*b7*a2-2*b8*a1+a0*b12+ 2*f0*a5*b14+2*f6*a10*b3+4*f6*a6*b6+2*f6*b10*a3+f5*b11*a3-2*f5*b10*a4+f5*a11*b3- 2*f5*a10*b4+2*f5*a7*b6+2*f5*a6*b7+2*f4*b12*a3+2*f4*a12*b3+4*f4*a7*b7-4*f2*a8*b8 +2*f2*b12*a5+2*f2*a12*b5-2*f1*a4*b14-2*f1*a8*b9-2*f1*a14*b4-2*f1*a9*b8+f1*b13* a5+2*f0*a14*b5-4*f0*a9*b9+f1*a13*b5+ (4*f0*f2-2*f1**2)*a14*b14+(-4*f0*f6+f1*f5)*a11*b13+(-2*f5**2+4*f4*f6)*a10*b10+4 *f2*f6*a11*b11+2*f3*f6*a10*b11+2*f3*f6*a11*b10+(-4*f0*f6+f1*f5)*a13*b11-2*f5*f0 *a11*b14-2*f5*f0*a14*b11+2*f3*f0*a13*b14+2*f3*f0*a14*b13+f3*f5*a12*b10-2*f1*f6* a13*b10-2*f1*f5*a14*b10+f3*f5*a10*b12+f1*f3*a14*b12-2*f1*f6*a10*b13+4*f0*f4*a13 *b13-2*f1*f5*a10*b14+f1*f3*a12*b14+2*f1*f6*b11*a15+2*f0*f5*b13*a15+2*f1*f6*a11* b15+2*f0*f5*a13*b15+4*f0*f6*a15*b15+(68*f0*f6+8*f1*f5+4*f4*f2)*a12*b12+(2*f1*f4 +8*f5*f0)*a12*b13+(2*f1*f4+8*f5*f0)*b12*a13+(8*f1*f6+2*f2*f5)*b11*a12+(8*f1*f6+ 2*f2*f5)*b12*a11+(16*f0*f6+f1*f5)*a15*b12+(16*f0*f6+f1*f5)*b15*a12 ; # We now fix this for our specific curve. phi31 := subs( f0=ff0, f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5, f6=ff6, phi31); # This gave: # phi31 := -2*a8*b1+2*a7*b2-4*a4*b4+2*b7*a2-2*b8*a1+b0*a12+a5*b3+a3*b5 # +a0*b12+2*t*a5*b14+a13*b5+b13*a5-4*t*a9*b9+2*t*a14*b5-2*a4*b14 # -2*a8*b9-2*a14*b4-2*a9*b8+16*t*b15*a12+68*t*a12*b12+4*t*a15*b15 # +2*b10*a3+4*a6*b6+2*a10*b3+8*b11*a12+8*b12*a11-2*a13*b10 # +2*b11*a15-2*a10*b13+2*a11*b15-2*a14*b14-4*t*a13*b11 # +16*t*a15*b12-4*t*a11*b13; # We now replace [a0,..,a15] with dd0 in phi31: ar := dd0; psi0 := simplify( subs( b0=ar[1], b1=ar[2], b2=ar[3], b3=ar[4], b4=ar[5], b5=ar[6], b6=ar[7], b7=ar[8], b8=ar[9], b9=ar[10], b10=ar[11], b11=ar[12], b12=ar[13], b13=ar[14], b14=ar[15], b15=ar[16], phi31 )); # We now replace [a0,..,a15] with dd1 in phi31: ar := dd1; psi1 := simplify( subs( b0=ar[1], b1=ar[2], b2=ar[3], b3=ar[4], b4=ar[5], b5=ar[6], b6=ar[7], b7=ar[8], b8=ar[9], b9=ar[10], b10=ar[11], b11=ar[12], b12=ar[13], b13=ar[14], b14=ar[15], b15=ar[16], phi31 )); # We now replace [a0,..,a15] with dd2 in phi31: ar := dd2; psi2 := simplify( subs( b0=ar[1], b1=ar[2], b2=ar[3], b3=ar[4], b4=ar[5], b5=ar[6], b6=ar[7], b7=ar[8], b8=ar[9], b9=ar[10], b10=ar[11], b11=ar[12], b12=ar[13], b13=ar[14], b14=ar[15], b15=ar[16], phi31 )); # These gave: # psi0 := a12; # psi1 := -2*a2+2*a3-2*a13; # psi2 := 2*t^2*a2+2*t*a1-2*a9*t-2*a8+8*t*a12 # +2*t*a15+2*t^2*a3+2*a13*t^2+2*a11; # We now replace [a0,...,a15] with [z0,...,z15] the P^15 of m*E. psi0 := factor(subs( t=u0*q, a0=z0, a1=z1, a2=z2, a3=z3, a4=z4, a5=z5, a6=z6, a7=z7, a8=z8, a9=z9, a10=z10, a11=z11, a12=z12, a13=z13, a14=z14, a15=z15, psi0 )); psi1 := factor(subs( t=u0*q, a0=z0, a1=z1, a2=z2, a3=z3, a4=z4, a5=z5, a6=z6, a7=z7, a8=z8, a9=z9, a10=z10, a11=z11, a12=z12, a13=z13, a14=z14, a15=z15, psi1 )); psi2 := factor(subs( t=u0*q, a0=z0, a1=z1, a2=z2, a3=z3, a4=z4, a5=z5, a6=z6, a7=z7, a8=z8, a9=z9, a10=z10, a11=z11, a12=z12, a13=z13, a14=z14, a15=z15, psi2 )); ########################################################################## # (5) We finally define psi0 := phi41dd0; psi1 := phi31dd1; psi2 := phi31dd2; # and to complete the proof, we merely need to show that, # when t = t0, with the conditions described (namely t0 is in Q # and there exists prime p > 5 such that |t0|_p < 1), we have: # (a)' psi0(m) has (for m in Z) only the solution m=0. # (b)' psi1(m) has (for m in Z) only the solution m=0. # (c)' psi2(m) has (for m in Z) only the solutions m=0,-1. psi0 := factor(psi0); psi1 := factor(psi1); psi2 := factor(psi2); # These gave (noting from: # psi0 := z12; # psi1 := -2*z2+2*z3-2*z13; # psi2 := 2*t^2*z2+2*t*z1-2*z9*t-2*z8+8*t*z12 # +2*t*z15+2*z^2*a3+2*z13*t^2+2*z11; # that psi0 has a genuine factor of m^4*u0^14*q^14, # psi1 has a genuine factor of m*u0^3*q^3 # and psi2 has a genuine factor of m*u0^10*q^10): # psi0 := 16*m^4*u0^14*q^14*(1+v12*q^5); # psi1 := 4/9*m*u0^3*q^3*(120*m^3*u0^10*q^10+144*m^3*q^15*u0^10*v13 # +18*q^5*u0^5*m+240*q^10*u0^10*m-544*m^3*u0^15*q^15 # +3104*m*q^15*u0^15+32*m^5*q^15*u0^15+2*m*q^20*u0^5*v3 # +9+54*u0^5*q^5+504*u0^10*q^10+9*v2*q^15); # psi2 := 2/9*u0^5*q^10*m*(9*m^5*q^11*u0^16*v15+64*m^5*q^10*u0^15 # -96*q^5*u0^10*m^4-1088*m^3*q^10*u0^15+288*m^3*q^10*u0^10*v11 # +576*m^3*q^10*u0^10*v12-48*q^5*m^3*u0^10-288*m^3*q^10*u0^10*v13 # +24*u0^5*m^2+72*m^2*q^10*u0^5*v9+384*q^5*u0^10*m^2 # -24*m^2*q^10*u0^5*v8+6208*m*q^10*u0^15+4*m*q^15*u0^5*v3 # +480*q^5*u0^10*m+36*m*u0^5+12*u0^5+144*q^5*u0^10 # -18*q^10*v2+6*q^10*v1); # # These can be expressed as: # psi0 := m^4*u0^14*q^14*(16 + w0*q^5); # psi1 := m*u0^3*q^3*(4 + w1*q^5); # psi2 := (8/3)*m*u0^5*q^10*(u0^5*(m+1)*(2*m+1) + w2*q^5); # These could also be expressed as: # psi0 := m^4*u0^14*q^14*(16 + O(q^5)); # psi1 := m*u0^3*q^3*(4 + O(q^5)); # psi2 := (8/3)*m*u0^5*q^10*(u0^5*(m+1)*(2*m+1) + O(q^5)); # All of these are power series in m, with coefficients in Z_p, # with the coefficients --> 0 in Z_p. # where |w0|_p, |w1|_p, |w2|_p <= 1. # Recall, as always, that |u0|_p = 1. # For psi0, we see that the factor 16 + w0*q^5 gives a power # series in m, whose constant term has | |_p = 1 and all other # coefficients have | |_p < 1, so there are no roots of this factor; # this means that the order-4 root at 0 is the only root of psi0; # So, m=0 is the only root in Z_p and so is the only root in Z. # For psi1, applying the same argument to 4 + w1*q^5, # we see that m=0 is the only root of psi1 in Z_p and so is the only root in Z. # For psi2, we recall that m=0,-1,-1/2 are known roots in Z_p, # so that in fact: # psi2 := (8/3)*u0^5*q^10*m*(m+1)*(2*m+1)*(u0^5 + O(q^5)); # The remaining factor is a power series in m with constant # term with | |_p = 1 (since |u0^5|_p = 1) and all other # coefficients have | |_p < 1, so there are no roots of this factor; # So, m=0,-1,-1/2 give all the roots of psi2 in Z_p, which means # that m=0,-1 are the only roots in Z, as required.