Abstract

Separation logic specifications with abstract predicates intuitively enforce a discipline that constrains when and how calls may be made between a client and a library. Thus a separation logic specification of a library intuitively enforces a protocol on the trace of interactions between a client and the library. We show how to formalize this intuition and demonstrate how to derive "free theorems" about such interaction traces from abstract separation logic specifications. We present several examples of free theorems. In particular, we prove that a so-called logically atomic concurrent separation logic specification of a concurrent module operation implies that the operation is linearizable. All the results presented in this paper have been mechanized and formally proved in the Coq proof assistant using the Iris higher-order concurrent separation logic framework.

Highlights

  • Separation logic [Ishtiaq and O’Hearn 2001; Reynolds 2002] provides a powerful formalism for specifying an interface between a library and a client in terms of resources

  • In this paper we present a formal approach to establishing free theorems from abstract separation logic specifications

  • We demonstrate our approach on a variety of examples, which establish that separation logic specifications can imply a variety of free theorems about interaction traces, such as:

Read more

Summary

INTRODUCTION

Separation logic [Ishtiaq and O’Hearn 2001; Reynolds 2002] provides a powerful formalism for specifying an interface between a library and a client in terms of resources. (if the client were able to forge the open resource it could violate the trace property.) In other words, an abstract separation logic specification of a library entails a theorem ‘for free’; that is, a theorem that holds for any implementation of the library. While this intuition is broadly used in the separation logic community, it has not previously been formalised. It is publically available at either https://zenodo.org/record/5054898 (stable artifact) or https://github. com/logsem/free-theorems-sl (development repository)

MOTIVATING EXAMPLE
PROGRAMMING LANGUAGE
PROGRAM LOGIC
Trace Primitives
Adequacy Theorem
PROVING TRACE PROPERTIES AS FREE THEOREMS
File Library
Iterators on Collections
Well-bracketing Protocols
Traversable Stack Example
RELATING LOGICAL ATOMICITY AND LINEARIZABILITY
Logical Atomicity
Specification of a Concurrent Library
Linearizability
Linearizability as a Trace Invariant
Proving Linearizability
Related Work
CONCLUSION
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.