Details of the Groebner Package
Calling Sequence
Description
List of Groebner Package Commands
Examples
Groebner:-command(arguments)
command(arguments)
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.
Basis
FGLM
HilbertDimension
HilbertPolynomial
HilbertSeries
Homogenize
InitialForm
InterReduce
IsBasis
IsProper
IsZeroDimensional
LeadingCoefficient
LeadingMonomial
LeadingTerm
MatrixOrder
MaximalIndependentSet
MonomialOrder
MultiplicationMatrix
MultivariateCyclicVector
NormalForm
NormalSet
RationalUnivariateRepresentation
Reduce
RememberBasis
Solve
SPolynomial
SuggestVariableOrder
Support
TestOrder
ToricIdealBasis
TrailingTerm
UnivariatePolynomial
Walk
WeightedDegree
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
with⁡Groebner:
Simple Groebner basis calculation using the short syntax:
G≔map⁡numer,s22⁢s+1⁢x2⁢y−s+1⁢y,3⁢s−13⁢x⁢y2−1s−1⁢x:
Basis⁡G,tdeg⁡x,y
3⁢s2⁢x2+−6⁢s4−s3+7⁢s2+s−1⁢y2,3⁢s2−4⁢s+1⁢y3−3⁢y,3⁢s2−4⁢s+1⁢x⁢y2−3⁢x
More complicated one using the general syntax:
with⁡Ore_algebra:
A≔poly_algebra⁡s,x,y,characteristic=3,rational=s:
T≔MonomialOrder⁡A,tdeg⁡x,y:
Basis⁡G,T
y2,s2⁢x2⁢y+s2⁢y+2⁢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
S≔x1⁢D1+x2⁢D2
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
P≔D12⁢x12+2⁢D1⁢D2⁢x1⁢x2+a+b+1⁢x1⁢D1+D22⁢x22+a+b+1⁢x2⁢D2+a⁢b
The following operators introduce n other parameters.
foritondoli≔skew_product⁡Di,xi⁢Di+ci−1,A−Penddo
l1≔D12⁢x1+D1⁢c1−D12⁢x12−2⁢D1⁢D2⁢x1⁢x2−a+b+1⁢x1⁢D1−D22⁢x22−a+b+1⁢x2⁢D2−a⁢b
l2≔D22⁢x2+D2⁢c2−D12⁢x12−2⁢D1⁢D2⁢x1⁢x2−a+b+1⁢x1⁢D1−D22⁢x22−a+b+1⁢x2⁢D2−a⁢b
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.
Basis⁡seq⁡li,i=1..n,M
2⁢D1⁢D2⁢x1⁢x2+D22⁢x1⁢x2+D22⁢x22+a⁢D1⁢x1+x2⁢D2⁢a+b⁢D1⁢x1+x2⁢D2⁢b−x1⁢D1⁢c1−D22⁢x2+c2⁢D2⁢x1+a⁢b+x1⁢D1−D2⁢c2+x2⁢D2,D12⁢x1−D22⁢x2+D1⁢c1−D2⁢c2,2⁢D23⁢x12⁢x2−4⁢D23⁢x1⁢x22+2⁢D23⁢x23+2⁢D1⁢D2⁢x12⁢a−D22⁢x1⁢x2⁢a+3⁢D22⁢x22⁢a+2⁢D1⁢D2⁢x12⁢b−D22⁢x1⁢x2⁢b+3⁢D22⁢x22⁢b−2⁢D1⁢D2⁢x12⁢c1−4⁢D1⁢D2⁢x12⁢c2−4⁢D23⁢x1⁢x2−4⁢D23⁢x22+D22⁢x1⁢x2⁢c1−3⁢c1⁢D22⁢x22+2⁢D22⁢x12⁢c2−6⁢D22⁢x1⁢x2⁢c2+x1⁢D1⁢a2+x2⁢D2⁢a2−2⁢a⁢x1⁢D1⁢b+2⁢a⁢b⁢D2⁢x1+4⁢a⁢x2⁢D2⁢b−2⁢a⁢D1⁢D2⁢x1−3⁢a⁢D22⁢x2−3⁢c1⁢x2⁢D2⁢a−3⁢a⁢c2⁢D2⁢x1+x1⁢D1⁢b2+x2⁢D2⁢b2−2⁢b⁢D1⁢D2⁢x1−3⁢b⁢D22⁢x2−3⁢c1⁢x2⁢D2⁢b−3⁢b⁢c2⁢D2⁢x1+2⁢D1⁢D2⁢c1⁢x1+4⁢D1⁢D2⁢c2⁢x1+6⁢D1⁢D2⁢x12−x1⁢D1⁢c12+2⁢D23⁢x2+3⁢D22⁢c1⁢x2−4⁢D22⁢c2⁢x1−2⁢D22⁢x2⁢c2+2⁢D22⁢x12−5⁢D22⁢x1⁢x2+9⁢D22⁢x22+c1⁢c2⁢D2⁢x1+a2⁢b+a⁢b2−2⁢a⁢b⁢D2−3⁢c1⁢a⁢b−a⁢D2⁢c2+2⁢a⁢D2⁢x1+6⁢x2⁢D2⁢a−b⁢D2⁢c2+2⁢b⁢D2⁢x1+6⁢x2⁢D2⁢b−6⁢D1⁢D2⁢x1+2⁢x1⁢D1⁢c1+2⁢D22⁢c2−4⁢D22⁢x1−11⁢D22⁢x2+3⁢D2⁢c1⁢c2−3⁢c1⁢x2⁢D2−5⁢c2⁢D2⁢x1+3⁢a⁢b−2⁢a⁢D2−2⁢b⁢D2−x1⁢D1+2⁢D22−3⁢D2⁢c2+2⁢D2⁢x1+5⁢x2⁢D2−2⁢D2,2⁢D1⁢D22⁢x22−D23⁢x1⁢x2+3⁢D23⁢x22−a⁢D1⁢D2⁢x1+2⁢a⁢D1⁢D2⁢x2+a⁢D22⁢x2−b⁢D1⁢D2⁢x1+2⁢b⁢D1⁢D2⁢x2+b⁢D22⁢x2−2⁢D1⁢D22⁢x2+D1⁢D2⁢c1⁢x1−4⁢D1⁢D2⁢c1⁢x2+2⁢D1⁢D2⁢c2⁢x1+D23⁢x2−2⁢D22⁢c1⁢x2−D22⁢c2⁢x1+4⁢D22⁢x2⁢c2+2⁢a⁢b⁢D1−a⁢b⁢D2−2⁢a⁢D1⁢c1+2⁢a⁢D2⁢c2−2⁢b⁢D1⁢c1+2⁢b⁢D2⁢c2−2⁢D1⁢D2⁢c2−3⁢D1⁢D2⁢x1+6⁢D1⁢D2⁢x2+2⁢D1⁢c12+D22⁢c2−D22⁢x1+5⁢D22⁢x2−2⁢D2⁢c1⁢c2+2⁢a⁢D1−a⁢D2+2⁢b⁢D1−b⁢D2−4⁢D1⁢c1+D22+4⁢D2⁢c2+2⁢D1−D2
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.
unassign⁡n,P:
DE≔1−x2⁢Dx2−2⁢x⁢Dx+n⁢n+1
DE≔−x2+1⁢Dx2−2⁢x⁢Dx+n⁢n+1
RDE≔1−x2⁢Dx⁢Sn+n+1⁢x⁢Sn−n+1
RDE≔−x2+1⁢Dx⁢Sn+n+1⁢x⁢Sn−n−1
A≔skew_algebra⁡diff=Dx,x,shift=Sn,n,polynom=n,x:
M≔MonomialOrder⁡A,lexdeg⁡Dx,n,x,Sn:
G≔Basis⁡DE,RDE,M
G≔−Sn2⁢n2+2⁢Sn⁢n2⁢x−4⁢Sn2⁢n+7⁢x⁢Sn⁢n−4⁢Sn2+6⁢x⁢Sn−n2−3⁢n−2,−Dx⁢Sn⁢n+Dx⁢n⁢x−Dx⁢Sn+x⁢Dx+n2+2⁢n+1,Dx⁢Sn2⁢n+2⁢Dx⁢Sn2−Dx⁢Sn⁢x−2⁢Sn⁢n2−Dx⁢n−6⁢Sn⁢n−Dx−5⁢Sn,Dx⁢Sn⁢x2−x⁢Sn⁢n−Dx⁢Sn−x⁢Sn+n+1,Dx2⁢x2−Dx2+2⁢x⁢Dx−n2−n
Continuing this application, we derive a proof that Legendre polynomials satisfy
Sum⁡orthopolyP⁡n,z⁢un,n=0..∞=1sqrt⁡1−2⁢z⁢u+u2
∑n=0∞⁡orthopolyP⁡n,z⁢un=1u2−2⁢z⁢u+1
Indeed, it follows that the summand orthopolyP⁡n,z⁢un in the identity that we want to prove satisfies
G≔map⁡numer@normal,eval⁡convert⁡G,set,Sn=Snuunionu⁢Du−n
G≔u⁢Du−n,Dx2⁢x2−Dx2+2⁢x⁢Dx−n2−n,Dx⁢Sn⁢x2−x⁢Sn⁢n−Dx⁢Sn−x⁢Sn+n⁢u+u,Dx⁢n⁢x⁢u−Dx⁢Sn⁢n+x⁢Dx⁢u+n2⁢u−Dx⁢Sn+2⁢n⁢u+u,Dx⁢Sn2⁢n−Dx⁢Sn⁢x⁢u−Dx⁢n⁢u2−2⁢Sn⁢n2⁢u+2⁢Dx⁢Sn2−Dx⁢u2−6⁢Sn⁢n⁢u−5⁢Sn⁢u,2⁢Sn⁢n2⁢x⁢u−Sn2⁢n2+7⁢x⁢Sn⁢n⁢u−n2⁢u2−4⁢Sn2⁢n+6⁢x⁢Sn⁢u−3⁢n⁢u2−4⁢Sn2−2⁢u2
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.)
with⁡Ore_algebra
Ore_to_DESol,Ore_to_RESol,Ore_to_diff,Ore_to_shift,annihilators,applyopr,diff_algebra,dual_algebra,dual_polynomial,poly_algebra,qshift_algebra,rand_skew_poly,reverse_algebra,reverse_polynomial,shift_algebra,skew_algebra,skew_elim,skew_gcdex,skew_pdiv,skew_power,skew_prem,skew_product
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
GB≔−u⁢x⁢Du⁢Sn+Dx⁢Sn⁢x2+u2⁢Du−Dx⁢Sn+u,−u2⁢Du2+Dx2⁢x2−2⁢u⁢Du−Dx2+2⁢x⁢Dx,−u2⁢x⁢Du2−Du⁢Dx⁢u⁢x2+u⁢Du2⁢Sn+u⁢Dx⁢Du−3⁢u⁢x⁢Du−Dx⁢x2+Du⁢Sn+Dx−x,−u⁢Du+n
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⁡eval⁡remove⁡has,GB,n,Sn=1,M:
collect⁡GB,Du,Dx,distributed,factor
u−x⁢u⁢Du+x−1⁢x+1⁢Dx+u,u⁢u2−2⁢u⁢x+1⁢Du2+4⁢u2−5⁢u⁢x+1⁢Du+2⁢u−x
Solving this simple system of PDEs yields the announced closed form.
See Also
Groebner
Ore_algebra
Ore_algebra/poly_algebra
Ore_algebra/skew_algebra
Ore_algebra/Weyl_algebra
PolynomialIdeals
PolynomialIdeals Example Worksheet
PolynomialIdeals[PolynomialIdeal]
RegularChains
Terminology Used in Groebner
UsingPackages
with
Download Help Document