A key concept in understanding the NCCollectOnVariables option for NCProcess, which is abbreviated as NCCV, is the notion of a maximal product of knowns within a monic monomial.

**Definition 9.2***
v
v
...
v
is a maximal product of knowns in
v
...
v
if
*

- 1
*a b n* *v is a known for a j b**if a >*1*, then v is unknown.**if b < n, then v is unknown.*

NCCollectOnVariables takes as input a polynomial *p*.
On each term of *p*, NCCollectOnVariables computes
a list of maximal products of knowns. NCCollectOnVariables
then repeatedly applies NCCollect to transform *p* into
a parenthesized expressions with respect to the
maximal products of knowns.
NCCollectOnVariables
uses the maximal products of knowns with the largest
degree before using the maximal products of knowns with
lower degrees. For example, if *A*, *B*,
*C*, *D*, *E*, *F* and *G*
are knowns and
*a*, *b*, *d*, *e* and *h* are unknowns,
then when NCCollectOnVariables
is applied to *a b A B C d* + *D e* + *F G h A C*, it returns
first tries to collect with respect to
{*A B C*}
and then
collect with respect to
{*F G, A C*}
and then collect with respect to
{*D*}.

Wed Jul 3 10:27:42 PDT 1996