REDUCE

16.74 WU: Wu algorithm for polynomial systems

This is a simple implementation of the Wu algorithm implemented in REDUCE working directly from “A Zero Structure Theorem for Polynomial-Equations-Solving,” Wu Wen-tsun, Institute of Systems Science, Academia Sinica, Beijing.

Author: Russell Bradford.

Its purpose was to aid my understanding of the algorithm, so the code is simple, and has a lot of tracing included. This is a working implementation, but there is magnificent scope for improvement and optimisation. Things like using intelligent sorts on polynomial lists, and avoiding the re-computation of various data spring easily to mind. Also, an attempt at factorization of the input polynomials at each pass might have beneficial results. Of course, exploitation of the natural parallel structure is a must!

All bug fixes and improvements are welcomed.

The interface:

wu( {x^2+y^2+z^2-r^2, x*y+z^2-1, x*y*z-x^2-y^2-z+1}, {x,y,z});

calls wu with the named polynomials, and with the variable ordering x > y > z. In this example, r is a parameter.

The result is

    2    3    2  
{{{r  + z  - z  - 1,  
 
    2  2    2      2    4    2  2    2  
   r *y  + r *z + r  - y  - y *z  + z  - z - 2,  
 
          2  
   x*y + z  - 1},  
 
  y},  
 
    6  4      6  2    6      4  7      4  6      4  5      4  4  
 {{r *z  - 2*r *z  + r  + 3*r *z  - 3*r *z  - 6*r *z  + 3*r *z  + 3*  
 
    4  3      4  2      4      2  10      2  9      2  8      2  7  
   r *z  + 3*r *z  - 3*r  + 3*r *z   - 6*r *z  - 3*r *z  + 6*r *z  +  
 
       2  6      2  5      2  4      2  3      2    13      12    11  
    3*r *z  + 6*r *z  - 6*r *z  - 6*r *z  + 3*r  + z   - 3*z   + z  
 
         10    9      8      7    6      4      3    2  
    + 2*z   + z  + 2*z  - 6*z  - z  + 2*z  + 3*z  - z  - 1,  
 
    2   2    3    2  
   y *(r  + z  - z  - 1),  
 
          2  
   x*y + z  - 1},  
 
      2    3    2  
  y*(r  + z  - z  - 1)}}

namely, a list of pairs of characteristic sets and initials for the characteristic sets.

Thus, the first pair above has the characteristic set

r2 + z3 - z2 - 1,r2y2 + r2z + r2 - y4 - y2z2 + z2 - z - 2,xy + z2 - 1
and initial y.

According to Wu’s theorem, the set of roots of the original polynomials is the union of the sets of roots of the characteristic sets, with the additional constraints that the corresponding initial is non-zero. Thus, for the first pair above, we find the roots of {r2 + z3 - z2 - 1, } under the constraint that y0. These roots, together with the roots of the other characteristic set (under the constraint of y(r2 + z3 - z2 - 1)0), comprise all the roots of the original set.

Additional information about the working of the algorithm can be gained by

on trwu;

This prints out details of the choice of basic sets, and the computation of characteristic sets.

The second argument (the list of variables) may be omitted, when all the variables in the input polynomials are implied with some random ordering.