Non-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates

Elvira Albert, German Puebla, John Patrick Gallagher

Research output: Chapter in Book/Report/Conference proceedingArticle in proceedingsResearchpeer-review


Partial evaluation of logic programs which contain impure predicates poses non-trivial challenges. Impure predicates include those which produce side-effects, raise errors (or exceptions), and those whose truth value varies according to the degree of instantiation of arguments. In particular, non-leftmost unfolding steps can result in incorrect results since the independence of the computation rule no longer holds in the presence of impure predicates. Existing proposals allow non-leftmost unfolding steps, but at the cost of accuracy: bindings and failure are not propagated backwards to predicates which are potentially impure. In this work we propose a partial evaluation scheme which substantially reduces the situations in which such backpropagation has to be avoided. With this aim, our partial deducer takes into account the information about purity of predicates expressed in terms of assertions. This allows achieving some optimizations which are not feasible using existing partial evaluation techniques. We argue that our proposal goes beyond existing ones in that it is a) accurate, since the classification of pure vs impure is done at the level of atoms instead of predicates, b) extensible, as the information about purity can be added to programs using assertions without having to modify the partial deducer itself, and c) automatic, since (backwards) analysis can be used to automatically infer the required assertions. Our approach has been implemented in the context of Ciaopp, the abstract interpretation-based preprocessor of the Ciao logic programming system.
Original languageEnglish
Title of host publicationLogic Based Program Synthesis and Transformation, 15th International Symposium, LOPSTR 2005
EditorsPatricia M. Hill
Number of pages17
Publication date2006
ISBN (Print)3-540-32654-5
Publication statusPublished - 2006
EventNon-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates - London, United Kingdom
Duration: 7 Sep 20059 Sep 2005
Conference number: 15


ConferenceNon-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates
Country/TerritoryUnited Kingdom
SeriesLecture Notes in Computer Science

Cite this