A reader who has no explicit interest in Groebner Bases might want to skip this section. Readers who lack background in Gröbner Basis may want to read [CLS]. This section does indicate what underlies the simlification commands in Chapter 9. For more on the subject see 10.2.
Before making a Gröbner Basis, one must declare which variables will be used during the computation and must declare a “monomial order” which can be done using the commands described in Chapter 18. A user does not need to know theoretical background related to monomials orders. Indeed, as we shall see in Chapter 14, for many engineering problems, it suffices to know which variables correspond to quantities which are known and which variables correspond to quantities which are unknown. If one is solving for a variable or desires to prove that a certain quantity is zero, then one would want to view that variable as unknown. For simple mathematical problems, one can take all of the variables to be known. At this point in the exposition we assume that we have set a monomial order.
In[1]:= <<NCGB.m
In[2]:= SetNonCommutative[a,b,x,y] In[3]:= SetMonomialOrder[a,b,x,y] In[4]:= ourGB = NCMakeGB[{y**x - a, y**x - b, x**x - a, x**x**x - b}, 10] |
The result is:
Out[5]= {-a+x**x,-a+b,-a+y**x,-a+a**x,-a+x**a,-a+y**a,-a+a**a}
|
Our favorite format (as can be seen from the output to the screen) for displaying lists of relations is ColumnForm.
In[5]:= ColumnForm[%]
Out[5]= -a + x ** x -a + b -a + y ** x -a + a ** x -a + x ** a -a + y ** a -a + a ** a |
Someone not familiar with GB’s might find it instructive to note this output GB triangularizes the input equations to the extent that we have a compatibility condition on a, namely a2 -a = 0; we can solve for b in terms of a; there is one equation involving only y and a; and there are three equations involving only x and a. Thus if we were in a concrete situation with a and b, given matrices, and x and y, unknown matrices we would expect to be able to solve for large pieces of x and y independently and then plug them into the remaining equation yx - a = 0 to get a compatibility condition.