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

@article{Bagnara2016APA,
  title={A Practical Approach to Interval Refinement for math.h/cmath Functions},
  author={Roberto Bagnara and Michele Chiari and Roberta Gori and Abramo Bagnara},
  journal={ArXiv},
  year={2016},
  volume={abs/1610.07390}
}
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

References

SHOWING 1-10 OF 54 REFERENCES

Towards a Compiler for Reals

TLDR
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

TLDR
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

TLDR
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

TLDR
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

TLDR
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

TLDR
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

TLDR
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

TLDR
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)

TLDR
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.
...