Interval Multivalued Inverse Functions: Relational Interval Arithmetic and its Use
Résumé
Given the relation y = cos x, where x lies in the interval [10,14], interval arithmetic will readily allow us to compute the possible values for y by considering the monotonic subdomains of the cosine function over [10, 14]: y \in [cos 10, 1] \approx [-0.84, 1]. On the other hand, what is the possible domain for an unknown x if the domain for y is [-0.3, 0.2]? Most interval arithmetic libraries will fix it at [acos 0.2, acos -0.3] \approx [1.36, 1.87] because they consider branch cuts of the multivalued inverse cosine to return principal values in the domain [0, \pi] only. Now, what if we know that x lies in the domain [20, 26]? The aforementioned inverse cosine interval function would not be of much help here, while considering a multivalued inverse cosine would permit restricting the domain of x to [6\pi + acos 0.2, 8\pi – acos 0.2] \approx [20.22, 23.77]. Such a use of relations between variables together with domains of possible values to infer tighter consistent domains is the core principle of Constraint Programming. Since Cleary's seminal work on relational arithmetic for Logic Programming languages, interval multivalued inverse functions have been repeatedly used in algorithms of increasing sophistication to solve systems of (in-)equations over real-valued variables. Using these functions as both a starting and rallying point, we present an overview of these constraint programming algorithms, and we draw parallels with classical numerical algorithms (most notably Gauss-Seidel). The implementation of interval multivalued inverse functions in the gaol C++ library is also discussed.