|
A.3.9 Primary decomposition
There are two algorithms implemented in SINGULAR which provide
primary decomposition: primdecGTZ , based on
Gianni/Trager/Zacharias (written by Gerhard Pfister) and
primdecSY , based on Shimoyama/Yokoyama (written by Wolfram Decker
and Hans Schoenemann).
The result of primdecGTZ and primdecSY is returned as
a list of pairs of ideals,
where the second ideal is the prime ideal and the first
ideal the corresponding primary ideal.
| LIB "primdec.lib";
ring r = 0,(a,b,c,d,e,f),dp;
ideal i= f3, ef2, e2f, bcf-adf, de+cf, be+af, e3;
primdecGTZ(i);
==> [1]:
==> [1]:
==> _[1]=f
==> _[2]=e
==> [2]:
==> _[1]=f
==> _[2]=e
==> [2]:
==> [1]:
==> _[1]=f3
==> _[2]=ef2
==> _[3]=e2f
==> _[4]=e3
==> _[5]=de+cf
==> _[6]=be+af
==> _[7]=-bc+ad
==> [2]:
==> _[1]=f
==> _[2]=e
==> _[3]=-bc+ad
// We consider now the ideal J of the base space of the
// miniversal deformation of the cone over the rational
// normal curve computed in section *8* and compute
// its primary decomposition.
ring R = 0,(A,B,C,D),dp;
ideal J = CD, BD+D2, AD;
primdecGTZ(J);
==> [1]:
==> [1]:
==> _[1]=D
==> [2]:
==> _[1]=D
==> [2]:
==> [1]:
==> _[1]=C
==> _[2]=B+D
==> _[3]=A
==> [2]:
==> _[1]=C
==> _[2]=B+D
==> _[3]=A
// We see that there are two components which are both
// prime, even linear subspaces, one 3-dimensional,
// the other 1-dimensional.
// (This is Pinkhams example and was the first known
// surface singularity with two components of
// different dimensions)
//
// Let us now produce an embedded component in the last
// example, compute the minimal associated primes and
// the radical. We use the Characteristic set methods
// from primdec.lib.
J = intersect(J,maxideal(3));
// The following shows that the maximal ideal defines an embedded
// (prime) component.
primdecSY(J);
==> [1]:
==> [1]:
==> _[1]=D
==> [2]:
==> _[1]=D
==> [2]:
==> [1]:
==> _[1]=C
==> _[2]=B+D
==> _[3]=A
==> [2]:
==> _[1]=C
==> _[2]=B+D
==> _[3]=A
==> [3]:
==> [1]:
==> _[1]=D2
==> _[2]=C2
==> _[3]=B2
==> _[4]=AB
==> _[5]=A2
==> _[6]=BCD
==> _[7]=ACD
==> [2]:
==> _[1]=D
==> _[2]=C
==> _[3]=B
==> _[4]=A
minAssChar(J);
==> [1]:
==> _[1]=C
==> _[2]=B+D
==> _[3]=A
==> [2]:
==> _[1]=D
radical(J);
==> _[1]=CD
==> _[2]=BD+D2
==> _[3]=AD
|
|