Description
The lexicographic order is defined by: $x^A > x^B$ if the FIRST non-zero entry of the vector of integers
A-B is POSITIVE.
i1 : R = QQ[a..d, MonomialOrder => Lex];
|
i2 : a^3 + a^2*b^2 + b*c
3 2 2
o2 = a + a b + b*c
o2 : R
|
The largest possible exponent of variables in
Lex order is 2^31-1. For efficiency reasons, the size of the exponents of variables may be restricted. Then instead of
Lex, one can use
MonomialSize=>16, which allows maximal exponent 2^15-1, or
MonomialSize=>8, which allows maximal exponent 2^7-1.
i3 : B = QQ[a..d,MonomialOrder=>Lex,MonomialSize=>16];
|
i4 : a^(2^15-1)
32767
o4 = a
o4 : B
|
i5 : C = QQ[a..d,MonomialOrder=>Lex,MonomialSize=>8];
|
i6 : try a^(2^15-1) else "failed"
o6 = failed
|
i7 : a^(2^7-1)
127
o7 = a
o7 : C
|
Any of these versions of
Lex order may be combined, for example, with a weight order given by a weight vector: x^A > x^B if weight(x^A) > weight(x^B) or if weight(x^A) = weight(x^B) and if the FIRST non-zero entry of the vector of integers A-B is POSITIVE.
i8 : B = QQ[a..d,MonomialSize=>16,MonomialOrder=>{Weights => {1,2,3,4}, Lex}];
|
i9 : a^2 + b+ c + b*d
2
o9 = b*d + c + a + b
o9 : B
|