Intrinsically-Typed Definitional Interpreters for Linear, Session-Typed Languages
An intrinsically-typed definitional interpreter is an attractive way of specifying the dynamic semantics of a programming language. It is a concise specification that is executable and type safe by construction. Unfortunately, scaling up intrinsically-typed definitional interpreters to more complicated object languages often results in definitions that are cluttered with manual proof work. In linearly-typed languages (e.g., session-typed languages) one has to ensure that all values are used linearly, and that linearity is maintained throughout the definition of the interpreter.
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. We use these abstractions to define interpreters for linearly-typed lambda calculi with strong references, and concurrent, session-typed communication in Agda.
Slides (neworleans.pdf) | 134KiB |
Tue 21 JanDisplayed time zone: Saskatchewan, Central America change
14:00 - 15:05 | |||
14:00 21mTalk | Formalizing Determinacy of Concurrent Revisions CPP Roy Overbeek Vrije Universiteit Amsterdam DOI Pre-print Media Attached | ||
14:21 21mTalk | Formalizing π-calculus in Guarded Cubical Agda CPP DOI Pre-print Media Attached File Attached | ||
14:43 21mTalk | Intrinsically-Typed Definitional Interpreters for Linear, Session-Typed Languages CPP Arjen Rouvoet Delft University of Technology, Casper Bach Poulsen Delft University of Technology, Robbert Krebbers Delft University of Technology, Eelco Visser Delft University of Technology DOI Pre-print Media Attached File Attached |