# Proving programs robust

@inproceedings{Chaudhuri2011ProvingPR, title={Proving programs robust}, author={Swarat Chaudhuri and Sumit Gulwani and Roberto Lublinerman and S. Mohammad Navidpour}, booktitle={ESEC/FSE '11}, year={2011} }

We present a program analysis for verifying quantitative robustness properties of programs, stated generally as: "If the inputs of a program are perturbed by an arbitrary amount epsilon, then its outputs change at most by (K . epsilon), where K can depend on the size of the input but not its value." Robustness properties generalize the analytic notion of continuity---e.g., while the function ex is continuous, it is not robust. Our problem is to verify the robustness of a function P that is…

## 133 Citations

Non-local Robustness Analysis via Rewriting Techniques: Abstract at the Quantities in Formal Methods

- Computer Science
- 2012

This paper proposes a method for proving a while-loop always returns finite precision values close to the exact values and shows the applicability of the method on two standard algorithms: the CORDIC computation of the cosine and Dijkstra’s shortest path algorithm.

Continuity and robustness of programs

- Computer ScienceCACM
- 2012

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.

Robustness Analysis of Floating-Point Programs by Self-Composition

- Computer ScienceJ. Appl. Math.
- 2014

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.

Robustness Analysis of Finite Precision Implementations

- Computer Science, MathematicsAPLAS
- 2013

A new abstract-interpretation based error analysis of finite precision implementations is proposed, which is sound in presence of unstable tests, by bounding the discontinuity error for path divergences and gives a tractable analysis implemented in the FLUCTUAT analyzer.

Verifying safety and accuracy of approximate parallel programs via canonical sequentialization

- Computer ScienceProc. ACM Program. Lang.
- 2019

To the best of the knowledge, Parallely is the first system designed to analyze parallel approximate programs and automatically and efficiently proves type safety, reliability, and accuracy properties of the approximate benchmarks.

Logical reasoning for approximate and unreliable computation

- Computer Science
- 2015

This thesis presents the first general programming systems for precisely verifying and reasoning about the programs that result from transformation, compilation, and runtime techniques, and presents a programming language and program logic for verifying worstcase properties of a transformed program.

F L ] 3 J un 2 01 5 Lipschitz Robustness of Timed I / O Systems

- Mathematics, Computer Science
- 2018

This work studies the behavior of such timed I/O systems in the presence of uncertain inputs and formalizes their robustness using the analytic notion of Lipschitz continuity, the first study of robustness of systems that are both timed as well as reactive (I/O).

Lipschitz Robustness of Timed I/O Systems

- Computer Science, MathematicsVMCAI
- 2016

The first study of robustness of systems that are both timed as well as reactive I/O systems in the presence of uncertain inputs is presented, and it is shown that K-robustness of timed transducers can be decided in polynomial space under certain conditions.

Lipschitz Robustness of Finite-state Transducers

- EconomicsFSTTCS
- 2014

This work investigates the problem of checking if a finite-state transducer is robust to uncertainty in its input, and identifies a class of functional transducers, which admits a polynomial time automata-theoretic decision procedure for K-robustness.

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

- Computer ScienceQAPL
- 2012

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.

## References

SHOWING 1-10 OF 34 REFERENCES

Symbolic Robustness Analysis

- Computer Science2009 30th IEEE Real-Time Systems Symposium
- 2009

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.

Continuity analysis of programs

- Computer SciencePOPL '10
- 2010

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.

Systematic testing for control applications

- Computer ScienceEighth ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE 2010)
- 2010

This work demonstrates how a concolic execution tool can be modified to automatically analyze controller implementations and produce test cases achieving a coverage goal, and verify robustness of an implementation under input uncertainties.

Probabilistically Accurate Program Transformations

- Computer ScienceSAS
- 2011

The standard approach to program transformation involves the use of discrete logical reasoning to prove that the transformation does not change the observable semantics of the program. We propose a…

Cyber Physical Systems: Design Challenges

- Computer Science2008 11th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC)
- 2008

It is concluded that it will not be sufficient to improve design processes, raise the level of abstraction, or verify designs that are built on today's abstractions to realize the full potential of cyber-Physical Systems.

Continuity in software systems

- Computer ScienceISSTA '02
- 2002

The role of continuity in engineering, particularly in testing and certifying artifacts, is examined, then the analogous software situations are considered and the ways in which software is intrinsically unlike other engineered objects are considered.

Interval Polyhedra: An Abstract Domain to Infer Interval Linear Relationships

- Mathematics, Computer ScienceSAS
- 2009

This work introduces a new numerical abstract domain, so-called interval polyhedra (itvPol), to infer and propagate interval linear constraints over program variables, and is the first application of interval linear algebra to static analysis.

Automatic differentiation : applications, theory, and implementations

- Computer Science
- 2006

Automatic Differentiation: A Tool for Variational Data Assimilation and Adjoint Sensitivity Analysis for Flood Modeling.

An Abstract Domain to Discover Interval Linear Equalities

- Mathematics, Computer ScienceVMCAI
- 2010

We introduce a new abstract domain, namely the domain of Interval Linear Equalities (itvLinEqs), which generalizes the affine equality domain with interval coefficients by leveraging results from…

The formal semantics of programming languages - an introduction

- Computer ScienceFoundation of computing series
- 1993

The Formal Semantics of Programming Languages" provides the basic mathematical techniques necessary for those who are beginning a study of semantics and logics of programming languages, including the vital area of concurrency.