| OCR Text |
Show 99 A better solution would be to explore some parallel implementation strategies in case we have a powerful parallel machine. For example, one can simply enumerate all the narrowing sequences in parallel and treat the ordinary unification process as an integrated basic process. Note that narrowing sequences will not affect each other in this case. 5.4 Implementation Considerations Some programming constructs and implementation strategies might be useful under the formalization of equational logic programming. A user-controlled reduction construct can be considered in an implementation. The use of this construct in a program will force the reduction to be performed until the subterm under consideration is not reducible. The need of this construct is based on the fact that although we have used narrowing as part of the operational semantics, the reduction mechanism is still a useful one. First, the matching procedure (used in reduction) can be implemented more efficiently than unification (used in narrowing). This is particularly true for leftlinear equational programs. Secondly, because of the confluence property, reduction steps are not subject to backtracking while narrowing steps are. Furthermore, a lazy reduction mechanism can be employed, such as the one described by Hoffmann and O'Donnell [43]. The rule of deletion upon unification can sometimes be ignored without losing completeness. Recall that the operational semantics consists of two rules, one of which is called deletion upon unification. When a goal is of the form P 1 = true, only narrowing derivations need be carried out on P 1. The rule of deletion upon unification is performed when no further narrowing is possible. The justification for this strategy is simple: the rule of deletion upon unification is not applicable until P1 narrows to true. The non-repetition condition is not always needed. For goals of equalities of the form ?- P1 = true, P2 = true, ••• , Pm = true., |