| ring r=0,(x,y,z),ds;
ideal i=x^4-y*z^2,x*y-z^3,y^2-x^3*z; // the space curve singularity
qhweight(i);
→ 1,2,1
// The given space curve singularity is quasihomogeneous. Hence we can pass
// to the polynomial ring.
ring rr=0,(x,y,z),dp;
ideal i=imap(r,i);
resolution ires=mres(i,0);
ires;
→ 1 3 2
→ rr <-- rr <-- rr
→
→ 0 1 2
→
// From the structure of the resolution, we see that the Cohen-Macaulay
// type of the given singularity is 2
//
// Let us now look for the branches using the primdec library.
LIB "primdec.lib";
primdecSY(i);
→ [1]:
→ [1]:
→ _[1]=z3-xy
→ _[2]=x3+x2z+xz2+xy+yz
→ _[3]=x2z2+x2y+xyz+yz2+y2
→ [2]:
→ _[1]=z3-xy
→ _[2]=x3+x2z+xz2+xy+yz
→ _[3]=x2z2+x2y+xyz+yz2+y2
→ [2]:
→ [1]:
→ _[1]=x-z
→ _[2]=z2-y
→ [2]:
→ _[1]=x-z
→ _[2]=z2-y
def li=_[2];
ideal i2=li[2]; // call the second ideal i2
// The curve seems to have 2 branches by what we computed using the
// algorithm of Shimoyama-Yokoyama.
// Now the same computation by the Gianni-Trager-Zacharias algorithm:
primdecGTZ(i);
→ [1]:
→ [1]:
→ _[1]=z8+yz6+y2z4+y3z2+y4
→ _[2]=xz5+z6+yz4+y2z2+y3
→ _[3]=-z3+xy
→ _[4]=x2z2+xz3+xyz+yz2+y2
→ _[5]=x3+x2z+xz2+xy+yz
→ [2]:
→ _[1]=z8+yz6+y2z4+y3z2+y4
→ _[2]=xz5+z6+yz4+y2z2+y3
→ _[3]=-z3+xy
→ _[4]=x2z2+xz3+xyz+yz2+y2
→ _[5]=x3+x2z+xz2+xy+yz
→ [2]:
→ [1]:
→ _[1]=-z2+y
→ _[2]=x-z
→ [2]:
→ _[1]=-z2+y
→ _[2]=x-z
// Having computed the primary decomposition in 2 different ways and
// having obtained the same number of branches, we might expect that the
// number of branches is really 2, but we can check this by formulae
// for the invariants of space curve singularities:
//
// mu = tau - t + 1 (for quasihomogeneous curve singularities)
// where mu denotes the Milnor number, tau the Tjurina number and
// t the Cohen-Macaulay type
//
// mu = 2 delta - r + 1
// where delta denotes the delta-Invariant and r the number of branches
//
// tau can be computed by using the corresponding procedure T1 from
// sing.lib.
setring r;
LIB "sing.lib";
T_1(i);
→ // dim T_1 = 13
→ _[1]=gen(6)+2z*gen(5)
→ _[2]=gen(4)+3x2*gen(2)
→ _[3]=gen(3)+gen(1)
→ _[4]=x*gen(5)-y*gen(2)-z*gen(1)
→ _[5]=x*gen(1)-z2*gen(2)
→ _[6]=y*gen(5)+3x2z*gen(2)
→ _[7]=y*gen(2)-z*gen(1)
→ _[8]=2y*gen(1)-z2*gen(5)
→ _[9]=z2*gen(5)
→ _[10]=z2*gen(1)
→ _[11]=x3*gen(2)
→ _[12]=x2z2*gen(2)
→ _[13]=xz3*gen(2)
→ _[14]=z4*gen(2)
setring rr;
// Hence tau is 13 and therefore mu is 12. But then it is impossible that
// the singularity has two branches, since mu is even and delta is an
// integer!
// So obviously, we did not decompose completely. Because the first branch
// is smooth, only the second ideal can be the one which can be decomposed
// further.
// Let us now consider the normalization of this second ideal i2.
LIB "normal.lib";
normal(i2);
→
→ // 'normal' created a list of 1 ring(s).
→ // nor[1+1] is the delta-invariant in case of choose=wd.
→ // To see the rings, type (if the name of your list is nor):
→ show( nor);
→ // To access the 1-st ring and map (similar for the others), type:
→ def R = nor[1]; setring R; norid; normap;
→ // R/norid is the 1-st ring of the normalization and
→ // normap the map from the original basering to R/norid
→ [1]:
→ // characteristic : 0
→ // number of vars : 1
→ // block 1 : ordering dp
→ // : names T(1)
→ // block 2 : ordering C
def rno=_[1];
setring rno;
norid;
→ norid[1]=0
// The ideal is generated by a polynomial in one variable of degree 4 which
// factors completely into 4 polynomials of type T(2)+a.
// From this, we know that the ring of the normalization is the direct sum of
// 4 polynomial rings in one variable.
// Hence our original curve has these 4 branches plus a smooth one
// which we already determined by primary decomposition.
// Our final result is therefore: 5 branches.
|