Evolving Algebras: an Attempt to Discover Semantics

This tutorial is based on lecture notes from the Fall 1990 course on Principles of Programming Languages at the University of Michigan. (My young friend Quisani did not attend the lectures.) The present version incorporates some changes provoked by the necessity to update the bibliography. The main part of the paper is still the same, however, and the examples are unchanged even though many things happened in the meantime. In particular, we (the collective we) have learned how to build evolving algebras by the method of successive re nements, and the current evolving algebra description of the C programming language in [GH] doesn't look much like the strcpy example anymore. Now, we understand better how to compose evolving algebras and how to prove things with evolving algebras. A typical misconception is that the operational approach is necessarily too detailed. Some people think that an approach suited for complexity analysis does not give a good high-level speci cation language. I believe in a high-level speci cation language based on evolving algebras; the successive re nement method is then one tool to prove implementation correctness. But this and various other issues (how to incorporate real time into evolving algebras for example) will have to be addressed elsewhere.

[1]  Egon Börger,et al.  A Logical Operational Semantics of Full Prolog Part III: Built-in Predicates for Files, Terms, Arithmetic and Input-Output , 1990, IWBS Report.

[2]  Michael Schrefl,et al.  The Evolving Algebra Semantics of Class and Role Hierarchies , 1995, Semantics in Databases.

[3]  George Robert Blakley A Smalltalk evolving algebra and its uses. , 1992 .

[4]  Egon Börger,et al.  A Logical Operational Semantics of Full Prolog. Part I: Selection Core and Control , 1989, CSL.

[5]  Yuri Gurevich,et al.  Algorithms in the world of bounded resources , 1988 .

[6]  A. Turing On Computable Numbers, with an Application to the Entscheidungsproblem. , 1937 .

[7]  Michael Schrefl,et al.  Semantics of Object-Oriented Data Models - The Evolving Algebra Approach , 1990, East/West Database Workshop.

[8]  Yuri Gurevich,et al.  Algebraic Operational Semantics and Modula-2 , 1987, CSL.

[9]  Christoph Beierle,et al.  Correctness Proof For the WAM with Types , 1991, CSL.

[10]  Vaughan R. Pratt,et al.  Dynamic algebras and the nature of induction , 1980, STOC '80.

[11]  A. Church Review: A. M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem , 1937 .

[12]  Egon Börger,et al.  A Logical Operational Semantics of Full Prolog, Part II: Built-in Predicates for Database Manipulation , 1990, MFCS.

[13]  Peter H. Schmitt,et al.  A Formal Operational Semantics for Languages of Type Prolog III , 1990, CSL.

[14]  Desmond Fearnley-Sander,et al.  Universal Algebra , 1982 .