25.2 NCXWholeProcess[ polys, orderList, fileName, grobIters]

This very experimental function makes repeated calls to NCProcess[ ], changing the order at each iteration in an attempt to triangularize the set of relations, polys.

Let us walk through the first iteration of NCXWholeProcess. It begins with the order, orderList, and calls NCProcess[ polys,grobIters,fileName-1 ] creating a LATEXfile, fileName-1.tex.

The output of NCProcess will (hopefully) have polynomials in one unknown. These unknowns will then be regarded as “determined”. These determined unknowns are moved to the bottom of the unknowns in the order.

A polynomial of the form

unknownIndeterminate   →  polynomialsInKnownIndeterminates
is known as a singleton. Determined unknowns associated with singletons are moved to the top of the order and the other determined unknowns are moved to the bottom of the unknowns. That is, the new order is of the form
Knowns   < determinedKnowns   ≪  otherUnknowns   ≪  singletonUnknowns.

We have finished the first iteration of NCXWholeProcess. The second iteration goes as follows.

After clearing the old order and setting the new order, NCProcess[ polys,grobIters,“fileName-2”, UserSelects determinedPolys ] is called creating a file, fileName-2.tex. Here determinedPolys are all polynomials in 0 or 1 unknowns and polys denotes the same set of polynomials that we input in the first iteration. The process is continued, changing the order and calling NCProcess repeatedly.

If no relations in one unknown are discovered at some iteration the currently unknown indeterminates are cyclically permuted. If all cyclic permutations fail to produce any new relations in one unknown the function NCXWholeProcess terminates stating that the problem was not solved. Alternatively, if all unknown variables become determined the function NCXWholeProcess terminates stating that the problem has been solved.

This function is in a very primitive stage and the particulars of it will likely change.