"Source: Text/Geometry/Crv.text";
"Line: 2800";
"Date: Thu May 12 11:26:16 2022";
"Main: Thu May 25 10:02:38 2023";
// original file: Text/Geometry/Crv.text, line: 2800
// Example: H121E18 ()
print "Example: H121E18";
ei := GetEchoInput();
SetEchoInput(true);
Puvw<u,v,w>:=ProjectiveSpace(Rationals(),2);
Pxyz<x,y,z>:=ProjectiveSpace(Rationals(),2);
D:=Curve(Puvw,u^4+v^4-w^4);
C:=Curve(Pxyz,x^4-y^4+y^2*z^2);
phiAmb:=map<Puvw->Pxyz|[y*z,z^2,x^2]>;
phi:=Restriction(phiAmb,D,C);
KC:=FunctionField(C);
KD:=FunctionField(D);
Omega:=BasisOfHolomorphicDifferentials(C)[1];
IsEffective(Divisor(Pullback(phi,Omega)));
assert $1;
RamificationDivisor(phi) eq
    Divisor(Pullback(phi,Omega))-Pullback(phi,Divisor(Omega));
assert $1;
2*Genus(D)-2 eq Degree(phi)*(2*Genus(C)-2)+Degree(RamificationDivisor(phi)); 
assert $1;
f:=KC.1;
Pushforward(phi,Pullback(phi,f)) eq f^Degree(phi);
assert $1;
g:=KD.1;
Divisor(Pushforward(phi,g)) eq Pushforward(phi,Divisor(g));
assert $1;
SetEchoInput(ei);
