Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Algorithms for scalable synchronization on shared-memory multiprocessors
ACM Transactions on Computer Systems (TOCS)
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Successive Approximation of Abstract Transition Relations
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Counterexample-guided abstraction refinement for symbolic model checking
Journal of the ACM (JACM)
Axiomatic proof techniques for parallel programs.
Axiomatic proof techniques for parallel programs.
Race checking by context inference
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Java Concurrency in Practice
Symmetry in temporal logic model checking
ACM Computing Surveys (CSUR)
Linux Device Drivers, 3rd Edition
Linux Device Drivers, 3rd Edition
Verification of Boolean programs with unbounded thread creation
Theoretical Computer Science
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Automatic Symmetry Detection for Promela
Journal of Automated Reasoning
Automatic Discovery of Transition Symmetry in Multithreaded Programs Using Dynamic Analysis
Proceedings of the 16th International SPIN Workshop on Model Checking Software
SPIN'03 Proceedings of the 10th international conference on Model checking software
Context-aware counter abstraction
Formal Methods in System Design
Predicate abstraction and refinement for verifying multi-threaded programs
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On symmetries and spotlights: verifying parameterised systems
ICFEM'10 Proceedings of the 12th international conference on Formal engineering methods and software engineering
Verifying SystemC: a software model checking approach
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Symmetry-aware predicate abstraction for shared-variable concurrent programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Threader: a constraint-based verifier for multi-threaded programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Model-Checking parameterized concurrent programs using linear interfaces
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Dynamic cutoff detection in parameterized concurrent programs
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Verifying concurrent message-passing c programs with recursive calls
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Detecting spurious counterexamples efficiently in abstract model checking
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
Predicate abstraction and counterexample-guided abstraction refinement (CEGAR) have enabled finite-state model checking of software written in mainstream programming languages. This combination of techniques has been successful in analysing system-level sequential C code. In contrast, there is little evidence of fruitful applications of CEGAR to shared-variable concurrent software. We attribute this gap to the lack of abstraction strategies that permit a scalable analysis of the resulting multi-threaded Boolean programs. The goal of this paper is to close this gap. We have developed a symmetry-aware CEGAR technique: it takes into account the replicated structure of programs that consist of many threads executing the same procedure, and generates a Boolean program template whose multi-threaded execution soundly overapproximates the original concurrent program. State explosion during model checking parallel instantiations of this template can now be absorbed by exploiting symmetry. We have implemented our method in a tool, SymmPa, and demonstrate its superior performance over alternative approaches on a range of synchronisation programs.