up previous next
First we recall the definition of a module termordering. 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_ii=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 onetoone
correspondence with the Cartesian product,
T(R) x [1,...,r].
A
module termordering 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},
(1) T * T_1 * e_i > T_1 * e_i
(2) T_1 * e_i > T_2 * e_j => T * T_1 * e_i > T * T_2 * e_j
Each termordering on the current ring induces several termorderings
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 .
The leading term of the vector
(x,y^2) with respect
to two different module termorderings:
Use R ::= QQ[x,y], ToPos;
LT(Vector(x,y^2));
Vector(0, y^2)

Use R ::= QQ[x,y], PosTo;
LT(Vector(x,y^2));
Vector(x, 0)

