# QuasiAlgebraicSet(R, Var, Expon, Dpoly)¶

QuasiAlgebraicSet constructs a domain representing quasi-algebraic sets, which is the intersection of a Zariski closed set, defined as the common zeros of a given list of polynomials (the defining polynomials for equations), and a principal Zariski open set, defined as the complement of the common zeros of a polynomial f (the defining polynomial for the inequation). This domain provides simplification of a user-given representation using groebner basis computations. There are two simplification routines: the first function idealSimplify uses groebner basis of ideals alone, while the second, simplify uses both groebner basis and factorization. The resulting defining equations L always form a groebner basis, and the resulting defining inequation f is always reduced. The function simplify may be applied several times if desired. A third simplification routine radicalSimplify is provided in QuasiAlgebraicSet2 for comparison study only, as it is inefficient compared to the other two, as well as is restricted to only certain coefficient domains. For detail analysis and a comparison of the three methods, please consult the reference cited. A polynomial function q defined on the quasi-algebraic set is equivalent to its reduced form with respect to L. While this may be obtained using the usual normal form algorithm, there is no canonical form for q. The ordering in groebner basis computation is determined by the data type of the input polynomials. If it is possible we suggest to use refinements of total degree orderings.

=: (%, %) -> Boolean

from BasicType

~=: (%, %) -> Boolean

from BasicType

coerce: % -> OutputForm
definingEquations: % -> List Dpoly

definingEquations(s) returns a list of defining polynomials for equations, that is, for the Zariski closed part of s.

definingInequation: % -> Dpoly

definingInequation(s) returns a single defining polynomial for the inequation, that is, the Zariski open part of s.

empty?: % -> Boolean

empty?(s) returns true if the quasialgebraic set s has no points, and false otherwise.

empty: () -> %

empty() returns the empty quasi-algebraic set

hash: % -> SingleInteger

from SetCategory

hashUpdate!: (HashState, %) -> HashState

from SetCategory

idealSimplify: % -> %

idealSimplify(s) returns a different and presumably simpler representation of s with the defining polynomials for the equations forming a groebner basis, and the defining polynomial for the inequation reduced with respect to the basis, using Buchberger's algorithm.

latex: % -> String

from SetCategory

quasiAlgebraicSet: (List Dpoly, Dpoly) -> %

quasiAlgebraicSet(pl, q) returns the quasi-algebraic set with defining equations p = 0 for p belonging to the list pl, and defining inequation q ~= 0.

setStatus: (%, Union(Boolean, failed)) -> %

setStatus(s, t) returns the same representation for s, but asserts the following: if t is true, then s is empty, if t is false, then s is non-empty, and if t = “failed”, then no assertion is made (that is, “don't know”). Note: for internal use only, with care.

simplify: % -> % if R has CharacteristicZero and R has PolynomialFactorizationExplicit

simplify(s) returns a different and presumably simpler representation of s with the defining polynomials for the equations forming a groebner basis, and the defining polynomial for the inequation reduced with respect to the basis, using a heuristic algorithm based on factoring.

status: % -> Union(Boolean, failed)

status(s) returns true if the quasi-algebraic set is empty, false if it is not, and “failed” if not yet known

BasicType

SetCategory