Overview of the RegularChains[ParametricSystemTools] Subpackage - Maple Programming Help

Home : Support : Online Help : Mathematics : Factorization and Solving Equations : RegularChains : ParametricSystemTools Subpackage : RegularChains/ParametricSystemTools

Overview of the RegularChains[ParametricSystemTools] Subpackage

 Calling Sequence RegularChains[ParametricSystemTools][command](arguments) command(arguments)

Description

 • The RegularChains[ParametricSystemTools] subpackage is a collection of commands to solve polynomial systems with parameters.
 • These functions can be used to understand the properties of the solution set of a polynomial system F which depends on parameters. For example, you can answer questions such as: for which values of the parameters does F have solutions? finitely many solutions? N solutions, for a given N?
 • The functions in this subpackage can be divided into two groups. The functions for solving a parametric polynomial system F with coefficients in an arbitrary field are based on the concept of a comprehensive triangular decomposition (CTD). The functions for solving a parametric polynomial system with coefficients in a real field are based on the algorithm DISCOVERER developed by Bican Xia. We next introduce the functions related to CTD and DISCOVERER successively.

List of RegularChains[ParametricSystemTools] Subpackage Commands

 The following is a list of available commands.

Examples

 > $\mathrm{with}\left(\mathrm{RegularChains}\right):$
 > $\mathrm{with}\left(\mathrm{ChainTools}\right):$
 > $\mathrm{with}\left(\mathrm{ConstructibleSetTools}\right):$
 > $\mathrm{with}\left(\mathrm{SemiAlgebraicSetTools}\right):$
 > $\mathrm{with}\left(\mathrm{ParametricSystemTools}\right)$
 $\left[{\mathrm{BelongsTo}}{,}{\mathrm{BorderPolynomial}}{,}{\mathrm{CoefficientsInParameters}}{,}{\mathrm{ComplexRootClassification}}{,}{\mathrm{ComprehensiveTriangularize}}{,}{\mathrm{DefiningSet}}{,}{\mathrm{DiscriminantSequence}}{,}{\mathrm{DiscriminantSet}}{,}{\mathrm{PreComprehensiveTriangularize}}{,}{\mathrm{RealComprehensiveTriangularize}}{,}{\mathrm{RealRootClassification}}{,}{\mathrm{Specialize}}\right]$ (1)

Comprehensive Triangular Decomposition

 • In broad terms, a CTD of a parametric polynomial system F provides a finite partition P of the parameter space into regions, so that above each region the geometry (number of irreducible components together with their dimensions and degrees) of the solution set of F is the same at each parameter value. In addition, for each region C of the partition P, a CTD provides an associated (finite) set of regular chains S such that for each parameter value u in C the regular chains evaluated at u form a triangular decomposition (into regular chains) of the specialized system $F\left(u\right)$.
 • A CTD of the parametric polynomial system F does not need any assumptions on F or on the field of its coefficients. The computation of a CTD essentially proceeds in two steps. First, compute the set of all regular chains that are associated with the regions of the partition P. This first step is called pre-comprehensive triangular decomposition. Then, the partition P is computed.
 • Consider a simple example with a polynomial system F with two parameters u and v. You can answer questions such as: when does F have solutions? finitely many solutions? N solutions, for a given N? When you declare the polynomial ring, you do not specify yet which variables are regarded as parameters. This will be done during the function calls, which allows more flexibility.
 > $R≔\mathrm{PolynomialRing}\left(\left[x,y,u,v\right]\right)$
 ${R}{:=}{\mathrm{polynomial_ring}}$ (2)
 The input polynomial system F consists of two equations.
 > $F≔\left\{{x}^{2}+{y}^{2}-1,ux-vy\right\}$
 ${F}{:=}\left\{{u}{}{x}{-}{v}{}{y}{,}{{x}}^{{2}}{+}{{y}}^{{2}}{-}{1}\right\}$ (3)
 Below, one computes a (traditional) triangular decomposition of the system F.
 > $\mathrm{dec}≔\mathrm{Triangularize}\left(F,R,\mathrm{output}=\mathrm{lazard}\right)$
 ${\mathrm{dec}}{:=}\left[{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}\right]$ (4)
 > $\mathrm{map}\left(\mathrm{Info},\mathrm{dec},R\right)$
 $\left[\left[{u}{}{x}{-}{y}{}{v}{,}\left({{u}}^{{2}}{+}{{v}}^{{2}}\right){}{{y}}^{{2}}{-}{{u}}^{{2}}\right]{,}\left[{x}{-}{1}{,}{y}{,}{u}\right]{,}\left[{x}{+}{1}{,}{y}{,}{u}\right]{,}\left[{{x}}^{{2}}{+}{{y}}^{{2}}{-}{1}{,}{u}{,}{v}\right]\right]$ (5)
 > $\left\{\mathrm{op}\left(\mathrm{map}\left(\mathrm{Info},\mathrm{dec},R\right)\right)\right\}$
 $\left\{\left[{u}{}{x}{-}{y}{}{v}{,}\left({{u}}^{{2}}{+}{{v}}^{{2}}\right){}{{y}}^{{2}}{-}{{u}}^{{2}}\right]{,}\left[{x}{-}{1}{,}{y}{,}{u}\right]{,}\left[{x}{+}{1}{,}{y}{,}{u}\right]{,}\left[{{x}}^{{2}}{+}{{y}}^{{2}}{-}{1}{,}{u}{,}{v}\right]\right\}$ (6)
 Without additional computations, the questions above cannot be answered completely from this decomposition. For instance, it is not clear for which values of $u,v$ the system F has solutions. This question can be answered by means of the Projection function from the RegularChains[ConstructibleSetTools] subpackage. More precisely, it can project the variety onto the parameter space, the parameters being the last two variables in the polynomial ring. Note that this projection is not a variety in general. So, the returned type must be a constructible set, which is given here by four regular systems.
 > $\mathrm{cs}≔\mathrm{Projection}\left(F,2,R\right);$$\mathrm{RepresentingRegularSystems}\left(\mathrm{cs},R\right)$
 ${\mathrm{cs}}{:=}{\mathrm{constructible_set}}$
 $\left[{\mathrm{regular_system}}{,}{\mathrm{regular_system}}{,}{\mathrm{regular_system}}\right]$ (7)
 > $\mathrm{Info}\left(\mathrm{cs},R\right)$
 $\left[\left[{}\right]{,}\left[{u}{,}{{u}}^{{2}}{+}{{v}}^{{2}}\right]\right]{,}\left[\left[{u}\right]{,}\left[{1}\right]\right]{,}\left[\left[{u}{,}{v}\right]{,}\left[{1}\right]\right]$
 $\left\{\left[\left[{}\right]{,}\left[{u}{,}{{u}}^{{2}}{+}{{v}}^{{2}}\right]\right]{,}\left[\left[{u}\right]{,}\left[{1}\right]\right]{,}\left[\left[{u}{,}{v}\right]{,}\left[{1}\right]\right]\right\}$ (8)
 One obtains 4 cells in the parameter space. Clearly, this representation can be made simpler. To do so, as seen before, one can use the command MakePairwiseDisjoint.
 > $\mathrm{cs}≔\mathrm{MakePairwiseDisjoint}\left(\mathrm{cs},R\right);$$\mathrm{RepresentingRegularSystems}\left(\mathrm{cs},R\right)$
 ${\mathrm{cs}}{:=}{\mathrm{constructible_set}}$
 $\left[{\mathrm{regular_system}}{,}{\mathrm{regular_system}}\right]$ (9)
 > $\mathrm{Info}\left(\mathrm{cs},R\right)$
 $\left[\left[{u}\right]{,}\left[{1}\right]\right]{,}\left[\left[{}\right]{,}\left[{u}{,}{{u}}^{{2}}{+}{{v}}^{{2}}\right]\right]$
 $\left\{\left[\left[{}\right]{,}\left[{u}{,}{{u}}^{{2}}{+}{{v}}^{{2}}\right]\right]{,}\left[\left[{u}\right]{,}\left[{1}\right]\right]\right\}$ (10)
 Now a clear answer has been reached. The system F has solutions if and only if $u=0$ or $u\left({u}^{2}+{v}^{2}\right)\ne 0$. Now, consider the next question: when does F have finitely many solutions? Different tools are available in this subpackage to answer that question. First, you can compute a CTD of F using the ComprehensiveTriangularize command.
 > $\mathrm{ctd}≔\mathrm{ComprehensiveTriangularize}\left(F,2,R\right)$
 ${\mathrm{ctd}}{:=}\left[{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}\right]{,}\left[\left[{\mathrm{constructible_set}}{,}\left[{1}\right]\right]{,}\left[{\mathrm{constructible_set}}{,}\left[{2}{,}{3}\right]\right]{,}\left[{\mathrm{constructible_set}}{,}\left[{2}{,}{3}{,}{4}\right]\right]\right]$ (11)
 One retrieves the triangular decomposition (see below) together with some additional information. The three constructible sets above form a partition of the projection of the solution set of F onto the parameter space such that above each part (or cell, or region), the solution set of F is given by the regular chains whose indices appear in the list associated with that cell. Hence, when $u=v=0$, the solutions of F are given by the last three regular chains in ${\mathrm{ctd}}_{1}$. In this case, there are infinitely many solutions (because of the fourth regular chain). The other two cases do not involve this fourth regular chain, and they lead to finitely many solutions, actually 2. Note that each of the first two cells is given just by one regular system; the last one is given by two.
 > $\mathrm{map}\left(\mathrm{Info},{\mathrm{ctd}}_{1},R\right)$
 $\left[\left[{u}{}{x}{-}{y}{}{v}{,}\left({{u}}^{{2}}{+}{{v}}^{{2}}\right){}{{y}}^{{2}}{-}{{u}}^{{2}}\right]{,}\left[{x}{-}{1}{,}{y}{,}{u}\right]{,}\left[{x}{+}{1}{,}{y}{,}{u}\right]{,}\left[{{x}}^{{2}}{+}{{y}}^{{2}}{-}{1}{,}{u}{,}{v}\right]\right]$ (12)
 > $\mathrm{lcs}≔\left[\mathrm{seq}\left({{{\mathrm{ctd}}_{2}}_{i}}_{1},i=1..\mathrm{nops}\left({\mathrm{ctd}}_{2}\right)\right)\right]$
 ${\mathrm{lcs}}{:=}\left[{\mathrm{constructible_set}}{,}{\mathrm{constructible_set}}{,}{\mathrm{constructible_set}}\right]$ (13)
 > $\mathrm{map}\left(\mathrm{RepresentingRegularSystems},\mathrm{lcs},R\right)$
 $\left[\left[{\mathrm{regular_system}}\right]{,}\left[{\mathrm{regular_system}}\right]{,}\left[{\mathrm{regular_system}}\right]\right]$ (14)
 > $\mathrm{map}\left(\mathrm{Info},\mathrm{lcs},R\right)$
 $\left[\left[\left[{}\right]{,}\left[{u}{,}{{u}}^{{2}}{+}{{v}}^{{2}}\right]\right]{,}\left[\left[{u}\right]{,}\left[{v}\right]\right]{,}\left[\left[{u}{,}{v}\right]{,}\left[{1}\right]\right]\right]$ (15)
 A more direct, but less detailed, answer to this question can be obtained by using the DiscriminantSet command. The output is the set of the parameter values at which the system F has infinitely many solutions or no solutions. This is again a constructible set.
 > $\mathrm{ds}≔\mathrm{DiscriminantSet}\left(F,2,R\right):$$\mathrm{Info}\left(\mathrm{ds},R\right)$
 $\left[\left[{u}{,}{v}\right]{,}\left[{1}\right]\right]{,}\left[\left[{{u}}^{{2}}{+}{{v}}^{{2}}\right]{,}\left[{v}\right]\right]$ (16)
 Observe that you can compute the set of the parameter values at which F has finitely many solutions just by computing the set theoretical difference of two constructible sets, cs and ds. One retrieves the result that you could read from the CTD: the input system F has finitely many solutions if and only if one of these three conditions holds:
 (1) $u=0$ and $v\ne 0$
 (2) $u\left({u}^{2}+{v}^{2}\right)\ne 0$
 (3) $v=0$ and $u\ne 0$
 > $\mathrm{fs}≔\mathrm{Difference}\left(\mathrm{cs},\mathrm{ds},R\right):$$\mathrm{Info}\left(\mathrm{fs},R\right)$
 $\left[\left[{u}\right]{,}\left[{v}\right]\right]{,}\left[\left[{}\right]{,}\left[{u}{,}{{u}}^{{2}}{+}{{v}}^{{2}}{,}{v}\right]\right]{,}\left[\left[{v}\right]{,}\left[{u}\right]\right]$ (17)
 • Consider now a second example where the goal is to avoid bad specializations. Indeed, comprehensive triangular decompositions have a motivation other than counting solutions depending on parameters. This other feature can be stated as follows: above each cell in the parameter space, each regular chain in the associated triangular decomposition must be well-behaved under specialization. This concept is made more precise later. Consider a polynomial system F in two unknowns, x and y, and one parameter, s, over the complex field.
 > $R≔\mathrm{PolynomialRing}\left(\left[x,y,s\right]\right);$$F≔\left[s-\left(y+1\right)x,s-\left(x+1\right)y\right]$
 ${R}{:=}{\mathrm{polynomial_ring}}$
 ${F}{:=}\left[{s}{-}\left({y}{+}{1}\right){}{x}{,}{s}{-}\left({x}{+}{1}\right){}{y}\right]$ (18)
 Start by computing a (traditional) triangular decomposition of F.
 > $\mathrm{td}≔\mathrm{Triangularize}\left(F,R,\mathrm{output}=\mathrm{lazard}\right):$$\mathrm{map}\left(\mathrm{Equations},\mathrm{td},R\right)$
 $\left[\left[\left({y}{+}{1}\right){}{x}{-}{s}{,}{{y}}^{{2}}{+}{y}{-}{s}\right]{,}\left[{x}{+}{1}{,}{y}{+}{1}{,}{s}\right]\right]$ (19)
 It is clear from the above decomposition that s can be replaced by any complex number, producing two triangular sets. Hence, any specialization of s gives rise to solutions of F. This is confirmed by the following computation. Indeed, the complement of the projection of the variety of F on the s-axis is empty!
 > $\mathrm{es}≔\mathrm{Complement}\left(\mathrm{Projection}\left(F,1,R\right),R\right):$$\mathrm{IsEmpty}\left(\mathrm{es},R\right)$
 ${\mathrm{true}}$ (20)
 However, when you specialize the regular chain $\mathrm{rc1}={\mathrm{td}}_{1}$ at $s=0$, you do not obtain a regular chain anymore. Indeed, the initial of the first polynomial is not regular (that is, a zero-divisor) modulo the second polynomial. One checks this fact below.
 > $\mathrm{rc1}≔{\mathrm{td}}_{1}:$$\mathrm{rc2}≔{\mathrm{td}}_{2}:$$\mathrm{p1}≔\genfrac{}{}{0}{}{{\mathrm{Equations}\left(\mathrm{rc1},R\right)}_{1}}{\phantom{s=0}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}|\phantom{\rule[-0.0ex]{0.1em}{0.0ex}}\genfrac{}{}{0}{}{\phantom{{\mathrm{Equations}\left(\mathrm{rc1},R\right)}_{1}}}{s=0}$
 ${\mathrm{p1}}{:=}\left({y}{+}{1}\right){}{x}$ (21)
 > $\mathrm{p2}≔\genfrac{}{}{0}{}{{\mathrm{Equations}\left(\mathrm{rc1},R\right)}_{2}}{\phantom{s=0}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}|\phantom{\rule[-0.0ex]{0.1em}{0.0ex}}\genfrac{}{}{0}{}{\phantom{{\mathrm{Equations}\left(\mathrm{rc1},R\right)}_{2}}}{s=0};$$\mathrm{IsRegular}\left(\mathrm{Initial}\left(\mathrm{p1},R\right),\mathrm{Chain}\left(\left[\mathrm{p2}\right],\mathrm{Empty}\left(R\right),R\right),R\right)$
 ${\mathrm{p2}}{:=}{{y}}^{{2}}{+}{y}$
 ${\mathrm{false}}$ (22)
 This situation is avoided by a CTD, since it detects that the regular chain $\mathrm{rc1}$ does not specialize well at $s=0$.  The command DefiningSet computes, for a regular chain $\mathrm{rc}$, the parameter values at which $\mathrm{rc}$ specializes to a regular chain, with the same rank (main variables and main degrees) as the input regular chain. The above computation shows that $\mathrm{rc1}$ does not specialize well at $s=0$. It also shows that $\mathrm{rc2}$ specializes well only at $s=0$, which is obvious since s is a polynomial of this regular chain.
 > $\mathrm{ds1}≔\mathrm{DefiningSet}\left(\mathrm{rc1},1,R\right):$$\mathrm{Info}\left(\mathrm{ds1},R\right)$
 $\left[\left[{}\right]{,}\left[{s}\right]\right]$ (23)
 > $\mathrm{ds2}≔\mathrm{DefiningSet}\left(\mathrm{rc2},1,R\right):$$\mathrm{Info}\left(\mathrm{ds2},R\right)$
 $\left[\left[{s}\right]{,}\left[{1}\right]\right]$ (24)
 Below a CTD of F is computed. This produces three regular chains and two cells in the parameter space, given by constructible sets.
 > $\mathrm{ctd}≔\mathrm{ComprehensiveTriangularize}\left(F,1,R\right)$
 ${\mathrm{ctd}}{:=}\left[{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}{,}{\mathrm{regular_chain}}\right]{,}\left[\left[{\mathrm{constructible_set}}{,}\left[{3}{,}{2}\right]\right]{,}\left[{\mathrm{constructible_set}}{,}\left[{1}\right]\right]\right]$ (25)
 Two of these regular chains are the ones that you obtained before. The new regular chain (the third one) is there to handle the case $s=0$ without introducing non-regular chains.
 > $\mathrm{map}\left(\mathrm{Info},{\mathrm{ctd}}_{1},R\right)$
 $\left[\left[\left({y}{+}{1}\right){}{x}{-}{s}{,}{{y}}^{{2}}{+}{y}{-}{s}\right]{,}\left[{x}{+}{1}{,}{y}{+}{1}{,}{s}\right]{,}\left[{x}{,}{y}{,}{s}\right]\right]$ (26)
 The cell $s=0$ is associated with the two regular chains admitting $s$ as an equation (that is, the second and third). The cell $s\ne 0$ is associated with the first regular chain, which is the regular chain from the output of Triangularize above, $\mathrm{rc1}$.
 The command below displays this association: the first set tells you that the first constructible set corresponds to the case where $s=0$ and there are no parameters, and the second set tells you that the second constructible set corresponds to the case where $s$ is a parameter.
 > $\mathrm{map}\left(\mathrm{Info},\left[\mathrm{seq}\left({{{\mathrm{ctd}}_{2}}_{i}}_{1},i=1..\mathrm{nops}\left({\mathrm{ctd}}_{2}\right)\right)\right],R\right)$
 $\left[\left[\left[{s}\right]{,}\left[{1}\right]\right]{,}\left[\left[{}\right]{,}\left[{s}\right]\right]\right]$ (27)
 Finally, if you are only interested in the regular chains that appear in a CTD (and not the cells), then the command PreComprehensiveTriangularize should be used.
 > $\mathrm{pctd}≔\mathrm{PreComprehensiveTriangularize}\left(F,1,R\right):$$\mathrm{map}\left(\mathrm{Info},\mathrm{pctd},R\right)$
 $\left[\left[\left({y}{+}{1}\right){}{x}{-}{s}{,}{{y}}^{{2}}{+}{y}{-}{s}\right]{,}\left[{x}{+}{1}{,}{y}{+}{1}{,}{s}\right]{,}\left[{x}{,}{y}{,}{s}\right]\right]$ (28)
 It is worth noticing that this last command does not compute the cell partition, which can save a significant amount of running time for large examples.

Mathematical Definitions

 For precise definitions of the terms comprehensive triangular decomposition (CTD), pre-comprehensive triangular decomposition, discriminant set, and defining set, refer to the documentation of the commands ComprehensiveTriangularize, PreComprehensiveTriangularize, DiscriminantSet, and DefiningSet, respectively.

Real Root Classification

 • If a semi-algebraic system (SAS) contains parameters, it is called a parametric SAS. For a parametric SAS and a prescribed non-negative integer n, the command RealRootClassification computes the conditions on the parameters such that the system has exactly n distinct real solutions.
 • For a defined polynomial ring R and a SAS given by polynomial lists F, N, P, and H, we specify by the fifth argument, d, that the last d unknowns of R are viewed as parameters, and by the sixth argument, n, that we would compute the conditions for the system to have exactly n distinct real solutions. The polynomial lists F, N, P, and H successively define the equations, the non-negative inequalities, the positive inequalities and the inequations. For example,
 > $\mathrm{with}\left(\mathrm{RegularChains}\right):$
 > $\mathrm{with}\left(\mathrm{ParametricSystemTools}\right):$
 > $\mathrm{with}\left(\mathrm{SemiAlgebraicSetTools}\right):$
 > $R≔\mathrm{PolynomialRing}\left(\left[x,a,b,c\right]\right)$
 ${R}{:=}{\mathrm{polynomial_ring}}$ (29)
 > $F≔\left[a{x}^{2}+bx+c\right];$$N≔\left[\right];$$P≔\left[x\right];$$H≔\left[a\right]$
 ${F}{:=}\left[{a}{}{{x}}^{{2}}{+}{b}{}{x}{+}{c}\right]$
 ${N}{:=}\left[{}\right]$
 ${P}{:=}\left[{x}\right]$
 ${H}{:=}\left[{a}\right]$ (30)
 > $\mathrm{rrc}≔\mathrm{RealRootClassification}\left(F,N,P,H,3,2,R\right)$
 ${\mathrm{rrc}}{:=}\left[\left[{\mathrm{regular_semi_algebraic_set}}\right]{,}{\mathrm{border_polynomial}}\right]$ (31)
 The output is a list of regular semi-algebraic sets (LRSAS) and a border polynomial object (BP); they are equivalent to some logic formula. More precisely, the LRSAS gives necessary and sufficient conditions for the input SAS to have the prescribed number of real solutions, provided that the condition encode by BP holds.
 • The role of the border polynomial is to exclude some degenerate cases which can be handled later with further computations (more on this below).
 • The first command below shows the contents of BP: this is actually a list of polynomials and the logical condition encoded by BP is that none of those polynomials should be zero. The other commands extract the information representing the LRSAS and display the logical condition encoded by it.
 In first approximation, a regular semi-algebraic set (RSAS) is a subset of the real solutions of a regular chain. More precisely, a RSAS is encoded by three pieces of data: a quantifier-free formula (QFF), a regular chain (RC) and a list of lists of indices (LLI). This encoding is called a parametric box (PB). The QFF part of it specifies the conditions of the variables which are not algebraic in RC, whereas RC and LLI specify the conditions of the variables which are algebraic in RC.
 • In our example, RC and LLI are empty (which is often the case); therefore the conditions encoded by the PB is just the conditions encoded by the QFF, which can be shown by the command DisplayQuantifierFreeFormula. To summarize, the answer to our particular question is:  provided that BP holds, the input SAS has exactly 2 distinct positive real solutions if and only QFF holds.
 > $\mathrm{bp}≔{\mathrm{rrc}}_{2}$
 ${\mathrm{bp}}{:=}{\mathrm{border_polynomial}}$ (32)
 > $\mathrm{Info}\left(\mathrm{bp},R\right)$
 $\left[{a}{,}{b}{,}{c}{,}{-}{4}{}{a}{}{c}{+}{{b}}^{{2}}\right]$ (33)
 > $\mathrm{rsas}≔{{\mathrm{rrc}}_{1}}_{1}$
 ${\mathrm{rsas}}{:=}{\mathrm{regular_semi_algebraic_set}}$ (34)
 > $\mathrm{pb}≔\mathrm{RepresentingBox}\left(\mathrm{rsas},R\right)$
 ${\mathrm{pb}}{:=}{\mathrm{parametric_box}}$ (35)
 > $\mathrm{qff}≔\mathrm{RepresentingQuantifierFreeFormula}\left(\mathrm{pb}\right)$
 ${\mathrm{qff}}{:=}{\mathrm{quantifier_free_formula}}$ (36)
 > $\mathrm{rc}≔\mathrm{RepresentingChain}\left(\mathrm{rsas},R\right)$
 ${\mathrm{rc}}{:=}{\mathrm{regular_chain}}$ (37)
 > $\mathrm{Equations}\left(\mathrm{rc},R\right)$
 $\left[{}\right]$ (38)
 > $\mathrm{lli}≔\mathrm{RepresentingRootIndex}\left(\mathrm{pb}\right)$
 ${\mathrm{lli}}{:=}\left[{}\right]$ (39)
 Recall that the border polynomial (BP) is a list of polynomials such that the union of all hypersurfaces defined by each polynomial contains all the abnormal parameter values of the input parametric SAS. For the above example, the border polynomial is $\left[c,a,4ac-{b}^{2}\right]$. It's obvious that the number of distinct non-zero solutions changes if $a\left(4ac-{b}^{2}\right)c=0$. Note that one can use the RegularChains[Info] command to view the contents of a BP.
 • One might want to go further in analyzing the number of real solutions of the input SAS, that is, one might want to figure out what's happening when a parameter value cancels BP. This is very simple: it suffices to add the product of the polynomials in BP to the list of equations when calling RealRootClassification (or to add the polynomials in BP one by one to the equations of the system and call RealRootClassification accordingly).
 Recall that, in our example, we are investigating the cases where the input system has 2 distinct positive real solutions. When we add the $4ac-{b}^{2}$ to it, we obtain no RSAS part in the output of RealRootClassification. This means that it cannot happen that the equation ${X}^{2}a+Xb+c=0$ has 2 distinct positive real solutions, when its discriminant is zero. This is obvious, of course!
 > $\mathrm{rrc1}≔\mathrm{RealRootClassification}\left(\left[4ac-{b}^{2},\mathrm{op}\left(F\right)\right],N,P,H,3,2,R\right)$
 ${\mathrm{rrc1}}{:=}\left[\left[{}\right]{,}{\mathrm{border_polynomial}}\right]$ (40)
 > $\mathrm{bp1}≔{\mathrm{rrc1}}_{2}$
 ${\mathrm{bp1}}{:=}{\mathrm{border_polynomial}}$ (41)
 > $\mathrm{Info}\left(\mathrm{bp1},R\right)$
 $\left[{b}{,}{a}\right]$ (42)
 The above output means: provided $cb\ne 0$, the new system never admits two distinct positive real solutions. The cases where one of the parameters a, b, or c could be investigated similarly.

References

 Chen, C.; Golubitsky, O.; Lemaire, F.; Moreno Maza, M.; and Pan, W. "Comprehensive Triangular Decomposition." Proc. CASC 2007, LNCS Vol. 4770: 73-101. Springer, 2007.
 Montes, A. "A new algorithm for discussing Groebner bases with parameters." J. Symb. Comp., Vol. 33 No. 2 (2002): 183-208.
 Wang, D. M. "Computing triangular systems and regular systems." J. Symb. Comp., Vol. 30 No. 2 (2000): 221-236.
 Weispfenning, V. "Comprehensive Groebner bases". J. Symb. Comp., Vol. 14 (1992): 1-29.
 Yang, L. and Xia, B. "Real solution classifications of parametric semi-algebraic systems." Algorithmic Algebra and Logic -- Proceedings of the A3L 2005, pp. 281-289. Edited by A. Dolzmann, A. Seidl, and T. Sturm. Norderstedt: Herstellung und Verlag, 2005.
 Yang, L.; Hou, X.; and Xia, B. "A complete algorithm for automated discovering of a class of inequality-type theorems." Science China, F. Vol. 44 (2001): 33-49.