This subsection concerns a command NCCollectOnVariables, abbreviated NCCV, which is implementable (indeed, it is implemented in NCAlgebra). A technical description is given in the appendix. Often human intervention can be coupled with NCCV to discover decompositions.

In addition to being an option for the NCProcess commands, it can be called as a stand-alone command. It is used in a session where knowns and unknowns have been declared.

NCCollectOnVariables is a command which ``collects'' maximal products of knowns and products of knowns out of expressions. Since it collects on monomials which are products of knowns, it typically presents important combinations of knowns in its output.

For example, if in a computer session where
*A* and *B* are set to be knowns and *X*, *Y* and *Z* are
set to be unknowns,
then, when NCCollectOnVariables
is applied to
*X A B Z + Y A B Z + A X + A Y*,
it returns
*(X + Y) A B Z + A (X + Y)*.
Therefore,
*X A B Z + Y A B Z + A X + A Y*,
depends on a motivated unknown *X + Y* and an
unknown *Z*.

As another example, if we are in a computer session and
*A*, ,
, , , ,
and
are set to be knowns and all of the other variables are
set to be unknowns, then
when the command NCCollectOnVariables is applied to

we obtain

In the problem which this expression comes from (see §), the transpose of is (see Appendix §). Therefore, the above expression motivates the introduction of motivated unknowns and .

As these examples show, NCCollectOnVariables is an extremely important option for NCProcess.

Wed Jul 3 10:27:42 PDT 1996