| OCR Text |
Show 88 intuition of using conditiona l equations in programming: conditional terms are not considered as "final results" but intermediate results that need to be eva luated further to yield nonconditional terms. This interpretation yields the desired result by forcing the operational semantics to perform narrowing on the conditional part, and never perform the rule of deletion upon un1ficat1on for conditional terms, since equalities are no longer considered for conditional terms. Although this semantic adjustment seems to violate the pure meaning of symbolic computation and has an "o perational" flavor, we believe that the equality-based semantics is not greatly impacted, and the simplicity of the semantics is preserved. 5.3 Solving Systems of Simultaneous Equations In this section we describe a method for designing seq uential backtracking-based interpreters for equational logic programs. The method is based on the notion of transformations on multiequations, initially proposed by Martelli and Montanari in [83]. We first review the notion of transformation on multiequations, and introduce Martelli and Montanari's unification algorithm for free terms. We then show how the narrowing process can be embedded into the course of such transformations. The method draws a familiar idea from Prolog implementations on single processor machines: generating E-unifiers by backtracking. The major advantages of the method, as compared with the basic algorithm, include: (a) a significant reduction in the number of repetitions of unifiability checks, and (b) truncation of some of those narrowing sequences that yield no unifiers. 5.3.1 Transformation on Sets of Multiequations The process of unification can be viewed as the one of solving simultaneous equations. For example, the problem of unifying f(t 1, ... ,tn) with f(t' 1 , ... ,t' n) is equivalent to solving the set of equations {t1 = t' 1, t 2 = t' 2, ... , tn = t' n}. A |