> |
read `/Users/kuwata/Documents/ESC/ESC.mpl`; |
> |
interface(typesetting=standard); |
|
(1) |
Examples S[1],...,S[6] are taken from the paper by A. Beauville, "Les familles stables de courbes elliptiques
sur P1 admettant quatre fibres singulières", C. R. Acad. Sc. Paris, t. 294 (1982), pp. 657–660.
> |
S[1]:=x*(x-z)*(y-z) + t*z*y*(x-y); |
"Cubic_to_Weierstrass(equation, point)" converts a homogeneous cubic equation in x,y,z with a given
rational point. If point is omitted, [0,1,0] is used.
> |
Ell[1]:=Cubic_to_Weierstrass(S[1]); |
"Elliptic_surface" takes as arguments either homogenous Weierstrass equation of the form Y^2Z - X^3 -..., or
a sequence a_1, a_2, a_3, a_4, a_6. (see the last example.)
> |
Elliptic_surface(Ell[1]); |
"Show_data" shows the data of the current elliptic surface. Indivisual data can be viewed by "Show(datum)",
where 'datum' can be 'curve', 'Disc', 'j', 'pg', 'a', 'b', 'c', 'bad_fibers'
Note that in order to avoid accidental collision of variables, variables such as 'j', 'a', etc., are protected. Use
"Show" to get an access to these variables.
"Trcw" transforms the coordinates of a point on the cubic curve to those of a point on the Weierstrass form,
using the transformation given by "Cubic_to_Weiestrass".
> |
P[1,1]:=Trcw(Ell[1],[0,0,1]); |
Check if the point P[1,1] is on the curve or not.
"×" compute the multiplication of a point by an integer. Used e.g. "3 × [x,y]".
> |
for n from 1 to 5 do n × P[1,1]; od; |
Also defined: addition "&plus" or "&++" , subtraction "&minus" or "&--", take the inverse "&neg".
Examples come later.
> |
S[2]:=(y+z)*(z+x)*(x+y) + t*x*y*z; |
> |
P[2,1]:=Trcw(Ell[2],[0,0,1]); |
> |
for n from 1 to 3 do n × P[2,1]; od; |
> |
factor(rhs(Show(curve))); |
> |
P[2,2]:=[solve(op(1,%),x),0]; |
> |
P[2,3]:=P[2,1] &plus P[2,2]; |
> |
for n from 1 to 6 do n × P[2,3]; od; |
> |
S[3]:=x^3 + y^3 + z^3 +3*t*x*y*z; |
Error, (in step0) [0,1,0] is not on the curve! |
You need to specify a rational point!
> |
Ell[3]:=CtoW(S[3],[1,-1,0]); |
> |
Elliptic_surface(Ell[3]); |
> |
P[3,1]:=Trcw(Ell[3],[0,-1,1]); |
If you use an algebraic number using "RootOf" notation most of the functions work without problems.
> |
alias(omega=RootOf(z^2+z+1)); |
> |
P[3,2]:=Trcw(Ell[3],[-omega,1,0]); |
Parameter t is changed so that Ell[3] and Ell[4] are isogenus.
> |
S[4]:=(t+1)*(x^2*y +y^2*z + z^2*x) + 3*(-t+2)*x*y*z; |
> |
Elliptic_surface(Ell[4]); |
> |
P[4,1]:=Trcw(Ell[4],[1,0,1]); |
> |
Is_on(Trcw(Ell[4],[1,0,1])); |
> |
for n from 1 to 3 do n × P[4,1]; od; |
> |
S[5]:=x*(x^2 + z^2 + 2*z*y) + t*z*(x^2 - y^2); |
> |
Elliptic_surface(Ell[5]); |
> |
P[5,1]:=Trcw(Ell[5],[-1,-1,1]); |
> |
for n from 1 to 4 do n × P[5,1] od; |
> |
factor(rhs(Show(curve))); |
> |
S[6]:=(x+y)*(x*y - z^2) -4*t*x*y*z; |
> |
Elliptic_surface(Ell[6]); |
> |
P[6,1]:=Trcw(Ell[6],[1,-1,0]); |
> |
for n from 1 to 4 do n × P[6,1] od; |
> |
y^2-x^3-t^2*(-3*t^2+48*t-48)*x-t^3*(2*t^3+60*t^2-192*t+128); |
> |
Elliptic_surface(Homogenize(%)); |
> |
y^2 - ( x^3-12*t^3*(4*t-3)*x-16*t^5*(8*t-9) ); |
> |
Elliptic_surface(Homogenize(%)); |
> |
y^2 - ( x^3-3*t^3*(3^2*t-2^3)*x+t^4*(2*3^3*t^2-2^3*3^2*t+1/12*2^6*3) ); |
> |
Elliptic_surface(Homogenize(%)); |
> |
y^2 - ( x^3+(-3*t^2*d^2+3*t*d^2-3*d^2)*x+2*d^3*t^3-3*d^3*t^2-3*d^3*t+2*d^3 ); |
> |
Elliptic_surface(Homogenize(%)); |
> |
y^2-x^3-3*(-t^2+16*t-16)*x-2*(t-2)*(t^2+32*t-32); |
> |
Elliptic_surface(Homogenize(%)); |
> |
y^2 - ( x^3+A*(t^2*a+b)^2*x+B*(t^2*a+b)^3 ); |
> |
Elliptic_surface(Homogenize(%)); |
> |
y^2+2*(27*t^2*d+12*t^2+12*t+4*t^3+4)*y-x^3+6*(t+1)*x*y ; |
> |
Elliptic_surface(Homogenize(%)); |
> |
alias(alpha=RootOf(-27*d^2*_Z^2-54*d*_Z^4-27*_Z^6-4*d^2*(d+1))); |
> |
P := [-1/16*(3*d^2+18*d*alpha^2-8*d+27*alpha^4-36*alpha^2+16)*(4*d*t^2+(24*d^2+8*d-18*d*alpha^2-27*alpha^4)*t-12*d^2+4*d-45*d*alpha^2-27*alpha^4)/(d*(d+1)), -1/1024*(36*d^4+27*alpha*d^4-124*d^3+216*d^3*alpha^2-54*alpha*d^3+162*alpha^3*d^3+324*d^2*alpha^4+648*d^2*alpha+243*d^2*alpha^5-216*d^2*alpha^3-32*d^2-216*d^2*alpha^2+324*d*alpha^4+128*d+162*d*alpha^5-432*d*alpha^2+1080*d*alpha^3+648*alpha^5)*(-64*d*t^3+12*(-48*d^2+36*d^2*alpha+135*d*alpha^3+81*alpha^5-16*d-12*d*alpha+54*alpha^4+36*d*alpha^2)*t^2+3*(972*alpha^5+504*d*alpha^2-64*d-96*d*alpha+972*alpha*d^3+2187*d*alpha^5+486*d*alpha^4+324*d^2*alpha^2+108*d^2*alpha+3645*d^2*alpha^3-432*d^3+1620*d*alpha^3-240*d^2+432*alpha^4)*t-64*d+648*d^3+72*d^2+1944*alpha^5+1080*d*alpha^2+2160*d^2*alpha+4212*d*alpha^3-144*d*alpha+2430*d^2*alpha^2+1458*d*alpha^4+648*alpha^4)/(d^2*(d+1)^2)]; |
> |
# Bug/Limitation!!! As a matter of fact, h(P) = 1/3
Height(P); |
> |
Elliptic_surface(0,2*t,0,0,1); |
> |
for n from 1 to 12 do sort(denom(op(2,n × [0,1]))/denom(op(1,n × [0,1])),t) od; |
Ellptic surface of Hoyt-Schwartz.
> |
y^2 - t*(t-1)*(t-c)*x*(x-1)*(x-t); |
> |
HS:=CtoW(Homogenize(%)); |
> |
HS2:=Homogenize(subs({t=s^2},lhs(Show(curve))-rhs(Show(curve)))); |
The following result is false; The equation is not minimal, but "Calculate_bad_fibers" doesn't check it.
Bug fix is in progress.
A work around is to use "Cubic_to_Weierstrass" to obtain a minimal equation.