skip to main content
article
Open Access

Syntactic type abstraction

Published:01 November 2000Publication History
Skip Abstract Section

Abstract

Software developers often structure programs in such a way that different pieces of code constitute distinct principals. Types help define the protocol by which these principals interact. In particular, abstract types allow a principal to make strong assumptions about how well-typed clients use the facilities that it provides. We show how the notions of principals and type abstraction can be formalized within a language. Different principals can know the implementation of different abstract types. We use additional syntax to track the flow of values with abstract types during the evaluation of a program and demonstrate how this framework supports syntactic proofs (in the sytle of subject reduction) for type-abstraction properties. Such properties have traditionally required semantic arguments; using syntax aboids the need to build a model and recursive typesfor the language. We present various typed lambda calculi with principals, including versions that have mutable state and recursive types.

References

  1. Abadi, M., Cardelli, L., and Curien, P.-L. 1993. Formal parametric polymorphism. In 20th ACM Symposium on Principles of Programming Languages. ACM Press, New York, NY, 157- 167. Google ScholarGoogle Scholar
  2. Abadi, M. and Plotkin, G. D. 1990. A PER model of polymorphism. In 5th Annual Symposium on Logic in Computer Science. IEEE Computer Society Press, Los Alamitos, CA, 355-365.Google ScholarGoogle Scholar
  3. Coquand, T., Gunter, C. A.,and Winskel, G. 1987. DI-domains as a model of polymorphism. In Mathematical Foundations of Programming Language Semantics, M. Main, A. Melton, M. Mislove, and D. A. Schmidt, Eds. Lecture Notes in Computer Science, vol. 298. Springer- Verlag, New York, NY, 344-363. Google ScholarGoogle Scholar
  4. Coquand, T., Gunter, C. A., and Winskel, G. 1989. Domain theoretic models of polymorphism. Inf. Comput. 81, 2 (May), 123-167. Google ScholarGoogle Scholar
  5. Crary, K. 1999. A simple proof technique for certain parametricity results. In 4th ACM International Conference on Functional Programming. ACM Press, New York, NY, 82-89. Google ScholarGoogle Scholar
  6. Girard, J.-Y., Lafont, Y., and Taylor, P. 1989. Proofs and Types. Cambridge University Press, Cambridge, UK. Google ScholarGoogle Scholar
  7. Harper, R. 1994. A simplified account of polymorphic references. Information Processing Letters 51, 4 (August), 201-206. Google ScholarGoogle Scholar
  8. Heintze, N. and Riecke, J. G. 1998. The SLam calculus: programming with secrecy and integrity. In 25th ACM Symposium on Principles of Programming Languages. ACM Press, New York, NY, 365-377. Google ScholarGoogle Scholar
  9. Leroy, X. and Rouaix, F. 1998. Security properties of typed applets. In 25th ACM Symposium on Principles of Programming Languages. ACM Press, New York, NY, 391-403. Google ScholarGoogle Scholar
  10. Ma, Q. and Reynolds, J. 1992. Types, abstraction, and parametric polymorphism: Part 2. In Proceedings of the 1991 Mathematical Foundations of Programming Semantics, S. Brookes, M. Main, A. Melton, M. Mislove, and D. A. Schmidt, Eds. Number 598 in Lecture Notes in Computer Science. Springer-Verlag, New York, NY, 1-40. Google ScholarGoogle Scholar
  11. MacQueen, D., Plotkin, G. D., and Sethi, R. 1986. An ideal model for recursive polymorphism. Information and Control 71, 1/2 (October/November), 95-130. Google ScholarGoogle Scholar
  12. Milner, R., Tofte, M., Harper, R., and MacQueen, D. 1997. The Definition of Standard ML (Revised). The MIT Press, Cambridge, MA. Google ScholarGoogle Scholar
  13. Mitchell, J. 1991. On the equivalence of data representations. In Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy, V. Lifschitz,Ed. Academic Press, San Diego, CA, 305-330. Google ScholarGoogle Scholar
  14. Mitchell, J. C. and Plotkin, G. D. 1988. Abstract types have existential type. ACM Transactions on Programming Languages and Systems 10, 3 (July), 470-502. Google ScholarGoogle Scholar
  15. Morrisett, G. 1995. Compiling with types. Ph.D. thesis, Carnegie Mellon University. Published as CMU Tech Report number CMU-CS-95-226.Google ScholarGoogle Scholar
  16. Myers, A. C. 1999. JFlow: Practical mostly-static information ow control. In 26th ACM Symposium on Principles of Programming Languages. ACM Press, New York, NY, 228-241. Google ScholarGoogle Scholar
  17. Nielson, F. and Nielson, H. R. 1992. Two-Level Functional Languages. Number 34 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, UK. Google ScholarGoogle Scholar
  18. Peyton Jones, S., Hughes, J., Augustsson, L., Barton, D., Boutel, B., Fasel, J., Hammond, K., Hinze, R., Hudak, P., Johnsson, T., Jones, M., Launchbury, J., Meijer, E., Peterson, J., Reid, A., Runciman, C., and Wadler, P. 1999. Haskell 98: A non-strict, purely functional language. http://www.haskell.org/onlinereport/.Google ScholarGoogle Scholar
  19. Pierce, B. C. and Sangiorgi, D. 1999. Behavioral equivalence in the polymorphic pi-calculus. Tech. Rep. MS-CIS-99-10, University of Pennsylvania. Apr. (Summary in 24th ACM Symposium on Principles of Programming Languages). Google ScholarGoogle Scholar
  20. Pitts, A. M. 1996. Relational properties of domains. Inf. Comput. 127, 66-90.Google ScholarGoogle Scholar
  21. Pitts, A. M. 2000. Parametric polymorphism and operational equivalence. Mathematical Structures in Computer Science 10, 1-39. Google ScholarGoogle Scholar
  22. Reynolds, J. C. 1974. Towards a theory of type structure. In Programming Symposium. Lecture Notes in Computer Science, vol. 19. Springer-Verlag, New York, NY, 408-425. Google ScholarGoogle Scholar
  23. Reynolds, J. C. 1983. Types, abstraction and parametric polymorphism. In Information Processing 83, R. E. A. Mason, Ed. Elsevier Science Publishers B. V. (North-Holland), Amsterdam, 513-523.Google ScholarGoogle Scholar
  24. Sewell, P. and Vitek, J. 1999. Secure composition of untrusted code with wrappers and causality types. Work in Progress http://www.cs.purdue.edu/homes/jv/publist.html.Google ScholarGoogle Scholar
  25. Strachey, C. 1967. Fundamental concepts in programming languages. Unpublished Lecture Notes, Summer School in Computer Programming.Google ScholarGoogle Scholar
  26. Volpano, D. and Smith, G. 1997. A type-based approach to program security. In TAPSOFT'97, Theory and Practice of Software Development. Lecture Notes in Computer Science, vol. 1214. Springer-Verlag, New York, NY. Google ScholarGoogle Scholar
  27. Wright, A. K. and Felleisen, M. 1994. A syntactic approach to type soundness. Inf. Comput. 115, 1, 38-94. Preliminary version in Rice Tech. Rep. 91-160. Google ScholarGoogle Scholar
  28. Zdancewic, S., Grossman, D., and Morrisett, G. 1999. Principals in programming languages: A syntactic proof technique. In 4th ACM International Conference on Functional Programming. ACM Press, New York, NY, 197-207. Google ScholarGoogle Scholar

Index Terms

  1. Syntactic type abstraction

                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

                Full Access

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader