previous  next
3.8.10. Module Orderings
First we recall the definition of a module term-ordering. We assume
that all our free modules have finite rank and are of the type M = R^r
where R is a polynomial ring with n indeterminates.  Let
{e_i|i=1,...,r} be the canonical basis of M. A "term" of M is an
element of the form Te_i where T belongs to the set T(R) of the terms
of R.  Hence the set T(M), of the terms of M, is in one-to-one
correspondence with the Cartesian product, T(R)x{1,...,r}.

A "module term-ordering" is defined as a total ordering > on T(M)
such that for all T, T_1, T_2 in T(R), with T not equal to 1, and for
all i, j in {1,...,r},

   *  T T_1 e_i > T_1 e_i
   *  T_1 e_i > T_2 e_j  =>  T T_1 e_i > T T_2 e_j

Each term-ordering on the current ring induces several term-orderings
on a free module.  CoCoA allows the user to choose between the
following:

   * the ordering called "ToPos" (which is the default one) defined by:

      T_1 e_i > T_2 e_j <=>  T_1 > T_2 in R
                             or, if  T_1 = T_2 , i < j

   * the ordering called "PosTo" defined by:

       T_1 e_i > T_2 e_j <=> i < j
                             or, if i = j, T_1 > T_2 in R .

Example

-- The leading term of the vector (x,y^2) with respect two different
-- module term-orderings:
Use R ::= Q[x,y],ToPos;
LT(Vector(x,y^2));
Vector(0, y^2)
-------------------------------
Use R ::= Q[x,y],PosTo;
LT(Vector(x,y^2));
Vector(x, 0)
-------------------------------