Let $X = \operatorname{Spec} k[x_1,\ldots,x_n]/I$ be an affine variety of dimension $d$. By definition the singular locus of $X$ is the locus of points of $X$ where the rank of the Jacobian matrix is $< n - d$.

In theory the singular locus is easy to compute: its ideal is generated by $I$ and all the $(n - d) \times (n - d)$ minors of the Jacobian.

In practice, computing the singular locus can be infeasible. For instance, suppose $X \subset \mathbf{A}^{12}$ is a dimension $4$ variety defined by $18$ equations. (Let us assume this is a minimal number of equations for $X$.) The the Jacobian is an $18 \times 12$ matrix, and one must compute all the $8 \times 8$ minors of this matrix, of which there are over $21$ million! Even a computer will struggle greatly with this task.

Are there any known algorithms or techniques for getting a handle on the singularities of $X$ when faced with such a computationally difficult situation?


1 Answer 1


There's a package in the Macaulay2 build tree and the latest version of M2, FastLinAlg, which can affirmatively check that a variety is nonsingular, or for instance Rn (or R1, if you are trying to verify it is normal). This just computes some of the minors (in a somewhat smart way). This works surprisingly well in the examples I've tried. Frankly, I'd love to try it on your example.

If you email me, I can send you an in-development version of the package which probably has some improvements over that version.

If you want to verify a particular point is nonsingular of course, just plug in the point into that Jacobian matrix and compute the rank.

In characteristic 2, there are some other tricks that might be reasonable in speed related to Kunz' criterion for regularity. Other things I've tried related to this question all seem to boil down to the same determinants unfortunately.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy