Robustness Analysis of Finite Precision Implementations

  title={Robustness Analysis of Finite Precision Implementations},
  author={{\'E}ric Goubault and Sylvie Putot},
A desirable property of control systems is robustness to inputs, when small perturbations of the inputs of a system will cause only small perturbations on outputs. This property should be maintained at the implementation level, where close inputs can lead to different execution paths. The problem becomes crucial for finite precision implementations, where any elementary computation is affected by an error. In this context, almost every test is potentially unstable, that is, for a given input… 

Robustness Analysis of Floating-Point Programs by Self-Composition

This paper proposes to leverage the idea of self-composition to transform the robustness analysis problem into a reachability problem, which enables the use of standard reachability analysis techniques such as software model checking and symbolic execution for robustnessAnalysis.

Programming with Numerical Uncertainties

A programming model where the scientist writes his or her numerical program in a real-valued specification language with explicit error annotations is proposed, which can certify the results of self-correcting iterative algorithms and compute sound and yet accurate error bounds for nonlinear computations.

Discrete Choice in the Presence of Numerical Uncertainties

This paper studies two approaches to compute a guaranteed bound on the probability of a program making the wrong decision and proposes an extension to the latter approach which allows to bound the probability tightly and fully automatically while scaling to small but interesting embedded examples.

A Reduced Product of Absolute and Relative Error Bounds for Floating-Point Analysis

This work introduces a very simple interval-based abstraction, combining absolute and relative error propagations, and demonstrates with a prototype implementation how this simple product allows us in many cases to improve absolute error bounds, and even to often favorably compare with state-of-the art tools, that rely on much more costly relational abstractions or optimization-based estimations.

Towards a Compiler for Reals 1

A unified technique for bounding roundoff errors from floating-point and fixedpoint 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.

Certified Roundoff Error Bounds Using Semidefinite Programming

This work presents a framework to provide upper bounds on absolute roundoff errors of floating-point nonlinear programs, based on optimization techniques employing semidefinite programming and sums of squares certificates, which can be checked inside the Coq theorem prover to provide formal roundoff error bounds for polynomial programs.

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.

On Numerical Error Propagation with Sensitivity

The main idea is to decouple the computation of newly introduced roundoff errors from the amplification of existing errors, using the derivatives of functions corresponding to program fragments.

Automatic generation and verification of test-stable floating-point code

An approach that combines the Frama-C analyzer, the PRECiSA round-off error estimator, and PVS is proposed to automatically verify that the generated program code is correct in the sense that, if the program terminates without a warning, it follows the same computational path as its real-valued functional specification.

Runtime Abstract Interpretation for Numerical Accuracy and Robustness

A new verification technique for numerical properties, named Runtime Abstract Interpretation (RAI), that, given an annotated source code, embeds into it an abstract analyzer in order to analyze the program behavior at runtime.



Symbolic Robustness Analysis

An algorithm and a tool are presented to characterize the robustness of a control software implementation, based on symbolic execution and non-linear optimization, and computes the maximum difference in program outputs over all program paths when a program input is perturbed.

Input-output robustness for discrete systems

A theory ofinput-output robustness for discrete systems inspired by existing notions of input-output stability (IO-stability) in continuous control theory is presented and it is shown that IO-st stability captures two intuitive goals of robustness: bounded disturbances lead to bounded deviations from nominal behavior and the effect of a sporadic disturbance disappears in finitely many steps.

A theory of robust software synthesis

A formal definition of robustness and algorithmic tools for the design of optimally robust controllers for omega-regular properties on discrete transition systems and an application of the theory to the designs of controllers that tolerate infinitely many transient errors provided they occur infrequently enough are shown.

Proving programs robust

The analysis can be used to guarantee the predictable execution of embedded control software, whose inputs come from physical sources and can suffer from error and uncertainty, and can provide foundations for a recently-proposed program approximation scheme calledloop perforation.

Continuity and robustness of programs

It is argued that notions of continuity from mathematical analysis are relevant and interesting even for software, and an mostly-automatic framework for verifying that a program is continuous or Lipschitz is given.

A non-local method for robustness analysis of floating point programs

This work proposes a method for proving the robustness of a while-loop and shows the applicability of the method on two standard algorithms: the CORDIC computation of the cosine and Dijkstra's shortest path algorithm.

Continuity analysis of programs

An analysis is presented to automatically determine if a program represents a continuous function, or equivalently, if infinitesimal changes to its inputs can only cause infiniteimalChanges to its outputs, and to identify appropriate ``synchronization points'' between executions and their perturbed counterparts.

Static Analysis of Finite Precision Computations

We define several abstract semantics for the static analysis of finite precision computations, that bound not only the ranges of values taken by numerical variables of a program, but also the

Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software

The IEEE 754 standard, the FLUCTUAT tool, the types of codes to be analyzed and the analysis methodology, together with code examples and analysis results are presented.

Smooth stabilization implies coprime factorization

It is shown that coprime right factorizations exist for the input-to-state mapping of a continuous-time nonlinear system provided that the smooth feedback stabilization problem is solvable for this