失敗による否定

From Wikipedia, the free encyclopedia

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

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

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

完全性意味論

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

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

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

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



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

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

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

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

自己認識意味論

参考文献

外部リンク

Related Articles

Wikiwand AI