"Source: Text/Geometry/AlgSrf.text";
"Line: 3680";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/AlgSrf.text, line: 3680
// Example: H126E18 ()
print "Example: H126E18";
ei := GetEchoInput();
SetEchoInput(true);
P4<x,y,z,t,u> := ProjectiveSpace(Rationals(),4);
S := Surface(P4,[z^2+x*t-y*t-z*u, x*z-y*z+x*u]);
HasOnlySimpleSingularities(S : ReturnList := true);
dsds := ResolveSingularSurface(S);
L1 := Scheme(P4,[x,y,z]);
L2 := Scheme(P4,[x-y,z,u]);
MultiplicitiesAndIntersections(S,L1);
MultiplicitiesAndIntersections(S,L2);
D := Divisor(S,L1)+Divisor(S,L2)+Divisor(S,Scheme(S,x));
rr_fns := RiemannRochBasis(D);
#rr_fns; // too large by one
den := LCM([Denominator(f): f in rr_fns]);
den;
B := [R!(den*f) : f in rr_fns] where R is CoordinateRing(P4);
ms := Multiplicities(S,Scheme(S,den)); ms;
B1 := LinearSystemDivisorRestriction(S,B,ms);
#B1; // too small by 5!
D := Divisor(S,L1)+Divisor(S,L2)+Divisor(S,Scheme(S,x+t));
rr_fns := RiemannRochBasis(D);
#rr_fns; // too large by one again
den := LCM([Denominator(f): f in rr_fns]);
den;
B := [R!(den*f) : f in rr_fns] where R is CoordinateRing(P4);
ms := Multiplicities(S,Scheme(S,den)); ms;
B1 := LinearSystemDivisorRestriction(S,B,ms);
#B1; // correct!
P6<a,b,c,d,e,f,g> := ProjectiveSpace(Rationals(),6);
bdmp := map<S->P6|B1>;
X := Image(bdmp);
MinimalBasis(Ideal(X));
Degree(X);
ChernNumber(X,1); //K^2 for X
SetEchoInput(ei);
