Continuity and robustness of programs

Computer scientists have long believed that software is different from physical systems in one fundamental way: while the latter have continuous dynamics, the former do not. In this paper, we argue that notions of continuity from mathematical analysis are relevant and interesting even for software. First, we demonstrate that many everyday programs are continuous (i.e., arbitrarily small changes to their inputs only cause arbitrarily small changes to their outputs) or Lipschitz continuous (i.e., when their inputs change, their outputs change at most proportionally). Second, we give an mostly-automatic framework for verifying that a program is continuous or Lipschitz, showing that traditional, discrete approaches to proving programs correct can be extended to reason about these properties. An immediate application of our analysis is in reasoning about the robustness of programs that execute on uncertain inputs. In the longer run, it raises hopes for a toolkit for reasoning about programs that freely combines logical and analytical mathematics.

[1]  Antoine Girard,et al.  Approximate Bisimulation: A Bridge Between Computer Science and Control Theory , 2011, Eur. J. Control.

[2]  Sumit Gulwani,et al.  Proving programs robust , 2011, ESEC/FSE '11.

[3]  Dick Hamlet,et al.  Continuity in software systems , 2002, ISSTA '02.

[4]  Sumit Gulwani,et al.  Continuity analysis of programs , 2010, POPL '10.

[5]  Sumit Gulwani,et al.  The reachability-bound problem , 2010, PLDI '10.

[6]  Sofya Raskhodnikova,et al.  Testing and Reconstruction of Lipschitz Functions with Applications to Data Privacy , 2011, 2011 IEEE 52nd Annual Symposium on Foundations of Computer Science.

[7]  Uwe Naumann,et al.  Automatic Differentiation: Applications, Theory, and Implementations (Lecture Notes in Computational Science and Engineering) , 2006 .

[8]  Ji Wang,et al.  Interval Polyhedra: An Abstract Domain to Infer Interval Linear Relationships , 2009, SAS.

[9]  Swarat Chaudhuri,et al.  Smoothing a Program Soundly and Robustly , 2011, CAV.

[10]  David Lorge Parnas,et al.  Software aspects of strategic defense systems , 1985, CACM.

[11]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[12]  Eric Goubault,et al.  Static Analyses of the Precision of Floating-Point Operations , 2001, SAS.

[13]  S. Pettersson,et al.  Stability and robustness for hybrid systems , 1996, Proceedings of 35th IEEE Conference on Decision and Control.

[14]  Ofer Strichman,et al.  Regression Verification: Proving the Equivalence of Similar Programs , 2009, CAV.

[15]  Andreas Podelski,et al.  Model Checking of Hybrid Systems: From Reachability Towards Stability , 2006, HSCC.

[16]  Swarat Chaudhuri,et al.  Smooth interpretation , 2010, PLDI '10.

[17]  Benjamin C. Pierce,et al.  Distance makes the types grow stronger: a calculus for differential privacy , 2010, ICFP '10.

[18]  Zeyuan Allen Zhu,et al.  Randomized accuracy-aware program transformations for efficient approximate computations , 2012, POPL '12.

[19]  Rupak Majumdar,et al.  Symbolic Robustness Analysis , 2009, 2009 30th IEEE Real-Time Systems Symposium.