The first chunk of code carries out the calculation
of the tau-function in the case of a degree 1
rational point, demonstrating that you do indeed
get g_2 and g_3 by calculating the tau-function.
The second chunk of code carries out the
calculation of the tau-function in the case
of y^2=a*x^4+4*b*x^3+6*c*x^2+4*bprime*x+aprime,
demonstrating that you get Hermite's famous
invariants of binary biquadratic forms as
g_2 and g_3, as was pointed out by Weil in
his paper on those invariants.
------------------------------------------
restart;
with(linalg):
readlib(coeftayl):
A:=matrix(7,14):
for i from 2 to 6 by 2 do for j from 1 to 14 do if i<>j then A[i,j]:=0
else A[i,j]:=1 fi; od: od:
for j from 1 to 14 do if j<>8 then A[7,j]:=0
else A[7,j]:=1 fi: od: for i from 1 to 5 by 2 do for j from 1 to 14 do
if j*i and
irem(j-i,2)=0 then A[i,j]:=a[(j-i)/2] fi: od: od:
print(A);
X:=matrix(28,28,0):
for i from 1 to 13 do X[2*i+1,2*i]:=x/2 od: for i from 1 to 13 do
X[2*i+2,2*i-1]:=a*x/2 od: print(X);
B:=matrix(28,14,0);
Y:=matrix(28,14,0); for i from 1 to 14 do Y[i,i]:=1; od:
for i from 0 to 7 do B:= matadd(B,scalarmul(Y,1/i!)); Y:=multiply(X,Y);
od: print(B);
SAVE:=rem(det(multiply(A,B)),x^8,x); tau:=SAVE;
for i from 1 to 7 do
tau:=subs(a[i]=coeftayl((1+4*b*t/a+6*c*t^2/a+4*bprime*t^3/a+aprime*t^4/a)^(1/2),t=0,i),tau)
od:
tau:=collect(simplify(tau),x); extract:=proc(tau)
local alpha, result,alphapower,i;
alpha:=-1+quo(tau,x,x)/subs(x=0,diff(tau,x));
result:=0; alphapower:=1;
for i from 1 to 7 do
alphapower:=rem(alphapower*alpha,x^8,x);
result:=result+(-1)^(i+1)*alphapower/i;
od;
1/x^2-diff(result,x,x);
end;
wp:=collect(extract(tau),x,simplify);
*