"Source: Text/Geometry/Crv.text";
"Line: 1956";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/Crv.text, line: 1956
// Example: H124E8 ()
print "Example: H124E8";
ei := GetEchoInput();
SetEchoInput(true);
P2<x,y,z> := ProjectiveSpace(Rationals(),2);
A := Curve(P2,x^3-y^2*z-3*x*z^2);
IsNonsingular(A);
assert $1;
B := Curve(P2,x^3-y^2*z-3*x*z^2+2*z^3);
IsNodalCurve(B);
assert $1;
C := Curve(P2,x^3-y^2*z);
#SingularPoints(C) eq 1;
assert $1;
IsCusp(C,SingularPoints(C)[1]);
assert $1;
D := Curve(P2,(x^2+(y-z)^2-z^2)*y);
#PrimeComponents(D) eq 2;
assert $1;
TangentCone(PrimeComponents(D)[1],P2![0,0,1]) in PrimeComponents(D);
assert $1;
E := Curve(P2,x*y*(x-y));
IsOrdinarySingularity(E,P2![0,0,1]);
assert $1;
Multiplicity(E,P2![0,0,1]);
assert $1 eq 3;
F := Curve(P2,x^2*y);
IsReduced(F);
assert not $1;
#SingularPoints(ReducedSubscheme(F)) eq 1;
assert $1;
IsNodalCurve(Curve(ReducedSubscheme(F)));
assert $1;
G := Curve(P2,x^3);
IsReduced(G);
assert not $1;
IsNonsingular(ReducedSubscheme(G));
assert $1;
curves := [* A,B,C,D,E,F,G *];
[LogCanonicalThreshold(curve) : curve in curves];
SetEchoInput(ei);
