"Source: Text/Geometry/Crv.text";
"Line: 2800";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/Crv.text, line: 2800
// Example: H124E18 ()
print "Example: H124E18";
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);
