Looks very interesting, in particulary considering the size of the code! -- Jan Wielemaker
A Horn Clause Program has a natural depth-first procedural semantics. However, for many programs this procedural semantics is ineffective. In order to compute useful solutions, we need the ability to modify the search method that explores the alternative execution branches.
Tor, a well-defined hook into Prolog disjunction, provides this ability. It is light-weight thanks to its library approach and efficient because it is based on program transformation. We show that it is general enough to mimic search-modifying predicates like ECLiPSe's search/6. Moreover, Tor supports modular composition of search methods and other hooks. Our library is already provided and used as an add-on to SWI-Prolog.