| OCR Text |
Show 133 whether the presence of nonnarrowable cyclic equations is a necessary condition for the failure of narrowing is something worth looking at. We devoted a lot of effort to this issue and did not find other counterexamples. We thus conjecture that this is a necessary condition for the failure of narrowmg. If th1s can be shown, we will then have characterized all the power narrowing possesses. It appears, however, that the transformation method presented in Chapter 4 is not quite adequate to provide an answer for this question. The optimizations presented in Chapter 4 (Section 4.4) deserve further investigation. The completeness of these optimizations was only informally argued. Sufficient conditions under which these optimizations are complete need further investigation. Furthermore, other possible optimizations need to be pursued. For example, the opposite of outer narrowing, inner narrowing may provide a complete strategy. As for logic programming with equality, we still do not know if narrowing can be used as a complete strategy for conditional equations merged in Pro log clauses such as A= B :- P0 , ••• , Pn. The applicability of the rule A = B depends on the "evaluation" of the body of the clause. Plotkin did not consider conditional equations as built-in equational theories, a paramodulation-like rule was hence used in order to obtain a completeness proof [92]. Goguen and Meseguer conjectured in [36] that an abstract proof can be given for the case where the set of clauses having equations as their heads is confluent and terminating as a set of rewrite rules. We currently have no hints on whether this conjecture can be carried over to the case where the termination property is ignored. We would like to indicate here that allowing conditional equations (or more precisely, conditional rewrite rules) poses more difficulties than we have possibly realized. Consider, for example, the following program which consists of three equations, one conditional equation and one Prolog (unit) clause. f(X) = h(X) |