Functional Translation of a Calculus of Capabilities (2007)
| Citations: | 18 - 6 self |
BibTeX
@MISC{Charguéraud07functionaltranslation,
author = {Arthur Charguéraud and Franc¸ois Pottier},
title = {Functional Translation of a Calculus of Capabilities},
year = {2007}
}
OpenURL
Abstract
Reasoning about imperative programs requires the ability to track aliasing and ownership properties. We present a type system that provides this ability, by using regions, capabilities, and singleton types. It is designed for a high-level programming language with higher-order functions, algebraic data structures, and references (mutable memory cells). We then exhibit a type-directed translation of this imperative programming language into a purely functional language. Like the monadic translation, this is a store-passing translation. Here, however, the store is partitioned into multiple fragments, which are threaded through a computation only if they are relevant to it. Furthermore, the decomposition of the store into fragments can evolve dynamically to reflect ownership transfers. The translation offers deep insight about the inner workings and soundness of the type system. Furthermore, it provides a foundation for our long-term objective of designing a system for specifying and certifying imperative programs with dynamic memory allocation.







