Verifying Correctness of Logic Programs

We are convinced that logic programming needs specifications as much as traditional programming. For this reason, it is necessary to study also for logic programs how correctness with respect to a given specification can be asserted. Starting from Hogger's considerations on this topic, we supply a sufficient condition for completeness. Modularity and pre/post specifications of program modules are then discussed. We propose a sufficient condition for partial correctness with respect to a pre/post specification. Some small examples illustrate our technique.