Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Better verification through symmetry
Formal Methods in System Design - Special issue on symmetry in automatic verification
Context-sensitive synchronization-sensitive analysis is undecidable
ACM Transactions on Programming Languages and Systems (TOPLAS)
A generic approach to the static analysis of concurrent programs with procedures
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Thread-Modular Verification for Shared-Memory Programs
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Specification and verification of concurrent systems in CESAR
Proceedings of the 5th Colloquium on International Symposium on Programming
A Modular Checker for Multithreaded Programs
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic
Logic of Programs, Workshop
Assumption Generation for Software Component Verification
Proceedings of the 17th IEEE international conference on Automated software engineering
Introduction to Automata Theory, Languages, and Computation (3rd Edition)
Introduction to Automata Theory, Languages, and Computation (3rd Edition)
Learning assumptions for compositional verification
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
Summarizing procedures in concurrent programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
KISS: keep it simple and sequential
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Assume-Guarantee Verification of Source Code with Design-Level Assumptions
Proceedings of the 26th International Conference on Software Engineering
Modular verification of concurrent assembly code with dynamic thread creation and termination
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Application of design for verification with concurrency controllers to air traffic control software
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Breaking up is hard to do: an investigation of decomposition for assume-guarantee reasoning
Proceedings of the 2006 international symposium on Software testing and analysis
Application of automated environment generation to commercial software
Proceedings of the 2006 international symposium on Software testing and analysis
Automatic generation of assumptions for modular verification of software specifications
Journal of Systems and Software - Special issue: Selected papers from the 4th source code analysis and manipulation (SCAM 2004) workshop
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Formal Software Analysis Emerging Trends in Software Model Checking
FOSE '07 2007 Future of Software Engineering
Automated Software Engineering
RELAY: static race detection on millions of lines of code
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Verification of Boolean programs with unbounded thread creation
Theoretical Computer Science
Breaking up is hard to do: An evaluation of automated assume-guarantee reasoning
ACM Transactions on Software Engineering and Methodology (TOSEM)
Dataflow analysis for concurrent programs using datarace detection
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Local Proofs for Linear-Time Properties of Concurrent Programs
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Thread Quantification for Concurrent Shape Analysis
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Modular verification of dynamically adaptive systems
Proceedings of the 8th ACM international conference on Aspect-oriented software development
Local proofs for global safety properties
Formal Methods in System Design
Abstract Transformers for Thread Correlation Analysis
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
Checking Event-Based Specifications in Java Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Symmetry and completeness in the analysis of parameterized systems
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Local proofs for global safety properties
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Model classifications and automated verification
FMICS'07 Proceedings of the 12th international conference on Formal methods for industrial critical systems
Thread-modular counterexample-guided abstraction refinement
SAS'10 Proceedings of the 17th international conference on Static analysis
Staged concurrent program analysis
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Mechanically verified proof obligations for linearizability
ACM Transactions on Programming Languages and Systems (TOPLAS)
Predicate abstraction and refinement for verifying multi-threaded programs
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Non-monotonic refinement of control abstraction for concurrent programs
ATVA'10 Proceedings of the 8th international conference on Automated technology for verification and analysis
Correctness proofs for device drivers in embedded systems
SSV'10 Proceedings of the 5th international conference on Systems software verification
Model checking a networked system without the network
Proceedings of the 8th USENIX conference on Networked systems design and implementation
Parallelizing a symbolic compositional model-checking algorithm
HVC'10 Proceedings of the 6th international conference on Hardware and software: verification and testing
Dataflow analysis for datarace-free programs
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Compositionality entails sequentializability
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
Threader: a constraint-based verifier for multi-threaded programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Testing atomicity of composed concurrent operations
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Analysis of recursively parallel programs
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Thread-modular verification is cartesian abstract interpretation
ICTAC'06 Proceedings of the Third international conference on Theoretical Aspects of Computing
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Summaries for while programs with recursion
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
A dash of fairness for compositional reasoning
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
SPLIT: a compositional LTL verifier
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Testing systems of concurrent black-boxes—an automata-theoretic and decompositional approach
FATES'05 Proceedings of the 5th international conference on Formal Approaches to Software Testing
Local symmetry and compositional verification
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Synthesizing software verifiers from proof rules
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Thread-Modular model checking with iterative refinement
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Counterexample-guided abstraction refinement for symmetric concurrent programs
Formal Methods in System Design
CONCURRIT: testing concurrent programs with programmable state-space exploration
HotPar'12 Proceedings of the 4th USENIX conference on Hot Topics in Parallelism
Precise thread-modular verification
SAS'07 Proceedings of the 14th international conference on Static Analysis
Modular safety checking for fine-grained concurrency
SAS'07 Proceedings of the 14th international conference on Static Analysis
Efficient coverability analysis by proof minimization
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Invariant generation for parametrized systems using self-reflection
SAS'12 Proceedings of the 19th international conference on Static Analysis
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improving model checking with context modelling
Advances in Software Engineering
Analysis of Recursively Parallel Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Safety verification of asynchronous pushdown systems with shaped stacks
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
On composing and proving the correctness of reactive behavior
Proceedings of the Eleventh ACM International Conference on Embedded Software
Hi-index | 0.00 |
We present thread-modular model checking, a novel technique for verifying correctness properties of loosely-coupled multithreaded software systems. Thread-modular model checking verifies each thread separately using an automatically inferred environment assumption that abstracts the possible steps of other threads. Separate verification of each thread yields significant space and time savings. Suppose there are n threads, each with a local store of size L, where the threads communicate via a shared global store of size G. If each thread is finite-state (without a stack), the naive model checking algorithm requires O(G.Ln) space, whereas thread-modular model checking requires only O(n.G.(G + L)) space. If each thread has a stack, the general model checking problem is undecidable, but thread-modular model checking terminates in polynomial time.