Non-local Robustness Analysis via Rewriting Techniques
Ivan Gazeau, Dale Armin Miller, Catuscia Palamidessi · Electronic Proceedings in Theoretical Computer Science · 2012
Robustness is a correctness property which intuitively means that if the inputs to a program changes less than a fixed small amount then its output changes only slightly. The study of errors caused by finite-precision semantics requires a stronger property: the results in the finite-precision semantics have to be close to the result in the exact semantics. Compositional methods often are not useful in determining which programs are robust since key constructs—like the conditional and the while-loop—are not continuous. We propose a method for proving that some while-loop programs always returns finite precision values close to the exact values. Our method uses techniques borrowed from rewriting theory to analyze the possible paths in a program’s execution in order to show that while local operations in a program might not be robust, the full program might be guaranteed to be robust. This method is non-local in the sense that instead of breaking the analysis down to single lines of code, it checks certain global properties of its structure. We show the applicability of our method on two standard algorithms: the CORDIC computation of the cosine and Dijkstra’s shortest path algorithm.