Really Natural Linear Indexed Type Checking

Arthur Azevedo de Amorim, Emilio Jesús Gallego Arias, Marco Gaboardi, Justin Hsu
3/16/2015
cs.LO

Official code: ejgallego/dfuzz (33 stars, BSD-3-Clause, last commit 2020-01-25).

Abstract

Recent works have shown the power of linear indexed type systems for enforcing complex program properties. These systems combine linear types with a language of type-level indices, allowing more fine-grained analyses. Such systems have been fruitfully applied in diverse domains, including implicit complexity and differential privacy. A natural way to enhance the expressiveness of this approach is by allowing the indices to depend on runtime information, in the spirit of dependent types. This approach is used in DFuzz, a language for differential privacy. The DFuzz type system relies on an index language supporting real and natural number arithmetic over constants and variables. Moreover, DFuzz uses a subtyping mechanism to make types more flexible. By themselves, linearity, dependency, and subtyping each require delicate handling when performing type checking or type inference; their combination increases this challenge substantially, as the features can interact in non-trivial ways. In this paper, we study the type-checking problem for DFuzz. We show how we can reduce type checking for (a simple extension of) DFuzz to constraint solving over a first-order theory of naturals and real numbers which, although undecidable, can often be handled in practice by standard numeric solvers.

View on arXivView PDF

Code Implementations(1)

ejgallego/dfuzzOfficial100%
BSD-3-Clause

Linear Dependent Types for Differential Privacy TypeChecker

338OCaml, MakefileSep 29, 20146 years agoBSD-3-Clause

Similar Papers

Cite this paper

@article{amorim2015really,
  title  = {Really Natural Linear Indexed Type Checking},
  author = {Arthur Azevedo de Amorim and Emilio Jesús Gallego Arias and Marco Gaboardi and Justin Hsu},
  year   = {2015},
  eprint = {1503.04522},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1503.04522}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1503.04522.svg)](https://codeofpaper.com/paper/1503.04522)

Discussion