A Practical Approach to Interval Refinement for math.h/cmath Functions release_ndehml6ennafbjddty5cv57quq

by Roberto Bagnara, Michele Chiari, Roberta Gori, Abramo Bagnara

Released as a article .

2020  

Abstract

Verification of 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. We introduce a pragmatic approach that leverages the fact that most math.h/cmath functions are almost piecewise monotonic: as we discovered through exhaustive testing, they may have glitches, often of very small size and in small numbers. We develop interval refinement techniques for such functions based on a modified dichotomic search, that enable verification via symbolic execution based model checking, abstract interpretation, and test data generation. Our refinement algorithms are the first in the literature to be able to handle non-correctly rounded function implementations, enabling verification in the presence of the most common implementations. We experimentally evaluate our approach on real-world code, showing its ability to detect or rule out anomalous behaviors.
In text/plain format

Archived Files and Locations

application/pdf  1.0 MB
file_opl6phc4kzgzdorkbcyqbxgcne
arxiv.org (repository)
web.archive.org (webarchive)
Read Archived PDF
Preserved and Accessible
Type  article
Stage   submitted
Date   2020-08-11
Version   v3
Language   en ?
arXiv  1610.07390v3
Work Entity
access all versions, variants, and formats of this works (eg, pre-prints)
Catalog Record
Revision: 66fa7ebd-c629-41f7-91c9-e010dccc9f98
API URL: JSON