否定 (Negation as Failure - NAF)

否定としての失敗(NAF)は、論理プログラミングで、あるゴールの証明を探索して失敗したときに「そのゴールは成り立たない」と暫定的に扱う規則である。古典論理の明示的な否定とは違い、知識が不足していることと偽であることを区別しない場合がある。

仕組みと確認

閉世界仮定、プログラムの層別性、探索の停止性を確認し、not pがpの明示的な否定なのか、現在のデータベースでpを証明できないという意味なのかを定める。追加データで結果が反転する例をテストする。

限界と注意点

開世界の知識ベース、循環規則、非単調な更新、探索の非停止では、失敗を否定とみなすことが危険になる。権限不足や通信失敗も「存在しない」と扱わず、未判定・エラーを別状態にする。