Negatie als falen
Negatie als falen (NAF, Engels: negation as failure) is een interpretatie van de logische negatie waarbij de negatie van een formule waar is dan en slechts dan als niet afgeleid kan worden dat de formule waar is. Negatie als falen wordt gebruikt in logische programmeertalen zoals Prolog. Met behulp van negatie als falen kan
niet-monotoon geredeneerd worden. Negatie als falen is gerelateerd aan de aanname van een gesloten wereld (closed world assumption) waarbij wordt aangenomen dat alles waarvan niet bekend is dat het waar is, onwaar is.

In de logica is de negatie van een formule waar dan en slechts dan als de formule onwaar is. Als de formule niet waar of onwaar is, dan is de waarheid van de negatie onbekend. Bij negatie als falen zou de formule waar zijn.

Wanneer de Prolog interpreter faalt om P waar te maken dan is not(P) waar (vandaar de naam negatie als falen). Als de interpreter kan afleiden dat P waar is dan is not(P) onwaar en als dit niet lukt, dan is not(P) waar (want de waarheid van P was niet afleidbaar).

De 'negatie als falen'-werking van het not predicaat in Prolog zou als volgt gedefinieerd kunnen worden:

not(P) :- call(P), !, fail.
not(P).

waarbij het call(P) predicaat een poging forceert om P waar te maken. Er wordt (in de meeste interpreters) ook wel gebruikgemaakt van \+ in plaats van not.

Logisch programmeren