#### 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]=(1/3a3+5/6a)*z-1
    ==> id[2]=y-2
    ==> id[3]=2*x2-1
    theZeroset;
    ==> [1]:
    ==>    _[1]=(-1/3a3+1/6a)
    ==>    _[2]=2
    ==>    _[3]=(-1/3a3-5/6a)
    ==> [2]:
    ==>    _[1]=(1/3a3-1/6a)
    ==>    _[2]=2
    ==>    _[3]=(-1/3a3-5/6a)
    map F1 = basering, theZeroset[1];
    map F2 = basering, theZeroset[2];
    F1(id);
    ==> _[1]=0
    ==> _[2]=0
    ==> _[3]=0
    F2(id);
    ==> _[1]=0
    ==> _[2]=0
    ==> _[3]=0

User manual for Singular version 4-0-3, 2016, generated by texi2html.