Intrinsically-Typed Definitional Interpreters for Linear, Session-Typed Languages

Working Paper (2020)
Author(s)

A.J. Rouvoet (TU Delft - Programming Languages)

Casper Bach Bach Poulsen (TU Delft - Programming Languages)

R.J. Krebbers (TU Delft - Programming Languages)

E. Visser (TU Delft - Programming Languages)

Research Group
Programming Languages
Copyright
© 2020 A.J. Rouvoet, C.B. Poulsen, R.J. Krebbers, Eelco Visser
DOI related publication
https://doi.org/10.1145/3372885.3373818
More Info
expand_more
Publication Year
2020
Language
English
Copyright
© 2020 A.J. Rouvoet, C.B. Poulsen, R.J. Krebbers, Eelco Visser
Research Group
Programming Languages
Pages (from-to)
284-298
ISBN (electronic)
978-1-4503-7097-4
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

An intrinsically-typed definitional interpreter is a concise specification of dynamic semantics, that is executable and type safe by construction. Unfortunately, scaling intrinsically-typed definitional interpreters to more complicated object languages often results in definitions that are cluttered with manual proof work. For linearly-typed languages (including session-typed languages) one has to prove that the interpreter, as well as all the operations on semantic components, treat values linearly. We present new methods and tools that make it possible to implement intrinsically-typed definitional interpreters for linearly-typed languages in a way that hides the majority of the manual proof work. Inspired by separation logic, we develop reusable and composable abstractions for programming with linear operations using dependent types. Using these abstractions, we define interpreters for linear lambda calculi with strong references, concurrency, and session-typed communication in Agda