Axioms for concurrent objects

Specification and verification techniques for abstract data types that have been successful for sequential programs can be extended in a natural way to provide the same benefits for concurrent programs. We propose an approach to specifying and verifying concurrent objects based on a novel correctness condition, which we call “linearizability.” Linearizability provides the illusion that each operation takes effect instantaneously at some point between its invocation and its response, implying that the meaning of a concurrent object's operations can still be given by pre- and post-conditions. In this paper, we will define and discuss linearizability, and then give examples of how to reason about concurrent objects and verify their implementations based on their (sequential) axiomatic specifications.

[1]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[2]  S. Owicki,et al.  Verifying properties of parallel programs: an axiomatic approach , 1976, CACM.

[3]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[4]  Ellis Horowitz,et al.  Abstract data types and software validation , 1978, CACM.

[5]  Hans-Dieter Ehrich Extensions and Implementations of Abstract Data Type Specifications , 1978, MFCS.

[6]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[7]  Mitchell Wand,et al.  Final Algebra Semantics and Data Type Extensions , 1979, J. Comput. Syst. Sci..

[8]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[9]  Christos H. Papadimitriou,et al.  The serializability of concurrent database updates , 1979, JACM.

[10]  Willem P. de Roever,et al.  A Proof System for Communicating Sequential Processes , 1980, ACM Trans. Program. Lang. Syst..

[11]  Brent Hailpern,et al.  Verifying network protocols using temporal logic , 1980 .

[12]  Zohar Manna,et al.  Verification of concurrent programs, Part I: The temporal framework , 1981 .

[13]  Leslie Lamport,et al.  Proving Liveness Properties of Concurrent Programs , 1982, TOPL.

[14]  Larry Rudolph,et al.  Basic Techniques for the Efficient Coordination of Very Large Numbers of Cooperating Sequential Processors , 1983, TOPL.

[15]  Samuel N. Kamin Final Data Types and Their Specification , 1983, TOPL.

[16]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

[17]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[18]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[19]  Jayadev Misra Axioms for memory access in asynchronous hardware systems , 1986, TOPL.

[20]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .

[21]  Fred Kröger,et al.  Temporal Logic of Programs , 1987, EATCS Monographs on Theoretical Computer Science.