On the Completeness of Residuation

by Michael Hanus

Proc. Joint International Conference and Symposium on Logic Programming (JICSLP'92), MIT Press, pp. 192-206, 1992

Residuation is an operational mechanism for the integration of functions into logic programming languages. The residuation principle delays the evaluation of functions during the unification process until the arguments are sufficiently instantiated. This has the advantage that the deterministic nature of functions is preserved but the disadvantage of incompleteness: if the variables in a delayed function call are not instantiated by the logic program, this function can never be evaluated and some answers which are logical consequences of the program are lost. In this paper we present a method for detecting such situations. The method is based on a compile-time analysis of the program and approximates the possible residuations and instantiation states of variables during program execution.

Preprint (PDF) BibTeX-Entry