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

  title={A Practical Approach to Interval Refinement for math.h/cmath Functions},
  author={Roberto Bagnara and Michele Chiari and Roberta Gori and Abramo Bagnara},
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… 

Figures and Tables from this paper

A Practical Approach to Verification of Floating-Point C/C++ Programs with math.h/cmath Functions

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



Towards a Compiler for Reals

A unified technique for bounding roundoff errors from floating-point and fixed-point arithmetic of various precisions is introduced, which can handle nonlinear arithmetic, determine closed-form symbolic invariants for unbounded loops, and quantify the effects of discontinuities on numerical errors.

KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs

A new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs, and significantly beat the coverage of the developers' own hand-written test suite is presented.

CUTE: a concolic unit testing engine for C

A method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graphs as inputs is developed and an efficient constraint solver is proposed to facilitate incremental generation of such test inputs.

Automatic test data generation using constraint solving techniques

This paper statically transform a procedure into a constraint system by using well-known "Static Single Assignment" form and control-dependencies to solve this system to check whether at least one feasible control flow path going through the selected point exists and to generate test data that correspond to one of these paths.

Floating-point symbolic execution: A case study in N-version programming

This paper presents the experience of two research teams that independently added floating-point support to KLEE, a popular symbolic execution engine, and conducts a rigorous comparison between the two implementations.

Applications of symbolic evaluation

A CLP Framework for Computing Structural Test Data

An original framework where the later problem is transformed into a CLP(FD) problem is introduced, and a prototype system -- named INKA -- which allows to handle a non-trivial subset of programs written in C has been developed.

Exploiting Binary Floating-Point Representations for Constraint Propagation

Improved algorithms for the propagation of arithmetic IEEE 754 binary floating-point constraints are presented and fully justify their justification.

Symbolic Execution with Value-Range Analysis for Floating-Point Exception Detection

This paper proposes to accelerate symbolic execution for floating-point exception detection, using value-range analysis, which maintains an over-approximated value range for each program variable, which can efficiently filter out constraints for checking the operations that are guaranteed to be safe.

Design, Implementation, and Evaluation of the Constraint Language cc(FD)

Results on numerous problems, including scheduling, resource allocation, sequencing, packing, and hamiltonian paths are reported, and indicate that cc(FD) comes close to procedural languages on a number of combinatorial problems.