Implementation of an interpreter for abstract equations

This paper summarizes a project, introduced in [HO79, HO82b], whose goal is the implementation of a useful interpreter for abstract equations that is absolutely faithful to the logical semantics of equations. The Interpreter was first distributed to Berkeley UNIX VAX sites in May, 1983. The main novelties of the interpreter are (1) strict adherence to semantics based on logical consequences; (2) “lazy” (outermost)evaluation applied uniformly; (3) an implementation based on table-driven pattern matching, with no run-time penalty for large sets of equations; (4) strict separation of syntactic and semantic processing, so that different syntaxes may be used for different problems.

[1]  Haskell B. Curry,et al.  Combinatory Logic, Volume I , 1959 .

[2]  Michael J. O'Donnell,et al.  Computing in systems described by equations , 1977, Lecture Notes in Computer Science.

[3]  Robert A. Kowalski,et al.  Algorithm = logic + control , 1979, CACM.

[4]  Alfred V. Aho,et al.  The Theory of Parsing, Translation, and Compiling , 1972 .

[5]  Derek C. Oppen,et al.  Fast decision algorithms based on congruence closure , 1978 .

[6]  William W. Wadge,et al.  Lucid - A Formal System for Writing and Proving Programs , 1976, SIAM J. Comput..

[7]  John Staples,et al.  A Graph-Like Lambda Calculus for Which Leftmost-Overmost Reduction is Optimal , 1978, Graph-Grammars and Their Application to Computer Science and Biology.

[8]  A. Church The calculi of lambda-conversion , 1941 .

[9]  J. Staples A class of replacement systems with simple optimality theory , 1977, Bulletin of the Australian Mathematical Society.

[10]  Mansour Farah Correct compilation of a useful subset of lucid. , 1977 .

[11]  Jean Vuillemin Correct and Optimal Implementations of Recursion in a Simple Programming Language , 1974, J. Comput. Syst. Sci..

[12]  Greg Nelson,et al.  Fast Decision Procedures Based on Congruence Closure , 1980, JACM.

[13]  Christoph M. Hoffmann,et al.  An interpreter generator using tree pattern matching , 1979, POPL.

[14]  Joseph A. Goguen,et al.  Abstract Errors for Abstract Data Types , 1977, Formal Description of Programming Concepts.

[15]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[16]  Gilles Kahn,et al.  Coroutines and Networks of Parallel Processes , 1977, IFIP Congress.

[17]  Derek C. Oppen,et al.  A simplifier based on efficient decision algorithms , 1978, POPL.

[18]  D. Knuth,et al.  Simple Word Problems in Universal Algebras , 1983 .

[19]  Daniel P. Friedman,et al.  CONS Should Not Evaluate its Arguments , 1976, ICALP.

[20]  Reinhard Wilhelm,et al.  OPTRAN, a Language for the Specification of Program Transformations , 1980, Fachtagung über Programmiersprachen.

[21]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[22]  Jan Willem Klop,et al.  Combinatory reduction systems , 1980 .

[23]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[24]  J. M. Cadiou,et al.  Recursive definitions of partial functions and their computations , 1972, Proving Assertions About Programs.

[25]  BackusJohn Can programming be liberated from the von Neumann style , 1978 .

[26]  Paul Chew,et al.  An improved algorithm for computing with equations , 1980, 21st Annual Symposium on Foundations of Computer Science (sfcs 1980).

[27]  Donald E. Knuth,et al.  Fast Pattern Matching in Strings , 1977, SIAM J. Comput..

[28]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[29]  Christoph M. Hoffmann,et al.  Pattern Matching in Trees , 1982, JACM.

[30]  Christoph M. Hoffmann,et al.  Programming with Equations , 1982, TOPL.

[31]  Jean-Jacques Lévy,et al.  Minimal and optimal computations of recursive programs , 1977, JACM.

[32]  William W. Wadge,et al.  Lucid, a nonprocedural language with iteration , 1977, CACM.

[33]  Peter J. Downey,et al.  Correct Computation Rules for Recursive Languages , 1976, SIAM J. Comput..

[34]  A. Church The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies) , 1985 .

[35]  Peter Henderson,et al.  A lazy evaluator , 1976, POPL.

[36]  Leonidas J. Guibas,et al.  A dichromatic framework for balanced trees , 1978, 19th Annual Symposium on Foundations of Computer Science (sfcs 1978).

[37]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[38]  John W. Backus Programming language semantics and closed applicative languages , 1973, POPL '73.

[39]  Alfred V. Aho,et al.  Efficient string matching , 1975, Commun. ACM.

[40]  Ellis Horowitz,et al.  Abstract data types and software validation , 1978, CACM.