(The functions used in this notebook require the C++ NCGB module.)

Getting To Know NCGB

Here we present a simple example in the use  of the NCProcess command.    We look for implications of these equations in a,b,c, and d on the unknown variable a.

bcd + d + 2 = 0         (Eqn.1)
abc + b = 0                (Eqn.2)
ad - bd = -4             (Eqn.3)

First let us compute the consequences by hand.   Those not familiar with Mora's algorithm [FMora] 
will get a peek at the underlying idea of it through our method of attack.

Multiplying equation 1 on the left by a, equation 2 on the right by d,  and subtracting the two results 
gives us  ad - bd + 2 a = 0 .      Now  we notice the similarity in leading terms of this equation and 
equation 3 above.     Taking the difference of these gives us the definitive  a = 2.

Now we do the same problem,  but with the aid of the NCAlgebra computer package.   It is obvious that this problem can easily done by hand,  but it is not hard to imagine a more complicated set of expressions which could perhaps take a lifetime to simplify with a pen and paper.

To begin you must load in NCGB with the following command

<< NCGB.m

This does not take into account your path to the NC directory.   Therefore, you may have to change this command.

First we set  the variables we are concerned with to be non-commutative.

\(\(SetNonCommutative[\ \ a, b, c, d\ ]
\)\)

Next we must set all of our variables to be either known or unknown which in turn specifies a "monomial order" explained in the NCGB documentation.

SetKnowns[ { b, c, d}]SetUnknowns[ {a} ]

Here  express equations 1,2, and 3 in non-commutative mathematica notation.   Note that this problem could be interpreted as a, b, c, and d being matrices and the scalar entries are simply the scalar times the appropriately dimensioned identity matrices.    Or are the variables operators on infinite dimensional hilbert spaces ?    You decide.

\(\(Rels\  = 
      \ {\ b**c**d\  + \ d\ \  == \ \(-2\), 
		\ \ \ \ \ \ \ \ \ \ \ \ \ 
        a**b**c\  + \ b\ \  == \ 0, 
		\ \ \ \ \ \ \ \ \ \ \ \ \ 
        a**d\  - \ b**d\ \  == \ \(-4\)\ }; \)\)

Finally,  let the NCGB algorithms attack the problem.   Here we specify an iteration count of 2 and name the TeX file which will be created MyFile.   Notice on the dvi file which pops up that a has been
solved for.

\(\(
NCMakeGB[\ Rels\ , \ 2\ ]

\)\)

Rules and Polynomials

Here is an example of how the rules derived from polynomials are dependent on the monomial order chosen.   Notice how these polynomials correspond to Noetherian term re-writing rules when 
an ordering is chosen.

ClearMonomialOrderAll[];
SetMonomialOrder[ a,b ];
PolyToRule[ { a**b - b**a + a } ]

SetMonomialOrder[ b,a ] ;
PolyToRule[ { a**b - b**a + a } ]