P<t,u>:=PolynomialRing(Rationals(),2);

Q:=FieldOfFractions(P);

R<x>:=PolynomialRing(Q);

 

 

a:=(t-u)*(t^3*u + t^2*u^2 + t*u^3 - 6*t*u + 3);

q:=(x-1)^3*(x+3);

r:=(x+1)^3*(x-3);

 

f:=a*(u*x^2-t)*(Evaluate(q,u)*x^2-Evaluate(q,t))*(Evaluate(r,u)*x^2-Evaluate(r,t));

//Check that factors of discriminant are as claimed

Factorization(Numerator(Discriminant(f)));

 

 

//Check that E_1 is isomorphic to E_t

f_t:=x*(x-Evaluate(q,t))*(x-Evaluate(r,t));

E_t:=EllipticCurve(f_t);

 

f1:=-a*(t*x-u)*(Evaluate(q,t)*x-Evaluate(q,u))*(Evaluate(r,t)*x-Evaluate(r,u));

//Magma wants the polynomial in x to be monic so we make a change of variables

a0:=Coefficient(f1,3);

f1:=Evaluate(f1,a0*x)/a0^4;

E1:=EllipticCurve(f1);

IsIsomorphic(E1,E_t);

//outputs true

 

//Check that E_2 is isomorphic to E_u  (or could just note it’s true by symmetry in t and u)

 

 

f_u:=x*(x-Evaluate(q,u))*(x-Evaluate(r,u));

E_u:=EllipticCurve(f_u);

 

f2:=a*(u*x-t)*(Evaluate(q,u)*x-Evaluate(q,t))*(Evaluate(r,u)*x-Evaluate(r,t));

a0:=Coefficient(f2,3);

f2:=Evaluate(f2,a0*x)/a0^4;

E2:=EllipticCurve(f2);

IsIsomorphic(E2,E_u);

//outputs true