BUGSENG & University of Parma, Italy
Precise approximation of Floating-Point Computations for C/C++ Software Using the Mathematical Libraries
Verification of C/C++ programs has seen considerable progress in several areas, but not for programs that use these languages' mathematical libraries. The reason is that all libraries in widespread use come with no guarantees about the computed results. This would seem to prevent any attempt at formal verification of programs that use them: without a specification for the functions, no conclusion can be drawn statically about the behavior of the program. We propose an alternative to surrender: even if we do not have a proper specification for the functions, we might have a partial specification; at the very least we have their implementation, for which a partial specification can sometimes be extracted. When even a partial specification is unavailable, we can still detect flaws in the program and facilitate its partial verification with testing. Our proposal provides a pragmatic, practical approach that enables program verification via abstract interpretation, symbolic model checking and constraint-based test data generation.