Temporal verification of reactive systems: safety
Temporal verification of reactive systems: safety
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Circular Compositional Reasoning about Liveness
CHARME '99 Proceedings of the 10th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Generalized Temporal Verification Diagrams
Proceedings of the 15th Conference on Foundations of Software Technology and Theoretical Computer Science
Diagram-based verification of discrete, real-time and hybrid systems
Diagram-based verification of discrete, real-time and hybrid systems
Proving correctness of highly-concurrent linearisable objects
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
A Theory of Singly-Linked Lists and its Extensible Decision Procedure
SEFM '06 Proceedings of the Fourth IEEE International Conference on Software Engineering and Formal Methods
Regional Logic for Local Reasoning about Global Invariants
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Oracle semantics for concurrent separation logic
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Combining theories with shared set operations
FroCoS'09 Proceedings of the 7th international conference on Frontiers of combining systems
A theory of skiplists with applications to the verification of concurrent datatypes
NFM'11 Proceedings of the Third international conference on NASA Formal methods
Hi-index | 0.00 |
This paper studies the problem of formally verifying temporal properties of concurrent datatypes. Concurrent datatypes are implementations of classical data abstractions, specially designed to exploit the parallelism available in multiprocessor architectures. The correctness of concurrent datatypes is essential for the overall correctness of the client software. The main difficulty to reason about concurrent datatypes is due to the simultaneous use of unstructured concurrency and dynamic memory. The first contribution of this paper is the use of deductive temporal verification methods, in particular verification diagrams, enriched with reasoning about dynamic memory. Proofs using verification diagrams are decomposed into a finite collection of verification conditions. Our second contribution is a decision procedure mixing memory regions, pointers and lisp-like lists with locks, that allows the automatic verification of the generated verification conditions. We illustrate our techniques proving safety and liveness properties of lock-coupling concurrent lists.