31.3 Main Change Of Variables Command

The main command is NCXFindChangeOfVariables. The general purpose of these commands is to produce 1-strategies from a given list of relations. That is, we would like to find a motivated unknown that eliminates all other unknowns from some equation in a nontrivial way. By nontrivial, we mean that the motivated unknown is not the entire given expression E or aE + b where a and b are numbers.

31.3.1 NCXFindChangeOfVariables[ aListofPolynomials, anInteger, aString, Options]

Aliases: None
Description: This command needs the monomial order to already be set. It then uses the ambient order in NCGB. NCXFindChangeOfVariables[ aListOfPolynomials,
anInteger, aString, Options] takes a list of relations aListOfPolynomials, finds the candidates for motivated unknowns and then tries each one in NCProcess until it finds that all unknowns except the candidate have been eliminated (and hence would make a good motivated unknown). If it finds a motivated unknown (which absorbs all other unknowns) then it returns a list {E, M} where M is the motivated unknown and E is the expression which motivated it. Otherwise it returns False. It can also be made to return a list of outputs from the calls to NCProcess.
Arguments: aListofPolynomials is a list of polynomials, aString is a string for the beginning of the tex files produced by NCProcess, and anInteger is the number of iterations for NCProcess. The options are:
Comments / Limitations: This procedure uses the ambient monomial order in NCGB. Furthermore, the monomial order is changed by this program. The variables motUnknown and Tp[motUnknown] are inserted in a graded piece between the current knowns and unknowns if these variables are not already present. This function runs NCProcess many times and therefore produces a number of tex files (actually, it produces exactly Length[NCXMultiplyBy
Monomials[NCXPossibleChangeOfVariables[aListOfPolynomials, Options]]] tex files). These files are named nameno# where name is the string given as an argument, no is added and # is a number. This function uses NCProcess,
NCXPossibleChangeOfVariables, NCXMultiplyByMonomials.

The following command may also be useful since it gives a list of expressions, each of which is a possible new variable. It runs all steps above except the last two, that is, multiplying through by monomials and running the Grobner basis.

31.3.2 NCXPossibleChangeOfVariables[ aListofPolynomials, Options]

Aliases: None
Description: NCXPossibleChangeOfVariables[ aListOfPolynomials, Options] takes a list of relations and looks for a good motivated unknown. It returns a list of pairs {E, M} where E is the expression which motivated the candidate M and M is the candidate for a motivated unknown.
Arguments: aListofPolynomials is a list of relations and options can be any of the following:
Comments / Limitations: The candidate for motivated unknown is found by first doing an NCCollectOnVariables[ ], which collects around knowns, on each relation and then looking at what is found on either side of the knowns. These are the candidates for motivated unknowns. The next step is to eliminate candidates which do not contain all of the unknowns present in the expression which motivated them. This option can be turned off by CountV ariables False. The next step is to eliminate purely numerical terms from the candidates (so that you won’t get an expression like xy + 1 for a candidate, but xy instead). The final step is to sort the pairs by length (number of terms) of the motivated unknown, the shortest being first. This is done because long candidates usually do not eliminate all of the variables. This option can be turned off by SortByTermLength False.