To impose lexicographic order
on
,
,
and
,
one types
In[14]:=SetMonomialOrder[a,b,x,y];
This order is useful for attempting to solve for
in terms of
,
and
, since the highest
priority of the GB algorithm is to produce polynomials which
do not contain
.
If producing high order polynomials is a consequence of this
fanaticism so be it. Unlike graded orders,
lex orders pay little attention to the degree of terms.
Likewise its second highest priority is to eliminate
.
Once this order is set, one can use all of the commands in the preceeding section in exactly the same form.
We now give a simple example how one can solve for
given that
,
,
and
satisfy the equations:
In[15]:= NCMakeGB[{-b ** x + x ** y ** a + x ** b ** a ** a,
x**a-1,a**x-1},4];
Out[15]= {-1 + a ** x, -1 + x ** a, y + b ** a - a ** b ** x ** x}
If the polynomials above are converted to replacement
rules, then a simple glance at the results allows one
to see that
has
been solved for.
In[16]:= PolyToRule[%]
Out[16]= {a ** x -> 1, x ** a -> 1, y -> -b ** a + a ** b ** x ** x}
Now, we change the order to
In[20]:=SetMonomialOrder[y,x,b,a];
and do the same NCMakeGB as above:
In[21]:= NCMakeGB[{-b ** x + x ** y ** a + x ** b ** a ** a,
x**a-1,a**x-1},4];
In[22]:= PolyToRule[%];
In[23]:= ColumnForm[%];
Out[23]= a ** x -> 1
x ** a -> 1
x ** b ** a -> -x ** y + b ** x ** x
b ** a ** a -> -y ** a + a ** b ** x
b ** x ** x ** x -> x ** b + x ** y ** x
a ** b ** x ** x -> y + b ** a
x ** b ** b ** a ->
> -x ** b ** y - x ** y ** b ** x ** x + b ** x ** x ** b ** x ** x
b ** a ** b ** a ->
> -y ** y - b ** a ** y - y ** b ** a + a ** b ** x ** b ** x ** x
x ** b ** b ** b ** a ->
> -x ** b ** b ** y - x ** b ** y ** b ** x ** x -
> x ** y ** b ** x ** x ** b ** x ** x +
> b ** x ** x ** b ** x ** x ** b ** x ** x
b ** a ** b ** b ** a ->
> -y ** b ** y - b ** a ** b ** y - y ** b ** b ** a -
> y ** y ** b ** x ** x - b ** a ** y ** b ** x ** x +
> a ** b ** x ** b ** x ** x ** b ** x ** x
In this case, it turns out that it produced
the rule
which shows that
the order is not set up to solve for
in terms of
the other variables in the sense that
is not on the
left hand side of this rule (but a human could easily solve
for
using this rule).
Also the algorithm
created a number of other relations which involved
.
If one uses the lex order
, the NCMakeGB call above generates 12
polynomials of high total degree which do not solve for
.
See [CoxLittleOShea].