# Updated on 15 June 1999, to be compatable with Maple V.5
# Appl.pro
# An application
# This program makes use of the formulae and procedures constructed
# in the programs Kummer to check the results of Section 6
# of Chapter 3, "The Kummer surface", in the book
# "Progelomana to a middlebrow arithmetic of curves of genus 2".
# by J.W.S. Cassels and E.V. Flynn (Cambridge University Press, 1996)
# We consider a special curve with coefficients
f6:=1;f5:=-1;f4:=3; f3:=-5;f2:=0;f1:=-10;f0:=16;
# Note that the corresponding F(X) takes the square values
# 36,16,4,36 at -1,0,1,2 respectively.
# We now bring back the formulae we need.
# MAPLE automatically makes the above substitutions for the fj
# in the formulae
interface(quiet=true): # cut the echo to screen
read `Kit.sav`: # produced already by the program Kummer.pro
interface(quiet=false): # restores the normal echo
# We first compute the xi coordinates of some divisors on the curve.
# First of {(-1,6),(0,-4)}
TT:=Coord(-1,6,0,-4);
op(TT);
# Again consider the divisor {(1,2),(2,-6)}
SS:=Coord(1,2,2,-6):
op(SS);
# Check that they do indeed lie on the Kummer
Kum(TT);
Kum(SS);
# Both should be 0
# Next check the doubling program
DDD:=Double(TT);
op(DDD);
# There is a common factor, but we do not bother to take it out.
# check that we are on the Kummer
Kum(DDD);
# should be 0
# Now compute the corresponding bilinear form
Ory:=Bilin(TT,SS):
op(Ory);
# By construction the elements of Ory should be (ai*bj+aj*bi)/2,
# where the ai and the bi are the Kummer coordinates of the
# sum and difference (but we don't know which is which). It is
# easy to devise a general procedure for finding the ai and the bi.
# In this case we get
PP:=[0,11,17,99];
QQ:=[24,31,-7,303];
# We check that they are actually on the Kummer
Kum(PP);
Kum(QQ);
# Here the support of PP is a rational point at infinity and
# a rational point with X=17/11. Check that there is such a rational
# point by substituting in FX
subs(X=17/11,FX);
ifactor(%);
# so it is a rational square
# But the support of QQ is a pair of conjugate points over
# a quadratic field . Check
Om:=RootOf(s^2=1633,s);
unprotect(Psi): # Clears reserved word Psi for use as a variable.
Psi:=(31+Om)/48;
simplify(24*Psi^2-31*Psi-7);
# So one of the conjugate points has X=Psi. Substitute in FX. We should
# get a square
Lam:=simplify(subs(X=Psi,FX));
# factor the denominator
ifactor(382205952);
# So twice the denominator is a square
# multiply by this square
Lama:=2*382205952*Lam;
# Take out the square 25
Lamb:=Lama/25;
# If this is a square, it is a multiple of (T-sqrt1633)^2 for some T
solve(71377625*(T^2+1633)-2*3996438025*T=0);
# Look at the two values of T in turn
simplify((28897-305*Om)^2);
# Only a non-square rational multiple of Lamb, so no good for us.
# So look at the other value of T
simplify((7015-407*Om)^2);
# Is equal to Lamb