PolynomialIdeals[PolynomialIdeal]
construct a polynomial ideal
convert/PolynomialIdeal
convert to a polynomial ideal
type/PolynomialIdeal
test for a polynomial ideal
mod
convert ideal to a different characteristic

Calling Sequence


PolynomialIdeal(generators, options)
PolynomialIdeal(J, options)
<generators, (options)>
convert(a, PolynomialIdeal)
type(a, PolynomialIdeal)
J mod p


Parameters


generators



sequence, set, or list of polynomials generating the ideal

options



(optional) properties of the ideal and polynomial ring

J



polynomial ideal

a



arbitrary object

p



prime





Description


•

The PolynomialIdeal command constructs a polynomial ideal from a sequence of generators and properties. The ideal generators must be entered as polynomials and the properties of the ideal or its polynomial ring are input as equations of the form keyword=value. A shortcut <...> notation is also available whenever the package has been loaded using with(PolynomialIdeals).

•

The two most common properties are characteristic=nonnegint, used to specify the ring characteristic, and variables=set(name), used to specify the variables of the polynomial ring when there are also parameters. The default characteristic is zero, while the variables default to every name not appearing inside of a RootOf or radical expression. All other names are considered parameters. You can also specify the parameters with parameters=set(name), which the constructor converts to a corresponding variables option.

•

The Maple precedence rules for binary operators require that options (which are specified with equations) be enclosed in parentheses when using the <...> form of this command.

•

An especially useful feature: the constructor also accepts polynomial ideals as input. A typical use of this is to add a generator to an ideal. The new ideal "inherits" generators and properties from any ideals that are input, in a left to right fashion. Lists and sets are broken down and processed similarly. Explicitly given properties are also processed left to right, and override any inherited defaults.

•

The data structure representation of a polynomial ideal is an inert function of the form $\mathrm{POLYNOMIALIDEAL}\left(...\right)$. The command type(a, PolynomialIdeal) can be used to test whether a is a polynomial ideal. The data structure contains the generators of the ideal, variables, characteristic, and known Groebner bases. This information can be accessed through the IdealInfo subpackage.

•

The mod operator can be used to convert ideals to different characteristics. J mod p is equivalent to PolynomialIdeal(J, 'characteristic'=p). The characteristic must be zero or a prime.

•

In addition to the characteristic and variables, polynomial ideals also store all their known Groebner bases in a table. Behind the scenes, the system associates this Groebner basis table with a particular set of generators and a characteristic. It uses these associations to recognize identical ideals. When you load a polynomial ideal from an previous Maple session, it still contains all the Groebner bases, but Maple does not store any associations. You can refresh the Maple memory by passing your ideal to the constructor with no additional arguments. For example, after loading the ideal J from a file, executing J := <J> updates the associations.

•

Attempting to add a custom Groebner basis to the Groebner basis table either directly or by way of this constructor may introduce errors. Many routines, particularly HilbertDimension, assume that all Groebner bases are reduced. If you have computed a Groebner basis outside Maple, it is strongly recommended that you form an ideal generated by the basis and call Groebner[Basis] on it. Otherwise, the known_grobner_bases option can be used to add Groebner bases to the table. The syntax is $\mathrm{known\_grobner\_bases}=\[\mathrm{order1}=\mathrm{gb1},\mathrm{order2}=\mathrm{gb2},...\]$.

•

The polynomial ideal constructor automatically adds the characteristic, variables, and known_grobner_bases options to every ideal, so identical ideals are recognized by Maple directly.



Examples


We construct an ideal J in ${Q}_{x,y,z}$ in two ways, test if it is an ideal, and then inspect the data representation of J used by Maple.
>

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

>

$\mathrm{PolynomialIdeal}\left(\left\{x+y\,{x}^{2}+{y}^{2}1\,{z}^{2}2\right\}\right)$

$\u27e8{x}{+}{y}{\,}{{z}}^{{2}}{}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{}{1}\u27e9$
 (1) 
>

$J\u2254\u27e8{x}^{2}+{y}^{2}1\,x+y\,{z}^{2}2\u27e9$

${J}{\u2254}\u27e8{x}{+}{y}{\,}{{z}}^{{2}}{}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{}{1}\u27e9$
 (2) 
>

$\mathrm{type}\left(J\,\mathrm{PolynomialIdeal}\right)$

>

$\mathrm{lprint}\left(J\right)$

POLYNOMIALIDEAL(x+y,z^22,x^2+y^21,variables = {x, y, z},characteristic = 0,known_groebner_bases = (table([])))
 
The next three lines construct the ideal J in ${\left({Z}_{3}\right)}_{x,y}$. We verify that the results are the same ideal. Then we test if the polynomial f is in J. This test implicitly constructs a Groebner basis for J. This is apparent when we inspect the ideal.
>

$J\u2254\mathrm{PolynomialIdeal}\left({x}^{2}+{y}^{2}x+1\,{y}^{2}1\,\mathrm{characteristic}=3\right)$

${J}{\u2254}\u27e8{{y}}^{{2}}{+}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{+}{2}{}{x}{+}{1}\u27e9$
 (4) 
>

$K\u2254\u27e8{x}^{2}+{y}^{2}x+1\,{y}^{2}1\,\mathrm{characteristic}=3\u27e9$

${K}{\u2254}\u27e8{{y}}^{{2}}{+}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{+}{2}{}{x}{+}{1}\u27e9$
 (5) 
>

$L\u2254\u27e8{x}^{2}+{y}^{2}x+1\,{y}^{2}1\u27e9\phantom{\rule[0.0ex]{0.3em}{0.0ex}}\mathbf{mod}\phantom{\rule[0.0ex]{0.3em}{0.0ex}}3$

${L}{\u2254}\u27e8{{y}}^{{2}}{+}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{+}{2}{}{x}{+}{1}\u27e9$
 (6) 
>

$\mathrm{evalb}\left(J=K\phantom{\rule[0.0ex]{0.3em}{0.0ex}}{\textstyle \mathbf{and}}\phantom{\rule[0.0ex]{0.3em}{0.0ex}}J=L\right)$

>

$f\u2254{x}^{2}{y}^{2}$

${f}{\u2254}{{x}}^{{2}}{}{{y}}^{{2}}$
 (8) 
>

$f\phantom{\rule[0.0ex]{0.3em}{0.0ex}}\mathbf{in}\phantom{\rule[0.0ex]{0.3em}{0.0ex}}J$

>

$\mathrm{lprint}\left(J\right)$

POLYNOMIALIDEAL(y^2+2,x^2+y^2+2*x+1,variables = {x, y},characteristic = 3,known_groebner_bases = (table([(tdeg(x,y))=[[1, y^2, y^2+2], [1, x^2, x^2+2*x+2]]])))
 
The new ideal K below inherits characteristic=3 and variables={x, y} from J. Therefore, it does not add z to the set of variables, despite the fact that z appears in the new polynomial. To add z to the set of variables, explicitly add variables={x, y, z} to the input, or equivalently parameters={}. The Add command is also appropriate.
>

$K\u2254\u27e8J\,xz1\u27e9$

${K}{\u2254}\u27e8{{y}}^{{2}}{+}{2}{\,}{x}{}{z}{+}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{+}{2}{}{x}{+}{1}\u27e9$
 (10) 
>

$\mathrm{IdealInfo}\left[\mathrm{Characteristic}\right]\left(K\right)$

>

$\mathrm{IdealInfo}\left[\mathrm{Variables}\right]\left(K\right)$

$\left\{{x}{\,}{y}\right\}$
 (12) 
>

$L\u2254\u27e8J\,xz1\,\mathrm{parameters}=\varnothing \u27e9$

${L}{\u2254}\u27e8{{y}}^{{2}}{+}{2}{\,}{x}{}{z}{+}{2}{\,}{{x}}^{{2}}{+}{{y}}^{{2}}{+}{2}{}{x}{+}{1}\u27e9$
 (13) 
>

$\mathrm{IdealInfo}\left[\mathrm{Variables}\right]\left(L\right)$

$\left\{{x}{\,}{y}{\,}{z}\right\}$
 (14) 





