The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Continuity in software systems
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Static Analyses of the Precision of Floating-Point Operations
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Reasoning about Uncertainty
Automatic Differentiation: Applications, Theory, and Implementations (Lecture Notes in Computational Science and Engineering)
Cyber Physical Systems: Design Challenges
ISORC '08 Proceedings of the 2008 11th IEEE Symposium on Object Oriented Real-Time Distributed Computing
SFCS '88 Proceedings of the 29th Annual Symposium on Foundations of Computer Science
Interval Polyhedra: An Abstract Domain to Infer Interval Linear Relationships
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
RTSS '09 Proceedings of the 2009 30th IEEE Real-Time Systems Symposium
Continuity analysis of programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Differential privacy for collaborative security
Proceedings of the Third European Workshop on System Security
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Distance makes the types grow stronger: a calculus for differential privacy
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Probabilistically accurate program transformations
SAS'11 Proceedings of the 18th international conference on Static analysis
Model checking of hybrid systems: from reachability towards stability
HSCC'06 Proceedings of the 9th international conference on Hybrid Systems: computation and control
ICALP'06 Proceedings of the 33rd international conference on Automata, Languages and Programming - Volume Part II
An abstract domain to discover interval linear equalities
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Managing performance vs. accuracy trade-offs with loop perforation
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Probabilistically accurate program transformations
SAS'11 Proceedings of the 18th international conference on Static analysis
Probabilistic relational reasoning for differential privacy
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Randomized accuracy-aware program transformations for efficient approximate computations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
What to do when things go wrong: recovery in complex (computer) systems
Proceedings of the 11th annual international conference on Aspect-oriented Software Development Companion
Continuity and robustness of programs
Communications of the ACM
Proving acceptability properties of relaxed nondeterministic approximate programs
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
CLSE: closed-loop symbolic execution
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Exercises in nonstandard static analysis of hybrid systems
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
White box sampling in uncertain data processing enabled by program analysis
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability
Verified integrity properties for safe approximate program transformations
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Linear dependent types for differential privacy
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parallelizing Sequential Programs with Statistical Accuracy Tests
ACM Transactions on Embedded Computing Systems (TECS) - Special Section on Probabilistic Embedded Computing
Optimal bounds for monotonicity and lipschitz testing over hypercubes and hypergrids
Proceedings of the forty-fifth annual ACM symposium on Theory of computing
Probabilistic Relational Reasoning for Differential Privacy
ACM Transactions on Programming Languages and Systems (TOPLAS)
Sensitivity analysis using type-based constraints
Proceedings of the 1st annual workshop on Functional programming concepts in domain-specific languages
On-the-fly detection of instability problems in floating-point program execution
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Verifying quantitative reliability for programs that execute on unreliable hardware
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
ICALP'13 Proceedings of the 40th international conference on Automata, Languages, and Programming - Volume Part II
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Paraprox: pattern-based approximation for data parallel applications
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
LICS '13 Proceedings of the 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science
Hi-index | 0.02 |
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 coded as an imperative program, and can use diverse data types and features such as branches and loops. Our approach to the problem soundly decomposes it into two subproblems: (a) verifying that the smallest possible perturbations to the inputs of P do not change the corresponding outputs significantly, even if control now flows along a different control path; and (b) verifying the robustness of the computation along each control-flow path of P. To solve the former subproblem, we build on an existing method for verifying that a program encodes a continuous function [5]. The latter is solved using a static analysis that bounds the magnitude of the slope of any function computed by a control flow path of P. The outcome is a sound program analysis for robustness that uses proof obligations which do not refer to epsilon-changes and can often be fully automated using off-the-shelf SMT-solvers. We identify three application domains for our analysis. First, our 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. A guarantee of robustness ensures that the system does not react disproportionately to such uncertainty. Second, our analysis is directly applicable to approximate computation, and can be used to provide foundations for a recently-proposed program approximation scheme called {loop perforation}. A third application is in database privacy: proofs of robustness of queries are essential to differential privacy, the most popular notion of privacy for statistical databases.