
Calling Sequence


MonomialOrder(A, tord, M)


Parameters


A



a polynomial algebra created with the Ore_algebra package

tord



ShortMonomialOrder or a userdefined monomial order

M



(optional) module placeholder variables





Description


•

The MonomialOrder command constructs a term order on a polynomial algebra A. This object (called a MonomialOrder) may be used with other commands in the Groebner package to do computations with modules and (left) ideals of noncommutative skew polynomials.

•

For commutative problems you typically do not need to construct a MonomialOrder, you can use a short monomial order description (such as plex(x,y,z)) instead. For a list of these short monomial orders, see the Monomial Orders help page.

•

The first argument is an algebra A defined by the Ore_algebra package. It can be one of the following:

•

The second argument should be a ShortMonomialOrder, which describes the order imposed on variables of the algebra. For example, plex(x,y,z) describes lexicographic order with x > y > z. All of the variables of the algebra A must be ordered. For a list of short monomial orders, see the Monomial Orders help page.

•

The second argument can also describe a userdefined monomial order, which can have the form user(P, L) or user(P, Q, L). In both cases P is a procedure taking two monomials as arguments and returning true if and only if they are in increasing order, L is the list of indeterminates with respect to which the monomial order is defined, and (optionally) Q is a procedure for computing the leading term of a polynomial (see LeadingTerm). The procedure Q should take a polynomial as input and return the sequence (leading coefficient, leading monomial).

•

The optional third argument M is a list or set of module placeholder variables. These variables must be included in the algebra A and ordered by the monomial order tord. Multiplication by elements of M is not allowed, so distinct monomials in the variables of M indicate different module components. See the Groebner[Basis_details] help page for more information.

•

Due to technical limitations in the Ore_algebra package, you can not use algebras with pairs of variables that depend on each other, such as d[x] and x, to construct a MonomialOrder. In general, depends(u,v) must return false for each pair of variables $u\ne v$, otherwise MonomialOrder will return an error. Use variable names such as dx and x or d[1] and x[1] instead. This limitation does not apply to ordinary commutative computations using ShortMonomialOrders.

•

Note: the termorder command is deprecated. It may not be supported in a future Maple release.



Examples


First we construct a monomial order on the polynomial ring Q[x,y,z]. The monomials are ordered by lexicographic order with x > y > z.
>

$\mathrm{with}\left(\mathrm{Ore\_algebra}\right)\:$

>

$\mathrm{with}\left(\mathrm{Groebner}\right)\:$

>

$A\u2254\mathrm{poly\_algebra}\left(x\,y\,z\right)$

${A}{\u2254}{\mathrm{Ore\_algebra}}$
 (1) 
>

$T\u2254\mathrm{MonomialOrder}\left(A\,\mathrm{plex}\left(x\,y\,z\right)\right)$

${T}{\u2254}{\mathrm{monomial\_order}}$
 (2) 
We can now do Groebner basis computations using T, although in this case an equivalent short syntax can be used.
>

$f\u22544yx3{z}^{2}+y{z}^{2}5{x}^{4}+{x}^{3}{z}^{2}$

${f}{\u2254}{{x}}^{{3}}{}{{z}}^{{2}}{}{5}{}{{x}}^{{4}}{+}{y}{}{{z}}^{{2}}{}{4}{}{y}{}{x}{}{3}{}{{z}}^{{2}}$
 (3) 
>

$\mathrm{LeadingTerm}\left(f\,T\right)$

${\mathrm{5}}{,}{{x}}^{{4}}$
 (4) 
>

$\mathrm{LeadingTerm}\left(f\,\mathrm{plex}\left(x\,y\,z\right)\right)$

${\mathrm{5}}{,}{{x}}^{{4}}$
 (5) 
For more complicated domains, such as modules or skew polynomial rings, it is necessary to define a MonomialOrder. Below we define a Weyl algebra with D[i]*x[i] = x[i]*D[i] + 1 for i=1..2. The D[i] are variables and the x[i] are parameters. The ring is ordered using gradedreverse lexicographic order with D[1] > D[2].
>

$A\u2254\mathrm{diff\_algebra}\left(\left[\mathrm{D}\left[1\right]\,x\left[1\right]\right]\,\left[\mathrm{D}\left[2\right]\,x\left[2\right]\right]\right)$

${A}{\u2254}{\mathrm{Ore\_algebra}}$
 (6) 
>

$A\left[''polynomial\_indets''\right]$

$\left\{{{\mathrm{D}}}_{{1}}{\,}{{\mathrm{D}}}_{{2}}\right\}$
 (7) 
>

$A\left[''rational\_indets''\right]$

$\left\{{{x}}_{{1}}{\,}{{x}}_{{2}}\right\}$
 (8) 
>

$T\u2254\mathrm{MonomialOrder}\left(A\,\mathrm{tdeg}\left(\mathrm{D}\left[1\right]\,\mathrm{D}\left[2\right]\right)\right)$

${T}{\u2254}{\mathrm{monomial\_order}}$
 (9) 
>

$\mathrm{SPolynomial}\left(\mathrm{D}\left[1\right]x\left[2\right]x\left[2\right]\,\mathrm{D}\left[2\right]x\left[1\right]x\left[1\right]\,T\right)$

$\left({{x}}_{{2}}{}{{x}}_{{1}}{+}{{x}}_{{1}}\right){}{{\mathrm{D}}}_{{1}}{+}\left({}{{x}}_{{2}}{}{{x}}_{{1}}{}{{x}}_{{2}}\right){}{{\mathrm{D}}}_{{2}}{}{{x}}_{{1}}{+}{{x}}_{{2}}$
 (10) 
A userdefined (lexicographic) order
>

$A\u2254\mathrm{poly\_algebra}\left(x\,y\,z\right)\:$

>

P := proc(t1, t2) global x,y,z; (degree(t1,x) < degree(t2,x)) or (degree(t1,x) = degree(t2,x) and degree(t1,y) < degree(t2,y)) or (degree(t1,x) = degree(t2,x) and degree(t1,y) = degree(t2,y) and degree(t1,z) <= degree(t2,z)) end proc:

>

$T\u2254\mathrm{MonomialOrder}\left(A\,'\mathrm{user}'\left(P\,\left[x\,y\,z\right]\right)\right)$

${T}{\u2254}{\mathrm{monomial\_order}}$
 (11) 
>

$\mathrm{LeadingTerm}\left(f\,T\right)$

${\mathrm{5}}{,}{{x}}^{{4}}$
 (12) 


