Macaulay2 » Documentation
Packages » Macaulay2Doc » rings » polynomial rings » monomial orderings » examples of specifying alternate monomial orders
next | previous | forward | backward | up | index | toc

# examples of specifying alternate monomial orders

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

## Graded reverse lexicographic order

    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

## Graded lexicographic order

    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.

## See also

- Singular Book 1.2.13 -- monomial orderings

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/Macaulay2Doc/ov_monomial_orderings.m2:181:0.