# definition of product (block) orders

MonomialOrder => {n_1, ..., n_l} divides the variables of the ring into l blocks, the first block consisting of the first n_1 variables, the second block consisting of the subsequent n_2 variables, and so on. For each block of variables, we can compute the total degree of a monomial with respect to the variables in that block. This gives a length l vector of total degrees for each monomial. We say x^A > x^B if the total degree vector of x^A is lexicographically greater than the total degree vector of x^B, or if the two total degree vectors are equal and if in the first block of variables where A and B differ, A > B in GRevLex order.
 i1 : R = QQ[a..l, MonomialOrder => {3,3,3,3}]; i2 : a*e^3 + a^2*c*i + a*b^2*i + b^2*e*i 2 2 2 3 o2 = a*b i + a c*i + b e*i + a*e o2 : R
We may replace MonomialOrder => {3,3,3,3} with the shorter MonomialOrder => {4:3}

The default GRevLex order on any block may be changed to other orders, as follows.

 i3 : R = QQ[a..i, MonomialOrder => {Lex =>3,3:1,3}]; i4 : a*e^3 + a^2*c*i + a*b^2*i + b^2*e*i + d^2*f*h + d*e^2*h 2 2 3 2 2 2 o4 = a c*i + a*b i + a*e + b e*i + d f*h + d*e h o4 : R
Note: Weights and Eliminate do not create blocks, they only assign weights to the variables.