The function checks for smoothness with the jacobian criterion. So in a first step, we check for associated points. In case of n > 3 we project to P3 from the center defined by the first 4 variables of the coordinate ring of Pn. Then we check for smoothness of the projected curve. We might be unluck that the projection introduces a singularity as in the example of i17-o19 below.
i1 : kk=ZZ/101;S=kk[x_0..x_2]; |
i3 : C=ideal(x_0^2,x_0*x_1);isSmoothCurve C o3 : Ideal of S there are associated points o4 = false |
i5 : C=ideal(x_0*x_2^2-x_1^3);isSmoothCurve C o5 : Ideal of S o6 = false |
i7 : S=kk[x_0..x_3]; |
i8 : C=intersect(ideal(x_0,x_1), ideal( x_1,x_2,x_3)) o8 = ideal (x , x x , x x ) 1 0 3 0 2 o8 : Ideal of S |
i9 : isSmoothCurve C there are associated points o9 = false |
i10 : C=ideal(x_0,x_1*x_2);isSmoothCurve C o10 : Ideal of S o11 = false |
i12 : S=kk[x_0..x_4] o12 = S o12 : PolynomialRing |
i13 : C=ideal(x_0,x_1,x_2*x_3);isSmoothCurve C o13 : Ideal of S bad projection center o14 = false |
i15 : C=ideal(x_4,x_1,x_2*x_3);isSmoothCurve C o15 : Ideal of S o16 = false |
i17 : m=matrix{{x_0,x_4,x_2,x_3},{x_4,x_2,x_3,x_1}} o17 = | x_0 x_4 x_2 x_3 | | x_4 x_2 x_3 x_1 | 2 4 o17 : Matrix S <--- S |
i18 : C=minors(2,m);isSmoothCurve C o18 : Ideal of S o19 = false |
i20 : C=minors(2,random(S^2,S^{4:-1}));isSmoothCurve C o20 : Ideal of S o21 = true |