| OCR Text |
Show 8 stru ctio n; (b) computat ions based on relations rather than functions; and (c) logical vari ables t hat enable suspended variable bindings in a computation. All t hese feat ures contrib ute an essential distinct facility for Prolog that distinguishes it from other programming paradigms: it generates solutions by reasoning (or solving) ra t her than direct computing. Prolog, however, does not provide fa cilities for reaso ni ng about equations, which, as argued by Kornfeld [68], are likely to play an important role in future logic prog ramming practices. 1.1.3 Equational Logic Programming The equational program mi ng paradigm pot enti ally possesses all of t he features provided by Prolog, in addition to the facilities for reasoning about equations (which are not provided by Prolog), though equational programming has not been formalized from this perspective. A challenging problem within this context is therefore to exploit th is dormant potential in the equational programming paradigm. A formalization of such equational programming, which is referred to as equational logic programing, is one of the research goals of th is thesis. 1.1.4 Combining Functional and Logic Programming The basic formalization of functional programming languages, as compared to logic programming languages (e.g., Prolog) lacks knowledge-based inferencing abilities to cope with computations involving search. In addition, there are several well-known problems for which functional solutions are either very complex or somewhat inscrutable [6]. In contrast, the solutions to several of these problems expressed in Prolog are relatively elegant. This is mainly because Prolog can save intermediate computational results for subsequent use by sibling computations (ct. [119]). Current Pro log systems, however, lack ( 1) the concept of "evaluation" of "function invocations," leading to the logic base sometimes being not transparent, and (2) a means to describe terminating computations on conceptually |