
Chapter
1
:
Negation
in
Logic
Programming
75
Semantics
for Negation as Failure in Terms of
3-Valued
Logic
Three-valued logic seems particularly apt for dealing with programs, since they
may either succeed or fail or go on forever giving no answer. And it seems
particularly apt for database knowledge where we know some things are true,
some things are false, and about other things we just do not know. Kleene
[1952] introduced such a logic to deal with partial recursive functions and
predicates. The three truth values are
t,true,
f, false, and u, undefined or un-
known, and a connective has the value t (f) if it has that value in ordinary 2-
value ...