Abstract. One recent development in logic programming has been the application of abstract interpretation to verify the partial correctness of a logic program with respect to a given set of assertions. One approach to verification is to apply forward analysis that starts with an initial goal and traces the execution in the direction of the control-flow to approximate the program state at each program point. This is often enough to verify that the assertions hold. The dual approach is to apply backward analysis to propagate properties of the allowable states against the control-flow to infer queries for which the program will not violate any assertion. This paper is a systematic comparison of these two approaches to verification. The paper reports some equivalence results that relate the relative power of various forward and backward analysis frameworks.
A systematic comparison of the relative precision of forward and backward abstract interpretation of logic programs is given in REF .
Forward versus Backward Verification of Logic Programs
Proceedings of Nineteenth International Conference on Logic Programming, volume 2916 of Lecture Notes in Computer Science
Computer Science