Acta Informatica

, Volume 10, Issue 1, pp 27–52 | Cite as

The algebraic specification of abstract data types

  • J. V. Guttag
  • J. J. Horning


There have been many recent proposals for embedding abstract data types in programming languages. In order to reason about programs using abstract data types, it is desirable to specify their properties at an abstract level, independent of any particular implementation. This paper presents an algebraic technique for such specifications, develops some of the formal properties of the technique, and shows that these provide useful guidelines for the construction of adequate specifications.


Information System Operating System Data Structure Communication Network Information Theory 
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. 1.
    Birkhoff, G., Lipson, J.D.: Heterogeneous algebras. J. Combinatorial Theory 8, 115–133 (1970)Google Scholar
  2. 2.
    Boon, W.: The word problem. Ann. of Math. 207–265 (1959)Google Scholar
  3. 3.
    Burstall, R.M., Darlington, J.: A transformation system for developing recursive programs. D.A.I. Research Report No. 19, Department of Artificial Intelligence, University of Edinburgh, March 1976Google Scholar
  4. 4.
    Church, A., Rosser, J.: Some properties of conversion. Trans. Amer. Math. Soc. 39, 472–482 (1936)Google Scholar
  5. 5.
    Dahl, O.-J.: The SIMULA 67 common base language. Norwegian Computing Center, Oslo, Norway, 1968Google Scholar
  6. 6.
    Goguen, J.A., Thatcher, J.W., Wagner, E.G., Wright, J.G.: Abstract data-types as initial algebras and correctness of data representations. Proceedings Conference on Computer Graphics, Pattern Recognition and Data Structure, May 1975Google Scholar
  7. 7.
    Guttag, J.V.: The specification and application to programming of abstract data types. Department of Computer Science, University of Toronto, Toronto (Canada), Ph.D. Thesis, 1975. Available as Computer Systems Research Group Technical Report CSRG-59Google Scholar
  8. 8.
    Guttag, J.V.: Abstract data types and the development of data structures. Comm. ACM 20, 396–404 (1977)Google Scholar
  9. 9.
    Guttag, J.V., Horowitz, E., Musser, D.R.: Abstract data types and software validation. USC Information Sciences Institute Technical Report ISI/RR-76-48, 1976Google Scholar
  10. 10.
    Henderson, P., Snowden, R.: An experiment in structured programming. Nordisk Tidskr. Informationsbehandling (BIT) 12, 38–53 (1972)Google Scholar
  11. 11.
    Hermes, H.: Enumerability, decidability and computability, New York: Academic Press 1965Google Scholar
  12. 12.
    Hoare, C.A.R.: Proofs of correctness of data representation. Acta Informat. 1, 271–281 (1972)Google Scholar
  13. 13.
    Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language PASCAL. Acta Informat. 2, 335–355 (1973)Google Scholar
  14. 14.
    Kleene, S.: General recursive functions of natural numbers. Math. Ann. 112, 729–745 (1936)Google Scholar
  15. 15.
    Liskov, B.H., Zilles, S.N.: Programming with abstract data types. Proceedings of ACM SIGPLAN Symposium on Very High Level Languages. SIGPLAN Notices 9, 50–59 (1974)Google Scholar
  16. 16.
    Majster, M.E.: Limits of the algebraic specification. SIGPLAN Notices 12, 10, 37–41 (1977)Google Scholar
  17. 17.
    Minsky, M.: Computation: Finite and infinite machines, New York: Prentice-Hall 1967Google Scholar
  18. 18.
    Morris, J.H.: Types are not sets. ACM Symposium on the Principles of Programming Languages, pp. 120–124, October 1973Google Scholar
  19. 19.
    Palme, J.: Protected program modules in SIMULA 67. FOAP Report C8372-M3 (E5), Research Institute of National Defense, Stockholm, Sweden, 1973Google Scholar
  20. 20.
    Parnas, D.L.: A technique for the specification of software modules with examples. Comm. ACM 15, 330–336 (1972)Google Scholar
  21. 21.
    Rosen, B.: Tree manipulating systems and Church-Rosser theorems. J. Assoc. Comput. Mach. 20, 160–187 (1973)Google Scholar
  22. 22.
    Spitzen, J., Wegbreit, B.: The verification and synthesis of data structures. Acta Informat. 4, 127–144 (1975)Google Scholar
  23. 23.
    Standish, T.A.: Data structures — an axiomatic approach. BBN Report No. 2639, August 1973Google Scholar
  24. 24.
    Thatcher, J.W., Wagner, E.G., Wright, J.B.: Data type specification: Parameterization and the power of specification techniques. Private communication, 1977Google Scholar
  25. 25.
    Wulf, W.A., London, R.L., Shaw, M.: Abstraction and verification in Alphard: introduction to language and methodology. Carnegie-Mellon University and USC Information Sciences Institute Technical Reports, 1976Google Scholar
  26. 26.
    Zilles, S.N.: Data algebra: a specification technique for data structures. Massachusetts Institute of Technology, Cambridge (Mass.), Ph.D. Thesis, 1978 (forthcoming)Google Scholar

Copyright information

© Springer-Verlag 1978

Authors and Affiliations

  • J. V. Guttag
    • 1
  • J. J. Horning
    • 2
  1. 1.Computer Science DepartmentUniversity of Southern CaliforniaLos AngelesUSA
  2. 2.Computer Systems Research GroupUniversity of TorontoTorontoCanada

Personalised recommendations