skip to main content
10.1145/581478.581497acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

An expressive, scalable type theory for certified code

Published:17 September 2002Publication History

ABSTRACT

We present the type theory LTT, intended to form a basis for typed target languages, providing an internal notion of logical proposition and proof. The inclusion of explicit proofs allows the type system to guarantee properties that would otherwise be incompatible with decidable type checking. LTT also provides linear facilities for tracking ephemeral properties that hold only for certain program states.Our type theory allows for re-use of typechecking software by casting a variety of type systems within a single language. We illustrate our methodology of representation by means of two examples, one functional and one stateful, and describe the associated operational semantics and proofs of type safety.

References

  1. A. W. Appel and A. P. Felty. A semantic model of types and machine instructions for proof-carrying code. In Twenty-Seventh ACM Symposium on Principles of Programming Languages, pages 243--253, Boston, Jan. 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Bershad, S. Savage, P. Pardyak, E. Sirer, M. Fiuczynski, D. Becker, C. Chambers, and S. Eggers. Extensibility, safety and performance in the SPIN operating system. In Fifteenth ACM Symposium on Operating Systems Principles, pages 267--284, Copper Mountain, Dec. 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. I. Cervesato and F. Pfenning. A linear logical framework. In Eleventh IEEE Symposium on Logic in Computer Science, pages 264--275, New Brunswick, New Jersey, July 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Colby, P. Lee, G. Necula, and F. Blau. A certifying compiler for Java. In 2000 SIGPLAN Conference on Programming Language Design and Implementation, pages 95--107, Vancouver, British Columbia, June 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. K. Crary and S. Weirich. Flexible type analysis. In 1999 ACM International Conference on Functional Programming, pages 233--248, Paris, Sept. 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. Despeyroux, F. Pfenning, and C. Schürmann. Primitive recursion for higher-order abstract syntax. In Third International Conference on Typed Lambda Calculi and Applications, volume 1210 of Lecture Notes in Computer Science, pages 147--163, Nancy, France, Apr. 1997. Springer-Verlag. Extended version published as CMU technical report CMU-CS-96-172.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J.-Y. Girard. Linear logic. Theoretical Computer Science, 50:1--102, 1987.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. R. Harper, F. Honsell, and G. Plotkin. A framework for defining logics. Journal of the ACM, 40(1):143--184, Jan. 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. R. Harper and G. Morrisett. Compiling polymorphism using intensional type analysis. In Twenty-Second ACM Symposium on Principles of Programming Languages, pages 130--141, San Francisco, Jan. 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. Harper and F. Pfenning. On equivalence and canonical forms in the LF type theory. Technical Report CMU-CS-00-148, Carnegie Mellon University, School of Computer Science, July 2000.]]Google ScholarGoogle Scholar
  11. W. Howard. The formulas-as-types notion of construction. In J. P. Seldin and J. R. Hindley, editors, To H.B. Curry: Essays on Combinatory Logic, Lambda-Calculus and Formalism, pages 479--490. Academic Press, 1980.]]Google ScholarGoogle Scholar
  12. M. Y. Levin and B. C. Pierce. Tinkertype: A language for playing with formal systems. Technical Report MS-CIS-99-19, Dept of CIS, University of Pennsylvania, July 1999.]]Google ScholarGoogle Scholar
  13. T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). The MIT Press, Cambridge, Massachusetts, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. G. Morrisett, K. Crary, N. Glew, and D. Walker. Stack-based typed assembly language. Journal of Functional Programming, 12(1):43--88, Jan. 2002. An earlier version appeared in the 1998 Workshop on Types in Compilation, volume 1473 of Lecture Notes in Computer Science.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. G. Morrisett, D. Walker, K. Crary, and N. Glew. From System F to typed assembly language. ACM Transactions on Programming Languages and Systems, 21(3):527--568, May 1999. An earlier version appeared in the 1998 Symposium on Principles of Programming Languages.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. G. Necula and P. Lee. Safe kernel extensions without run-time checking. In Second Symposium on Operating Systems Design and Implementation, pages 229--243, Seattle, Oct. 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C. Paulin-Mohring. Inductive definitions in the system coq---rules and properties. In International Conference on Typed Lambda Calculi and Applications, volume 664 of Lecture Notes in Computer Science. Springer-Verlag, 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. C. Schürmann. Automating the Meta Theory of Deductive Systems. PhD thesis, Carnegie Mellon University, School of Computer Science, Pittsburgh, Pennsylvania, Oct. 2000.]]Google ScholarGoogle Scholar
  20. C. Schürmann and F. Pfenning. Automated theorem proving in a simple meta-logic for LF. In Fifteenth International Conference on Automated Deduction, volume 1421 of Lecture Notes in Computer Science, Lindau, Germany, July 1998. Springer-Verlag.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Z. Shao, B. Saha, V. Trifonov, and N. Papaspyrou. A type system for certified binaries. In Twenty-Ninth ACM Symposium on Principles of Programming Languages, pages 217--232, Portland, Oregon, Jan. 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. F. Smith, D. Walker, and G. Morrisett. Alias types. In European Symposium on Programming, Berlin, Germany, Mar. 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. J. C. Vanderwaart and K. Crary. A simplified account of the metatheory of linear LF. Technical Report CMU-CS-01-154, Carnegie Mellon University, School of Computer Science, 2002.]]Google ScholarGoogle Scholar
  24. P. Wadler. A taste of linear logic. In Mathematical Foundations of Computer Science, volume 711 of Lecture Notes in Computer Science. Springer-Verlag, 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. Walker. A type system for expressive security policies. In Twenty-Seventh ACM Symposium on Principles of Programming Languages, Boston, Jan. 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. D. Walker, K. Crary, and G. Morrisett. Typed memory management via static capabilities. ACM Transactions on Programming Languages and Systems, 22(4), July 2000. An earlier version appeared in the 1999 Symposium on Principles of Programming Languages.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. H. Xi and R. Harper. A dependently typed assembly language. In 2001 ACM International Conference on Functional Programming, pages 169--180, Florence, Italy, Sept. 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. H. Xi and F. Pfenning. Eliminating array bound checking through dependent types. In 1998 SIGPLAN Conference on Programming Language Design and Implementation, pages 249--257, Montreal, June 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. An expressive, scalable type theory for certified code

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          ICFP '02: Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
          October 2002
          294 pages
          ISBN:1581134878
          DOI:10.1145/581478
          • cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 37, Issue 9
            September 2002
            283 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/583852
            Issue’s Table of Contents

          Copyright © 2002 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 17 September 2002

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • Article

          Acceptance Rates

          ICFP '02 Paper Acceptance Rate24of76submissions,32%Overall Acceptance Rate333of1,064submissions,31%

          Upcoming Conference

          ICFP '24

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader