Notes on type abstraction

  • John Guttag
IV. Special Language Considerations And Formal Tools
Part of the Lecture Notes in Computer Science book series (LNCS, volume 69)


This paper, which was prepared to accompany a series of lectures given at the 1978 NATO International Summer School on Program Construction, is primarily tutorial in nature. It begins by discussing in a general setting the role of type abstraction and the need for formal specifications of type abstractions. It then proceeds to examine in some detail two approaches to the construction of such specifications: that proposed by Hoare in his 1972 paper "Proofs of Correctness of Data Representations," and the author's own version of algebraic specifications. The Hoare approach is presented via a discussion of its embodiment in the programming language Euclid. The discussion of the algebraic approach includes material abstracted from earlier papers as well as some new material that has yet to appear. This new material deals with parameterized types and the specification of restrictions. The paper concludes with a brief discussion of the relative merits of the two approaches to type abstraction.


Type Check Proof Rule Abstract Type Abstract Data Type Module Definition 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Dahl 1968]
    Dahl, O.J., Nygaard, K., and Myhrhuag, B., "The SIMULA 67 Common Base Language," Norwegian Computing Centre, Forskningsveien 1B, Oslo (1968).Google Scholar
  2. [Dahl 1978]
    Dahl, O.J., "Can Program Proving Be Made Practical?" Institute of Informatics, University of Oslo, Norway, (1978).Google Scholar
  3. [Dijkstra 1976]
    Dijkstra, E.W., A Discipline of Programming, Prentice-Hall, (1976).Google Scholar
  4. [Donahue 1976]
    Donahue, J.E., "Complementary Definitions of Programming Language Semantics," Lecture Notes in Computer Science, vol. 42, Springer-Verlag, (1976).Google Scholar
  5. [Gannon 1975]
    Gannon, J.D., Language Design to Enhance Programming Reliability, Ph. D. Thesis, University of Toronto, Department of Computer Science (1975), available as Computer Systems Research Group Technical Report CSRG-47.Google Scholar
  6. [Goguen 1975]
    Goguen, J.A., Thatcher, J.W., Wagner, E.G., and Wright, J.B., "Abstract Data-Types as Initial Algebras and Correctness of Data Representations," Proceedings, Conference on Computer Graphics, Pattern Recognition and Data Structure, (May 1975).Google Scholar
  7. [Guttag 1975]
    Guttag, J.V., The Specification and Application to Programming of Abstract Data Types, Ph.D. Thesis, University of Toronto, Department of Computer Science (1975), available as Computer Systems Research Group Technical Report CSRG-59.Google Scholar
  8. [Guttag 1976]
    Guttag, J.V., Horowitz, E., and Musser, D.R., "Abstract Data Types and Software Validation," USC Information Sciences Institute Technical Report, (1976).Google Scholar
  9. [Guttag 1977]
    Guttag, J.V., "Abstract Data Types and the Development of Data Structures," Communications of the CACM, vol. 20, no. 6 (June 1977), pp. 396–404.Google Scholar
  10. [Guttag 1978]
    Guttag, J.V., and Horning, J.J., "The Algebraic Specification of Abstract Data Types," Acta Informatica, 10, 1, pp. 27–52 (1978).Google Scholar
  11. [Hoare 1969]
    Hoare, C.A.R., "An Axiomatic Basis for Computer Programming," CACM, vol. 12, no. 10 (October 1969), pp. 576–580.Google Scholar
  12. [Hoare 1972]
    Hoare, C.A.R., "Proofs of Correctness of Data Representations," Acta Informatica, vol. 1, no. 1 (1972), pp. 271–281.Google Scholar
  13. [Knuth 1970]
    Knuth, D.E., and Bendix, P.B., "Simple Word Problems in Universal Algebras," Computational Problems in Abstract Algebras, J. Leech, Ed., Pergamon Press, (1970), pp. 263–297.Google Scholar
  14. [Lampson 1978]
    Lampson, B.W., Horning, J.J., London, R.L., MItchell, J.G., Popek, G.J., "Revised Report on the Programming Language Euclid," Xerox Research Center, to appear. An earlier version appeared in SIGPLAN Notices 12, 2 (February 1977).Google Scholar
  15. [London 1978]
    London, R.L., Guttag, J.V., Horning, J.J., Lampson, B.W., Mitchell, J.G., and Popek, G.J., "Proof Rules for the Programming Language Euclid," Acta Informatica, 10, 1, pp. 1–26 (1978).Google Scholar
  16. [Morris 1973]
    Morris, J.H., "Types are not Sets," ACM Symposium on the Principles of Programming Languages, (October 1973), pp. 120–124.Google Scholar
  17. [Parnas 1972]
    Parnas, D.L., "A Technique for the Specification of Software Modules with Examples," CACM, vol. 15, no. 5 (May 1972), pp. 330–336.Google Scholar
  18. [Scott 1970]
    Scott, D., "Outline of a Mathematical Theory of Computation," Proceedings of the Fourth Annual Princeton Conference on Information Science and Systems, (1970), pp. 169–176.Google Scholar
  19. [Spitzen 1975]
    Spitzen, J., and Wegbreit, B., "The Verification and Synthesis of Data Structures," Acta Informatica, vol. 4, (1975), pp. 127–144.Google Scholar
  20. [Thatcher 1978]
    Thatcher, J.W, Wagner, E.G., and Wright, J.B., "Data Type Specification: Parameterization and the Power of Specification Techniques," Proceedings SIGACT Tenth Annual Symposium on Theory of Computing, (May 1978).Google Scholar
  21. [Wulf 1976]
    Wulf, W.A., London, R.L., and Shaw, M., "An Introduction to the the Construction and Verification of Alphard Programs," IEEE Transactions on Software Engineering, SE-2, 4, (December 1976), pp. 253–265.Google Scholar
  22. [Zilles 1975]
    Zilles, S.N., "Abstract Specifications for Data Types," IBM Research Laboratory, San Jose, California, (1975).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1979

Authors and Affiliations

  • John Guttag
    • 1
  1. 1.Computer Science DepartmentUniversity of Southern CaliforniaLos Angeles

Personalised recommendations