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.
Similar content being viewed by others
References
Backus J (1973) Programming language semantics and closed applicative languages. Proc. 1st ACM Symp on principles of programming languages. J ACM:71–86
Bloom SL, Elgot CC (1976) The existence and construction of free iterative theories. J Comput System Sci 12:305–318
Burstall RM, Darlington J (1975) Some transformations for developing recursive programs. Proc Int'l Conf on Reliable Software, pp 465–472
Burstall RM, Goguen JA (1977) Putting theories together to make specifications. Proc 5th IJCAI pp 1045–1058
Chirica LM, Martin DF (1976) An algebraic formulation of Knuthian semantics. Proc 17th IEEE Symp on Foundations of Computing, p 127
Cohn PM (1965) Universal algebra. Harper and Row, New York
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
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
Ginali G (1976) Iterative Algebraic theories, infinite trees, and program schemata. University of Chicago, PhD Dissertation
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)
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)
Goguen JA (1978) Abstract errors for abstract data types. In: Neuhold EJ (ed) Formal description of programming language concepts. North-Holland, Amsterdam, p 491
Goguen JA, Thatcher JW, Wagner EG, Wright JB (1977) Initial algebra semantics and continuous algebras. J ACM 24:68–95
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
Gratzer G (1968) Universal algebra. Van Nostrand, Princeton
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
Guttag JV, Horowitz E, Musser DR (1978) Abstract data types and software validation. Comm ACM 21:1048–1064
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
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
Hewitt CE, Smith B (1975) Towards a programming apprentice. IEEE Trans Software Engrg SE-1:26–45
Hoare CAR (1972) Proving correctness of data representations. Acta Informat 1:271–281
Knuth DE (1968) Semantics of context-free languages. Math Systems Theory 2:127–145; correction, 5:95–96 (1971)
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
Landin PJ (1964) The mechanical evaluation of expressions. Comput J 6:308–320
Landin PJ (1966) The next 700 programming languages. Comm ACM 9:157–166
Lehmann DJ, Smyth MB (1977) Data types. University of Warwick, Theory of Computation Report No 19
Liskov B, Zilles S (1975) Specification techniques for data abstractions. IEEE Trans Software Engrg SE-1:7–19
McCarthy J (1960) Recursive functions of symbolic expressions and their computation by machine, part I. Comm ACM 3:184–195
McCarthy J, Abrahams PW, Edwards DJ, Hart TP, Levin MI (1965) LISP 1.5 programmer's manual. MIT Press, Cambridge, Mass.
Maclane S (1971) Categories for the working mathematician. Springer, Berlin Heidelberg New York
Manna Z, Shamir A (1976) The theoretical aspect of the optimal fixedpoint. SIAM J Comput 5:414–426
Mosses P (1977) Making denotational semantics less concrete (Extended abstract). Workshop on Semantics of Programming Languages, Bad Honnef, Germany, March 1977
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
Pagan FG (1976) On interpreter-oriented definitions of programming languages. Comput J 19:151–155
Pareigis B (1970) Categories and functors. Academic Press, New York
Parnas DL (1972) A technique for module specification with examples. Comm ACM 15:330–336
Reboh R, Sacerdoti ED (1973) A preliminary QLISP manual. Stanford Research Institute, Menlo Park CA, Artificial Intelligence Center Technical Note No 81
Reynolds JC (1972) Definitional interpreters for higher-order programming languages. Proc ACM National Conference, p 717
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
Robinson L, Levitt KN (1977) Proof techniques for hierarchically structured programs. Comm ACM 20:271–283
Rosen BK (1973) Tree manipulating systems and Church-Rosser theorems. J ACM 20:160–187
Scott D, Strachey C (1977) Toward a mathematical semantics for computer languages. In: Fox J (ed) Computers and automata. New York, Wiley, p 19
Thatcher JW (1970) Generalized2 sequential machines. J Comput System Sci 4:339–367
Wand M (1973) A concrete approach to abstract recursive definitions. In: Nivat M (ed) Automata, languages, and programming. North-Holland, Amsterdam, p 331
Wand M (1975) Free iteratively closed categories of complete lattices. Cahiers de Topologie et Géométrie Différentielle 16:415–424
Wand M (1979) Final algebra semantics and data type extensions. J Comput System Sci 19:27–44
Wand M (1977) Algebraic theories and tree rewriting systems. Indiana University, Computer Science Department Technical Report No 66
Author information
Authors and Affiliations
Rights 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
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF00286491