Negation As Failure
   HOME

TheInfoList



OR:

Negation as failure (NAF, for short) is a non-monotonic inference rule in
logic programming Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applyin ...
, used to derive \mathrm~p (i.e. that p is assumed not to hold) from failure to derive p. Note that \mathrm ~p can be different from the statement \neg p of the
logical negation In logic, negation, also called the logical not or logical complement, is an operation that takes a proposition P to another proposition "not P", written \neg P, \mathord P, P^\prime or \overline. It is interpreted intuitively as being true ...
of p, depending on the completeness of the inference algorithm and thus also on the formal logic system. Negation as failure has been an important feature of logic programming since the earliest days of both Planner and
Prolog Prolog is a logic programming language that has its origins in artificial intelligence, automated theorem proving, and computational linguistics. Prolog has its roots in first-order logic, a formal logic. Unlike many other programming language ...
. In Prolog, it is usually implemented using Prolog's extralogical constructs. More generally, this kind of negation is known as weak negation, in contrast with the strong (i.e. explicit, provable) negation.


Planner semantics

In Planner, negation as failure could be implemented as follows: :''if'' (''not'' (''goal'' p)), ''then'' (''assert'' ¬p) which says that if an exhaustive search to prove p fails, then assert ¬p. This states that proposition p shall be assumed as "not true" in any subsequent processing. However, Planner not being based on a logical model, a logical interpretation of the preceding remains obscure.


Prolog semantics

In pure Prolog, NAF literals of the form \mathrm~p can occur in the body of clauses and can be used to derive other NAF literals. For example, given only the four clauses : p \leftarrow q \land \mathrm~r : q \leftarrow s : q \leftarrow t : t \leftarrow NAF derives \mathrm~s, \mathrm~r and p as well as t and q.


Completion semantics

The semantics of NAF remained an open issue until 1978, when Keith Clark showed that it is correct with respect to the completion of the logic program, where, loosely speaking, "only" and \leftarrow are interpreted as "if and only if", written as "iff" or "\equiv". For example, the completion of the four clauses above is : p \equiv q \land \mathrm~r : q \equiv s \lor t : t \equiv \mathrm : r \equiv \mathrm : s \equiv \mathrm The NAF inference rule simulates reasoning explicitly with the completion, where both sides of the equivalence are negated and negation on the right-hand side is distributed down to
atomic formula In mathematical logic, an atomic formula (also known as an atom or a prime formula) is a formula with no deeper propositional structure, that is, a formula that contains no logical connectives or equivalently a formula that has no strict subformu ...
e. For example, to show \mathrm~p, NAF simulates reasoning with the equivalences : \mathrm~p \equiv \mathrm~q \lor r : \mathrm~q \equiv \mathrm~s \land \mathrm~t : \mathrm~t \equiv \mathrm : \mathrm~r \equiv \mathrm : \mathrm~s \equiv \mathrm In the non-propositional case, the completion needs to be augmented with equality axioms, to formalize the assumption that individuals with distinct names are distinct. NAF simulates this by failure of unification. For example, given only the two clauses : p(a) \leftarrow : p(b) \leftarrow t NAF derives \mathrm~p(c). The completion of the program is : p(X) \equiv X=a \lor X=b augmented with unique names axioms and domain closure axioms. The completion semantics is closely related both to circumscription and to the closed world assumption.


Autoepistemic semantics

The completion semantics justifies interpreting the result \mathrm~p of a NAF inference as the classical negation \neg p of p. However, in 1987, Michael Gelfond showed that it is also possible to interpret \mathrm~p literally as "p can not be shown", "p is not known" or "p is not believed", as in autoepistemic logic. The autoepistemic interpretation was developed further by Gelfond and Lifschitz in 1988, and is the basis of answer set programming. The autoepistemic semantics of a pure Prolog program P with NAF literals is obtained by "expanding" P with a set of ground (variable-free) NAF literals Δ that is
stable A stable is a building in which working animals are kept, especially horses or oxen. The building is usually divided into stalls, and may include storage for equipment and feed. Styles There are many different types of stables in use tod ...
in the sense that : In other words, a set of assumptions Δ about what can not be shown is
stable A stable is a building in which working animals are kept, especially horses or oxen. The building is usually divided into stalls, and may include storage for equipment and feed. Styles There are many different types of stables in use tod ...
if and only if Δ is the set of all sentences that truly can not be shown from the program P expanded by Δ. Here, because of the simple syntax of pure Prolog programs, "implied by" can be understood very simply as derivability using modus ponens and universal instantiation alone. A program can have zero, one or more stable expansions. For example, : p \leftarrow \mathrm~p has no stable expansions. : p \leftarrow \mathrm~q has exactly one stable expansion : p \leftarrow \mathrm~q : q \leftarrow \mathrm~p has exactly two stable expansions and The autoepistemic interpretation of NAF can be combined with classical negation, as in extended logic programming and answer set programming. Combining the two negations, it is possible to express, for example : \neg p \leftarrow \mathrm~p (the closed world assumption) and : p \leftarrow \mathrm~\neg p (p holds by default).


Footnotes


References

* * * * * {{refend


External links


Report
from the W3C Workshop on Rule Languages for Interoperability. Includes notes on NAF and SNAF (scoped negation as failure). Logic programming Rules of inference