In this chapter, we present constraint solvers for constraints over variables that have infinite domains. The first domain is the numbers, and we solve linear polynomial equations. The second domain is some ordered set of values that we extend to a lexicographic order, which we consider as a constraint on a sequence of variables. The third domain is the objects that occur in knowledge representation with description logics. Reasoning in these logics is reducible to consistency checking. The fourth domain is the universal data structure of logical terms where we consider the unification problem as equation solving.
Linear polynomial equation solving
Typically, in arithmetic constraint solvers, incremental variants of classical variable elimination algorithms like Gaussian elimination for equations and Dantzig's Simplex algorithm for equations are implemented. Gaussian elimination has cubic complexity in the number of different variables in a problem. The Simplex algorithm has exponential worst-case time complexity but is polynomial on average.
Similar to Gaussian elimination, we solve linear polynomial equations by eliminating variables, one at a time. For solving inequations, the rules for Fourier's algorithm turn out to be very similar to those for equation solving.
We define the syntax of the equations and show the principle of eliminating a variable.