1 | LIB "tst.lib"; tst_init(); |
---|
2 | ring r=0,(x,y,z),ds; |
---|
3 | ideal i=x^4-y*z^2,x*y-z^3,y^2-x^3*z; // the space curve singularity |
---|
4 | qhweight(i); |
---|
5 | // The given space curve singularity is quasihomogeneous. Hence we can pass |
---|
6 | // to the polynomial ring. |
---|
7 | ring rr=0,(x,y,z),dp; |
---|
8 | ideal i=imap(r,i); |
---|
9 | resolution ires=mres(i,0); |
---|
10 | ires; |
---|
11 | // From the structure of the resolution, we see that the Cohen-Macaulay |
---|
12 | // type of the given singularity is 2 |
---|
13 | // |
---|
14 | // Let us now look for the branches using the primdec library. |
---|
15 | LIB "primdec.lib"; |
---|
16 | primdecSY(i); |
---|
17 | def li=_[2]; |
---|
18 | ideal i2=li[2]; // call the second ideal i2 |
---|
19 | // The curve seems to have 2 branches by what we computed using the |
---|
20 | // algorithm of Shimoyama-Yokoyama. |
---|
21 | // Now the same computation by the Gianni-Trager-Zacharias algorithm: |
---|
22 | primdecGTZ(i); |
---|
23 | // Having computed the primary decomposition in 2 different ways and |
---|
24 | // having obtained the same number of branches, we might expect that the |
---|
25 | // number of branches is really 2, but we can check this by formulae |
---|
26 | // for the invariants of space curve singularities: |
---|
27 | // |
---|
28 | // mu = tau - t + 1 (for quasihomogeneous curve singularities) |
---|
29 | // where mu denotes the Milnor number, tau the Tjurina number and |
---|
30 | // t the Cohen-Macaulay type |
---|
31 | // |
---|
32 | // mu = 2 delta - r + 1 |
---|
33 | // where delta denotes the delta-Invariant and r the number of branches |
---|
34 | // |
---|
35 | // tau can be computed by using the corresponding procedure T1 from |
---|
36 | // sing.lib. |
---|
37 | setring r; |
---|
38 | LIB "sing.lib"; |
---|
39 | T_1(i); |
---|
40 | setring rr; |
---|
41 | // Hence tau is 13 and therefore mu is 12. But then it is impossible that |
---|
42 | // the singularity has two branches, since mu is even and delta is an |
---|
43 | // integer! |
---|
44 | // So obviously, we did not decompose completely. Because the first branch |
---|
45 | // is smooth, only the second ideal can be the one which can be decomposed |
---|
46 | // further. |
---|
47 | // Let us now consider the normalization of this second ideal i2. |
---|
48 | LIB "normal.lib"; |
---|
49 | normal(i2); |
---|
50 | def rno=_[1][1]; |
---|
51 | setring rno; |
---|
52 | norid; |
---|
53 | // The ideal is generated by a polynomial in one variable of degree 4 which |
---|
54 | // factors completely into 4 polynomials of type T(2)+a. |
---|
55 | // From this, we know that the ring of the normalization is the direct sum of |
---|
56 | // 4 polynomial rings in one variable. |
---|
57 | // Hence our original curve has these 4 branches plus a smooth one |
---|
58 | // which we already determined by primary decomposition. |
---|
59 | // Our final result is therefore: 5 branches. |
---|
60 | tst_status(1);$ |
---|