Dependent Types for Low-Level Programming

  • Jeremy Condit
  • Matthew Harren
  • Zachary Anderson
  • David Gay
  • George C. Necula
Conference paper

DOI: 10.1007/978-3-540-71316-6_35

Part of the Lecture Notes in Computer Science book series (LNCS, volume 4421)
Cite this paper as:
Condit J., Harren M., Anderson Z., Gay D., Necula G.C. (2007) Dependent Types for Low-Level Programming. In: De Nicola R. (eds) Programming Languages and Systems. ESOP 2007. Lecture Notes in Computer Science, vol 4421. Springer, Berlin, Heidelberg

Abstract

In this paper, we describe the key principles of a dependent type system for low-level imperative languages. The major contributions of this work are (1) a sound type system that combines dependent types and mutation for variables and for heap-allocated structures in a more flexible way than before and (2) a technique for automatically inferring dependent types for local variables. We have applied these general principles to design Deputy, a dependent type system for C that allows the user to describe bounded pointers and tagged unions. Deputy has been used to annotate and check a number of real-world C programs.

Download to read the full conference paper text

Copyright information

© Springer Berlin Heidelberg 2007

Authors and Affiliations

  • Jeremy Condit
    • 1
  • Matthew Harren
    • 1
  • Zachary Anderson
    • 1
  • David Gay
    • 2
  • George C. Necula
    • 1
  1. 1.University of California, Berkeley 
  2. 2.Intel Research, Berkeley 

Personalised recommendations