Although the reverse lexicographic order is the best order to use in many cases, there are applications where one must use other orders. See the examples in the appendix for more information (e.g., computing projections, images of maps to projective spaces, normal cones, computing inhomogeneous standard bases using homogenization, etc.).
The product order and the elimination order are also useful monomial orders. The product order is used when you want one set of variables to always be greater than the second set. The elimination order is used for computing projections (i.e. elimination of a set of variables).
Similarly, one can define the product order on any number of blocks of
variables. The simplest product order is the product order where each
is the reverse lexicographic order. In this case, we have
We denote by
, the product order where we use
reverse lexicographic order in each block. This order can be
constructed with the ring command in response to the prompt for
the monomial order. The user specifies m blocks of variables by
inputting m integers. Each of these integers indicates how many
variables are in each block. The blocks are determined by the order
of the variables input to the ring command. Macaulay displays
the maximum degrees that are allowed for a monomial. Each number is
the maximum total degree of the variables in the corresponding block.
If this number is too small, then break up the variables into more blocks. By default, the maximum degree allowed is 512. This can be changed by using the Macaulay parameter ``maxdegree''. This parameter is only a suggestion to Macaulay: it may still be necessary to break the variables into smaller blocks.
For example, to create the product order
in k[x,y,z,a,b,c,d], one responds to the prompts as follows:
% ring R ! characteristic (if not 31991) ? <return> ! number of variables ? 7 ! 7 variables, please ? x-za-d ! variable weights (if not all 1) ? <return> ! monomial order (if not rev. lex.) ? 3 4 ; largest degree of a monomial : 512 512
To create the product order
one responds to the prompts as follows:
% ring S ! characteristic (if not 31991) ? <return> ! number of variables ? 8 ! 8 variables, please ? stxyzabc ! variable weights (if not all 1) ? <return> ! monomial order (if not rev. lex.) ? 2 3 3 [189k]; largest degree of a monomial : 512 512 512
The product order is very versatile, and has many applications. However, the elimination order is in many instances more efficient.
If the
variable is named x, we denote this order by
. We
define an elimination order with the ring command in the
following way. For example, suppose you want a ring with variables
s,t,w,x,y,z, and you want to choose the elimination order
.
When prompted for the monomial
order respond with ``w''. The ``w'' stands for ``weight
vector''. After giving the default weights for the variables by
hitting the return key, you are then prompted for a ``weight
vector''. You respond by typing in the name of the last variable you
wish to eliminate, in this case t. For example,
% ring R ! characteristic (if not 31991) ? <return> ! number of variables ? 6 ! 6 variables, please ? stw-z ! variable weights (if not all 1) ? <return> ! monomial order (if not rev. lex.) ? w ! weight vector #1 ? t ; largest degree of a monomial : 117 % ; now display this ring % pring R ; ring R ; characteristic : 31991 ; number of variables : 6 ; variables : stwxyz ; weights : 1 1 1 1 1 1 ; weight vector block 0 : 1 1 0 0 0 0 ; monomial order : w 6 c ; top degree of a monomial : 117