Details of the Groebner Package
List of Groebner Package Commands
This page contains complete information about the Groebner package, with the exception of computations of Groebner bases for modules, for which users are referred to Groebner Bases for Modules. For basic information on the Groebner package, see the Groebner help page.
The Groebner package is a collection of commands for doing Groebner basis calculations in skew algebras like Weyl and Ore algebras and in corresponding modules like D-modules. It can also be used in the case of usual commutative polynomials.
Whereas in the commutative case the ideals (respectively modules) are two-sided, in the skew case we focus on left-sided ideal (respectively modules). This corresponds to skew polynomials acting on functions on the left.
Each command in the Groebner package can be accessed by using either the long form or the short form of the command name in the command calling sequence.
The following is a list of available commands.
To display the help page for a particular Groebner command, see Getting Help with a Command in a Package.
These commands make Groebner basis calculations and related facilities available in commutative algebras of polynomials and in skew algebras. For details, see Ore_algebra[poly_algebra], Ore_algebra[Weyl_algebra], and Ore_algebra. Such calculations are also available in the case of algebraic and modular coefficients. For the case of modules, see Computing Groebner Bases for Modules.
The MonomialOrder command declares a monomial order on an algebra and returns a table that describes it. This table is needed by other commands in the package. Alternatively, a short monomial order description can be used in simple cases (see type(...,ShortMonomialOrder)). The TestOrder command checks if two monomials are in a given monomial order. Many predefined monomial orderings are available, including total degree, lexicographic, elimination, and matrix-defined orderings.
The commands LeadingCoefficient, LeadingMonomial, and LeadingTerm compute the leading coefficient, leading monomial, and leading term of a polynomial respectively.
The NormalForm command computes the normal form of a polynomial modulo an ideal. The command Reduce returns the pseudo-remainder of a polynomial in the division by a list of polynomials. The InterReduce command inter-reduces a list of polynomials. Both the NormalForm and Reduce commands are usually used after a (reduced) Groebner basis has been computed.
The Basis command computes a (reduced) Groebner bases either in an algebra of skew polynomials (an Ore algebra) or in an algebra of usual polynomials. It also computes Groebner bases for modules over (usual or skew) polynomial rings. The RememberBasis command makes a Groebner basis known to the system without performing any computation.
In the commutative case, the Solve command preprocesses a set of generators in view of solving.
The SPolynomial command computes the S-polynomial of two polynomials.
The UnivariatePolynomial command finds univariate polynomials of least degree in a polynomial ideal.
The MultivariateCyclicVector command is a general-purpose and parametrizable iteration algorithm based on idea behind the FGLM algorithm.
The commands IsZeroDimensional and IsProper decide whether an ideal has finitely many solutions, or at least one solution, respectively.
The commands HilbertDimension, HilbertPolynomial, and HilbertSeries compute the Hilbert dimension, Hilbert polynomial, and Hilbert series of an ideal, respectively.
A typical Groebner basis computation is one of the following.
1. Define the appropriate algebra with one of: Ore_algebra[poly_algebra], Ore_algebra[diff_algebra], Ore_algebra[shift_algebra], Ore_algebra[qshift_algebra], or Ore_algebra[skew_algebra].
2. Define the appropriate monomial order on the algebra with Groebner[MonomialOrder].
3. Call Groebner[Basis], or in simple cases call Groebner[Basis] with the short syntax.
A typical test of membership in an ideal is:
1. Perform a Groebner basis computation to find a Groebner basis of the ideal (usually with tdeg);
2. Call Groebner[Reduce] to test whether it returns zero.
A typical use of Groebner bases for elimination is:
1. Compute a Groebner basis with respect to an elimination monomial order (with the lexdeg syntax);
2. Select those polynomials in which the indeterminate to be eliminated has disappeared.
Note: Elimination of a single indeterminate between two polynomials can also be performed using Ore_algebra[skew_elim].
When relevant, most commands of the Groebner package accept algebraic numbers and algebraic functions denoted by I, radicals, or RootOfs in their the inputs. Exceptions are Groebner[MultiplicationMatrix], Groebner[NormalSet], and Groebner[Solve]. Also when relevant, they accept PolynomialIdeal data structures in their input.
You can use the Groebner package in conjunction with the PolynomialIdeals package.
Note: Both packages have the following exports of the same name and almost identical functionality: HilbertDimension, IsProper, IsZeroDimensional, and UnivariatePolynomial. After loading both packages using with, these names refer to the corresponding exports of the most recently loaded package, but you can still access the exports with the same name in the other package using the long form, that is, by prepending the package name.
Short Versus General Syntax for Term Orders
Simple Groebner basis calculation using the short syntax:
G ≔ map⁡numer,s2⁢x2⁢y2⁢s+1−s+1⁢y,3⁢s−1⁢x⁢y23−1⁢xs−1:
More complicated one using the general syntax:
A ≔ poly_algebra⁡s,x,y,characteristic=3,rational=s:
T ≔ MonomialOrder⁡A,tdeg⁡x,y:
Lauricella Functions and Partial Differential Systems
The following example deals with Lauricella functions. It illustrates Groebner basis computation in D-modules with parameters in the ground field.
n ≔ 2:
S ≔ add⁡xi⁢Di,i=1..n
A ≔ skew_algebra⁡comm=a,b,seq⁡ci,i=1..n,seq⁡diff=Di,xi,i=1..n,polynom=seq⁡xi,i=1..n:
P ≔ skew_product⁡S+a,S+b,A
The following operators introduce n other parameters.
foritondoli ≔ skew_product⁡Di,xi⁢Di+ci−1,A−Pend do
M ≔ MonomialOrder⁡A,lexdeg⁡seq⁡Di,i=1..n,seq⁡xi,i=1..n:
The result is a third-order differential system of four equations.
Legendre Polynomials and Differential-Difference Linear Systems
The following example deals with Legendre polynomials: from a differential equation and a mixed differential-difference equation that define them, elimination of Dx yields a difference equation that vanishes on them.
DE ≔ 1−x2⁢Dx2−2⁢x⁢Dx+n⁢n+1
RDE ≔ 1−x2⁢Dx⁢Sn+n+1⁢x⁢Sn−n+1
A ≔ skew_algebra⁡diff=Dx,x,shift=Sn,n,polynom=x,n:
M ≔ MonomialOrder⁡A,lexdeg⁡Dx,n,x,Sn:
G ≔ Basis⁡DE,RDE,M
Continuing this application, we derive a proof that Legendre polynomials satisfy
Indeed, it follows that the summand orthopolyP⁡n,z⁢un in the identity that we want to prove satisfies
G ≔ map⁡numer@normal,convert⁡G,setSn=Snu|convert⁡G,setSn=Snu∪u⁢Du−n
in the new algebra C⁡z,u⁢n⁢Dz,Du,Sn. (Since the index of summation is n, we consider polynomials in this variable to allow for its elimination.)
A ≔ skew_algebra⁡diff=Dx,x,diff=Du,u,shift=Sn,n,polynom=n:
M ≔ MonomialOrder⁡A,lexdeg⁡n,Dx,Du,Sn:
GB ≔ Basis⁡G,M
The previous equations are satisfied by the summand. Setting Sn=1 in them yields equations satisfied by the sum. A final Groebner basis calculation returns these equations:
GB ≔ Basis⁡remove⁡has,GB,nSn=1|remove⁡has,GB,nSn=1,M:
Solving this simple system of PDEs yields the announced closed form.
PolynomialIdeals Example Worksheet
Terminology Used in Groebner
Download Help Document
What kind of issue would you like to report? (Optional)