@c ---content LibInfo---
@comment This file was generated by doc2tex.pl from d2t_singular/primdec_lib.doc
@comment DO NOT EDIT DIRECTLY, BUT EDIT d2t_singular/primdec_lib.doc INSTEAD
@c library version: (1.98.2.16,2003/06/23)
@c library file: ../Singular/LIB/primdec.lib
@cindex primdec.lib
@cindex primdec_lib
@table @asis
@item @strong{Library:}
primdec.lib
@item @strong{Purpose:}
   Primary Decomposition and Radical of Ideals
@item @strong{Authors:}
Gerhard Pfister, pfister@@mathematik.uni-kl.de (GTZ)
@* Wolfram Decker, decker@@math.uni-sb.de (SY)
@* Hans Schoenemann, hannes@@mathematik.uni-kl.de (SY)

@item @strong{Overview:}
Algorithms for primary decomposition based on the ideas of
Gianni, Trager and Zacharias (implementation by Gerhard Pfister),
respectively based on the ideas of Shimoyama and Yokoyama (implementation
by Wolfram Decker and Hans Schoenemann).
@* The procedures are implemented to be used in characteristic 0.
@* They also work in positive characteristic >> 0.
@* In small characteristic and for algebraic extensions, primdecGTZ
may not terminate.
@*Algorithms for the computation of the radical based on the ideas of
Krick, Logar and Kemper (implementation by Gerhard Pfister).

@end table

@strong{Procedures:}
@menu
* Ann:: annihilator of R^n/M, R=basering, M in R^n
* primdecGTZ:: complete primary decomposition via Gianni,Trager,Zacharias
* primdecSY:: complete primary decomposition via Shimoyama-Yokoyama
* minAssGTZ:: the minimal associated primes via Gianni,Trager,Zacharias
* minAssChar:: the minimal associated primes using characteristic sets
* testPrimary:: tests the result of the primary decomposition
* radical:: computes the radical of I via Krick/Logar and Kemper
* radicalEHV:: computes the radical of I via Eisenbud,Huneke,Vasconcelos
* equiRadical:: the radical of the equidimensional part of the ideal I
* prepareAss:: list of radicals of the equidimensional components of I
* equidim:: weak equidimensional decomposition of I
* equidimMax:: equidimensional locus of I
* equidimMaxEHV:: equidimensional locus of I via Eisenbud,Huneke,Vasconcelos
* zerodec:: zerodimensional decomposition via Monico
@end menu
@c ---end content LibInfo---

@c ------------------- Ann -------------
@node Ann, primdecGTZ,, primdec_lib
@subsubsection Ann
@cindex Ann
@c ---content Ann---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@end table
@c ---end content Ann---

@c ------------------- primdecGTZ -------------
@node primdecGTZ, primdecSY, Ann, primdec_lib
@subsubsection primdecGTZ
@cindex primdecGTZ
@c ---content primdecGTZ---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
primdecGTZ(i); i ideal

@item @strong{Return:}
a list pr of primary ideals and their associated primes:
@format
   pr[i][1]   the i-th primary component,
   pr[i][2]   the i-th prime component.
@end format

@item @strong{Note:}
Algorithm of Gianni/Trager/Zacharias.
@*Designed for characteristic 0, works also in char k > 0, if it
terminates (may result in an infinite loop in small characteristic!)

@end table
@strong{Example:}
@smallexample
@c reused example primdecGTZ d2t_singular/primdec_lib.doc:86 
LIB "primdec.lib";
ring  r = 0,(x,y,z),lp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
list pr = primdecGTZ(i);
pr;
@expansion{} [1]:
@expansion{}    [1]:
@expansion{}       _[1]=z6+4z3+4
@expansion{}       _[2]=y-z2
@expansion{}    [2]:
@expansion{}       _[1]=z3+2
@expansion{}       _[2]=y-z2
@expansion{} [2]:
@expansion{}    [1]:
@expansion{}       _[1]=z2+1
@expansion{}       _[2]=y-z2
@expansion{}    [2]:
@expansion{}       _[1]=z2+1
@expansion{}       _[2]=y-z2
@c end example primdecGTZ d2t_singular/primdec_lib.doc:86
@end smallexample
@c ---end content primdecGTZ---

@c ------------------- primdecSY -------------
@node primdecSY, minAssGTZ, primdecGTZ, primdec_lib
@subsubsection primdecSY
@cindex primdecSY
@c ---content primdecSY---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
primdecSY(i); i ideal, c int

@item @strong{Return:}
a list pr of primary ideals and their associated primes:
@format
   pr[i][1]   the i-th primary component,
   pr[i][2]   the i-th prime component.
@end format

@item @strong{Note:}
Algorithm of Shimoyama/Yokoyama.
@format
   if c=0,  the given ordering of the variables is used,
   if c=1,  minAssChar tries to use an optimal ordering,
   if c=2,  minAssGTZ is used,
   if c=3,  minAssGTZ and facstd are used.
@end format

@end table
@strong{Example:}
@smallexample
@c reused example primdecSY d2t_singular/primdec_lib.doc:128 
LIB "primdec.lib";
ring  r = 0,(x,y,z),lp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
list pr = primdecSY(i);
pr;
@expansion{} [1]:
@expansion{}    [1]:
@expansion{}       _[1]=z6+4z3+4
@expansion{}       _[2]=y-z2
@expansion{}    [2]:
@expansion{}       _[1]=z3+2
@expansion{}       _[2]=y-z2
@expansion{} [2]:
@expansion{}    [1]:
@expansion{}       _[1]=z2+1
@expansion{}       _[2]=y+1
@expansion{}    [2]:
@expansion{}       _[1]=z2+1
@expansion{}       _[2]=y+1
@c end example primdecSY d2t_singular/primdec_lib.doc:128
@end smallexample
@c ---end content primdecSY---

@c ------------------- minAssGTZ -------------
@node minAssGTZ, minAssChar, primdecSY, primdec_lib
@subsubsection minAssGTZ
@cindex minAssGTZ
@c ---content minAssGTZ---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
minAssGTZ(i); i ideal
@*minAssGTZ(i,1); i ideal does not use the factorizing Groebner

@item @strong{Return:}
a list, the minimal associated prime ideals of i.

@item @strong{Note:}
Designed for characteristic 0, works also in char k > 0 based
on an algorithm of Yokoyama

@end table
@strong{Example:}
@smallexample
@c reused example minAssGTZ d2t_singular/primdec_lib.doc:162 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
list pr = minAssGTZ(i);
pr;
@expansion{} [1]:
@expansion{}    _[1]=z2+1
@expansion{}    _[2]=-z2+y
@expansion{} [2]:
@expansion{}    _[1]=z3+2
@expansion{}    _[2]=-z2+y
@c end example minAssGTZ d2t_singular/primdec_lib.doc:162
@end smallexample
@c ---end content minAssGTZ---

@c ------------------- minAssChar -------------
@node minAssChar, testPrimary, minAssGTZ, primdec_lib
@subsubsection minAssChar
@cindex minAssChar
@c ---content minAssChar---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
minAssChar(i[,c]); i ideal, c int.

@item @strong{Return:}
list, the minimal associated prime ideals of i.

@item @strong{Note:}
If c=0, the given ordering of the variables is used. @*
Otherwise, the system tries to find an optimal ordering,
which in some cases may considerably speed up the algorithm. @*
Due to a bug in the factorization, the result may be not completely
decomposed in small characteristic.

@end table
@strong{Example:}
@smallexample
@c reused example minAssChar d2t_singular/primdec_lib.doc:198 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
list pr = minAssChar(i);
pr;
@expansion{} [1]:
@expansion{}    _[1]=y+1
@expansion{}    _[2]=z2+1
@expansion{} [2]:
@expansion{}    _[1]=z2-y
@expansion{}    _[2]=yz+2
@expansion{}    _[3]=y2+2z
@c end example minAssChar d2t_singular/primdec_lib.doc:198
@end smallexample
@c ---end content minAssChar---

@c ------------------- testPrimary -------------
@node testPrimary, radical, minAssChar, primdec_lib
@subsubsection testPrimary
@cindex testPrimary
@c ---content testPrimary---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
testPrimary(pr,k); pr a list, k an ideal.

@item @strong{Assume:}
pr is the result of primdecGTZ(k) or primdecSY(k).

@item @strong{Return:}
int, 1 if the intersection of the ideals in pr is k, 0 if not

@end table
@strong{Example:}
@smallexample
@c reused example testPrimary d2t_singular/primdec_lib.doc:230 
LIB "primdec.lib";
ring  r = 32003,(x,y,z),dp;
poly  p = z2+1;
poly  q = z4+2;
ideal i = p^2*q^3,(y-z3)^3,(x-yz+z4)^4;
list pr = primdecGTZ(i);
testPrimary(pr,i);
@expansion{} 1
@c end example testPrimary d2t_singular/primdec_lib.doc:230
@end smallexample
@c ---end content testPrimary---

@c ------------------- radical -------------
@node radical, radicalEHV, testPrimary, primdec_lib
@subsubsection radical
@cindex radical
@c ---content radical---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
radical(i); i ideal.

@item @strong{Return:}
ideal, the radical of i.

@item @strong{Note:}
A combination of the algorithms of Krick/Logar and Kemper is used.
Works also in positive characteristic (Kempers algorithm).

@end table
@strong{Example:}
@smallexample
@c reused example radical d2t_singular/primdec_lib.doc:263 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
ideal pr= radical(i);
pr;
@expansion{} pr[1]=z2-y
@expansion{} pr[2]=y2z+yz+2y+2
@c end example radical d2t_singular/primdec_lib.doc:263
@end smallexample
@c ---end content radical---

@c ------------------- radicalEHV -------------
@node radicalEHV, equiRadical, radical, primdec_lib
@subsubsection radicalEHV
@cindex radicalEHV
@c ---content radicalEHV---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
radicalEHV(i); i ideal.

@item @strong{Return:}
ideal, the radical of i.

@item @strong{Note:}
Uses the algorithm of Eisenbud/Huneke/Vasconcelos, which
reduces the computation to the complete intersection case,
by taking, in the general case, a generic linear combination
of the input.
@*Works only in characteristic 0 or p large.

@end table
@strong{Example:}
@smallexample
@c reused example radicalEHV d2t_singular/primdec_lib.doc:299 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
ideal pr= radicalEHV(i);
pr;
@expansion{} pr[1]=z2-y
@expansion{} pr[2]=y2z+yz+2y+2
@expansion{} pr[3]=y3+y2+2yz+2z
@c end example radicalEHV d2t_singular/primdec_lib.doc:299
@end smallexample
@c ---end content radicalEHV---

@c ------------------- equiRadical -------------
@node equiRadical, prepareAss, radicalEHV, primdec_lib
@subsubsection equiRadical
@cindex equiRadical
@c ---content equiRadical---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
equiRadical(i); i ideal

@item @strong{Return:}
ideal, intersection of associated primes of i of maximal dimension.

@item @strong{Note:}
A combination of the algorithms of Krick/Logar and Kemper is used.
Works also in positive characteristic (Kempers algorithm).

@end table
@strong{Example:}
@smallexample
@c reused example equiRadical d2t_singular/primdec_lib.doc:332 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
ideal pr= equiRadical(i);
pr;
@expansion{} pr[1]=z2-y
@expansion{} pr[2]=y2z+yz+2y+2
@c end example equiRadical d2t_singular/primdec_lib.doc:332
@end smallexample
@c ---end content equiRadical---

@c ------------------- prepareAss -------------
@node prepareAss, equidim, equiRadical, primdec_lib
@subsubsection prepareAss
@cindex prepareAss
@c ---content prepareAss---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
prepareAss(i); i ideal

@item @strong{Return:}
list, the radicals of the maximal dimensional components of i.

@item @strong{Note:}
Uses algorithm of Eisenbud/Huneke/Vasconcelos.

@end table
@strong{Example:}
@smallexample
@c reused example prepareAss d2t_singular/primdec_lib.doc:364 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
poly  p = z2+1;
poly  q = z3+2;
ideal i = p*q^2,y-z2;
list pr = prepareAss(i);
pr;
@expansion{} [1]:
@expansion{}    _[1]=z2-y
@expansion{}    _[2]=y2z+yz+2y+2
@c end example prepareAss d2t_singular/primdec_lib.doc:364
@end smallexample
@c ---end content prepareAss---

@c ------------------- equidim -------------
@node equidim, equidimMax, prepareAss, primdec_lib
@subsubsection equidim
@cindex equidim
@c ---content equidim---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
equidim(i) or equidim(i,1) ; i ideal

@item @strong{Return:}
list of equidimensional ideals a[1],...,a[s] with:
@*- a[s] the equidimensional locus of i, i.e. the intersection
of the primary ideals of dimension of i
@*- a[1],...,a[s-1] the lower dimensional equidimensional loci.

@item @strong{Note:}
An embedded component q (primary ideal) of i can be replaced in the
decomposition by a primary ideal q1 with the same radical as q. @*
@code{equidim(i,1)} uses the algorithm of Eisenbud/Huneke/Vasconcelos.

@end table
@strong{Example:}
@smallexample
@c reused example equidim d2t_singular/primdec_lib.doc:401 
LIB "primdec.lib";
ring  r = 32003,(x,y,z),dp;
ideal i = intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
equidim(i);
@expansion{} [1]:
@expansion{}    _[1]=z4
@expansion{}    _[2]=y5
@expansion{}    _[3]=x5
@expansion{}    _[4]=x3z3
@expansion{}    _[5]=x4y4
@expansion{} [2]:
@expansion{}    _[1]=yz
@expansion{}    _[2]=xz
@expansion{}    _[3]=x2
@expansion{} [3]:
@expansion{}    _[1]=z
@c end example equidim d2t_singular/primdec_lib.doc:401
@end smallexample
@c ---end content equidim---

@c ------------------- equidimMax -------------
@node equidimMax, equidimMaxEHV, equidim, primdec_lib
@subsubsection equidimMax
@cindex equidimMax
@c ---content equidimMax---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
equidimMax(i); i ideal

@item @strong{Return:}
ideal of equidimensional locus (of maximal dimension) of i.

@end table
@strong{Example:}
@smallexample
@c reused example equidimMax d2t_singular/primdec_lib.doc:427 
LIB "primdec.lib";
ring  r = 32003,(x,y,z),dp;
ideal i = intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
equidimMax(i);
@expansion{} _[1]=z
@c end example equidimMax d2t_singular/primdec_lib.doc:427
@end smallexample
@c ---end content equidimMax---

@c ------------------- equidimMaxEHV -------------
@node equidimMaxEHV, zerodec, equidimMax, primdec_lib
@subsubsection equidimMaxEHV
@cindex equidimMaxEHV
@c ---content equidimMaxEHV---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
equidimMaxEHV(i); i ideal

@item @strong{Return:}
ideal, the equidimensional component (of maximal dimension) of i.

@item @strong{Note:}
Uses algorithm of Eisenbud, Huneke and Vasconcelos.

@end table
@strong{Example:}
@smallexample
@c reused example equidimMaxEHV d2t_singular/primdec_lib.doc:456 
LIB "primdec.lib";
ring  r = 0,(x,y,z),dp;
ideal i=intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
equidimMaxEHV(i);
@expansion{} _[1]=z
@c end example equidimMaxEHV d2t_singular/primdec_lib.doc:456
@end smallexample
@c ---end content equidimMaxEHV---

@c ------------------- zerodec -------------
@node zerodec,, equidimMaxEHV, primdec_lib
@subsubsection zerodec
@cindex zerodec
@c ---content zerodec---
Procedure from library @code{primdec.lib} (@pxref{primdec_lib}).

@table @asis
@item @strong{Usage:}
zerodec(I); I ideal

@item @strong{Assume:}
I is zero-dimensional, the characteristic of the ground field is 0

@item @strong{Return:}
list of primary ideals, the zero-dimensional decomposition of I

@item @strong{Note:}
The algorithm (of Monico), works well only for a small total number
of solutions (@code{vdim(std(I))} should be < 100) and without
parameters. In practice, it works also in large characteristic p>0
but may fail for small p.
@* If printlevel > 0 (default = 0) additional information is displayed.

@end table
@strong{Example:}
@smallexample
@c reused example zerodec d2t_singular/primdec_lib.doc:492 
LIB "primdec.lib";
ring r  = 0,(x,y),dp;
ideal i = x2-2,y2-2;
list pr = zerodec(i);
pr;
@expansion{} [1]:
@expansion{}    _[1]=y2-2
@expansion{}    _[2]=xy-2
@expansion{}    _[3]=x2-2
@expansion{} [2]:
@expansion{}    _[1]=y2-2
@expansion{}    _[2]=xy+2
@expansion{}    _[3]=x2-2
@c end example zerodec d2t_singular/primdec_lib.doc:492
@end smallexample
@c ---end content zerodec---
