Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleJune 2013
Verifying higher-order programs with the dijkstra monad
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 387–398https://doi.org/10.1145/2491956.2491978Modern programming languages, ranging from Haskell and ML, to JavaScript, C# and Java, all make extensive use of higher-order state. This paper advocates a new verification methodology for higher-order stateful programs, based on a new monad of ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Reasoning about nondeterminism in programs
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 219–230https://doi.org/10.1145/2491956.2491969Branching-time temporal logics (e.g. CTL, CTL*, modal mu-calculus) allow us to ask sophisticated questions about the nondeterminism that appears in systems. Applications of this type of reasoning include planning, games, security analysis, disproving, ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Compiler testing via a theory of sound optimisations in the C11/C++11 memory model
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 187–196https://doi.org/10.1145/2491956.2491967Compilers sometimes generate correct sequential code but break the concurrency memory model of the programming language: these subtle compiler bugs are observable only when the miscompiled functions interact with concurrent contexts, making them ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Steal Tree: low-overhead tracing of work stealing schedulers
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 507–518https://doi.org/10.1145/2491956.2462193Work stealing is a popular approach to scheduling task-parallel programs. The flexibility inherent in work stealing when dealing with load imbalance results in seemingly irregular computation structures, complicating the study of its runtime behavior. ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
How to combine widening and narrowing for non-monotonic systems of equations
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 377–386https://doi.org/10.1145/2491956.2462190Non-trivial analysis problems require complete lattices with infinite ascending and descending chains. In order to compute reasonably precise post-fixpoints of the resulting systems of equations, Cousot and Cousot have suggested accelerated fixpoint ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Modular verification of linearizability with non-fixed linearization points
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 459–470https://doi.org/10.1145/2491956.2462189Locating linearization points (LPs) is an intuitive approach for proving linearizability, but it is difficult to apply the idea in Hoare-style logic for formal program verification, especially for verifying algorithms whose LPs cannot be statically ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Almost-correct specifications: a modular semantic framework for assigning confidence to warnings
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 209–218https://doi.org/10.1145/2491956.2462188Modular assertion checkers are plagued with false alarms due to the need for precise environment specifications (preconditions and callee postconditions). Even the fully precise checkers report assertion failures under the most demonic environments ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Thresher: precise refutations for heap reachability
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 275–286https://doi.org/10.1145/2491956.2462186We present a precise, path-sensitive static analysis for reasoning about heap reachability, that is, whether an object can be reached from another variable or object via pointer dereferences. Precise reachability information is useful for a number of ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Finding optimum abstractions in parametric dataflow analysis
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 365–376https://doi.org/10.1145/2491956.2462185We propose a technique to efficiently search a large family of abstractions in order to prove a query using a parametric dataflow analysis. Our technique either finds the cheapest such abstraction or shows that none exists. It is based on counterexample-...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Translation validation for a verified OS kernel
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 471–482https://doi.org/10.1145/2491956.2462183We extend the existing formal verification of the seL4 operating system microkernel from 9500 lines of C source code to the binary level. We handle all functions that were part of the previous verification. Like the original verification, we currently ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Static analysis for probabilistic programs: inferring whole program properties from finitely many paths
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 447–458https://doi.org/10.1145/2491956.2462179We propose an approach for the static analysis of probabilistic programs that sense, manipulate, and control based on uncertain data. Examples include programs used in risk analysis, medical decision making and cyber-physical systems. Correctness ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Taming compiler fuzzers
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 197–208https://doi.org/10.1145/2491956.2462173Aggressive random testing tools ("fuzzers") are impressively effective at finding compiler bugs. For example, a single test-case generator has resulted in more than 1,700 bugs reported for a single JavaScript engine. However, fuzzers can be frustrating ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
Natural proofs for structure, data, and separation
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 231–242https://doi.org/10.1145/2491956.2462169We propose natural proofs for reasoning with programs that manipulate data-structures against specifications that describe the structure of the heap, the data stored within it, and separation and framing of sub-structures. Natural proofs are a subclass ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
CLAP: recording local executions to reproduce concurrency failures
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 141–152https://doi.org/10.1145/2491956.2462167We present CLAP, a new technique to reproduce concurrency bugs. CLAP has two key steps. First, it logs thread local execution paths at runtime. Second, offline, it computes memory dependencies that accord with the logged execution and are able to ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6 - research-articleJune 2013
CONCURRIT: a domain specific language for reproducing concurrency bugs
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationPages 153–164https://doi.org/10.1145/2491956.2462162We present CONCURRIT, a domain-specific language (DSL) for reproducing concurrency bugs. Given some partial information about the nature of a bug in an application, a programmer can write a CONCURRIT script to formally and concisely specify a set of ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 6