Journal of logic programming vol:10 issue:2 pages:91-124
There are numerous papers concerned with the compile-time derivation of certain run-time properties of logic programs, e.g. mode inferencing, type checking, type synthesis, and properties relevant for AND-parallel execution. Most approaches have little in common, they are developed in an ad hoc way, and their correctness is not always obvious. We develop a general framework which is suited to develop complex applications and to prove their correctness. All states which are possible at run time can be represented by an infinite set of proof trees (AND trees, SLD derivations). The core idea of our approach is to represent this infinite set of AND trees by a finite abstract AND-OR graph. We present a generic abstract interpretation procedure for the construction of such an abstract AND-OR graph and formulate conditions which allow us to construct a correct one in finite time.