Singular Manual: Primary decomposition

| ### 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

User manual for Singular version 4-1-1, 2018, generated by texi2html.