# topWitnessSet -- returns a witness set and nonsolutions for the top dimensional solution set

## Synopsis

• Usage:
(w,ns) = topWitnessSet(f,k)
• Inputs:
• f, a list, of polynomials expected to have a component of dimension k
• k, an integer, the expected (top) dimension of the solution set of f
• Optional inputs:
• Verbose => ..., -- option to specify whether additional output is wanted
• Outputs:
• w, , for the k-dimensional solution set of f
• ns, a list, solutions with nonzero value for the slack variable (the nonsolutions)
• Consequences:
• Constructs an embedding using constructEmbedding, which calls phc -c

• Solves the system using solveSystem, which calls phc -b

• Filters the solutions

• Constructs the witness set of appropriate dimension.

## Description

The method topWitnessSet constructs an embedding for the given polynomial system with the given dimension, and then computes generic points on the solution set.

The computation of a witness set for the twisted cubic is illustrated below.

 `i1 : R = CC[x,y,z];` `i2 : f = { x^2 - y, x^3 - z };` ```i3 : (w,ns) = topWitnessSet(f,1) o3 = (w, {}) o3 : Sequence``` ```i4 : dim(w) o4 = 1``` ```i5 : degree(w) o5 = 3``` ```i6 : toString equations(w) o6 = {x^2-y+(.380139-.924929*ii)*zz1, x^3-z+(-.45571+.890128*ii)*zz1, zz1}``` ```i7 : toString slice(w) o7 = {(-.205377-.978683*ii)*x+(.943327-.331864*ii)*y+(.673112+.739541*ii)*z+(-.911067-.412259*ii)*zz1-.883724+.468009*ii}``` ```i8 : toString points(w) o8 = VerticalList{Point{...4...}, Point{...4...}, Point{...4...}}```

A witness set for the twisted cubic consists of the embedded system, a random linear hyperplane to slice the space curve, and three generic points. Observe that the value for the last coordinate of all points equals (or is close to) zero. This last coordinate corresponds to the added slack variable zzk. Solutions with a nonzero value for the slack variable are called nonsolutions. In the example above, the list of nonsolutions returned in ns by topWitnessSet was empty.

Often the solution of the embedded system leads to solutions with nonzero slack variables, as illustrated in the next example.

 ```i9 : R = CC[x,y,z]; f = { (x^2-y)*(x-2), (x^3 - z)*(y-2), (x*y - z)*(z-2) } 3 2 3 3 2 o10 = {x - 2x - x*y + 2y, x y - 2x - y*z + 2z, x*y*z - 2x*y - z + 2z} o10 : List``` `i11 : (w,ns) = topWitnessSet(f,1);` ```i12 : dim(w) o12 = 1``` ```i13 : degree(w) o13 = 3``` ```i14 : #ns o14 = 10```

The example is constructed to contain not only the twisted cubic, but also at least one isolated point (2,2,2). This is reflected in the list of nonsolutions.

The nonsolutions may be used as start solutions in a cascade of homotopies to find generic points on lower dimensional components.