We introduce pseudo-naive evaluation, a method for execution of mixed top-down/bottom-up logic programs and deductive databases. The method is intermediate in power between naive evaluation and semi-naive evaluation. Pseudo-naive evaluation adds a data-driven component to naive evaluation without explicitly collecting the ‘delta’ sets of new facts derivable at each iteration. Instead, it identifies certain body atoms as ‘triggers’ and collects an abstraction of the delta sets, thereby simplifying the implementation. A rule is invoked only when new tuples for its trigger atoms are derived. Pseudo-naive evaluation is most efficient on strongly-stratified programs: programs for which all (positive and negative) bottom-up recursion is mediated by an increasing temporal parameter. However, the method can still be used on programs with general recursion, by using either top-down calls, timestamped tuples to represent delta sets, or tupleat-a-time bottom-up execution. A desirable f...
Donald A. Smith, Mark Utting