I have to correct my answer given above, but first to your question:
Proposition: Supposed f has isolated singularities, then it holds
Tjurina number <= Milnor number
The Milnor number and Tjurina number are the same
if and only if the polynomial is weighted homogenoues.
In this case the origin is the only singular point.
Proof-sketch: The inclusion of the ideals
(*) M:=<df/dx,df/dy,df/dz> \subseteq <df/dx,df/dy,df/dz,f> =:T
give the reverser relation dim C[[x,y,z]]/T <= dim C[[x,y,z]]/M,
which is, by definition, the relation between Tjurina and Milnor number.
For the "equation" statemet: the "if part" follows from the Euler-equation,
the the "only if part" is due to K. Saito.
\qedNote also that local Tjurina and Milnor numbers add to the global ones
For a bit more details see for instance Prop. 3.6 in Rossi and Terracinis article and the references therein:
http://arxiv.org/abs/0809.4345 (The examples I metioned above are, up to the nonzero constant term, are weighted homogenous.)
// ------------------------------
Now to the error: The command tjurina is not the right one for your problem,
in case that the Milnor and Tjurina number does not coincide.
At the end you can forget about the term "tjurina" number, but I will
show what you have to do instead.
Take a look at equation (*):
We have put the equation f into the ideal on the right hand side,
for the reason to select those singular points which are lying
on the curve f==0. The problem is, that this additional equation
may give new restrictions for the multpilicity.
So what we have do instead, it to replace f by f^k, where k is a
sufficintly large integer k>=1 such that f^k in contained in the
ideal <df/dx,df/dy,df/dz>.
(This check, passing through al loop, can be done by Groebner basis computation.
Call reduce(f^k,std(J))==0.)
Once we have found a suitable exponent k, the singular points from
the curve f=0, are selected in the same way by the equation f^k
but f^k it will not affect the multplicity.
I have constructed an example with the following properties:
1.) The Milnor and Tjurina number are not the same,
2.) there are five singular points which are all rational,
3.) there are three singular fibres,
4.) the zero fibre has two singular points.
Code:
> LIB "sing.lib";
> ring rds = 0,(x,y),ds; // local computations
> poly f = (x2-y2)^3 -2x7+x8;
> ideal J = jacob(f);
> milnor(f);
29
> tjurina(f); // it is strict less than the Milnor number
26
> // There are at least (in fact there are exactly, see below)
// two singular points on the curve f = 0
// The origin with lokal Milnor number 29
> subst(f,x,0,y,0);
0
> subst(J,x,0,y,0);
_[1]=0
_[2]=0
> // and the point (x,y) = (1,0)
subst(J,x,1,y,0);
_[1]=0
_[2]=0
> subst(f,x,1,y,0);
0
> // We want to compute the local Milnor number at this point
// Make a linear coordinate change such that the
// singular point (1,0) becomes the origin
> poly g = subst(f,x,x+1);
> milnor(g); // this second singular point is an ordinary node
1
Now, if the command
tjurina was the correct method to determine
the sum of the local Milnor numbers, it should give an result >=30 for a computation w.r.t. global ordering.
Code:
> ring rdp = 0,(x,y),dp;
> poly f = fetch(rds,f);
> milnor(f);
// This is the sum of all local Milnor numbers lying on differnt fibres,
// but not the sum of local Milnor numbers on f==0, since there are
// further singular points not on f=0.
35
> tjurina(f); // recall, this computation does vdim(std(jacob(f)+f))
27
As 27< 30, we see that
tjurinadoes not give the correct result concerning
the sum of local Milnor numbers on the curve f = 0.
What we have to do is consider higher powers of f
Code:
> ideal J = jacob(f);
> ideal I = J,f^2;
> vdim(std(I)); // This is what wanted to get.
30
> vdim(std(J+f^3)); // Higher powers certainly work as well
30
It remains to explain, how to find the sufficent large exponent.
To be continued...
In the meantime, try to find out what I have claimed about the
singular points and fibres of this polynomial.