# examples of specifying alternate monomial orders

For definitions of these monomial orders, see GRevLex, Lex, Weights, Eliminate, GroupLex, GroupRevLex, RevLex, and NCLex.

 `i1 : R = ZZ[a..d];` ```i2 : a+b^100+c*d 100 o2 = b + c*d + a o2 : R```

## Lexicographic order

 `i3 : R = ZZ[a..d, MonomialOrder=>Lex];` ```i4 : a+b^100+c*d 100 o4 = a + b + c*d o4 : R```

## Weight order

 `i5 : R = ZZ[a..d, MonomialOrder => Weights => {201,2}];` ```i6 : a+b^100+c*d 100 o6 = a + b + c*d o6 : R```

 `i7 : R = ZZ[a..d, MonomialOrder=>{Weights=>4:1,Lex}];` ```i8 : a+b^100+c*d 100 o8 = b + c*d + a o8 : R```

## Elimination order

To use an elimination order, which eliminates the first 2 variables, use
 `i9 : R = ZZ[a..f, MonomialOrder=>Eliminate 2];` ```i10 : a+b^100+c*d 100 o10 = b + a + c*d o10 : R```
Alternatively, use a weight vector
 `i11 : R = ZZ[a..f, MonomialOrder=>Weights=>2:1];` ```i12 : a+b^100+c*d 100 o12 = b + a + c*d o12 : R```

## Product (block) order

To make a product order where each block has the GRevLex order:
 `i13 : R = ZZ[a..f, MonomialOrder=>{2,4}];` ```i14 : a^2*(c+d) + b*(c^100+d^100)*(c + e + f) 2 2 101 100 100 100 100 100 o14 = a c + a d + b*c + b*c*d + b*c e + b*d e + b*c f + b*d f o14 : R```
The orders in each block can be other orders as well.
 ```i15 : R = ZZ[a..f, MonomialOrder=>{Weights=>2:1,Lex}] o15 = R o15 : PolynomialRing``` ```i16 : a^2*(c+d) + b*(c^100+d^100)*(c + e + f) 2 2 101 100 100 100 100 100 o16 = a c + a d + b*c + b*c e + b*c f + b*c*d + b*d e + b*d f o16 : R```

## GroupLex

This order is useful for making degree rings, and allows some variables to appear with negative exponent.
 `i17 : R = ZZ[a..f, MonomialOrder => GroupLex => 3];` ```i18 : a^-2*(c+d) + b*(c^100+d^100)*(c + e + f) 101 100 100 100 100 100 -2 -2 o18 = b*c + b*c e + b*c f + b*c*d + b*d e + b*d f + a c + a d o18 : R```

## GroupRevLex

This order is useful for making degree rings, and allows some variables to appear with negative exponent. Not implemented yet.

## RevLex

Warning: this is a local ordering, not a global ordering.
 `i19 : R = ZZ[a..f, MonomialOrder=>RevLex, Global=>false];` ```i20 : a^2*(c+d) + b*(c^100+d^100)*(c + e + f) 100 100 100 100 100 101 2 2 o20 = b*d f + b*d e + b*c*d + b*c f + b*c e + b*c + a d + a c o20 : R```

## NCLex

For non-commutative Gröbner bases. Not implemented yet.