Skip to main content

Advertisement

SpringerLink
Log in
Menu
Find a journal Publish with us Track your research
Search
Cart
Book cover

European Symposium on Programming

ESOP 2007: Programming Languages and Systems pp 520–535Cite as

  1. Home
  2. Programming Languages and Systems
  3. Conference paper
Dependent Types for Low-Level Programming

Dependent Types for Low-Level Programming

  • Jeremy Condit1,
  • Matthew Harren1,
  • Zachary Anderson1,
  • David Gay2 &
  • …
  • George C. Necula1 
  • Conference paper
  • 1493 Accesses

  • 33 Citations

Part of the Lecture Notes in Computer Science book series (LNTCS,volume 4421)

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.

Keywords

  • Type System
  • Dependent Type
  • Type Rule
  • Type Environment
  • Concrete Syntax

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Chapter PDF

Download to read the full chapter text

References

  1. Anderson, Z.R.: Static analysis of C for hybrid type checking. Tech. Rep. EECS-2007-1, UC Berkeley (2007)

    Google Scholar 

  2. Augustsson, L.: Cayenne—a language with dependent types. In: ICFP’98 (1998)

    Google Scholar 

  3. Austin, T.M., Breach, S.E., Sohi, G.S.: Efficient detection of all pointer and array access errors. In: PLDI’94 (1994)

    Google Scholar 

  4. Carlisle, M.C.: Olden: Parallelizing Programs with Dynamic Data Structures on Distributed-Memory Machines. PhD thesis, Princeton University (June 1996)

    Google Scholar 

  5. Condit, J., et al.: Dependent types for low-level programming. Tech. Rep. EECS-2006-129, UC Berkeley (2006)

    Google Scholar 

  6. Dhurjati, D., Adve, V.: Backwards-compatible array bounds checking for C with very low overhead. In: ICSE’06 (2006)

    Google Scholar 

  7. Flanagan, C.: Hybrid type checking. In: POPL’06 (2006)

    Google Scholar 

  8. Hackett, B., et al.: Modular checking for buffer overflows in the large. In: ICSE’06 (2006)

    Google Scholar 

  9. Necula, G.C., Harren, M.: Using Dependent Types to Certify the Safety of Assembly Code. In: Hankin, C., Siveroni, I. (eds.) SAS 2005. LNCS, vol. 3672, pp. 155–170. Springer, Heidelberg (2005)

    Google Scholar 

  10. Hill, J., et al.: System architecture directions for networked sensors. In: ASPLOS’00 (2000), citeseer.nj.nec.com/382595.html

  11. Jim, T., et al.: Cyclone: A safe dialect of C. In: USENIX Annual Technical Conference (2002)

    Google Scholar 

  12. Lee, C., Potkonjak, M., Mangione-Smith, W.H.: MediaBench: A tool for evaluating and synthesizing multimedia and communicatons systems. In: International Symposium on Microarchitecture (1997)

    Google Scholar 

  13. Nanevski, A., Morrisett, G.: Dependent type theory of stateful higher-order functions. Tech. Rep. TR-24-05, Harvard University.

    Google Scholar 

  14. Necula, G.C., et al.: CCured: Type-safe retrofitting of legacy software. TOPLAS 27(3) (2005)

    Google Scholar 

  15. Necula, G.C., et al.: CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs. In: Horspool, R.N. (ed.) CC 2002 and ETAPS 2002. LNCS, vol. 2304, Springer, Heidelberg (2002)

    CrossRef  Google Scholar 

  16. Ou, X., et al.: Dynamic typing with dependent types. In: IFIP Conference on Theoretical Computer Science (2004)

    Google Scholar 

  17. Siek, J.G., Taha, W.: Gradual typing for functional languages. In: Scheme and Functional Programming (2006)

    Google Scholar 

  18. SPEC: Standard Performance Evaluation Corporation Benchmarks (July 1995), http://www.spec.org/osg/cpu95/CINT95

  19. Xi, H.: Imperative programming with dependent types. In: LICS’00 (2000)

    Google Scholar 

  20. Xi, H., Pfenning, F.: Dependent types in practical programming. In: POPL’99 (1999)

    Google Scholar 

  21. Zhou, F., et al.: SafeDrive: Safe and recoverable extensions using language-based techniques. In: OSDI’06 (2006)

    Google Scholar 

Download references

Author information

Authors and Affiliations

  1. University of California, Berkeley,  

    Jeremy Condit, Matthew Harren, Zachary Anderson & George C. Necula

  2. Intel Research, Berkeley,  

    David Gay

Authors
  1. Jeremy Condit
    View author publications

    You can also search for this author in PubMed Google Scholar

  2. Matthew Harren
    View author publications

    You can also search for this author in PubMed Google Scholar

  3. Zachary Anderson
    View author publications

    You can also search for this author in PubMed Google Scholar

  4. David Gay
    View author publications

    You can also search for this author in PubMed Google Scholar

  5. George C. Necula
    View author publications

    You can also search for this author in PubMed Google Scholar

Editor information

Rocco De Nicola

Rights and permissions

Reprints and Permissions

Copyright information

© 2007 Springer Berlin Heidelberg

About this paper

Cite this paper

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. https://doi.org/10.1007/978-3-540-71316-6_35

Download citation

  • .RIS
  • .ENW
  • .BIB
  • DOI: https://doi.org/10.1007/978-3-540-71316-6_35

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-71314-2

  • Online ISBN: 978-3-540-71316-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Share this paper

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

Publish with us

Policies and ethics

search

Navigation

  • Find a journal
  • Publish with us
  • Track your research

Discover content

  • Journals A-Z
  • Books A-Z

Publish with us

  • Publish your research
  • Open access publishing

Products and services

  • Our products
  • Librarians
  • Societies
  • Partners and advertisers

Our imprints

  • Springer
  • Nature Portfolio
  • BMC
  • Palgrave Macmillan
  • Apress
  • Your US state privacy rights
  • Accessibility statement
  • Terms and conditions
  • Privacy policy
  • Help and support
  • Cancel contracts here

167.114.118.210

Not affiliated

Springer Nature

© 2023 Springer Nature