「導出原理」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
証明戦略の記述強化など
10行目: 10行目:
この方法は必要な基礎例のみを生成するため、不要な論理式の生成が抑えられ効率的だったが、選言標準形はすべての連言項を調べなければならないため全体の効率はいいとは言えなかった。
この方法は必要な基礎例のみを生成するため、不要な論理式の生成が抑えられ効率的だったが、選言標準形はすべての連言項を調べなければならないため全体の効率はいいとは言えなかった。


ロビンソンはデービス・パットナムの枠組みにプラウィツのアイデアを組み合わせ、ただ1つの導出規則と[[単一化]]による代入操作とで充足不能性を調べる導出原理を1965年に発表した。単純な規則で関係する論理式のみを段階的に具体化していく方法は、従来の方法よりはるかに効率がよく、また理論的なエレガントさを持っていたため、その後の[[定理自動証明]]に大きな影響を与えた<ref name=Davis2001></ref>。
ロビンソンはデービス・パットナムの枠組みにプラウィツのアイデアを組み合わせ、ただ1つの導出規則と[[単一化]]による代入操作とで充足不能性を調べる導出原理を1965年に発表した。単純な規則で関係する論理式のみを段階的に具体化していく方法は、従来の方法よりはるかに効率がよく、また理論的なエレガントさを持っていたため、その後の[[定理自動証明]]に大きな影響を与えた<ref name=Davis2001></ref>。


== 定義 ==
== 定義 ==
''導出''とは二つの[[節]]より新しい節を導きだす操作で、一方の節に含まれるリテラル <math>l</math> と、他方の節に含まれる否定リテラル <math>\neg l</math> をのぞき、その他のリテラルの[[論理和]]をとることで、新しい節を得ることをいう。
''導出''とは二つの[[節]]より新しい節を導きだす操作で、一方の節に含まれるリテラル <math>l</math> と、他方の節に含まれる否定リテラル <math>\neg l</math> をのぞき、その他のリテラルの[[論理和]]をとることで、新しい節を得ることをいう。


命題論理での導出規則を式で表せば、
[[命題論理]]での導出規則を式で表せば、
<math>\frac{
<math>\frac{
l \vee P,
l \vee P,
\quad \neg l \vee Q}
\quad \neg l \vee Q}
{P \vee Q}</math>
{P \vee Q}</math>
と書ける。ここで上式は前提となる節、下式はそれらから導かれる''導出節''({{lang|en|''resolvent''}})を表わす。
と書ける。ここで上式は前提となる''親''、下式はそれらから導かれる''導出節''({{lang|en|''resolvent''}})を表わす。


あるいは、別の表記法を用いれば、前提となる節を <math>C_1</math> と <math>C_2</math> とし, もしリテラル <math>L \in C_1</math> と否定リテラル <math>\overline{L}\in C_2</math> が存在すば、導出節 <math>C_R</math> は以下のようになる。
あるいは、別の表記法を用いて次のようにも表現できる。前提となる節を <math>C_1</math> と <math>C_2</math> とし, もしリテラル <math>L \in C_1</math> と否定リテラル <math>\overline{L}\in C_2</math> が存在するならば、導出節 <math>C_R</math> は以下のようになる。


:<math>
:<math>
28行目: 28行目:
</math>
</math>


これは[[三段論法]]や[[モーダスポネンス|前件肯定]]を一般化した規則となっている。
導出規則は[[三段論法]]や[[モーダスポネンス|前件肯定]]を一般化した規則となっている。
導出は[[完全性|完全]]な証明系であることが知られている。
導出は[[完全性|完全]]な証明系であることが知られている。


49行目: 49行目:


== 一階述語論理での導出 ==
== 一階述語論理での導出 ==
述語論理のリテラルには個体変数が含まれるため、リテラルと否定リテラルとを単純に比較するだけでは削除できるかどうか分からない。一階述語論理ではリテラルと否定リテラルそれぞれの[[原子論理式]]が[[ユニフィケーション|単一化]]できる場合に導出を行う。
[[述語論理]]のリテラルには個体変数が含まれるため、リテラルと否定リテラルとを単純に比較するだけでは削除できるかどうか分からない。一階述語論理ではリテラルと否定リテラルそれぞれの[[原子論理式]]が[[ユニフィケーション|単一化]]できる場合に導出を行う。


また、導出の対象となる節は、[[冠頭標準形]]にして[[存在記号]]を削除した[[スコーレム標準形|スコーレム連言標準形]]の論理式である。
また、導出の対象となる節は、[[冠頭標準形]]にして[[存在記号]]を削除した[[スコーレム標準形|スコーレム連言標準形]]の論理式である。
58行目: 58行目:
上記の例の場合、両方の論理式を等しくする代入は <math>\left\{ z/a, y/f(b), x/a \right\}</math>、<math>\left\{ z/x, y/c, f(b)/c \right\}</math> など無数に存在する。これらは本来の代入 <math>\left\{ z/x, y/f(b) \right\}</math> に <math>\left\{ x/a \right\}</math> などの代入を合成したものなので、最汎単一化子 mgu は <math>\left\{ z/x, y/f(b) \right\}</math> である。
上記の例の場合、両方の論理式を等しくする代入は <math>\left\{ z/a, y/f(b), x/a \right\}</math>、<math>\left\{ z/x, y/c, f(b)/c \right\}</math> など無数に存在する。これらは本来の代入 <math>\left\{ z/x, y/f(b) \right\}</math> に <math>\left\{ x/a \right\}</math> などの代入を合成したものなので、最汎単一化子 mgu は <math>\left\{ z/x, y/f(b) \right\}</math> である。


一階述語論理での導出は次のように表現できる。
一階述語論理での導出は mgu を用いて次のように表現できる。

もしリテラル <math>L_1 \in C_1</math> と否定リテラル <math>\overline{L_2}\in C_2</math> が存在し、 <math>L_1</math> と <math>L_2</math> が mgu <math>\sigma</math> を持つ場合、以下の <math>C_R</math> 節 <math>C_1</math> <math>C_2</math> ''2項導出節''という
もしリテラル <math>L_1 \in C_1</math> と否定リテラル <math>\overline{L_2}\in C_2</math> が存在し、 <math>L_1</math> と <math>L_2</math> が mgu <math>\sigma</math> を持つ場合、以下の <math>C_R</math> が''2項導出''({{lang|en|''binary resolvent''}})である。ここで、<math>C_1\sigma, C_2\sigma</math> などは、それぞれの節やリテラルに代入 <math>\sigma</math> を行ったもを表わす


:<math>
:<math>
65行目: 66行目:
</math>
</math>


同様のやり方での2以上の複数の節から同時に導出することも可能であり、''超導出''({{lang|en|''hyper-resolution''}})と呼ばれる。
ここで、<math>C_1\sigma, C_2\sigma</math> などは、それぞれの節やリテラルに代入 <math>\sigma</math> を行ったものを表わす。
=== 例 ===
=== 例 ===
以下の節からの導出を考える。
以下の節からの導出を考える。
134行目: 135行目:
:<math>C_6 = S \left(a \right)</math>
:<math>C_6 = S \left(a \right)</math>


:<math>C_1</math> と <math>C_6</math> の <math>S</math> についての導出を考えると、
<math>C_1</math> と <math>C_6</math> の <math>S</math> についての導出を考えると、


:<math>C_7 = P\left(a\right)</math>
:<math>C_7 = P\left(a\right)</math>
143行目: 144行目:
導出は2つの節を前提として導出節を導くものであるので、どの節に導出規則を適用するかについてはさまざまな選択肢があり、そのやり方により効率が大幅に異なる。代表的な証明戦略として以下のものがある。
導出は2つの節を前提として導出節を導くものであるので、どの節に導出規則を適用するかについてはさまざまな選択肢があり、そのやり方により効率が大幅に異なる。代表的な証明戦略として以下のものがある。
* 線形導出({{lang|en|''linear resolution''}})
* 線形導出({{lang|en|''linear resolution''}})
:前提となる節の一方を、頂上節({{lang|en|''top clause''}})として指定した節と、頂上節から導出された節に限定する方法。導出木を書くと導出の流れが線状に一列に並ぶため、線形導出と呼ばれる。[[論理プログラミング]]言語の代表である[[Prolog]]で用いられる''SLD導出''({{lang|en|''Selective Linear resolution for Definite clause''}})は線形導出の一種である。
* 入力導出({{lang|en|''input resolution''}})
* 入力導出({{lang|en|''input resolution''}})
:前提となる節の一方を最初に与えられた節集合の要素(導出された節以外の節)に限定する方法。
* 支持集合戦略({{lang|en|''set-of-support strategy''}})
* 支持集合戦略({{lang|en|''set-of-support strategy''}})
:あらかじめ支持集合という節の集合を指定しておき、前提となる節の一方を支持集合の節とそこから導出された節に限定する方法。節集合''S''、''T'' があり''S-T'' が充足可能であるとき''T'' は''S'' の支持集合と言う。目標に関係ないところを探索しないよう導出の対象を制限することで、より効率的な導出を行うための手法で、1965年に Lawrence Wos らが提案した<ref>
Lawrence Wos, G.A. Robinson, D.F. Carson. ''Efficiency and Completeness of the Set of Support Strategy in Theorem Proving''. Journal of the ACM, Volume12, Issue 4, pp.536-541. 1965.</ref>。
* 意味導出({{lang|en|''semantic resolution''}})
* 意味導出({{lang|en|''semantic resolution''}})
:論理式のモデルあるいは解釈を利用して導出の対象を制限し、探索の空間を狭めることで効率的な導出を行う手法。特定のモデルにおいて真となる可能性がある節と偽となる可能性のある節とを親節に選ぶ Slagle の Semantic Clash resolution<ref>
James Slagle. ''Automatic Theorem Proving With Renamable and Semantic Resolution''. Journal of the ACM, Volume14, Issue 4, pp.687-697. 1967.</ref> などさまざまな方法がある。


== 関連項目 ==
== 関連項目 ==

2010年4月6日 (火) 02:38時点における版

導出(どうしゅつ、: resolution)とは、数理論理学における一つの演繹方法で、三段論法を一般化した導出規則と呼ばれるただ1つの推論規則を用いる。命題論理述語論理のいずれにも使う事ができ、導出を繰り返すことで証明したい論理式の否定から空節が導かれることにより証明を行う。導出規則と単一化にもとづく導出原理(どうしゅつげんり、: resolution principle)はジョン・アラン・ロビンソン英語版により1965年に提案され[1]、 その後の定理自動証明に大きな影響を与え、またPrologなどの論理プログラミング言語の基礎となった。

背景

述語論理式 P恒真であるかを証明する一般的な手続きは存在しないが、1930年に発表されたエルブランの定理エルブラン領域の要素を論理式に代入して命題論理のレベルに落としその充足不能性を調べることで、 が充足不能(恒偽)であれば有限のステップで証明できることを保証している。また、エルブランの論文には単一化アルゴリズムなど他のさまざまなものが含まれていた[2]

1950年代以降、計算機上での定理証明の研究が活発になり、ギルモアのアルゴリズム(1960)やデービス・パットナムのアルゴリズム(1958,1960) が考案された。 これらはエルブランの定理の証明を直接計算機上で実現したような方法で、エルブラン領域の要素を順次生成して変数を含まない論理式(基礎例)を作成し命題論理のレベルで充足不能性を調べるものだったため、不要な論理式が多数生成され、非常に効率が悪かった[3]

プラウィツ(Dag Prawitz)は、論理式を生成してからチェックするのではなく、選言標準形に変換した論理式への適当な代入(単一化)によって充足不能性を調べる方法を1960年に提案した[4]。 この方法は必要な基礎例のみを生成するため、不要な論理式の生成が抑えられ効率的だったが、選言標準形はすべての連言項を調べなければならないため全体の効率はいいとは言えなかった。

ロビンソンはデービス・パットナムの枠組みにプラウィツのアイデアを組み合わせ、ただ1つの導出規則と単一化による代入操作とで充足不能性を調べる導出原理を1965年に発表した。単純な規則で関係する論理式のみを段階的に具体化していく方法は、従来の方法よりはるかに効率がよく、また理論的なエレガントさを持っていたため、その後の定理自動証明に大きな影響を与えた[3]

定義

導出とは二つのより新しい節を導きだす操作で、一方の節に含まれるリテラル と、他方の節に含まれる否定リテラル をのぞき、その他のリテラルの論理和をとることで、新しい節を得ることをいう。

命題論理での導出規則を式で表せば、 と書ける。ここで上式は前提となる親節、下式はそれらから導かれる導出節resolvent)を表わす。

あるいは、別の表記法を用いて次のようにも表現できる。前提となる節を とし, もしリテラル と否定リテラル が存在するならば、導出節 は以下のようになる。

導出規則は三段論法前件肯定を一般化した規則となっている。 導出は完全な証明系であることが知られている。

を節形式にすると となる。 の導出節とすると、前件肯定は以下の導出と同じである。

同様に、 の節形式 による三段論法は以下のようになる。

一階述語論理での導出

述語論理のリテラルには個体変数が含まれるため、リテラルと否定リテラルとを単純に比較するだけでは削除できるかどうか分からない。一階述語論理ではリテラルと否定リテラルそれぞれの原子論理式単一化できる場合に導出を行う。

また、導出の対象となる節は、冠頭標準形にして存在記号を削除したスコーレム連言標準形の論理式である。

例えば、一方の節がリテラル 、もう一方の節がリテラル を含む場合、適切な代入 により各リテラルは と書き換えられ、同じにすることができる。ここで代入 に書き換えることを表わす。

一般に論理式 を等しくする代入を 単一化子unifier)といい、そのうち最も一般的な単一化子(最汎単一化子)を mgumost general unifier)という。 上記の例の場合、両方の論理式を等しくする代入は など無数に存在する。これらは本来の代入 などの代入を合成したものなので、最汎単一化子 mgu は である。

一階述語論理での導出は mgu を用いて次のように表現できる。

もしリテラル と否定リテラル が存在し、 が mgu を持つ場合、以下の 2項導出節binary resolvent)である。ここで、 などは、それぞれの節やリテラルに代入 を行ったものを表わす。

同様のやり方での2以上の複数の節から同時に導出することも可能であり、超導出hyper-resolution)と呼ばれる。

以下の節からの導出を考える。

Q を単一化する代入 により の導出を行うと、

続いて、P を単一化する代入 により の導出を行うと、

を得ることができる。

反駁による証明

反駁(はんばく、: refutation)とは、節の集合からの導出により空節 □ を導くことである。 反駁については以下の定理が成り立つ。

節の集合 S が充足不能である必要十分条件は、節の集合 S からの導出により空節 □ が導けることである。

これはエルブランの定理を導出に応用したものになっている。

論理式 P恒真であれば は充足不能(恒偽)であるため、節の集合に を追加し導出を繰り返すことで空節 □ になれば、論理式 P恒真であることが証明できる。

反駁により の論理的帰結か調べるアルゴリズムは以下のように表現できる。

  1. スコーレム連言標準形 に変換する。
  2. スコーレム連言標準形 に変換する。
  3. もし の反駁が存在すれば、 の論理的帰結である。
あるいは、別の表現をすれば、
  • が充足不能
  • が充足不能
  • の解釈が ならば の解釈は
  • の解釈が ならば の解釈は

以下の公式が成り立つ時、 が成り立つかどうかを証明する場合を考える。反駁の対象となる論理式は以下の論理式に を追加したものである。

  1. ,
  2. ,

最初の論理式は と等価なため、次の2つの節で表現できる。

二番目の論理式は以下の節になる。

さらに三番目は以下の節になる。

証明したい論理式の否定は以下の節である。

これらの節 が反駁の対象となる節集合である。

についての導出を考えると、 の代入により以下が導かれる。

についての導出を考えると、

最後に の導出により空節 □ が導かれ、 が成り立つことを証明できる。

証明戦略

導出は2つの節を前提として導出節を導くものであるので、どの節に導出規則を適用するかについてはさまざまな選択肢があり、そのやり方により効率が大幅に異なる。代表的な証明戦略として以下のものがある。

  • 線形導出(linear resolution
前提となる節の一方を、頂上節(top clause)として指定した節と、頂上節から導出された節に限定する方法。導出木を書くと導出の流れが線状に一列に並ぶため、線形導出と呼ばれる。論理プログラミング言語の代表であるPrologで用いられるSLD導出Selective Linear resolution for Definite clause)は線形導出の一種である。
  • 入力導出(input resolution
前提となる節の一方を最初に与えられた節集合の要素(導出された節以外の節)に限定する方法。
  • 支持集合戦略(set-of-support strategy
あらかじめ支持集合という節の集合を指定しておき、前提となる節の一方を支持集合の節とそこから導出された節に限定する方法。節集合ST がありS-T が充足可能であるときTS の支持集合と言う。目標に関係ないところを探索しないよう導出の対象を制限することで、より効率的な導出を行うための手法で、1965年に Lawrence Wos らが提案した[5]
  • 意味導出(semantic resolution
論理式のモデルあるいは解釈を利用して導出の対象を制限し、探索の空間を狭めることで効率的な導出を行う手法。特定のモデルにおいて真となる可能性がある節と偽となる可能性のある節とを親節に選ぶ Slagle の Semantic Clash resolution[6] などさまざまな方法がある。

関連項目

参考文献

脚注

  1. ^ J. Alan Robinson, A Machine-Oriented Logic Based on the Resolution Principle. JACM, Volume 12, Issue 1, pp. 23–41. 1965.
  2. ^ Buss, Samuel R., "On Herbrand's Theorem", in Maurice, Daniel; Leivant, Raphaël, Logic and Computational Complexity, Lecture Notes in Computer Science, Springer-Verlag, pp. 195–209. 1995.
  3. ^ a b Martin Davis. The Early History of Automated Deduction. in Handbook of Automated Reasoning, Volume I, Alan J.A. Robinson and Andrei Voronkov(ed), 2001. ISBN 9780444829498
  4. ^ Wolfgang Bibel. Early History and Perspectives of Automated Deduction. in Advances in Artificial Intelligence, Lecture Notes in Computer Science, Springer-Verlag Berlin, 2007. ISBN 9783540745648
  5. ^ Lawrence Wos, G.A. Robinson, D.F. Carson. Efficiency and Completeness of the Set of Support Strategy in Theorem Proving. Journal of the ACM, Volume12, Issue 4, pp.536-541. 1965.
  6. ^ James Slagle. Automatic Theorem Proving With Renamable and Semantic Resolution. Journal of the ACM, Volume14, Issue 4, pp.687-697. 1967.

外部リンク

  • Alex Sakharov. "Resolution Principle". mathworld.wolfram.com (英語).
  • Alex Sakharov. "Resolution". mathworld.wolfram.com (英語).
  • Notes on computability and resolution (pdf)
  • 述語論理とその意味論 (pdf) 筑波大学講義資料