|
Calling Sequence
|
|
MonomialOrder(A, tord, M)
|
|
Parameters
|
|
A
|
-
|
a polynomial algebra created with the Ore_algebra package
|
tord
|
-
|
ShortMonomialOrder or a user-defined 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 non-commutative 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 user-defined 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 , 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.
We can now do Groebner basis computations using T, although in this case an equivalent short syntax can be used.
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 graded-reverse lexicographic order with D[1] > D[2].
A user-defined (lexicographic) order
>
|
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:
|
|
|
|