Abstract
Linearisability is a central notion for verifying concurrent libraries: a library is proven correct if its operational history can be rearranged into a sequential one that satisfies a given specification. Until now, linearisability has been examined for libraries in which method arguments and method results were of ground type. In this paper we extend linearisability to the general higher-order setting, where methods of arbitrary type can be passed as arguments and returned as values, and establish its soundness.
Highlights
Software libraries provide implementations of routines, often of specialised nature, to facilitate code reuse and modularity
We examine libraries L that can interact with their environments by means of public and abstract methods: a library L with abstract methods of types Θ = θ1, ⋯, θn and public methods Θ′ = θ1′, ⋯, θn′ ′ is written as L ∶ Θ → Θ′
We extend general linearisability to cater for situations where the client and the parameter library adhere to closure constraints expressed by relations R on histories
Summary
Software libraries provide implementations of routines, often of specialised nature, to facilitate code reuse and modularity. Linearisations were required to be sequential traces, that is, sequences of method calls immediately followed by their returns. In this paper we shall work with open higher-order libraries, which provide implementations of public methods and may themselves depend on abstract ones, to be supplied by parameter libraries. We propose a corresponding notion of sequential history for higher-order library interactions. As we work in a higher-order framework, v may contain functions, which can participate in subsequent calls and returns. In contrast to classic linearisability, the move by O and its response by P need not be a call/return pair, as the higher-order setting provides more possibilities (in particular, the P response may well be a call). One of our examples will discuss the implementation of the flat-combining approach [11, 3], adapted to higher-order types
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have