| OCR Text |
Show 81 traduced an equat iona l programming language based on the Knuth-Bendix completion procedu re, which only handles terminating term rewriting systems [23, 25]. Recent interesting work includes: an inclusion of logical variables in the funct ional programming language FEL [65, 79]; the use of narrowing as the operationa l semantics for a functional programming language [95], and regard ing programs as (terminating) conditional rewrite rules [24]. The research reported in [18, 104, 111] is also along these lines. The langua ge we are proposing here is based on the classical theory of equality, the use of which accrues semantic simplicity and the facility to reason about equations. By reasoning about equations, we mean computing a set of variable bi nd - ings for a given equation such t hat w hen the bindings are substituted in the equations, the resulting equat ions hold, no matter how they are interpreted (i.e., true under all equational interpretations). For example, consider the most often seen definition for the function append, append([], L) = L append(AAX, Y) = A A append(X, Y) If one asks the question, "what is Y such that the equation holds?" He or she should be able to get the answer {Y <- b "[]}. 5.2 Equational Logic Programs 5.2.1 Term Rewriting Systems as Programs Definition 5-1: An equational logic program is a confluent term rewriting system where we prefer using the equality symbol "=" instead of "->", to reflect the fact that the underlying semantics is equalit y. A rew rite rule is considered as a unit clause of equality. |