SuggestVariableOrder - Maple Help

RegularChains

 SuggestVariableOrder
 Suggests a variable order for decomposing a polynomial system efficiently

 Calling Sequence SuggestVariableOrder(sys) SuggestVariableOrder(sys, vars) SuggestVariableOrder(sys, 'decomposition'='cad')

Parameters

 sys - polynomial system vars - list of set of variables 'decomposition'='cad' - (optional) boolean flag

Options

The decomposition option controls the targeted type of decomposition.

 – If 'decomposition'='cad' is specified and vars not supplied, then the method is best appropriate for computing a cylindrical algebraic decomposition, see CylindricalAlgebraicDecompose.

Description

 • The command SuggestVariableOrder(sys) computes a variable order which is expected to speed up the decomposition of the polynomial system sys when passed to one of the commands Triangularize, RealTriangularize, LazyRealTriangularize, SamplePoints, ComprehensiveTriangularize, RealComprehensiveTriangularize, CylindricalAlgebraicDecompose, RealRootClassification, PartialCylindricalAlgebraicDecomposition, GeneralConstruct.
 • The input argument sys is a list of constraints which can be any polynomial equation, inequation or inequality. Each constraint consisting of a polynomial (with no equality or inequality sign) is interpreted as an equation.
 • The output of SuggestVariableOrder(sys)  is a variable list which can then be passed as argument to PolynomialRing.
 • If vars is given as an input argument, the following rules apply: (1) each indeterminate not appearing in sys or vars will be treated as parameters and therefore will be present in SuggestVariableOrder(sys) with a smaller rank than any indeterminate appearing in both sys and vars. (2) In addition, if vars is given as a list, then the orders among variables appearing in both vars and sys remain unchanged.
 • The command SuggestVariableOrder(sys) computes this variable list by means of combinatorial arguments only, say by comparing vertex degrees in a suitable graph. No algebraic computations are performed. Therefore, this variable order is determined heuristically and there is no guarantee of optimality.

Examples

 > $\mathrm{with}\left(\mathrm{RegularChains}\right):$$\mathrm{with}\left(\mathrm{SemiAlgebraicSetTools}\right):$

Define a set of equations.

 > $\mathrm{sys}≔\left[{v}^{4}+4xu{v}^{2}-2{y}^{2}{v}^{2}-4{x}^{2}{v}^{2}-4{y}^{2}{u}^{2}+4x{y}^{2}u+{y}^{4},4{u}^{2}-4xu-{y}^{2},4{u}^{2}-4xu-{y}^{2}\right]$
 ${\mathrm{sys}}{≔}\left[{-}{4}{}{{y}}^{{2}}{}{{u}}^{{2}}{+}{4}{}{x}{}{u}{}{{v}}^{{2}}{+}{4}{}{x}{}{{y}}^{{2}}{}{u}{+}{{v}}^{{4}}{-}{4}{}{{x}}^{{2}}{}{{v}}^{{2}}{-}{2}{}{{y}}^{{2}}{}{{v}}^{{2}}{+}{{y}}^{{4}}{,}{4}{}{{u}}^{{2}}{-}{4}{}{x}{}{u}{-}{{y}}^{{2}}{,}{4}{}{{u}}^{{2}}{-}{4}{}{x}{}{u}{-}{{y}}^{{2}}\right]$ (1)

Compute a variable order for it.

 > $\mathrm{SuggestVariableOrder}\left(\mathrm{sys}\right)$
 $\left[{x}{,}{u}{,}{v}{,}{y}\right]$ (2)

Use the 'decomposition'='cad' option to confirm that this order is suitable for

 > $\mathrm{lv}≔\mathrm{SuggestVariableOrder}\left(\mathrm{sys},\mathrm{decomposition}=\mathrm{cad}\right)$
 ${\mathrm{lv}}{≔}\left[{x}{,}{u}{,}{v}{,}{y}\right]$ (3)

Building a polynomial ring

 > $R≔\mathrm{PolynomialRing}\left(\mathrm{lv}\right)$
 ${R}{≔}{\mathrm{polynomial_ring}}$ (4)

Computing a cylindrical algebraic decomposition of this challenging example

 > $\mathrm{cad}≔\mathrm{CylindricalAlgebraicDecompose}\left(\mathrm{sys},R\right)$
 ${\mathrm{cad}}{≔}{\mathrm{c_a_d}}$ (5)

Compatibility

 • The RegularChains[SuggestVariableOrder] command was introduced in Maple 16.