I haven't found a command to calculate the modality of a singular point.
In some simple cases this can be done by running classify(f);
Guess this works for some lowest cases only.
But it does not recognize (??) e.g. the case (x^5+y^6)
Computing the modality is a non-trivial task and there is no general algorithm available besides the classification, except for plane curve singularities. Moreover, we have to distinguish the modality for right- and contact-equivalence (the latter is even more complicated than the first).
For curve singularities we can compute the right-modality with the help of an embedded resolution, cf.
G.-M. Greuel, C. Lossen, E. Shustin: Introduction to Singularities and Deformations. Springer Verlag, Berlin, Heidelberg, New York (2006), p. 373, Remarks and Exercises.
Or by the algorithm developed in
A. Campillo, G.-M. Greuel, C. Lossen: Equisingular Calculations for Plane Curve Singularities. J. Symb. Comput. 42 (2007), 89-114.
The latter is implemented in Singular in equising.lib.
If mod denotes the right modality of an isolated hypersurface singularity f then mod = dimension of the mu-constant stratum of f in the base of the semiuniversal deformation of f, where mu is the Milnor number of f.
Hence, if f is semi-quasihomogeneous or Newton-nondegenerate, it can be computed with the help of the Newton diagram of f.
A discussion of this with examples about how to use the SINGULAR library equising.lib to compute the modality or, equivalently, the codimension tau_es of the mu-constant stratum for arbitrary plane curve singularities can be found at the above mentioned place too.
Example:
LIB "equising.lib";
ring r = 0,(x,y),ds;
poly f = x5+y6;
milnor(f) - tau_es(f);
// -> 3 i.e. the right-modality is 3
(printlevel = 1; shows additional information)
[/quote]
The command
poly f = (x2+y2)*(y2-(x-y)^3)*(x^3+y9);
tau_es(f);
returns: tau_es(f)=37
while the command
poly f = ((x+y)^2+y2)*(y2-x3)*((x+y)^3+y9);
tau_es(f);
returns: tau_es(f)=23
note, however, that the polynomials differ by just a linear change of variables x->x+y
A bug in Singular?
Indeed, this is a bug. :(
It will (hopefully) be fixed in the next version of SINGULAR.
So far tau_es works only correct in the Newton nondegenerate case.
get a new version of the library hnoether.lib
from
ftp://www.mathematik.uni-kl.de/pub/Math ... oether.libThis should solve this issue.
Hans Schoenemann