Introduction to the PolynomialIdeals Package
Calling Sequence
Description
List of PolynomialIdeals Package Commands
List of Subpackages
Examples
PolynomialIdeals:-command(arguments)
command(arguments)
The PolynomialIdeals package is a collection of commands that support computations with commutative polynomial ideals in one or more variables over fields, such as computing the primary decomposition of a polynomial ideal.
The main computational engine behind the package is Groebner bases, but no knowledge of them is required to use this package.
Most of the commands support polynomials over the rational numbers, algebraic number fields, rational function fields, and algebraic function fields, as well as finite fields. Coefficients from algebraic extension fields can be specified using radicals or RootOfs.
For an overview of the PolynomialIdeals package, see the PolynomialIdeals Package Example Worksheet.
Each command and variable in the PolynomialIdeals package can be accessed by using either the long form or the short form of the name in the calling sequence.
The long form, PolynomialIdeals:-command, is always available. The short form can be used after loading the package.
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 name, that is, by prepending the package name.
The following is a list of available commands.
Add
Contract
EliminationIdeal
EquidimensionalDecomposition
Generators
HilbertDimension
IdealContainment
IdealInfo
IdealMembership
in
Intersect
IsMaximal
IsPrimary
IsPrime
IsProper
IsRadical
IsZeroDimensional
MaximalIndependentSet
Multiply
NumberOfSolutions
PolynomialIdeal
PrimaryDecomposition
PrimeDecomposition
Quotient
Radical
RadicalMembership
Saturate
Simplify
subset
UnivariatePolynomial
VanishingIdeal
ZeroDimensionalDecomposition
To display the help page for a particular PolynomialIdeals command, click the corresponding link in the table, or enter ?PolynomialIdeals:-command at the Maple prompt.
The following is a list of available subpackages.
interface to PolynomialIdeal data structure
Operators
binary operators: +, *, /, and ^, as well as a form of
Simplify that simplifies to a canonical form
with⁡PolynomialIdeals:
We first create an ideal J using the PolynomialIdeal command. This ideal is generated by the two polynomials given to the constructor. The ideal is assumed to lie in the polynomial ring Qx,y,z by default.
J≔PolynomialIdeal⁡x⁢z−y2,x3−y⁢z
J≔x⁢z−y2,x3−y⁢z
Now we test if a polynomial f in the polynomial ring Qx,y,z is in the ideal J using the IdealMembership command. Because the polynomial f is a polynomial combination of the generators, it is in J.
f≔expand⁡x−y+1⁢x3−y⁢z−z2+x3⁢x⁢z−y2
f≔−x4⁢z+x3⁢y2+x4−x3⁢y−x⁢z3+y2⁢z2+x3−x⁢y⁢z+y2⁢z−y⁢z
IdealMembership⁡f,J
true
Now we show how to do this using a shortcut syntax that corresponds more closely to a standard notation for ideals. This syntax is available whenever the package has been loaded using with(PolynomialIdeals). Otherwise, enclosing a quantity in angled brackets constructs a Vector for use with the LinearAlgebra package. For further options and details for constructing polynomial ideals, see PolynomialIdeal.
finJ
The PrimeDecomposition and PrimaryDecomposition commands compute prime and primary decompositions, respectively. Both return a sequence of ideals whose intersection contains the input ideal. For a prime decomposition, this intersection has the same solutions as the original ideal (the intersection is equal to the radical), whereas for a primary decomposition the intersection is identically equal to the given ideal. The Intersect command is used below to compute this intersection. In this case, our ideal J is radical, so the prime and primary decompositions are the same.
IsRadical⁡J
P≔PrimeDecomposition⁡J
P≔x,y,−x⁢z+y2,x2⁢y−z2,x3−y⁢z
K≔Intersect⁡P
K≔−x⁢z+y2,x3−y⁢z
How do we know that K=J? The IdealContainment command can be used to test multiple inclusions simultaneously. It returns true if all of the inclusions are true, and false if any of them fail. A particularly useful form of the command is shown below, where it is used to test ideal equality.
IdealContainment⁡J,K,J
Turning back to the prime decomposition, to extract the set of generators for one of the components: the Generators command accepts a single ideal, and returns the set of generators in a set.
P1
x,y
Generators⁡P1
How are these computations done? An ideal membership test and an ideal decomposition are performed by first computing a Groebner basis for the ideal. If we inspect the data representation for the ideal J, we notice that a Groebner basis was implicitly computed.
lprint⁡J
POLYNOMIALIDEAL(x*z-y^2,x^3-y*z,characteristic = 0,variables = {x, y, z},known_groebner_bases = (table([(tdeg(z,y,x))=[[1, y^2, -x*z+y^2], [1, x^3, x^3-y*z]]])))
Groebner bases are used extensively by almost every command in this package. They are computed by the system as required. You need not be familiar with Groebner bases to use this package. The Groebner:-Basis command computes a Groebner basis explicitly for an ideal with respect to a given monomial order. A variety of monomial orders are implemented, with a complete list available under MonomialOrders. The default monomial ordering used is known as graded reverse lexicographical order or tdeg in Maple. Here, we explicitly compute a Groebner basis for our ideal J using lexicographic order with z>y>x. See Groebner:-Basis for details. From this example, you can see that the Groebner basis depends on the monomial ordering used. We extract the leading terms of the generators for the Groebner basis; they are y3, x⁢z, and y⁢z.
G≔Groebner:-Basis⁡J,plex⁡z,y,x
G≔−x4+y3,x⁢z−y2,−x3+y⁢z
Groebner:-LeadingMonomial⁡G1,plex⁡z,y,x
y3
Groebner:-LeadingMonomial⁡G2,plex⁡z,y,x
x⁢z
Groebner:-LeadingMonomial⁡G3,plex⁡z,y,x
y⁢z
The next ideal is the intersection of two components, both of which are maximal, that is, prime over Q and zero-dimensional. We extract the smaller component of interest, and then simplify it.
T≔45⁢p+35⁢s−165⁢b−36,35⁢p+40⁢z+25⁢t−27⁢s,15⁢w+25⁢p⁢s+30⁢z−18⁢t−165⁢b2,−9⁢w+15⁢p⁢t+20⁢z⁢s,w⁢p+2⁢z⁢t−11⁢b3,99⁢w−11⁢s⁢b+3⁢b2:
There are a finite number of solutions.
IsZeroDimensional⁡T
There are no repeated solutions.
IsRadical⁡T
There is more than one irreducible component.
IsPrime⁡T
false
L≔IdealInfo:-KnownGroebnerBases⁡T
L≔plex⁡w,z,t,p,s,b,tdeg⁡w,z,t,p,s,b
There are 10 distinct solutions.
Groebner:-LeadingMonomial⁡T,plex⁡w,z,t,p,s,b
p,s,t,w,z,b10
There are two irreducible components.
factor⁡UnivariatePolynomial⁡b,T
10000⁢b2+6600⁢b+2673⁢4380800000000000⁢b8+16108202000000000⁢b7+22514571860000000⁢b6+18624678595600000⁢b5+9432310305572000⁢b4+2959977269862580⁢b3+617295990812985⁢b2+80609374775160⁢b+3361317558192
The smaller component:
Simplify⁡T,10000⁢b2+6600⁢b+2673
−1377−3100⁢b+1800⁢p,−9−500⁢b+200⁢s,81−1850⁢b+750⁢t,3969+9500⁢b+60000⁢w,10287+24500⁢b+18000⁢z,10000⁢b2+6600⁢b+2673
In the mathematical literature, the letters I, J, and K are often used to denote ideals. We have so far refrained from using I because Maple, by default, uses I to denote the imaginary unit whose square is −1. We can use a different letter for the square root of −1 after using the following command, leaving us free to use the letter I for an ideal. We show an example of this next.
I2
−1
interface⁡imaginaryunit=_i
I
_i2
In addition to the generators (which are always specified as polynomials), we can also input options for the polynomial ring (which are always specified as equations). Two of the most important options are characteristic=p, which forces all computations onto the integers modulo p, and variables=S, in which a set S specifies the variables of the polynomial ring. We make use of both options in the following example. The resulting ideal will lie in the polynomial ring Z5⁡ax,y, rather than the default Qx,y,a. When using the shortcut <...> syntax, the Maple operator precedence rules require that you enclose any options in parentheses.
J≔a2⁢x3−2⁢x⁢y,x2⁢y−2⁢a⁢y2+a3⁢x,characteristic=5,variables=x,y
J≔a2⁢x3+3⁢x⁢y,a3⁢x+3⁢a⁢y2+x2⁢y
As an example of a computation with ideals, the intersection of two ideals J1 and J2 in k[x1,x2,...,xn] is given by the following formula: J1⁢intersect⁢J2=t⁢J1+1−t⁢J2⁢intersect⁢k[x1,x2,...,xn]. We make use of the Operators subpackage, which provides binary operators for ideal arithmetic.
with⁡Operators:
J1≔x2−y2
J2≔x3−y3
K≔t⁢J1+1−t⁢J2
K≔t⁢x2−t⁢y2,x4+x3⁢y−x⁢y3−y4,t⁢x⁢y2−t⁢y3−x3+y3
EliminationIdeal⁡K,x,y=Intersect⁡J1,J2
x4+x3⁢y−x⁢y3−y4=x4+x3⁢y−x⁢y3−y4
Note: When ideal operations are applied to different rings, for example, kt,x and kx,y, the ideals are first put into a common ring, in this case, the ring kt,x,y. For our final example, we explain how to test if an ideal is zero-dimensional, that is, the polynomial system of equations has finitely many solutions if in characteristic zero. You can use the HilbertDimension command to compute the dimension of an ideal to do this. Another way is the following; an ideal J in k[x1,...,xn] has dimension zero if the set of leading monomials of the ideal contains {x1e1,...,xnen}, for 0≤ei.
J≔x2+y2−1,x2−2⁢x⁢y+y2,z2−2
J≔z2−2,x2+y2−1,x2−2⁢x⁢y+y2
HilbertDimension⁡J
0
Groebner:-LeadingMonomial⁡J,tdeg⁡x,y,z
x2,y3,z2,x⁢y
G≔Groebner:-Basis⁡J,tdeg⁡x,y,z
G≔z2−2,2⁢x⁢y−1,x2+y2−1,2⁢y3+x−2⁢y
map⁡Groebner:-LeadingMonomial,G,tdeg⁡x,y,z
z2,x⁢y,x2,y3
See Also
Groebner
lprint
MonomialOrders
RegularChains
The PolynomialIdeals Package example worksheet
UsingPackages
with
Download Help Document