Journal of Logic Programming
Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Inductive assertion method for logic programs
Theoretical Computer Science - International Joint Conference on Theory and Practice of Software Development, P
Logic programming: systematic program development
Logic programming: systematic program development
Strict completion of logic programs
New Generation Computing
Bilattices and the semantics of logic programming
Journal of Logic Programming
The well-founded semantics for general logic programs
Journal of the ACM (JACM)
Algebraic properties of a class of logic programs
Proceedings of the 1990 North American conference on Logic programming
Proof methods of declarative properties of definite programs
Theoretical Computer Science
A grammatical view of logic programming
A grammatical view of logic programming
Reasoning about termination of pure Prolog programs
Information and Computation
Norms on terms and their use in proving universal termination of a logic program
Theoretical Computer Science
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
What is failure?: an approach to constructive negation
Acta Informatica
Modular termination proofs for logic and pure PROLOG programs
Advances in logic programming theory
Program verification and Prolog
Specification and validation methods
From logic programs to inductive definitions
Logic: from foundations to applications
From logic programming to Prolog
From logic programming to Prolog
Proving concurrent constraint programs correct
ACM Transactions on Programming Languages and Systems (TOPLAS)
Journal of the ACM (JACM)
From Logic to Logic Programming
From Logic to Logic Programming
Discrete Mathematics
Proving Correctness and Completeness of Normal Programs - A Declarative Approach
Proceedings of the 17th International Conference on Logic Programming
Formal Verification of Logic Programs: Foundations and Implementation
LFCS '97 Proceedings of the 4th International Symposium on Logical Foundations of Computer Science
Verifying Correctness of Logic Programs
TAPSOFT '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 2: Advanced Seminar on Foundations of Innovative Software Development II and Colloquium on Current Issues in Programming Languages
A three-valued semantics for logic programmers
Theory and Practice of Logic Programming
Hi-index | 0.00 |
We advocate a declarative approach to proving properties of logic programs. Total correctness can be separated into correctness, completeness and clean termination; the latter includes non-floundering. Only clean termination depends on the operational semantics, in particular on the selection rule. We show how to deal with correctness and completeness in a declarative way, treating programs only from the logical point of view. Specifications used in this approach are interpretations (or theories). We point out that specifications for correctness may differ from those for completeness, as usually there are answers which are neither considered erroneous nor required to be computed. We present proof methods for correctness and completeness for definite programs and generalize them to normal programs. For normal programs we use the 3-valued completion semantics; this is a standard semantics corresponding to negation as finite failure. The proof methods employ solely the classical 2-valued logic. We use a 2-valued characterization of the 3-valued completion semantics, which may be of separate interest. The method of proving correctness of definite programs is not new and can be traced back to the work of clark in 1979. However a more complicated approach using operational semantics was proposed by some authors. We show that it is not stronger than the declarative one, as far as properties of program answers are concerned. For a corresponding operational approach to normal programs, we show that it is (strictly) weaker than our method. We also employ the ideas of this work to generalize a known method of proving termination of normal programs.