# Singular          #### D.8.6.5 zeroSet

Procedure from library `zeroset.lib` (see zeroset_lib).

Usage:
zeroSet(I [,opt] ); I=ideal, opt=integer

Purpose:
compute the zero-set of the zero-dim. ideal I, in a finite extension of the ground field.

Return:
ring, a polynomial ring over an extension field of the ground field, containing a list 'theZeroset', a polynomial 'newA', and an ideal 'id':
 ``` - 'theZeroset' is the list of the zeros of the ideal I, each zero is an ideal. - if the ground field is Q(b) and the extension field is Q(a), then 'newA' is the representation of b in Q(a). If the basering contains a parameter 'a' and the minpoly remains unchanged then 'newA' = 'a'. If the basering does not contain a parameter then 'newA' = 'a' (default). - 'id' is the ideal I in Q(a)[x_1,...] (a' substituted by 'newA') ```

Assume:
dim(I) = 0, and ground field to be Q or a simple extension of Q given by a minpoly.

Options:
opt = 0: no primary decomposition (default)
opt > 0: primary decomposition

Note:
If I contains an algebraic number (parameter) then I must be transformed w.r.t. 'newA' in the new ring.

Example:
 ```LIB "zeroset.lib"; ring R = (0,a), (x,y,z), lp; minpoly = a2 + 1; ideal I = x2 - 1/2, a*z - 1, y - 2; def T = zeroSet(I); setring T; minpoly; ==> (4a4+4a2+9) newA; ==> (1/3a3+5/6a) id; ==> id=(1/3a3+5/6a)*z-1 ==> id=y-2 ==> id=2*x2-1 theZeroset; ==> : ==> _=(1/3a3-1/6a) ==> _=2 ==> _=(-1/3a3-5/6a) ==> : ==> _=(-1/3a3+1/6a) ==> _=2 ==> _=(-1/3a3-5/6a) map F1 = basering, theZeroset; map F2 = basering, theZeroset; F1(id); ==> _=0 ==> _=0 ==> _=0 F2(id); ==> _=0 ==> _=0 ==> _=0 ```

### Misc 