Foundations of logic programming
Foundations of logic programming
The relation between logic programming and logic specification
Proc. of a discussion meeting of the Royal Society of London on Mathematical logic and programming languages
Journal of Logic Programming
Proceedings of the Fourth Annual Symposium on Logic in computer science
Bilattices and the semantics of logic programming
Journal of Logic Programming
Journal of the ACM (JACM)
Algorithmic Program DeBugging
Logic for Problem Solving
Fixpoint semantics for logic programming a survey
Theoretical Computer Science
Rational Debugging in Logic Programming
Proceedings of the Third International Conference on Logic Programming
Logic Programs and Many-Valued Logic
STACS '84 Proceedings of the Symposium of Theoretical Aspects of Computer Science
Directional Type Checking of Logic Programs
SAS '94 Proceedings of the First International Static Analysis Symposium on Static Analysis
A three-valued semantics for logic programmers
Theory and Practice of Logic Programming
Hi-index | 0.00 |
The semantics of logic programs was originally described in terms of two-valued logic. Soon, however, it was realised that three-valued logic had some natural advantages, as it provides distinct values not only for truth and falsehood, but also for "undefined". The three-valued semantics proposed by Fitting and by Kunen are closely related to what is computed by a logic program, the third truth value being associated with non-termination. A different three-valued semantics, proposed by Naish, shared much with those of Fitting and Kunen but incorporated allowances for programmer intent, the third truth value being associated with underspecification. Naish used an (apparently) novel "arrow" operator to relate the intended meaning of left and right sides of predicate definitions. In this paper we suggest that the additional truth values of Fitting/Kunen and Naish are best viewed as duals. We use Fitting's later four-valued approach to unify the two three-valued approaches. The additional truth value has very little affect on the Fitting three-valued semantics, though it can be useful when finding approximations to this semantics for program analysis. For the Naish semantics, the extra truth value allows intended interpretations to be more expressive, allowing us to verify and debug a larger class of programs. We also explain that the "arrow" operator of Naish (and our four-valued extension) is essentially the information ordering. This sheds new light on the relationships between specifications and programs, and successive executions states of a program.