Home Online Manual
Top
Back: Factorization
Forward: Normalization
FastBack: Computing Groebner and Standard Bases
FastForward: Singularity Theory
Up: Commutative Algebra
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

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