Wikiwand AI

失敗による否定

From Wikipedia, the free encyclopedia

失敗による否定(しっぱいによるひてい、英: Negation as failure, NAF)は、論理プログラミングで使われる非単調論理的推論規則であり、 を導出することに失敗したとき を自動的に導出することである。Planner や Prolog の初期から論理プログラミングの重要な機能となっている。Prolog では、論理構成要素の範囲外として実装されることが多い。

純粋な Prolog では、 という形式で表される NAF リテラルは節本体に現れ、他の NAF リテラルを導出するのに使われる。例えば、次のような4つの節があるとする。

NAF によれば、、、 が導出される。

完全性意味論

NAF の意味論は未解決の問題だったが、Keith Clark (1978) によって論理プログラムの完全性 (completion) の観点で正しいことが示された。大まかに言えば は同値すなわち "" と解釈される。

例えば、上記の4つの節の完全性は次のように表される。

推論規則としての NAF は完全性による明示的な推論をシミュレートする。ここで等式の両辺が否定され、右辺の否定が原子論理式にまで分配される。例えば、 であることを示すには、NAF は上記等式群に関する次の推論をシミュレートする。

命題論理的でない場合、別の名を持つ個体項は別の項であるという前提を形式化するため、完全性は等価性公理にまで敷衍される必要がある。NAF ではこれをユニフィケーションの失敗でシミュレートする。例えば、次の2つの節だけがあるとする。



NAF によれば、ここから が導出される。

プログラムの完全性は次のようになる。

ここでは、単一名公理と領域閉包公理によって敷衍されている。

完全性意味論はサーカムスクリプションと閉世界仮説に密接に関連している。

自己認識意味論

参考文献

外部リンク

Related Articles

Timelines

Top Qs

Fact Checks