Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- abstractJune 2015
Verification of a cryptographic primitive: SHA-256 (abstract)
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Page 153https://doi.org/10.1145/2737924.2774972A full formal machine-checked verification of a C program: the OpenSSL implementation of SHA-256. This is an interactive proof of functional correctness in the Coq proof assistant, using the Verifiable C program logic. Verifiable C is a separation ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Diagnosing type errors with class
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 12–21https://doi.org/10.1145/2737924.2738009Type inference engines often give terrible error messages, and the more sophisticated the type system the worse the problem. We show that even with the highly expressive type system implemented by the Glasgow Haskell Compiler (GHC)--including type ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
A formal C memory model supporting integer-pointer casts
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 326–335https://doi.org/10.1145/2737924.2738005The ISO C standard does not specify the semantics of many valid programs that use non-portable idioms such as integer-pointer casts. Recent efforts at formal definitions and verified implementation of the C language inherit this feature. By adopting ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Light: replay via tightly bounded recording
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 55–64https://doi.org/10.1145/2737924.2738001Reproducing concurrency bugs is a prominent challenge. Existing techniques either rely on recording very fine grained execution information and hence have high runtime overhead, or strive to log as little information as possible but provide no ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Synthesizing racy tests
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 175–185https://doi.org/10.1145/2737924.2737998Subtle concurrency errors in multithreaded libraries that arise because of incorrect or inadequate synchronization are often difficult to pinpoint precisely using only static techniques. On the other hand, the effectiveness of dynamic race detectors is ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 -
- research-articleJune 2015
Asynchronous programming, analysis and testing with state machines
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 154–164https://doi.org/10.1145/2737924.2737996Programming efficient asynchronous systems is challenging because it can often be hard to express the design declaratively, or to defend against data races and interleaving-dependent assertion violations. Previous work has only addressed these ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Termination and non-termination specification inference
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 489–498https://doi.org/10.1145/2737924.2737993Techniques for proving termination and non-termination of imperative programs are usually considered as orthogonal mechanisms. In this paper, we propose a novel mechanism that analyzes and proves both program termination and non-termination at the same ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Automatic error elimination by horizontal code transfer across multiple applications
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 43–54https://doi.org/10.1145/2737924.2737988We present Code Phage (CP), a system for automatically transferring correct code from donor applications into recipient applications that process the same inputs to successfully eliminate errors in the recipient. Experimental results using seven donor ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
DAG inlining: a decision procedure for reachability-modulo-theories in hierarchical programs
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 280–290https://doi.org/10.1145/2737924.2737987A hierarchical program is one with multiple procedures but no loops or recursion. This paper studies the problem of deciding reachability queries in hierarchical programs where individual statements can be encoded in a decidable logic (say in SMT). ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Many-core compiler fuzzing
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 65–76https://doi.org/10.1145/2737924.2737986We address the compiler correctness problem for many-core systems through novel applications of fuzz testing to OpenCL compilers. Focusing on two methods from prior work, random differential testing and testing via equivalence modulo inputs (EMI), we ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Algorithmic debugging of real-world haskell programs: deriving dependencies from the cost centre stack
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 33–42https://doi.org/10.1145/2737924.2737985Existing algorithmic debuggers for Haskell require a transformation of all modules in a program, even libraries that the user does not want to debug and which may use language features not supported by the debugger. This is a pity, because a promising ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Automatic induction proofs of data-structures in imperative programs
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 457–466https://doi.org/10.1145/2737924.2737984We consider the problem of automated reasoning about dynamically manipulated data structures. Essential properties are encoded as predicates whose definitions are formalized via user-defined recursive rules. Traditionally, proving relationships between ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Efficient synthesis of network updates
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 196–207https://doi.org/10.1145/2737924.2737980Software-defined networking (SDN) is revolutionizing the networking industry, but current SDN programming platforms do not provide automated mechanisms for updating global configurations on the fly. Implementing updates by hand is challenging for SDN ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Synthesis of ranking functions using extremal counterexamples
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 608–618https://doi.org/10.1145/2737924.2737976We present a complete method for synthesizing lexicographic linear ranking functions (and thus proving termination), supported by inductive invariants, in the case where the transition relation of the program includes disjunctions and existentials (...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Stateless model checking concurrent programs with maximal causality reduction
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 165–174https://doi.org/10.1145/2737924.2737975We present maximal causality reduction (MCR), a new technique for stateless model checking. MCR systematically explores the state-space of concurrent programs with a provably minimal number of executions. Each execution corresponds to a distinct ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Concurrency debugging with differential schedule projections
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 586–595https://doi.org/10.1145/2737924.2737973We present Symbiosis: a concurrency debugging technique based on novel differential schedule projections (DSPs). A DSP shows the small set of memory operations and data-flows responsible for a failure, as well as a reordering of those elements that ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Relatively complete counterexamples for higher-order programs
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 446–456https://doi.org/10.1145/2737924.2737971In this paper, we study the problem of generating inputs to a higher-order program causing it to error. We first approach the problem in the setting of PCF, a typed, core functional language and contribute the first relatively complete method for ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Preventing glitches and short circuits in high-level self-timed chip specifications
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 270–279https://doi.org/10.1145/2737924.2737967Self-timed chip designs are commonly specified in a high-level message-passing language called CHP. This language is closely related to Hoare's CSP except it admits erroneous behavior due to the necessary limitations of efficient hardware ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Static detection of asymptotic performance bugs in collection traversals
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 369–378https://doi.org/10.1145/2737924.2737966This paper identifies and formalizes a prevalent class of asymptotic performance bugs called redundant traversal bugs and presents a novel static analysis for automatically detecting them. We evaluate our technique by implementing it in a tool called ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015 - research-articleJune 2015
Provably correct peephole optimizations with alive
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2015, Pages 22–32https://doi.org/10.1145/2737924.2737965Compilers should not miscompile. Our work addresses problems in developing peephole optimizations that perform local rewriting to improve the efficiency of LLVM code. These optimizations are individually difficult to get right, particularly in the ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 6June 2015