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:
Summary
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)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
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.