Precise subtyping for asynchronous multiparty sessions
Session subtyping is a cornerstone of refinement of communicating processes: a process implementing a session type (i.e., a communication protocol) T can be safely used whenever a process implementing one of its supertypes T ′ is expected, in any context, without introducing deadlocks nor other comm...
Gespeichert in:
Veröffentlicht in: | Proceedings of ACM on programming languages 2021-01, Vol.5 (POPL), p.1-28 |
---|---|
Hauptverfasser: | , , , , |
Format: | Artikel |
Sprache: | eng |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | Session subtyping is a cornerstone of refinement of communicating processes: a process implementing a session type (i.e., a communication protocol)
T
can be safely used whenever a process implementing one of its supertypes
T
′ is expected, in any context, without introducing deadlocks nor other communication errors. As a consequence, whenever
T
T
′ holds, it is safe to replace an implementation of
T
′ with an implementation of the subtype
T
, which may allow for more optimised communication patterns.
We present the first formalisation of the
precise
subtyping relation for
asynchronous multiparty
sessions. We show that our subtyping relation is
sound
(i.e., guarantees safe process replacement, as outlined above) and also
complete
: any extension of the relation is unsound. To achieve our results, we develop a novel
session decomposition
technique, from
full
session types (including internal/external choices) into
single input/output session trees
(without choices).
Previous work studies precise subtyping for
binary
sessions (with just two participants), or multiparty sessions (with any number of participants) and
synchronous
interaction. Here, we cover
multiparty
sessions with
asynchronous
interaction, where messages are transmitted via FIFO queues (as in the TCP/IP protocol), and prove that our subtyping is both operationally and denotationally precise. In the asynchronous multiparty setting, finding the precise subtyping relation is a highly complex task: this is because, under some conditions, participants can permute the order of their inputs and outputs, by sending some messages earlier or receiving some later, without causing errors; the precise subtyping relation must capture
all
such valid permutations — and consequently, its formalisation, reasoning and proofs become challenging. Our session decomposition technique overcomes this complexity, expressing the subtyping relation as a composition of refinement relations between single input/output trees, and providing a simple reasoning principle for asynchronous message optimisations. |
---|---|
ISSN: | 2475-1421 2475-1421 |
DOI: | 10.1145/3434297 |