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

Read more

Summary

Introduction

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

Example: a higher-order multiset library
Higher-order linearisability
Higher-order histories
Three notions of linearisability
Library syntax
Semantics and soundness
Library-client evaluation
Trace semantics
Soundness
Related and future work
Full Text
Published version (Free)

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