TY - GEN
T1 - Tractable refinement checking for concurrent objects
AU - Bouajjani, Ahmed
AU - Emmi, Michael
AU - Enea, Constantin
AU - Hamza, Jad
N1 - Publisher Copyright:
Copyright © 2015 by the Association for Computing Machinery, Inc. (ACM).
PY - 2015/1/14
Y1 - 2015/1/14
N2 - Efficient implementations of concurrent objects such as semaphores, locks, and atomic collections are essential to modern computing. Yet programming such objects is error prone: in minimizing the synchronization overhead between concurrent object invocations, one risks the conformance to reference implementations - or in formal terms, one risks violating observational refinement. Testing this refinement even within a single execution is intractable, limiting existing approaches to executions with very few object invocations. We develop a polynomial-time (per execution) approximation to refinement checking. The approximation is parameterized by an accuracy κ ε N representing the degree to which refinement violations are visible. In principle, more violations are detectable as κ increases, and in the limit, all are detectable. Our insight for this approximation arises from foundational properties on the partial orders characterizing the happens-before relations between object invocations: They are interval orders, with a well defined measure of complexity, i.e., their length. Approximating the happens-before relation with a possibly-weaker interval order of bounded length can be efficiently implemented by maintaining a bounded number of integer counters. In practice, we find that refinement violations can be detected with very small values of κ, and that our approach scales far beyond existing refinement-checking approaches.
AB - Efficient implementations of concurrent objects such as semaphores, locks, and atomic collections are essential to modern computing. Yet programming such objects is error prone: in minimizing the synchronization overhead between concurrent object invocations, one risks the conformance to reference implementations - or in formal terms, one risks violating observational refinement. Testing this refinement even within a single execution is intractable, limiting existing approaches to executions with very few object invocations. We develop a polynomial-time (per execution) approximation to refinement checking. The approximation is parameterized by an accuracy κ ε N representing the degree to which refinement violations are visible. In principle, more violations are detectable as κ increases, and in the limit, all are detectable. Our insight for this approximation arises from foundational properties on the partial orders characterizing the happens-before relations between object invocations: They are interval orders, with a well defined measure of complexity, i.e., their length. Approximating the happens-before relation with a possibly-weaker interval order of bounded length can be efficiently implemented by maintaining a bounded number of integer counters. In practice, we find that refinement violations can be detected with very small values of κ, and that our approach scales far beyond existing refinement-checking approaches.
KW - Concurrency
KW - Linearizability
KW - Refinement
U2 - 10.1145/2676726.2677002
DO - 10.1145/2676726.2677002
M3 - Conference contribution
AN - SCOPUS:84939475561
T3 - Conference Record of the Annual ACM Symposium on Principles of Programming Languages
SP - 651
EP - 662
BT - POPL 2015 - Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
PB - Association for Computing Machinery
T2 - 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015
Y2 - 12 January 2015 through 18 January 2015
ER -