Control predicates are better than dummy variables for reasoning about program control
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallel program design: a foundation
Parallel program design: a foundation
Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Temporal verification of reactive systems: safety
Temporal verification of reactive systems: safety
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Frangipani: a scalable distributed file system
Proceedings of the sixteenth ACM symposium on Operating systems principles
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Parametric shape analysis via 3-valued logic
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Verifying safety properties of concurrent Java programs using 3-valued logic
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Avoiding exponential explosion: generating compact verification conditions
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Detecting race conditions in large programs
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Tool-supported program abstraction for finite-state verification
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Assume-Guarantee Model Checking of Software: A Comparative Case Study
Proceedings of the 5th and 6th International SPIN Workshops on Theoretical and Practical Aspects of SPIN Model Checking
On Using a Composition Principle to Design Parallel Programs
AMAST '93 Proceedings of the Third International Conference on Methodology and Software Technology: Algebraic Methodology and Software Technology
Logical Foundations for Compositional Verification and Development of Concurrent Programs in UNITY
AMAST '95 Proceedings of the 4th International Conference on Algebraic Methodology and Software Technology
Proof-Outlines for Threads in Java
CONCUR '00 Proceedings of the 11th International Conference on Concurrency Theory
A Proof Technique for Rely/Guarantee Properties
Proceedings of the Fifth Conference on Foundations of Software Technology and Theoretical Computer Science
TVLA: A System for Implementing Static Analyses
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
A Compositional Rule for Hardware Design Refinement
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
MOCHA: Modularity in Model Checking
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
On Decomposing and Refining Specifications of Distributed Systems
Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, REX Workshop
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Now you may compose temporal logic specifications
STOC '84 Proceedings of the sixteenth annual ACM symposium on Theory of computing
Proving the Correctness of Multiprocess Programs
IEEE Transactions on Software Engineering
Proofs of Networks of Processes
IEEE Transactions on Software Engineering
Proving assertions about parallel programs
Journal of Computer and System Sciences
Type-safe multithreading in cyclone
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
A Modular Checker for Multithreaded Programs
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Assume-Guarantee Verification of Source Code with Design-Level Assumptions
Proceedings of the 26th International Conference on Software Engineering
Verification of safety properties for concurrent assembly code
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Component Verification with Automatically Generated Assumptions
Automated Software Engineering
Modular verification of multithreaded programs
Theoretical Computer Science
Modular verification of concurrent assembly code with dynamic thread creation and termination
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
Optimistic synchronization-based state-space reduction
Formal Methods in System Design
Formal Software Analysis Emerging Trends in Software Model Checking
FOSE '07 2007 Future of Software Engineering
Learning to divide and conquer: applying the L* algorithm to automate assume-guarantee reasoning
Formal Methods in System Design
Interface Generation and Compositional Verification in JavaPathfinder
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
ACM Computing Surveys (CSUR)
VCC: A Practical System for Verifying Concurrent C
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Formal Verification of a Reader-Writer Lock Implementation in C
Electronic Notes in Theoretical Computer Science (ENTCS)
Verifying safety properties of concurrent heap-manipulating programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compositional circular assume-guarantee rules cannot be sound and complete
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
Refining interface alphabets for compositional verification
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
A generic framework for reasoning about dynamic networks of infinite-state processes
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
The rely-guarantee method in Isabelle/HOL
ESOP'03 Proceedings of the 12th European conference on Programming
Learning assumptions for compositional verification
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
SPIN'03 Proceedings of the 10th international conference on Model checking software
Certificate translation for the verification of concurrent programs
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
Predicate abstraction and refinement for verifying multi-threaded programs
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
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
Smallfoot: modular automatic assertion checking with separation logic
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Learning component interfaces with may and must abstractions
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
SPIN'06 Proceedings of the 13th international conference on Model Checking Software
Compositional termination proofs for multi-threaded programs
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
Ensuring the reliability of multithreaded software systems is difficult due to the interaction between threads. This paper describes the design and implementation of a static checker for such systems. To avoid considering all possible thread interleavings, the checker uses assume-guarantee reasoning, and relies on the programmer to specify an environment assumption that constrains the interaction between threads. Using this environment assumption, the checker reduces the verification of the original multithreaded program to the verification of several sequential programs, one for each thread. These sequential programs are subsequently analyzed using extended static checking techniques (based on verification conditions and automatic theorem proving). Experience indicates that the checker is capable of handling a range of synchronization disciplines. In addition, the required environment assumptions are simple and intuitive for common synchronization idioms.