Computes a triangular decomposition of a polynomial system. The package implements algorithms for monomial and binomial sets. For arbitrary systems we interface to Maple.
A polynomial system is a pair $(F,H)$, where $F\subset k[x]$ is a list of equations and and $H\subset k[x]$ is a list of inequations. The zero set of the system is $$Z(F/H) = \{x : f(x)= 0 for f\in F, h(x)\neq 0 for h\in H\}.$$ A triangular decomposition of $(F,H)$ is a collection of "simpler" polynomial systems $(T_1,U_1),\ldots,(T_r,U_r)$ such that $$Z(F/H) = Z(T_1/U_1)\cup\cdots\cup Z(T_r/U_r).$$ These simpler sets, called triangular systems, have very nice algorithmic properties.
As a first example we consider a case without inequations ($H=\emptyset$).
i1 : R = QQ[a..h, MonomialOrder=>Lex]; |
i2 : F = {a*d - b*c, c*f - d*e, e*h - f*g}; |
i3 : TT = triangularize(R,F,{}) o3 = {{c, d, f, h}, {b, d, e, f}, {c, d, e, f}, {a*d - b*c, c*f - d*e, g, h} / {d, f}, {b, d, f, h}, {c, d, g, h}, {a*d - b*c, e, ---------------------------------------------------------------------------------------------------------------------------- f} / d, {a*d - b*c, c*f - d*e, e*h - f*g} / {d, f, h}, {c, d, e*h - f*g} / h} o3 : List |
i4 : first TT o4 = {c, d, f, h} o4 : TriaSystem |
We now include some inequations.
i5 : H = {b,d}; |
i6 : triangularize(R,F,H) o6 = {{a*d - b*c, c*f - d*e, g, h} / {b, d, f}, {a*d - b*c, c*f - d*e, e*h - f*g} / {b, d, f, h}, {a*d - b*c, e, f} / {b, d}} o6 : List |
The object triangularize is a method function with options.