The first task in solving these problems is to translate the definition of the problem into equations that Mathematica can understand. This is all done in the file called ``basefile.m''. These are put in a seperate file, because the same equations are used in all three problems.

The next step is to create a file which is specific to problem A.
In this file we set the monomial order and gather the equations that
we will actually be using.
This file is called
``problem1.m''.
The Mathematica variable `equations` is set equal to the
matrix equations
(1) (2) and (3).
The assumptions that we are making in this problem
are assigned to the variable
`allOfTheAssumptions`.
These assumptions include the equations
() and
(),
as well as the specific forms of the
matricies
and
and the fact
that
is a self-adjoint operator.

Once these two files are loaded into Mathematica, the only command that needs to be executed is

`In[3]:= ans = NCSR6[equations,allOfTheAssumptions,1]`

The command `NCSR6` computes a partial Gröbner basis for
the equations in `allOfTheAssumptions` and uses this partial
Gröbner basis to reduce the equations in `equations` to
``canonical'' form.

The result of the command is

`Out[3]:= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}`

This verifies that the equations (1) (2) and (3) follow from equations () and (), if we make the assumptions mentioned above.