This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

[1]\fnmAnna Maria \surBigatti

[2]\fnmElisa \surPalezzato

[3]\fnmMichele \surTorielli

[1]\orgdivDipartimento di Matematica, \orgnameUniversità degli Studi di Genova, \orgaddress\streetVia Dodecaneso 35, \cityGenova, \postcode16146, \state, \countryItaly

[2]\orgdivDepartment of Mathematics, \orgnameHokkaido University, \orgaddress\streetKita 10, Nishi 8, Kita-Ku, \citySapporo, \postcode060-0810, \stateHokkaido, \countryJapan

3]\orgdivDepartment of Mathematics and Statistics, \orgnameNorthern Arizona University, \orgaddress\street801 S. Osborne Dr., \cityFlagstaff, \postcode86001, \stateArizona, \countryUSA

A new iterative algorithm for comprehensive Gröbner systems

Abstract

A Comprehensive Gröbner system for a parametric ideal II in K(A)[X]K(A)[X] represents the collection of all Gröbner bases of the ideals II^{\prime} in K[X]K[X] obtained as the values of the parameters AA vary in KK.

The recent algorithms for computing them consider the corresponding ideal JJ in K[A,X]K[A,X], and are based on stability of Gröbner bases of ideals under specializations of the parameters. Starting from a Gröbner basis of JJ, the computation splits recursively depending on the vanishing of the evaluation of some “coefficients” in K[A]K[A].

In this paper, taking inspiration from the algorithm described by Nabeshima, we create a new iterative algorithm to compute comprehensive Gröbner systems. We show how we keep track of the sub-cases to be considered, and how we avoid some redundant computation branches using “comparatively-cheap” ideal-membership tests, instead of radical-membership tests.

keywords:
Comprehensive Gröbner systems, Gröbner basis, Algorithm, Radical membership
pacs:
[

MSC Classification]68W30, 13P10

1 Introduction

Let us start with a simple example to introduce the central object of this paper. Consider 𝒞1{\cal C}_{1}, a circle with center (0,0)(0,0) and radius 11, and 𝒞2{\cal C}_{2}, a circle with center (c,0)(c,0) and radius r\sqrt{r}. What is their intersection as cc and rr vary in \mathbb{C}? We can see that there are three cases: if c=0,r=1c=0,\,r=1 the two circles coincide, if c=0,r1c=0,\,r\neq 1 the two circles do not intersect, if c0c\neq 0 the two circles intersect in two points in 2\mathbb{C}^{2} (may be one double point).

Algebraically speaking, the ideal I=x2+y21,(xc)2+y2rI=\langle x^{2}{+}y^{2}{-}1,\;(x{-}c)^{2}{+}y^{2}{-}r\rangle, defined by the equations of 𝒞1\mathcal{C}_{1} and 𝒞2\mathcal{C}_{2}, has a collection of different Gröbner bases depending on the values of the parameters. This is described by a Comprehensive Gröbner system, which is a set of pairs {(𝒜1,G1),,(𝒜l,Gl)}\{(\mathcal{A}_{1},G_{1}),\dots,(\mathcal{A}_{l},G_{l})\}, the Gröbner bases GiG_{i} under the conditions 𝒜i\mathcal{A}_{i}. For example, one such pair is 𝒜1={(r,c)2c0}\mathcal{A}_{1}=\{(r,c)\in\mathbb{C}^{2}\mid c\neq 0\} and its corresponding lex{\rm lex}-Gröbner basis (lex{\rm lex} with x>y>c>rx>y>c>r)
. {x2+y21,cx12c2+12r12,c2y2+14c412rc2+14r212c212r+14}\{\;x^{2}+y^{2}-1,\;\;cx-\frac{1}{2}c^{2}+\frac{1}{2}r-\frac{1}{2},\;\;{c^{2}}{y^{2}}+\frac{1}{4}c^{4}-\frac{1}{2}rc^{2}+\frac{1}{4}r^{2}-\frac{1}{2}c^{2}-\frac{1}{2}r+\frac{1}{4}\;\}

Comprehensive Gröbner systems for parametric ideals were introduced, constructed, and studied in 1992 by Weispfenning, see [12]. After Weispfenning’s work, Kapur in [4] introduced an algorithm for parametric Gröbner bases. However, there was no big development on comprehensive Gröbner systems for around ten years. On the other hand, around 2003, big developments were made by Kapur-Sun-Wang [5], Montes [7], Nabeshima [8], Sato and Suzuki [10, 11], and Weispfenning [13].

Some of algorithms for computing comprehensive Gröbner systems are based on stability of Gröbner bases of ideals under specializations. Each algorithm has a different “stability condition” for monomial bases.

In this paper, taking inspiration from [9], we create a new iterative algorithm to compute comprehensive Gröbner systems.

In Section 2, we recall the definition of a comprehensive Gröbner system and we fix the notation and basic definitions needed for the rest of the paper. In Section 3, we describe the stability conditions used in previous papers to construct comprehensive Gröbner systems involving only computations in K[A,X]K[A,X] instead of doing Gröbner basis computations in K(A)[X]K(A)[X]. In Section 4, we describe our new iterative approach to compute comprehensive Gröbner system and we prove its correctness. In Section 5, we illustrate timings and statistics of our algorithm on known examples. In Section 6, we provide some ideas for further investigations and possible improvements.

2 Notation

Let KK be a field, K¯\bar{K} its algebraic closure, XX a set of NXN_{X} indeterminates, and AA a set of NAN_{A} parameters. We work in the polynomial ring K[A,X]=K[a1,,aNA,x1,,xNX]K[A,X]=K[a_{1},\dots,a_{N\!_{A}},\;x_{1},\dots,x_{N\!_{X}}].

We want to study what happens when we specialize the parameters AA.

Definition 2.1.

Fixed a point PK¯NAP\in\bar{K}^{N\!_{A}}, we indicate with evalP(f)\mathrm{eval}_{P}(f) the evaluation homomorphism from K[A]K[A] to K¯\bar{K}ff(P)f\mapsto f(P). Then we also indicate with evalP\mathrm{eval}_{P} its natural “coefficientwise” extension K[A,X]K¯[X]K[A,X]\rightarrow\bar{K}[X]ff(P,X)f\mapsto f(P,X).

For example, given the point P=(1,3)2P=(1,3)\in\mathbb{Q}^{2} and f=3axy2bxy2+ax2+bf=3axy^{2}-bxy^{2}+ax^{2}+b in [a,b,x,y]\mathbb{Q}[a,b,\;x,y], we have evalP(f)=x2+3[X]\mathrm{eval}_{P}(f)=x^{2}+3\in\mathbb{Q}[X].

Fixed a term-ordering τ\tau on the power-products of K[A,X]K[A,X], for a polynomial fK[A,X]f\in K[A,X] we denote by LPP(f)K[A,X]\operatorname{LPP}(f)\in K[A,X] the τ\tau-greatest power-product in the support of ff, by LC(f)K\operatorname{LC}(f)\in K its coefficient, and by LM(f)=LC(f)LPP(f)\operatorname{LM}(f)=\operatorname{LC}(f)\cdot\operatorname{LPP}(f).

Throughout this paper we will only consider elimination orderings for XX, i.e. such that any power-product only in AA is smaller than all power-products containing some xiXx_{i}\in X. Such orderings reflect the interpretation of K[A,X]K[A,X] as K[A][X]K[A][X], with the polynomials in AA seen as “parametric coefficients”:

Definition 2.2.

Given on K[A,X]K[A,X] an elimination ordering τ\tau for XX, we indicate with τX\tau_{X} its restriction to the power-products only in XX. Then we indicate with LPPX(f)K[X]\operatorname{LPP}_{X}(f)\in K[X] the τX\tau_{X}-greatest power-product of ff as a polynomial in K[A][X]K[A][X], and with LCX(f)\operatorname{LC}_{X}(f) its coefficient in K[A]K[A].

Example 2.3.

For f=(a2b)x3y+3abxy2[a,b,x,y]f=(a^{2}{-}b)x^{3}y+3abxy^{2}\in\mathbb{Q}[a,b,x,y] equipped with any elimination ordering for X={x,y}X=\{x,y\} such that x3y>xy2x^{3}y>xy^{2}, e.g. τ=lex\tau={\rm lex}, then we have LPP(f)=a2x3y\operatorname{LPP}(f)=a^{2}x^{3}y with LC(f)=1\operatorname{LC}(f)=1, and LPPX(f)=x3y\operatorname{LPP}_{X}(f)=x^{3}y with LCX(f)=a2b\operatorname{LC}_{X}(f)=a^{2}{-}b.

Throughout this paper, we indicate with gothic letters 𝔞\mathfrak{a}, 𝔟\mathfrak{b}, 𝔤\mathfrak{g} ideals in K[A]K[A] (and their embedding in K[A,X]K[A,X]), and with II, JJ ideals in K[A,X]K[A,X].

Now we can formally define a Comprehensive Gröbner system.

Definition 2.4.

Given an ideal II in K[A,X]K[A,X], a finite set of pairs, called segments, CGS={(𝒜1,G1),,(𝒜,G)}\operatorname{{\mathrm{C}GS}}=\{(\mathcal{A}_{1},G_{1}),\dots,(\mathcal{A}_{\ell},G_{\ell})\} is a comprehensive Gröbner system for II if

  • 𝒜1,,𝒜\mathcal{A}_{1},\dots,\mathcal{A}_{\ell} are algebraically constructible subsets of K¯NA\bar{K}^{N\!_{A}}
    (i.e. 𝒜j=𝕍(𝔞j)𝕍(𝔟j)\mathcal{A}_{j}=\mathbb{V}(\mathfrak{a}_{j})\setminus\mathbb{V}(\mathfrak{b}_{j}) with 𝔞j,𝔟j\mathfrak{a}_{j},\mathfrak{b}_{j} ideals in K[A]K[A]) and 𝒜j=K¯NA\cup\mathcal{A}_{j}=\bar{K}^{N\!_{A}}

  • G1,,GG_{1},\dots,G_{\ell} are finite subsets of K[A,X]K[A,X]

  • for each segment (𝒜j,Gj)(\mathcal{A}_{j},G_{j}) in CGS\operatorname{{\mathrm{C}GS}} and for any point P𝒜jP\in\mathcal{A}_{j} we have that evalP(Gj)\mathrm{eval}_{P}(G_{j}) is a τX\tau_{X}-Gröbner basis of the ideal evalP(I)\mathrm{eval}_{P}(I) in K¯[X]\bar{K}[X].

3 Stability and algorithms

In this section we recall how recent algorithms use stability conditions to construct comprehensive Gröbner systems involving only computations in K[A,X]K[A,X] instead of having to track the arithmetic inside a Gröbner basis computation in K(A)[X]K(A)[X].

Suzuki-Sato in [11] observed that the stability theorem proved by Kalkbrener (for any ring homomorphism ϕ:K[A]K¯\phi:K[A]\longrightarrow\bar{K}), re-read in terms of evalP\mathrm{eval}_{P}, provided this new approach for computing comprehensive Gröbner systems.

Theorem 3.1 (Kalkbrener [3], Suzuki-Sato [11]).

Let II be an ideal in K[A,X]K[A,X]. Let τ\tau be an XX-elimination term-ordering on the power-products in K[A,X]K[A,X] and GG a τ\tau-Gröbner basis of II.

Fix a point PK¯NAP\in\bar{K}^{N\!_{A}} such that evalP(LCX(g))0\mathrm{eval}_{P}(\operatorname{LC}_{X}(g)){\neq}0 for each gG(GK[A])g\in G\setminus(G{\cap}K[A]). Then, evalP{G}\mathrm{eval}_{P}\{G\} is a τX\tau_{X}-Gröbner basis of evalP(I)\mathrm{eval}_{P}(I).

We briefly illustrate with a small example how they applied this theorem for constructing a comprehensive Gröbner system.

Example 3.2.

Consider again, from the Introduction, I:=f,g[c,r,x,y]I:=\langle f,g\rangle\in\mathbb{C}[c,r,x,y], where f:=x2+y21f:=x^{2}+y^{2}-1 and g:=(xc)2+y2rg:=(x{-}c)^{2}+y^{2}-r, and we fix the term-ordering lex{\rm lex} with x>y>c>rx>y>c>r, which is an elimination ordering for {x,y}\{x,y\}. The first step of the algorithm consists in computing a lex{\rm lex}-reduced Gröbner basis of II:
G={x2¯+y21,cx¯12c2+12r12,G=\{\underline{\;x^{2}}+y^{2}-1,\quad\underline{\;{c}{x}\;}-\frac{1}{2}c^{2}+\frac{1}{2}r-\frac{1}{2},
. rxx¯2cy212c3+12rc+32c,c2y2¯+14c412rc2+14r212c212r+14}.\underline{\;{r}{x}{-}{x}}-2cy^{2}-\frac{1}{2}c^{3}+\frac{1}{2}rc+\frac{3}{2}c,\quad\underline{\;{c^{2}}{y^{2}}}+\frac{1}{4}c^{4}-\frac{1}{2}rc^{2}+\frac{1}{4}r^{2}-\frac{1}{2}c^{2}-\frac{1}{2}r+\frac{1}{4}\;\}.

From Theorem 3.1 we know that GG is a lexx,y{\rm lex}_{x,y}-Gröbner basis of the specialization of II for any (c,r)(c,r) in 𝒜1=¯2(𝕍(c)𝕍(r1)𝕍(c2))\mathcal{A}_{1}=\bar{\mathbb{Q}}^{2}\setminus(\mathbb{V}(c)\cup\mathbb{V}(r{-}1)\cup\mathbb{V}(c^{2})). Then we recursively deal with the remaining zero cases 𝕍(c)\mathbb{V}(c),   𝕍(r1)\mathbb{V}(r-1),   𝕍(c2)\mathbb{V}(c^{2}) by recursively running the algorithm on the ideals I+cI+\langle{c}\rangle,   I+r1I+\langle{r{-}1}\rangle,   I+c2I+\langle{c^{2}}\rangle.

Remark 3.3.

Notice that we can reduce the number of recursion steps by considering the radical of the ideals, in this example c2=c\sqrt{\langle c^{2}\rangle}=\langle c\rangle (see also Section 3.1). Unfortunately, computing the radical of an ideal is difficult to implement and possibly quite slow.

There is a delicate balance to keep in mind: reducing the number of cases to be considered, while controlling the cost for detecting them.

In this direction, further advance was achieved by proving that just a subset of the Gröbner basis in K[A,X]K[A,X] needs to be considered. In [5] Kapur-Sun-Wang discovered a new stability condition, and in [9], Nabeshima improved it, further reducing redundant computation branches.

They are both centered on the following definition.

Definition 3.4.

For a finite set FK[A,X]F\subseteq K[A,X] we define 𝐌𝐁(𝑭){\mathrm{MB}}(F) to be the Minimal Basis of the monomial ideal LPPX(f)fFK[X]\langle\operatorname{LPP}_{X}(f)\mid f\in F\rangle\;\subset K[X] (e.g. in Example 3.2 we have MB(G)={x,y2}{\mathrm{MB}}(G)=\{x,y^{2}\}).

Theorem 3.5.

Let II be an ideal in K[A,X]K[A,X]. Let τ\tau be an XX-elimination term-ordering on the power-products in K[A,X]K[A,X] and GG a τ\tau-Gröbner basis of II.

Let 𝔤=GK[A]\mathfrak{g}=G\cap K[A] and name {t1,,ts}\{t_{1},\dots,t_{s}\} the power-products in MB(G𝔤){\mathrm{MB}}(G\setminus\mathfrak{g}).

(Kapur-Sun-Wang [5])

For each tit_{i}, select one polynomial gtiGg_{t_{i}}{\in}G (not uniquely determined) such that LPPX(gti)=ti\operatorname{LPP}_{X}(g_{t_{i}})=t_{i}

Then, for all P𝕍(𝔤)(𝕍(LCX(g1))𝕍(LCX(g2))𝕍(LCX(gs)))P\in\mathbb{V}(\mathfrak{g})\setminus(\mathbb{V}(\operatorname{LC}_{X}(g_{1}))\cup\mathbb{V}(\operatorname{LC}_{X}(g_{2}))\cup\cdots\cup\mathbb{V}(\operatorname{LC}_{X}(g_{s}))),
evalP({gt1,,gts})\mathrm{eval}_{P}(\{g_{t_{1}},\ldots,g_{t_{s}}\}) is a τX\tau_{X}-Gröbner basis of evalP(I)\mathrm{eval}_{P}(I) in K¯[X]\bar{K}[X].

(Nabeshima [9])

For each tit_{i}, let Gti={gGLPPX(g)=ti}G_{t_{i}}=\{g\in G\mid\operatorname{LPP}_{X}(g)=t_{i}\}.

Then, for all P𝕍(𝔤)(𝕍(LCX(Gt1)𝕍(LCX(Gt2)𝕍(LCX(Gts))P\in\mathbb{V}(\mathfrak{g})\setminus(\mathbb{V}(\operatorname{LC}_{X}(G_{t_{1}})\cup\mathbb{V}(\operatorname{LC}_{X}(G_{t_{2}})\cup\cdots\cup\mathbb{V}(\operatorname{LC}_{X}(G_{t_{s}})),
evalP(Gt1Gt2Gts)\mathrm{eval}_{P}(G_{t_{1}}\cup G_{t_{2}}\cup\cdots\cup G_{t_{s}}) is a τX\tau_{X}-Gröbner basis of evalP(I)\mathrm{eval}_{P}(I) in K¯[X]\bar{K}[X].

Example 3.6.

Consider again the two circles from Example 3.2: we have MB(G)={x,y2}{\mathrm{MB}}(G)=\{x,y^{2}\}. So by Theorem (Nabeshima [9])(Nabeshima) we have 𝔤=0\mathfrak{g}=\langle 0\rangle,
Gx={cx¯12c2+12r12,rx1x¯2cy212c3+12rc+32c}G_{x}=\{\underline{{c}{x}}-\frac{1}{2}c^{2}+\frac{1}{2}r-\frac{1}{2},\quad\underline{{r}{x}{-1}{x}}-2cy^{2}-\frac{1}{2}c^{3}+\frac{1}{2}rc+\frac{3}{2}c\},
Gy2={c2y2¯+14c412rc2+14r212c212r+14}G_{{y^{2}}}=\{\underline{{c^{2}}{y^{2}}}+\frac{1}{4}c^{4}-\frac{1}{2}rc^{2}+\frac{1}{4}r^{2}-\frac{1}{2}c^{2}-\frac{1}{2}r+\frac{1}{4}\}.

Then, for all P¯(𝕍(c,r1)𝕍(c2))P\in\bar{\mathbb{Q}}\setminus(\mathbb{V}(\langle c,r-1\rangle)\cup\mathbb{V}(\langle c^{2}\rangle)), evalP(GxGy2)\mathrm{eval}_{P}(G_{{x}}\cup G_{{y^{2}}}) is a lex{x,y}{\rm lex}_{\{x,y\}}-Gröbner basis of evalP(I)\mathrm{eval}_{P}(I) in ¯[x,y]\bar{\mathbb{Q}}[x,y].

3.1 Avoiding redundancy

In Remark 3.3 we pointed out that we may compute radicals of the ideals 𝔞\mathfrak{a} in K[A]K[A] because they describe the same set of points in K¯NA\bar{K}^{N\!_{A}}, and, by doing so, we likely avoid some inconclusive intermediate step in the algorithm. The Gröbner basis computation of I+𝔞I+\sqrt{\mathfrak{a}} should generally be easier (but not always so). The problem here is that computing 𝔞\sqrt{\mathfrak{a}} is hard to implement and may be quite slow to run, so the cost of such computation could be higher than the saving it produces.

In [9] redundancy is avoided by checking, before computing the Gröbner basis of I+𝔞K[A,X]I+\mathfrak{a}\in K[A,X], whether or not 𝕍(𝔞)\mathbb{V}(\mathfrak{a}) actually contains some new point not yet been considered in the previous recursive calls. The information of the processed sets of points is passed through the recursive calls in the form of one ideal: in fact, note that 𝕍(𝔟1)𝕍(𝔟2)=𝕍(𝔟1𝔟2)\mathbb{V}(\mathfrak{b}_{1})\cup\mathbb{V}(\mathfrak{b}_{2})=\mathbb{V}(\mathfrak{b}_{1}\cdot\mathfrak{b}_{2}), so the union of all zero sets may be represented by just one ideal 𝔟\mathfrak{b}. Then, by checking that 𝕍(𝔞)𝕍(𝔟)\mathbb{V}(\mathfrak{a})\setminus\mathbb{V}(\mathfrak{b})\neq\emptyset, we guarantee that no point in K¯NA\bar{K}^{N_{A}} is considered twice. This condition, equivalent to 𝔞𝔟\mathfrak{a}\not\subseteq\sqrt{\mathfrak{b}}, can be computed by radical membership without actually computing 𝔟\sqrt{\mathfrak{b}}: e.g. f𝔟f\not\in\sqrt{\mathfrak{b}} is equivalent to 𝔟+f11\mathfrak{b}+\langle f{-}1\rangle\neq\langle 1\rangle. Therefore, radical membership may be computed in any CAS and is generally cheaper than computing radicals. However, it is still quite expensive.

Here we propose a transversal approach: we convert the recursive structure of the algorithm into an iteration, collecting all the ideals yet to be considered into one set, VanishingToDo. The fact of having all ideals in one set, allows to apply radicals and/or radical membership if desired, but in addition provides further criteria based on simple ideal membership, which is faster to compute (see Remark 4.4).

4 The iterative algorithm

In general, it is always worth investigating whether a recursion could be translated into an iteration. Thinking this way may produce new insights and more efficient code. Instead of recursively passing the objects to be dealt with, we can collect them into one set (we call it VanishingToDo), and one by one we pick and process them.

This approach offers two general optimizations. One is that we can choose how to keep this set “minimal” (where the meaning of “minimal” may vary), and the other is that we can choose which “object” to pick first.

Inspired by Nabeshima’s [9] recursive algorithm, we designed this iterative algorithm. We keep VanishingToDo “minimal” in the sense of ideal inclusion (see Theorem 4.3).


 

Algorithm 4.1.

CGS-Iter

Input

II ideal R=K[A,X]\subset R=K[A,X] with an XX-elimination ordering.

1

Initialization:

VanishingToDo:= {0}\{\langle 0\rangle\} (set of ideals in K[A]K[A])
CGS:=\operatorname{{\mathrm{C}GS}}:=\emptyset (set of pairs (𝒜,G)(\mathcal{A},G), with 𝒜K¯NA\mathcal{A}{\subset}\bar{K}^{N\!_{A}} and GRG\subset R)

2

Main Loop:   while   VanishingToDo \neq\emptyset   do

2.1

𝔞\mathfrak{a} := choose and remove one ideal from VanishingToDo

2.2

J:=I+𝔞J:=I+\mathfrak{a}

2.3

Compute GG, a τ\tau-Gröbner basis of JJ

2.4

𝔤:=JK[A]\mathfrak{g}:=J\cap K[A] (\longrightarrow Note: 𝔤\mathfrak{g} is generated by GK[A]G\cap K[A],  and  𝔞𝔤\mathfrak{a}\subseteq\mathfrak{g})

2.5

if   𝕍(𝔞)𝕍(𝔤)\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g})\neq\emptyset   then (\longrightarrow Note: 𝔞𝔤\mathfrak{a}\subsetneq\mathfrak{g})

2.5.1

append the pair (𝕍(𝔞)𝕍(𝔤),{1})(\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g}),\;\{1\})   to CGS\operatorname{{\mathrm{C}GS}}

2.5.2

if  𝔤\mathfrak{g} contains no ideal in VanishingToDo   then append 𝔤\mathfrak{g} to VanishingToDo

2.6

else   (\longrightarrow Note: 𝕍(𝔞)=𝕍(𝔤)\mathbb{V}(\mathfrak{a})=\mathbb{V}(\mathfrak{g}))

2.6.1

MB{\mathrm{MB}} := MB(G𝔤){\mathrm{MB}}(G\setminus\mathfrak{g}) K[X]\subseteq K[X]

2.6.2

GMB:={gGLPPX(g)MB}GG_{{\mathrm{MB}}}:=\{g\in G\,\mid\,\operatorname{LPP}_{X}(g)\in{\mathrm{MB}}\}\subseteq G

2.6.3

foreach tMBt\in{\mathrm{MB}}   let   𝔠t:=LCX(g)LPPX(g)=tK[A]\mathfrak{c}_{t}:=\langle\operatorname{LC}_{X}(g)\mid\operatorname{LPP}_{X}(g)=t\rangle\;\subseteq K[A]

2.6.4

append the pair (𝕍(𝔤)(tMB𝕍(𝔠t)),GMB)(\;\mathbb{V}(\mathfrak{g})\setminus(\bigcup_{t\in{\mathrm{MB}}}\mathbb{V}(\mathfrak{c}_{t})),\;\;G_{{\mathrm{MB}}})  to CGS\operatorname{{\mathrm{C}GS}}

2.6.5

NewVanishing:= minimalized {𝔠t+𝔤tMB and 𝔠t𝔤}\{\mathfrak{c}_{t}+\mathfrak{g}\mid t\in{\mathrm{MB}}\text{ and }\mathfrak{c}_{t}\not\subseteq\mathfrak{g}\}

2.6.6

for each 𝔟\mathfrak{b} in NewVanishing do
if  𝔟\mathfrak{b} contains no ideal in VanishingToDo   then append 𝔟\mathfrak{b} to VanishingToDo

Output

return CGS\operatorname{{\mathrm{C}GS}};

 

Theorem 4.2.

Let R=K[A,X]=K[a1,,aNA,x1,,xNX]R=K[A,X]=K[a_{1},\dots,a_{N\!_{A}},\;x_{1},\dots,x_{N\!_{X}}] and τ\tau and XX-elimination ordering for the power-products in RR. Let II be any ideal in RR. Then

  1. 1.

    The algorithm CGS-Iter with input II terminates. Call CGSI{\operatorname{{\mathrm{C}GS}}}_{I}  its output.

  2. 2.

    For each pair (𝒜,G)(\mathcal{A},G) in CGSI{\operatorname{{\mathrm{C}GS}}}_{I}, evalP(G)\mathrm{eval}_{P}(G) is a τX\tau_{X}-Gröbner basis for evalP(I)\mathrm{eval}_{P}(I) for any point P𝒜P\in\mathcal{A}.

  3. 3.

    Each point PKNAP\in K^{N\!_{A}} is in (at least) a set 𝒜\mathcal{A} in CGSI{\operatorname{{\mathrm{C}GS}}}_{I}.

In summary, the output CGSI{\operatorname{{\mathrm{C}GS}}}_{I}  is a τ\tau-comprehensive Gröbner system for II.

Proof.

(1) Each ideal 𝔟\mathfrak{b} added to VanishingToDo contains 𝔤=(I+𝔞)K[A]\mathfrak{g}=(I+\mathfrak{a})\cap K[A], where 𝔞\mathfrak{a} is its “parent” (Step [2.1]). Let’s see that 𝔟𝔞\mathfrak{b}\supsetneq\mathfrak{a}. If added in Step [2.5.2] we have 𝔟=𝔤𝔞\mathfrak{b}=\mathfrak{g}\supsetneq\mathfrak{a} because 𝕍(𝔞)𝕍(𝔤)\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g})\neq\emptyset. If added in Step [2.6.6] we have 𝔟𝔤𝔞\mathfrak{b}\supsetneq\mathfrak{g}\supseteq\mathfrak{a}, because 𝔟=𝔠t+𝔤\mathfrak{b}=\mathfrak{c}_{t}+\mathfrak{g} where 𝔠t𝔤\mathfrak{c}_{t}\not\subseteq\mathfrak{g}. In conclusion, we build strictly increasing chains of ideals which are finite by the noetherianity of K[A]K[A]. Moreover, there are finitely many such chains because NewVanishing in Step [2.6.6] is finite, as MB{\mathrm{MB}} is finite for the noetherianity of RR.

(2) If (𝒜,G)(\mathcal{A},G) was added in Step 2.5.1, then 𝒜=𝕍(𝔞)𝕍(𝔤)\mathcal{A}=\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g}), thus (𝒜,{1})(\mathcal{A},\;\{1\}) is a correct segment because 𝔤I+𝔞\mathfrak{g}\subseteq I+\mathfrak{a} therefore for any point P𝒜P\in\mathcal{A} the ideal evalP(I+𝔞)\mathrm{eval}_{P}(I+\mathfrak{a}) contains a non-zero constant.

If (𝒜,G)(\mathcal{A},G) was added in Step 2.6.4 then 𝒜=𝕍(𝔞)(tMB𝕍(𝔠t))\mathcal{A}=\mathbb{V}(\mathfrak{a})\setminus(\bigcup_{t\in{\mathrm{MB}}}\mathbb{V}(\mathfrak{c}_{t})), thus (𝒜,GMB)(\mathcal{A},\;\;G_{{\mathrm{MB}}}) is a correct segment because each point in 𝒜\mathcal{A} satisfies the hypotheses of Theorem 3.5.Nabeshima for the ideal I+𝔞I+\mathfrak{a}.

(3) Let’s consider first what happens in a single iteration of the main loop. Fix a point P𝕍(𝔞)P\in\mathbb{V}(\mathfrak{a}) at Step 2.1. We claim that, before the next iteration, PP is added to CGS\operatorname{{\mathrm{C}GS}} or, to be treated in a later iteration, as a vanishing point in VanishingToDo.

If 𝕍(𝔞)𝕍(𝔤)\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g})\neq\emptyset then

  • if P𝕍(𝔞)𝕍(𝔤)P\in\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g}) then it is contemplated in CGS\operatorname{{\mathrm{C}GS}} (added in Step 2.5.1).

  • else P𝕍(𝔤)P\in\mathbb{V}(\mathfrak{g}). Then, 𝔤\mathfrak{g} is added to VanishingToDo, unless it contains some 𝔟\mathfrak{b} in VanishingToDo. In either case, PP will be listed for consideration as point of 𝕍(𝔤)\mathbb{V}(\mathfrak{g}) or of 𝕍(𝔟)𝕍(𝔤)\mathbb{V}(\mathfrak{b})\subset\mathbb{V}(\mathfrak{g}).

Otherwise, 𝕍(𝔞)𝕍(𝔤)\mathbb{V}(\mathfrak{a})\subset\mathbb{V}(\mathfrak{g}).

  • If P𝕍(𝔞)(tMB𝕍(𝔠t))P\in\mathbb{V}(\mathfrak{a}){\setminus}(\bigcup_{t\in{\mathrm{MB}}}\mathbb{V}(\mathfrak{c}_{t})) then PP is contemplated in CGS\operatorname{{\mathrm{C}GS}} (added in Step 2.6.4)

  • else P𝕍(𝔠t)P\in\mathbb{V}(\mathfrak{c}_{t}) for some tMBt\in{\mathrm{MB}}. Then, 𝔠t\mathfrak{c}_{t} is added to VanishingToDo, unless it contains some other 𝔠t\mathfrak{c}_{t^{\prime}} or 𝔟\mathfrak{b} in VanishingToDo. In either case, PP will be listed for consideration as point of 𝕍(𝔠t)\mathbb{V}(\mathfrak{c}_{t}) directly, or of 𝕍(𝔠t)𝕍(𝔠t)\mathbb{V}(\mathfrak{c}_{t^{\prime}})\subset\mathbb{V}(\mathfrak{c}_{t}), or of 𝕍(𝔟)𝕍(𝔠t)\mathbb{V}(\mathfrak{b})\subset\mathbb{V}(\mathfrak{c}_{t}), or of 𝕍(𝔟)𝕍(𝔠t)𝕍(𝔠t)\mathbb{V}(\mathfrak{b})\subset\mathbb{V}(\mathfrak{c}_{t^{\prime}})\subset\mathbb{V}(\mathfrak{c}_{t}) (Steps 2.6.5 and 2.6.6).
    Notice that P𝕍(𝔞)𝕍(𝔤)P\in\mathbb{V}(\mathfrak{a})\subset\mathbb{V}(\mathfrak{g}), then P𝕍(𝔠t)=𝕍(𝔠t+𝔤)P\in\mathbb{V}(\mathfrak{c}_{t})=\mathbb{V}(\mathfrak{c}_{t}+\mathfrak{g})

This concludes the proof of the Claim.

Now, observe that the algorithm starts with 0\langle 0\rangle in K[A]K[A], so, at the termination of the algorithm, each point PKNAP\in K^{N\!_{A}} is in (at least) a set 𝒜\mathcal{A} in CGSI{\operatorname{{\mathrm{C}GS}}}_{I}. ∎

Although not optimal, we can prove that many redundant branches of computations are avoided by checking ideal membership. In fact, throughout the computation, the set of ideals VanishingToDo is naturally inclusion-minimalized and new additions to it are “inclusion-increasing”. More precisely,

Theorem 4.3.

Throughout the computation, whenever an ideal 𝔟\mathfrak{b} is added to VanishingToDo:

  1. 1.

    𝔟𝔷\mathfrak{b}\not\supseteq\mathfrak{z} for any 𝔷\mathfrak{z} in the current VanishingToDo

  2. 2.

    𝔟𝔷\mathfrak{b}\not\subseteq\mathfrak{z} for any 𝔷\mathfrak{z} ever listed in VanishingToDo

  3. 3.

    VanishingToDo is minimalized

Proof.

By induction. At the end of the first iteration VanishingToDo is either {g}\{\langle g\rangle\} (Step 2.5.2) or minimalized {𝔠t+𝔤tMB and 𝔠t𝔤}\{\mathfrak{c}_{t}+\mathfrak{g}\mid t{\in}{\mathrm{MB}}\text{ and }\mathfrak{c}_{t}{\not\subseteq}\mathfrak{g}\} (Step 2.6.5). And all 3 statements are trivially satisfied.

Let’s consider an iteration starting at Step 2.1, picking 𝔞\mathfrak{a} from VanishingToDo; VanishingToDo is minimalized by induction, so 𝔞𝔷\mathfrak{a}\not\subseteq\mathfrak{z} for any 𝔷\mathfrak{z}\in VanishingToDo. We have 𝔞𝔤\mathfrak{a}\subseteq\mathfrak{g} (Step 2.4).

(1) 𝔟𝔷\mathfrak{b}\not\supseteq\mathfrak{z} is explicitly checked in either cases: 𝔟=𝔤\mathfrak{b}=\mathfrak{g} (Step 2.5.2) or 𝔟\mathfrak{b}\in NewVanishing (Step 2.6.6).

(2) If we add 𝔟=𝔤\mathfrak{b}=\mathfrak{g} in Step 2.5.2, then 𝔞𝔤\mathfrak{a}\subsetneq\mathfrak{g}.

If we add 𝔟\mathfrak{b} from NewVanishing in Step 2.6.6, then 𝔞𝔤𝔟\mathfrak{a}\subseteq\mathfrak{g}\subsetneq\mathfrak{b}.

In either cases, 𝔟𝔷\mathfrak{b}\not\subseteq\mathfrak{z} for any ideal 𝔷\mathfrak{z} ever listed in VanishingToDo, because so was 𝔞\mathfrak{a} (by inductive hypothesis), and because 𝔞𝔟\mathfrak{a}\subsetneq\mathfrak{b}.

(3) In particular, by (1) and (2), it follows that the current VanishingToDo is minimalized.

Remark 4.4.

We just proved that many redundant computations are avoided thanks to the minimalizations (with respect to ideal inclusion) in Steps 2.6.5 and 2.6.6, and discarding ideals in Step 2.5.2.

Compared with the check 𝕍(𝔞)𝕍(𝔟)\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{b})\neq\emptyset described by Nabeshima in [9] (within these algorithms equivalent to the condition 𝔞𝔟\sqrt{\mathfrak{a}}\neq\sqrt{\mathfrak{b}}), our approach misses to detect some redundant branches, but it is computationally cheaper because it is based on ideal membership, which can use many times the same pre-computed Gröbner bases of the ideals, instead of computing the radicals, or the radical membership (which needs a specific Gröbner basis for each pair 𝔞,𝔟\mathfrak{a},\mathfrak{b} – see Section 3.1).

Notice that we kept the check 𝕍(𝔞)𝕍(𝔤)\mathbb{V}(\mathfrak{a}){\setminus}\mathbb{V}(\mathfrak{g})\neq\emptyset in Step 2.5. Choosing when and where to use this more effective+expensive check, is indeed a delicate balance.

Remark 4.5.

In Step 2.5.2 we just append the ideal 𝔤\mathfrak{g} to VanishingToDo (if needed) and then pass to the next iteration, instead of going on and consider the ideals given by the LCX\operatorname{LC}_{X} in GG (as in Step 2.6). By so doing, we “waste” the information included in the Gröbner basis GG we just computed, but on the other hand, the fact that 𝔤\mathfrak{g} is quite different form its “ancestor” 𝔞\mathfrak{a} (it has a different vanishing set) make us believe that we’d better reconsider 𝔤\mathfrak{g} in the “whole picture”, as a new element in the VanishingToDo list (if needed). Moreover, before checking and appending it, we make its generators square-free, so that, when it is processed in a following iteration (Step 2.1), it is “closer” to its radical and may reduce the number of the subsequent computations.

5 Timings

In this table we compare our iterative algorithm, “iter”, with our best implementations of Nabeshima’s algorithm, “N” and “N”, in CoCoA-5.4.1v, running on a MacBookPro (i7, 2.3GHz).

In “N” we disabled Nabeshima’s “RoughCheck”, because this operation is costly and may be intended as a post-processing applicable at the end of any algorithm for removing those segments whose support set is empty. Thus “N” takes less time and returns a higher number of segments.

We used the examples listed in the papers [9], [5] and [6], and we encountered some discrepancies, so we indicate both names. Moreover, for some examples, the time of the very first GB in CoCoA is higher than the time obtained by the other authors for the whole computation, thus we are not quite sure we are using the same conditions/definitions. In particular, CoCoA could not compute the GBasis of Nabeshima’s example S2 with a>b>c>da>b>c>d, so we changed the example into b>c>d>ab>c>d>a.

At the following link

http://www.dima.unige.it/b̃igatti/data/ComprehensiveGroebnerSystems/

the interested reader will find our CoCoA-5 package, CGS.cpkg5 (which is part of the forthcoming release CoCoA-5.4.2), together with the file containing all examples (which we used to generate the table of timings).

To investigate the different routes followed by the two algorithms, we tracked the number of calls and the time spent for some crucial operations:

GB in K[A,X]K[A,X]

the Gröbner basis computations of I+𝔞K[A,X]I+\mathfrak{a}\in K[A,X] with an elimination ordering for XX. This may be quite time consuming, especially for the very first computation: the Gröbner basis of the input ideal II.

GB in K[A]K[A]

the Gröbner basis computations of 𝔞K[A]\mathfrak{a}\in K[A]: this is information is extracted from its actual application within “check 𝔞𝔟\mathfrak{a}\subseteq\mathfrak{b}” and “check 𝕍(𝔞)\𝕍(𝔟)=\mathbb{V}(\mathfrak{a})\backslash\mathbb{V}(\mathfrak{b}){=}\emptyset”.

check 𝔞𝔟\mathfrak{a}\subseteq\mathfrak{b}

only in our iterative algorithm: ideal membership f𝔟f\in\mathfrak{b}, using the Gröbner basis of 𝔟\mathfrak{b}

check 𝕍(𝔞)\𝕍(𝔟)=\mathbb{V}(\mathfrak{a})\backslash\mathbb{V}(\mathfrak{b}){=}\emptyset

(“Checking consistency” in [9] radical membership f𝔟f\in\sqrt{\mathfrak{b}}, checking first if f𝔟f\in\mathfrak{b} (using “GB in K[A]K[A]”), and then using the Gröbner basis of 𝔟+1tf\mathfrak{b}+\langle 1-t{\cdot}f\rangle.

product

only in Nabeshima’s algorithm: the product of the ideals, NN, passed recursively as second argument

MB

the computations of the minimal basis of the monomial ideal LPPX(f)fGBK[X]\langle\operatorname{LPP}_{X}(f)\mid f\in GB\rangle\;\subset K[X] (Definition 3.4)

sqfr

the computations for making square-free the generators of the ideals in K[A]K[A] (Steps 2.5.2 and 2.6.5, and Remark 4.5) without computing the actual radical of the ideal.

last column

final number of segments in the resulting CGS, and the total time for its computation.

In this table we observe that most of the time is spent in computing the GB in K[A,X]K[A,X] and the operations involved in removing redundant computational branches (GB in K[A]K[A], product of ideals, the checks themselves). The complete algorithm “N” also performs “RoughCheck” which removes some useless segment from the final output.

GB in GB in check check ={=}\emptyset
K[A,X]K[A,X] K[A]K[A] 𝔞𝔟\mathfrak{a}\subseteq\mathfrak{b} 𝕍(𝔞)\𝕍(𝔟)\mathbb{V}(\mathfrak{a})\backslash\mathbb{V}(\mathfrak{b}) product MB sqfr # time
SuzukiSato 3
iter 30 0.1s 175 0.0s 419 0.0s 30 0.0s - - 29 0.0s 268 0.0s 30 0.4s
N* 27 0.1s 161 0.0s - - 187 0.0s 159 0.0s 26 0.0s 242 0.0s 28 0.2s
N 27 0.1s 172 0.0s - - 299 0.1s 271 0.0s 26 0.0s 242 0.0s 19 0.3s
SuzukiSato 4
iter 8 0.0s 40 0.0s 54 0.0s 8 0.0s - - 8 0.0s 83 0.0s 8 0.1s
N* 9 0.0s 42 0.0s - - 50 0.0s 40 0.0s 9 0.0s 91 0.0s 9 0.1s
N 9 0.0s 51 0.0s - - 80 0.0s 70 0.0s 9 0.0s 91 0.0s 8 0.1s
Nabeshima F8
iter 24 0.1s 109 0.0s 306 0.0s 24 0.0s - - 24 0.0s 215 0.0s 24 0.3s
N* 23 0.1s 107 0.0s - - 129 0.1s 105 0.0s 23 0.0s 207 0.0s 23 0.3s
N 23 0.1s 115 0.0s - - 195 0.1s 171 0.0s 23 0.0s 207 0.0s 18 0.4s
Nabeshima E5
iter 5 0.0s 10 0.0s 8 0.0s 5 0.0s - - 4 0.0s 48 0.0s 5 0.1s
N* 4 0.0s 10 0.0s - - 13 0.1s 8 0.0s 4 0.0s 42 0.0s 8 0.2s
N 4 0.0s 12 0.0s - - 17 0.1s 12 0.0s 4 0.0s 42 0.0s 8 0.2s
Nabeshima S2 – modified –> b,c,d,a
iter 7 7.2s 20 0.0s 22 0.0s 7 0.0s - - 7 0.0s 129 0.0s 7 7.4s
N* 8 6.9s 24 0.0s - - 31 0.2s 22 0.0s 8 0.0s 145 0.0s 8 7.2s
N 8 6.8s 26 0.0s - - 45 0.5s 36 0.0s 8 0.0s 145 0.0s 8 7.4s
Nabeshima S3 = S1 KapurSunWang
iter 11 0.5s 34 0.1s 64 0.0s 11 0.0s - - 11 0.0s 186 0.1s 11 0.8s
N* 14 0.4s 45 0.1s - - 58 1.7s 43 1.0s 14 0.0s 177 0.1s 14 3.5s
N 14 0.4s 48 0.1s - - 84 2.5s 69 1.6s 14 0.0s 177 0.1s 10 5.0s
(similar to Nabeshima S4) S2 KapurSunWang
iter 4 0.0s 7 0.0s 2 0.0s 4 0.1s - - 3 0.0s 58 0.0s 4 0.2s
N* 3 0.0s 7 0.0s - - 9 0.2s 5 0.0s 3 0.0s 57 0.0s 4 0.3s
N 3 0.0s 8 0.0s - - 11 0.4s 7 0.0s 3 0.0s 57 0.0s 4 0.5s
Nabeshima S4
iter 18 8.6s 51 0.1s 83 0.0s 18 0.0s - - 18 0.0s 236 0.1s 18 8.9s
N* 21 9.0s 62 0.1s - - 82 7.3s 60 10.6s 21 0.0s 323 0.1s 21 28.6s
N 21 9.0s 65 0.1s - - 119 9.5s 97 11.9s 21 0.0s 323 0.1s 15 32.3s
(similar to Nabeshima S5) S3 KapurSunWang
iter 63 0.8s 277 0.2s 831 0.0s 63 0.1s - - 60 0.1s 975 0.2s 63 2.0s
N* 31 0.4s 133 0.1s - - 163 7.8s 131 9.0s 28 0.0s 425 0.1s 31 19.2s
N 31 0.4s 138 0.1s - - 226 19.5s 194 9.2s 28 0.0s 425 0.1s 18 31.1s
Nabeshima S5
iter 79 0.8s 416 0.2s 1315 0.0s 79 0.1s - - 79 0.1s 1202 0.2s 79 2.5s
N* 34 0.4s 174 0.1s - - 207 7.6s 172 8.9s 34 0.0s 485 0.1s 34 18.8s
N 34 0.4s 179 0.1s - - 299 19.4s 264 9.4s 34 0.0s 485 0.1s 20 31.2s
Nabeshima P3P = P3P KapurSunWang
iter 22 1.1s 60 0.2s 94 0.0s 22 4.0s - - 21 0.0s 510 0.3s 22 5.9s
N* 18 1.0s 49 0.2s - - 66 4.7s 47 6.7s 16 0.0s 329 0.2s 20 13.9s
N 18 1.1s 52 0.2s - - 95 7.4s 76 7.2s 16 0.0s 329 0.2s 19 17.3s

6 Conclusion and future work

We believe that tackling the problem with an iterative approach allows to have a better perspective on the computation: having the cases yet to be considered altogether in a single list makes it possible to compare them with the looser but faster ideal membership, instead of keeping track of them through the recursion with product of ideals and the costlier radical membership. Moreover, we expect that further new strategies may be developed for optimizing the computations.

In particular, we think that there are two main areas that can be studied further:

  • Strategies for picking the next ideal 𝔞K[A]\mathfrak{a}\subseteq K[A] to be considered (Step 2.1, function ChooseVanishing).

    Currently we randomly pick one out of those with maximum dimension.

  • Study possible criteria to minimize VanishingToDo, in order to reduce even further the cases that we analyze.

    Currently we keep in the list the minimal ones (Steps 2.5.2 and 2.6.6), so that we have “more zeroes”, and we make their generators square-free. But ideally with should keep the radicals of these ideals, or just keep the larger when two ideals sharing the same radical. Thus, finding a cheap check to detect “more zeroes or closer to the radical” should be a further improvement.

\bmhead

Acknowledgements The authors would like to thank Katsusuke Nabeshima, Yosuke Sato and Miwa Taniwaki.

This research was partly supported by the “National Group for Algebraic and Geometric Structures, and their Applications” (GNSAGA-INdAM).

References

  • [1] Abbott, J., Bigatti, A. M., CoCoALib: a C++ library for doing Computations in Commutative Algebra, Available at http://cocoa.dima.unige.it/cocoalib
  • [2] Abbott, J., Bigatti, A. M., Robbiano, L., CoCoA: a system for doing Computations in Commutative Algebra, Available at http://cocoa.dima.unige.it
  • [3] Kalkbrener, M.: On the stability of Gröbner bases under specializations. Journal of Symbolic Computation 24, 51–58 (1997)
  • [4] Kapur, D.: An approach for solving systems of parametric polynomial equations. In: Saraswat, V., Hentenryck, P. (eds.) Principles and Practice of Constraint Programming, pp. 217–244. MIT Press (1995)
  • [5] Kapur, D., Sun, Y., Wang, D.: A new algorithm for computing comprehensive Gröbner systems. In: Watt, S. (ed.) International Symposium on Symbolic and Algebraic Computation, pp. 29–36. ACM Press (2010)
  • [6] Kapur, D., Sun, Y., Wang, D.: An efficient algorithm for computing a comprehensive Gröbner system of a parametric polynomial system, Journal of Symbolic Computation 49, 27–44 (2013)
  • [7] Montes, A.: A new algorithm for discussing Grob̈ner basis with parameters. Journal of Symbolic Computation 33(1-2), 183–208 (2002)
  • [8] Nabeshima, K.: A speed-up of the algorithm for computing comprehensive Grö-bner systems. In: Brown, C. (ed.) International Symposium on Symbolic and Algebraic Computation, pp. 299–306. ACM Press (2007)
  • [9] Nabeshima, K.: Stability conditions of monomial bases and comprehensive Gröbner systems, Lecture Notes in Computer Science, Vol. 7442, pp.248–259 (2012)
  • [10] Suzuki, A., Sato, Y.: An alternative approach to comprehensive Gröbner bases. Journal of Symbolic Computation 36(3-4), 649–667 (2003)
  • [11] Suzuki, A., Sato, Y.: A simple algorithm to compute comprehensive Gröbner bases using Gröbner bases. In: Dumas, J.-G. (ed.) International Symposium on Symbolic and Algebraic Computation, pp. 326–331. ACM Press (2006)
  • [12] Weispfenning, V.: Comprehensive Gröbner bases. Journal of Symbolic Computation 14(1), 1–29 (1992)
  • [13] Weispfenning, V.: Canonical comprehensive Gröbner bases. Journal of Symbolic Computation 36(3-4), 669–683 (2003)