"Source: Text/Geometry/Toric.text";
"Line: 3417";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/Toric.text, line: 3417
// Example: H129E23 ()
print "Example: H129E23";
ei := GetEchoInput();
SetEchoInput(true);
A := ProjectiveSpace(Rationals(),[1,2,5,6]);
IsCanonical(A);
assert not $1;
V0,f0 := Resolution(A);
V0;
raysOverA := func< W |
    [ <i,TypeOfContraction(W,i)> :
             i in [1..#ExtremalRays(W)] |
    IsRegular(ToricVarietyMap(ExtremalRayContraction(W,i),A)) ] >;
raysOverA(V0);
V1 := ExtremalRayContraction(V0,1);
raysOverA(V1);
V2 := ExtremalRayContraction(V1,1);
raysOverA(V2);
V3 := ExtremalRayContraction(V2,2);
raysOverA(V3);
V4 := ExtremalRayContraction(V3,2);
raysOverA(V4);
V5<[w]> := ExtremalRayContraction(V4,2);
assert #raysOverA(V5) eq 0;
V5;
IsTerminal(V5);
assert $1;
weakraysOverA := func< W |
    [ <i,TypeOfContraction(W,i : inequality:="weak")> :
                 i in [1..#ExtremalRays(W:inequality:="weak")] |
 IsRegular(ToricVarietyMap(ExtremalRayContraction(W,i:inequality:="weak"),A))]>;
weakraysOverA(V5);
V6<[u]> := ExtremalRayContraction(V5,2 : inequality:="weak");
assert #weakraysOverA(V6) eq 0;
V6;
IsTerminal(V6);
assert not $1;
IsCanonical(V6);
assert $1;
SetEchoInput(ei);
