Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program analysis with partial transfer functions
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Context-sensitive synchronization-sensitive analysis is undecidable
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Bebop: A Symbolic Model Checker for Boolean Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
The Interprocedural Coincidence Theorem
CC '92 Proceedings of the 4th International Conference on Compiler Construction
Summarizing procedures in concurrent programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Precise interprocedural analysis through linear algebra
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Race checking by context inference
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
KISS: keep it simple and sequential
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Weighted pushdown systems and their application to interprocedural dataflow analysis
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Iterative context bounding for systematic testing of multithreaded programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Model checking concurrent linux device drivers
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Symbolic Context-Bounded Analysis of Multithreaded Java Programs
SPIN '08 Proceedings of the 15th international workshop on Model Checking Software
Context-bounded analysis of multithreaded programs with dynamic linked structures
CAV'07 Proceedings of the 19th international conference on Computer aided verification
BEEM: benchmarks for explicit model checkers
Proceedings of the 14th international SPIN conference on Model checking software
Interprocedural analysis of concurrent programs under a context bound
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Context-Bounded model checking of concurrent software
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
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
SAS'07 Proceedings of the 14th international conference on Static Analysis
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ConSeq: detecting concurrency bugs through sequential errors
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Verifying multi-threaded software using smt-based context-bounded model checking
Proceedings of the 33rd International Conference on Software Engineering
Automatic analysis of DMA races using model checking and k-induction
Formal Methods in System Design
On sequentializing concurrent programs
SAS'11 Proceedings of the 18th international conference on Static analysis
Analysis of recursively parallel programs
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global reachability in bounded phase multi-stack pushdown systems
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Parallelizing top-down interprocedural analyses
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Bounded phase analysis of message-passing programs
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Detecting fair non-termination in multithreaded programs
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
A solver for reachability modulo theories
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Asynchronous programs with prioritized task-buffers
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Reachability problem for weak multi-pushdown automata
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
MSO decidability of multi-pushdown systems via split-width
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Bounded-Interference sequentialization for testing concurrent programs
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Finding non-terminating executions in distributed asynchronous programs
SAS'12 Proceedings of the 19th international conference on Static Analysis
Verifying concurrent programs against sequential specifications
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Bounded context-switching and reentrant locking
FOSSACS'13 Proceedings of the 16th international conference on Foundations of Software Science and Computation Structures
CSeq: a sequentialization tool for C
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Analysis of Recursively Parallel Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial orders for efficient bounded model checking of concurrent software
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Safety verification of asynchronous pushdown systems with shaped stacks
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Concurrency testing using schedule bounding: an empirical study
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.01 |
This paper addresses the analysis of concurrent programs with shared memory. Such an analysis is undecidable in the presence of multiple procedures. One approach used in recent work obtains decidability by providing only a partial guarantee of correctness: the approach bounds the number of context switches allowed in the concurrent program, and aims to prove safety, or find bugs, under the given bound. In this paper, we show how to obtain simple and efficient algorithms for the analysis of concurrent programs with a context bound. We give a general reduction from a concurrent program P, and a given context bound K, to a sequential program P s K such that the analysis of P s K can be used to prove properties about P. The reduction introduces symbolic constants and assume statements in P s K . Thus, any sequential analysis that can deal with these two additions can be extended to handle concurrent programs as well, under a context bound. We give instances of the reduction for common program models used in model checking, such as Boolean programs, pushdown systems (PDSs), and symbolic PDSs.