| OCR Text |
Show 9 infinite data structures. The "clean" control of program execution is another challenging problem in the Prolog context one which is significantly al-leviated when using a functional style. It is therefore beneficial to develop a combined model in which the ad-vantages of both logic programming and functional programming can be retained. Furthermore, the user should have the flexibility of choosing either the functional component or the logic component in order to solve individual sub-problems. Because we do not require that all functiona l expressions be ter-minating, the problem of when to reduce them, and how much they should be reduced, becomes crucial. A simple strategy might be to evaluate all the tunc-tional expressions before invoking the resolution procedure. This not only causes some practical problems, but also invites semantic problems: a com-putation of a logic program with embedded functional expressions can run forever, even though the semantics says it does have a solution. An important problem, therefore, is to develop strategies that permit tunc-tion expressions to be reduced as needed. As it stands today, functional programming can be further classified into two levels: the one in which only ground terms are allowed to be reduced, and the one that permits "evaluating" nonground terms. Formalizing a computational model such that both styles of functional programming can be accommodated is the next goal of this thesis. 1.2 Overview of the Thesis This thesis * proves that first-order unification in equational theories is complete; * shows how efficient E-unification algorithms can be obtained by using narrowing, which is complete for equational theories that describe wide classes of functional and equational programs; * proposes an equational logic programming paradigm in which the styles of functional programming, equational programming, and the ability to reason about equations are supported. |