Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1706299.1706308acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Continuity analysis of programs

Published: 17 January 2010 Publication History

Abstract

We present an analysis to automatically determine if a program represents a continuous function, or equivalently, if infinitesimal changes to its inputs can only cause infinitesimal changes to its outputs. The analysis can be used to verify the robustness of programs whose inputs can have small amounts of error and uncertainty---e.g., embedded controllers processing slightly unreliable sensor data, or handheld devices using slightly stale satellite data.
Continuity is a fundamental notion in mathematics. However, it is difficult to apply continuity proofs from real analysis to functions that are coded as imperative programs, especially when they use diverse data types and features such as assignments, branches, and loops. We associate data types with metric spaces as opposed to just sets of values, and continuity of typed programs is phrased in terms of these spaces. Our analysis reduces questions about continuity to verification conditions that do not refer to infinitesimal changes and can be discharged using off-the-shelf SMT solvers. Challenges arise in proving continuity of programs with branches and loops, as a small perturbation in the value of a variable often leads to divergent control-flow that can lead to large changes in values of variables. Our proof rules identify appropriate ``synchronization points'' between executions and their perturbed counterparts, and establish that values of certain variables converge back to the original results in spite of temporary divergence.
We prove our analysis sound with respect to the traditional epsilon-delta definition of continuity. We demonstrate the precision of our analysis by applying it to a range of classic algorithms, including algorithms for array sorting, shortest paths in graphs, minimum spanning trees, and combinatorial optimization. A prototype implementation based on the Z3 SMT-solver is also presented.

References

[1]
Rajeev Alur, Costas Courcoubetis, Thomas A. Henzinger, and Pei-Hsin Ho. Hybrid automata: An algorithmic approach to the specification and verification of hybrid systems. In Hybrid Systems, 1992.
[2]
Yamine Aıt Ameur, Gérard Bel, Frédéric Boniol, S. Pairault, and Virginie Wiels. Robustness analysis of avionics embedded systems. In LCTES, pages 123--132, 2003.
[3]
Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to algorithms. MIT Press and McGraw-Hill, 1990.
[4]
Patrick Cousot. Proving the absence of run-time errors in safety-critical avionics code. In EMSOFT, pages 7--9, 2007.
[5]
Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. The ASTREÉ analyzer. In ESOP, pages 21--30, 2005.
[6]
Eric Goubault. Static analyses of the precision of floating-point operations. In SAS, pages 234--259, 2001.
[7]
Eric Goubault, Matthieu Martel, and Sylvie Putot. Asserting the precision of floating-point computations: A simple abstract interpreter. In ESOP, 2002.
[8]
Joseph Halpern. Reasoning about uncertainty. The MIT Press, 2003.
[9]
Dick Hamlet. Continuity in sofware systems. In ISSTA, pages 196--200, 2002.
[10]
Mats Per Erik Heimdahl, Yunja Choi, and Michael W. Whalen. Deviation analysis: A new use of model checking. Autom. Softw. Eng., 12(3):321--347, 2005.
[11]
Myron Kayton and Walter R. Fried. Avionics navigation systems. Wiley-IEEE, 1997.
[12]
Edward A. Lee. Cyber physical systems: Design challenges. In ISORC, pages 363--369, 2008.
[13]
Matthieu Martel. Propagation of roundoff errors in finite precision computations: A semantics approach. In ESOP, pages 194--208, 2002.
[14]
Antoine Miné. Relational abstract domains for the detection of floating-point run-time errors. In ESOP, pages 3--17, 2004.
[15]
Bradford Parkinson and James Spiker. The global positioning system: Theory and applications (Volume II). AIAA, 1996.
[16]
Stefan Pettersson and Bengt Lennartson. Stability and robustness for hybrid systems. In Decision and Control, volume 2, pages 1202--1207, Dec 1996.
[17]
Andreas Podelski and Silke Wagner. Model checking of hybrid systems: From reachability towards stability. In HSCC, pages 507--521, 2006.
[18]
Mardavij Roozbehani, Alexandre Megretski, Emilio Frazzoli, and Eric Feron. Distributed lyapunov functions in analysis of graph models of software. In HSCC, pages 443--456, 2008.
[19]
Ofer Strichman. Regression verification: Proving the equivalence of similar programs. In CAV, 2009.
[20]
Wilson Sutherland. Introduction to metric and topological spaces. Oxford University Press, 1975.
[21]
John Taylor. An introduction to error analysis: the study of uncertainties in physical measurements. University Science Books, 1997.
[22]
Tachio Terauchi and Alex Aiken. A capability calculus for concurrency and determinism. In CONCUR, pages 218--232, 2006.
[23]
Glynn Winskel. The formal semantics of programming languages. The MIT Press, 1993.

Cited By

View all
  • (2024)Equivalence and Similarity Refutation for Probabilistic ProgramsProceedings of the ACM on Programming Languages10.1145/36564628:PLDI(2098-2122)Online publication date: 20-Jun-2024
  • (2024)Adversities in Abstract Interpretation - Accommodating Robustness by Abstract InterpretationACM Transactions on Programming Languages and Systems10.1145/364930946:2(1-31)Online publication date: 24-Feb-2024
  • (2024)Monotonicity and the Precision of Program AnalysisProceedings of the ACM on Programming Languages10.1145/36328978:POPL(1629-1662)Online publication date: 5-Jan-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '10: Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2010
520 pages
ISBN:9781605584799
DOI:10.1145/1706299
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 45, Issue 1
    POPL '10
    January 2010
    500 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1707801
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 January 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. continuity
  2. errors
  3. perturbations
  4. program analysis
  5. proof rules
  6. robustness
  7. sensitivity
  8. stability
  9. uncertainty

Qualifiers

  • Research-article

Conference

POPL '10
Sponsor:

Acceptance Rates

Overall Acceptance Rate 860 of 4,328 submissions, 20%

Upcoming Conference

POPL '26

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)35
  • Downloads (Last 6 weeks)2
Reflects downloads up to 16 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Equivalence and Similarity Refutation for Probabilistic ProgramsProceedings of the ACM on Programming Languages10.1145/36564628:PLDI(2098-2122)Online publication date: 20-Jun-2024
  • (2024)Adversities in Abstract Interpretation - Accommodating Robustness by Abstract InterpretationACM Transactions on Programming Languages and Systems10.1145/364930946:2(1-31)Online publication date: 24-Feb-2024
  • (2024)Monotonicity and the Precision of Program AnalysisProceedings of the ACM on Programming Languages10.1145/36328978:POPL(1629-1662)Online publication date: 5-Jan-2024
  • (2024)Robust computation tree logicInnovations in Systems and Software Engineering10.1007/s11334-024-00552-7Online publication date: 20-Mar-2024
  • (2023)Revisiting Neural Program Smoothing for FuzzingProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616308(133-145)Online publication date: 30-Nov-2023
  • (2023)Smoothness Analysis for Probabilistic Programs with Application to Optimised Variational InferenceProceedings of the ACM on Programming Languages10.1145/35712057:POPL(335-366)Online publication date: 11-Jan-2023
  • (2022)Learning to Synthesize Relational InvariantsProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556942(1-12)Online publication date: 10-Oct-2022
  • (2022)A dual number abstraction for static analysis of Clarke JacobiansProceedings of the ACM on Programming Languages10.1145/34987186:POPL(1-30)Online publication date: 12-Jan-2022
  • (2022)Effectful program distancingProceedings of the ACM on Programming Languages10.1145/34986806:POPL(1-30)Online publication date: 12-Jan-2022
  • (2021)Doping Tests for Cyber-physical SystemsACM Transactions on Modeling and Computer Simulation10.1145/344935431:3(1-27)Online publication date: 24-Aug-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media