Skip to main content
Log in

First-order identities as a defining language

  • Published:
Acta Informatica Aims and scope Submit manuscript

Summary

Inverting the adage that a data type is just a simple programming language, we take the position that a programming language is, semantically, just a complex data type; evaluation of a program is just another operation in the data type. The algebraic approach to data types may then be applied. We make a distinction between specification and modelling, and we emphasize the use of first-order identities as a specification language rather than as a tool for model-building. Denotational and operational semantics are discussed. Techniques are introduced for proving the equivalence of specifications. Reynolds' lambda-calculus interpreter is analyzed as an example.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Backus J (1973) Programming language semantics and closed applicative languages. Proc. 1st ACM Symp on principles of programming languages. J ACM:71–86

  2. Bloom SL, Elgot CC (1976) The existence and construction of free iterative theories. J Comput System Sci 12:305–318

    Google Scholar 

  3. Burstall RM, Darlington J (1975) Some transformations for developing recursive programs. Proc Int'l Conf on Reliable Software, pp 465–472

  4. Burstall RM, Goguen JA (1977) Putting theories together to make specifications. Proc 5th IJCAI pp 1045–1058

  5. Chirica LM, Martin DF (1976) An algebraic formulation of Knuthian semantics. Proc 17th IEEE Symp on Foundations of Computing, p 127

  6. Cohn PM (1965) Universal algebra. Harper and Row, New York

    Google Scholar 

  7. Elgot CC (1975) Monadic computation and iterative algebraic theories. In: Rose HF Shepherdson (eds) Proceedings of the logic colloquium, Bristol 1973. North-Holland, Amsterdam, p 175

    Google Scholar 

  8. Friedman DP, Wise DS (1976) Cons should not evaluate its arguments. In: Michaelson, S, Milner R (eds). Automata, languages and programming, Edinburgh University Press: Edinburgh, p 257

    Google Scholar 

  9. Ginali G (1976) Iterative Algebraic theories, infinite trees, and program schemata. University of Chicago, PhD Dissertation

  10. Goguen JA (1975) Semantics of computation. In: Manes E (ed), Category theory applied to computation and control. Springer, Berlin Heidelberg New York (Lecture Notes in Computer Science, vol 25, p 151)

    Google Scholar 

  11. Goguen JA (1976) Correctness and equivalence of data types. In: Marchesihi G, Mitter SK (eds), Mathematical systems theory, Udine, 1975. Springer, Berlin Heidelberg New York (Lecture Notes in Economics and Mathematical Systems, vol 131, p 352)

    Google Scholar 

  12. Goguen JA (1978) Abstract errors for abstract data types. In: Neuhold EJ (ed) Formal description of programming language concepts. North-Holland, Amsterdam, p 491

    Google Scholar 

  13. Goguen JA, Thatcher JW, Wagner EG, Wright JB (1977) Initial algebra semantics and continuous algebras. J ACM 24:68–95

    Google Scholar 

  14. Goguen JA, Thatcher JW, Wagner EG (1978) An initial algebra approach to the specification, correctness, and implementation of abstract data types. In Yeh R (ed) Current trends in programming methodology IV: Data structuring. Prentice-Hall, New Jersey p 80

    Google Scholar 

  15. Gratzer G (1968) Universal algebra. Van Nostrand, Princeton

    Google Scholar 

  16. Guttag JV (1975) The specification and application to programming of abstract data types. University of Toronto, Department of Computer Science, Computer System Research Report CSRG-59

  17. Guttag JV, Horowitz E, Musser DR (1978) Abstract data types and software validation. Comm ACM 21:1048–1064

    Google Scholar 

  18. Henderson P, Morris JH Jr (1976) A lazy evaluator. Conf Rec 3rd ACM Symp on principles of programming languages, Atlanta, Stanford Research Institute, Menlo Park, CA: p 95

    Google Scholar 

  19. Hewitt CE, Bishop P, Steiger R (1973) A universal modular ACTOR formalism for artificial intelligence. Proc 3rd IJCAI, Stanford Research Institute, Menlo Park, CA: p 235

    Google Scholar 

  20. Hewitt CE, Smith B (1975) Towards a programming apprentice. IEEE Trans Software Engrg SE-1:26–45

    Google Scholar 

  21. Hoare CAR (1972) Proving correctness of data representations. Acta Informat 1:271–281

    Google Scholar 

  22. Knuth DE (1968) Semantics of context-free languages. Math Systems Theory 2:127–145; correction, 5:95–96 (1971)

    Google Scholar 

  23. Kuhnel W, Meseguer J, Pfender M, Sols I (1975) Primitive recursive algebraic theories with applications to program schemes (abstract). Cahiers de Topologie et Géométrie Différentielle 16:271–273

    Google Scholar 

  24. Landin PJ (1964) The mechanical evaluation of expressions. Comput J 6:308–320

    Google Scholar 

  25. Landin PJ (1966) The next 700 programming languages. Comm ACM 9:157–166

    Google Scholar 

  26. Lehmann DJ, Smyth MB (1977) Data types. University of Warwick, Theory of Computation Report No 19

  27. Liskov B, Zilles S (1975) Specification techniques for data abstractions. IEEE Trans Software Engrg SE-1:7–19

    Google Scholar 

  28. McCarthy J (1960) Recursive functions of symbolic expressions and their computation by machine, part I. Comm ACM 3:184–195

    Google Scholar 

  29. McCarthy J, Abrahams PW, Edwards DJ, Hart TP, Levin MI (1965) LISP 1.5 programmer's manual. MIT Press, Cambridge, Mass.

    Google Scholar 

  30. Maclane S (1971) Categories for the working mathematician. Springer, Berlin Heidelberg New York

    Google Scholar 

  31. Manna Z, Shamir A (1976) The theoretical aspect of the optimal fixedpoint. SIAM J Comput 5:414–426

    Google Scholar 

  32. Mosses P (1977) Making denotational semantics less concrete (Extended abstract). Workshop on Semantics of Programming Languages, Bad Honnef, Germany, March 1977

  33. O'Donnell M (1977) Subtree replacement systems: A unifying theory for recursive equations, LISP, Lucid, and combinatory logic. Proc 9th ACM Symp on Theory of Computing, Boulder, Colorado, p 295

  34. Pagan FG (1976) On interpreter-oriented definitions of programming languages. Comput J 19:151–155

    Google Scholar 

  35. Pareigis B (1970) Categories and functors. Academic Press, New York

    Google Scholar 

  36. Parnas DL (1972) A technique for module specification with examples. Comm ACM 15:330–336

    Google Scholar 

  37. Reboh R, Sacerdoti ED (1973) A preliminary QLISP manual. Stanford Research Institute, Menlo Park CA, Artificial Intelligence Center Technical Note No 81

  38. Reynolds JC (1972) Definitional interpreters for higher-order programming languages. Proc ACM National Conference, p 717

  39. Robinson L, Levitt KN, Neumann PG, Saxena AR (1975) On attaining reliable software for a secure operating system. Proc 1975 Int'l Conf on Reliable Software, p 267

  40. Robinson L, Levitt KN (1977) Proof techniques for hierarchically structured programs. Comm ACM 20:271–283

    Google Scholar 

  41. Rosen BK (1973) Tree manipulating systems and Church-Rosser theorems. J ACM 20:160–187

    Google Scholar 

  42. Scott D, Strachey C (1977) Toward a mathematical semantics for computer languages. In: Fox J (ed) Computers and automata. New York, Wiley, p 19

    Google Scholar 

  43. Thatcher JW (1970) Generalized2 sequential machines. J Comput System Sci 4:339–367

    Google Scholar 

  44. Wand M (1973) A concrete approach to abstract recursive definitions. In: Nivat M (ed) Automata, languages, and programming. North-Holland, Amsterdam, p 331

    Google Scholar 

  45. Wand M (1975) Free iteratively closed categories of complete lattices. Cahiers de Topologie et Géométrie Différentielle 16:415–424

    Google Scholar 

  46. Wand M (1979) Final algebra semantics and data type extensions. J Comput System Sci 19:27–44

    Google Scholar 

  47. Wand M (1977) Algebraic theories and tree rewriting systems. Indiana University, Computer Science Department Technical Report No 66

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Wand, M. First-order identities as a defining language. Acta Informatica 14, 337–357 (1980). https://doi.org/10.1007/BF00286491

Download citation

  • Received:

  • Revised:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF00286491

Keywords

Navigation