失敗による否定

提供: testwiki
2024年11月24日 (日) 17:00時点におけるimported>Bcxfubotによる版 (外部リンクの修正 http:// -> https:// (www.w3.org) (Botによる編集))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

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

Prolog

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

pq𝑛𝑜𝑡r
qs
qt
t

NAF によれば、𝑛𝑜𝑡s𝑛𝑜𝑡rp が導出される。

完全性意味論

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

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

pq𝑛𝑜𝑡r
qst
t𝑡𝑟𝑢𝑒
r𝑓𝑎𝑙𝑠𝑒
s𝑓𝑎𝑙𝑠𝑒

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

𝑛𝑜𝑡p𝑛𝑜𝑡qr
𝑛𝑜𝑡q𝑛𝑜𝑡s𝑛𝑜𝑡t
𝑛𝑜𝑡t𝑓𝑎𝑙𝑠𝑒
𝑛𝑜𝑡r𝑡𝑟𝑢𝑒
𝑛𝑜𝑡s𝑡𝑟𝑢𝑒

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

p(a)
p(b)

NAF によれば、ここから 𝑛𝑜𝑡p(c) が導出される。

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

p(X)X=aX=b

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

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

自己認識意味論

完全性意味論は、NAF 推論の結果 𝑛𝑜𝑡p を古典的な p の否定 ¬p として解釈する。しかし、Michael Gelford (1987) では、𝑛𝑜𝑡p自己認識論理において「p を示すことができない」、あるいは「p は未知である」、あるいは「p は信じられていない」と解釈することも可能であるとした。自己認識的解釈は、さらに Gelford と Lifschitz (1988) で研究が進み、解集合プログラミングの基盤となった。

NAF リテラルを含む純粋 Prolog のプログラム P の自己認識意味論は、基底(変数を伴わない)NAF リテラルの集合 Δ を使った P の「展開; expanssion」で得られ、これは安定モデル意味論で次のような意味を持つ。

Δ = {𝑛𝑜𝑡p | p は P ∪ Δ に含まれない}

言い換えれば、何が示せないかに関する前提の集合 Δ が安定であることは、Δによって展開されたプログラム P から真であることを示せない全ての文の集合が Δ であることと同値である。ここで、純粋 Prolog プログラムの文法は単純であるため、「含意」は単にモーダスポネンス普遍例化のみで導出されるものと解釈される。

プログラムはゼロか1つ以上の安定な展開を持つことができる。例えば、

p𝑛𝑜𝑡p

は安定な展開を持たない。

p𝑛𝑜𝑡q

は、1つの安定な展開 Δ = {𝑛𝑜𝑡q} を持つ。

p𝑛𝑜𝑡q
q𝑛𝑜𝑡p

は、2つの安定な展開 Δ1 = {𝑛𝑜𝑡p} と Δ2 = {𝑛𝑜𝑡q} を持つ。

NAF の自己認識的解釈は古典的な否定と結合でき、論理プログラミングや解集合プログラミングでそのような拡張がなされている。そのような結合をすると、次のような表現が可能となる。

¬p𝑛𝑜𝑡p (閉世界仮説)
p𝑛𝑜𝑡¬pp はデフォルトで成り立つ)

参考文献

外部リンク


テンプレート:Software-stub