以前説明したものの繰り返しになるのですが、もう少し詳しく説明したいと思います。その前に以前シークエント計算の説明をしたときに変数の説明が抜けていたようなので、これも以前の繰り返しになりますが説明したいと思います。
論理プログラミング
まず論理プログラミング(ここでは PLP と呼ぶことにします)のプログラムについて説明していきます。PLP のデータとなるものを項と呼ぶことにします。記号の有限集合 があってその元を定数と呼びます。定数は項となります。記号の可算集合
があってその元を変数と呼びます。変数は項となります。記号の有限集合
があってその元を関数と呼びます。関数
に対して
という形の記号の列は項となります(
は項)。以上で定義された最小のものが項となります。項全体の集合を
とおきます。関数は変数に依存した項を表すためのものとなっています。
記号の有限集合 があってその元を述語と呼びます。述語
に対して
という形の記号の列はを述語式と呼ぶことにします。ここで
は項です。述語式全体の集合を
とおきます。
の形の列をホーン節と呼びます。ここで は述語式です。これは
という論理式を表しています。以下では論理式の意味で使うこともあります。 の場合もあり、これは
と書きます。ホーン節の がない場合は
の部分が「偽」の場合を表し
という論理式を表します。これをゴール節と呼び Prolog では
と書きます。これは(Prologでは含めるようですがここでは)ホーン節には含めないことにします。
PLP のプログラムは有限個のホーン節と1個のゴール節からなります。ゴール節は1個の述語式からなるものを考えます。複数の場合
をゴール節に追加してゴール節は だけにすることができます。
PLP のプログラムは
という形のものでこれは以下の論理式を表しています。
ここで は
に現れるすべての変数を表します。
は以下の論理式を表します。
ここで は
に現れるすべての変数を表します。
は変数
とこれより下の証明図に現れる変数に依存した項を表しますが、PLP では変数に依存した項は「関数」として表されて、証明図としては同じものになります。
シークエント計算(変数あり)
PLP で述語式の列(ゴール節) を実行するには、
、
、…、
をすべて(Prologの場合は順に)実行することになります。これは証明図で書くと以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものを複数組み合わせたものをまとめたものとなります。
PLP で述語式 を一つのホーン節
に対して実行することは、
が
が一致するかどうかを調べて、ゴール節
を実行することになります。これは証明図で書くと以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものとなります。
PLP で述語式 を実行するには、ホーン節の集合
の中の
が
と一致する一つのホーン節
を選択することになります(Prologの場合はホーン節の選択を順に実行していって失敗した場合は次のホーン節をやり直すという手順になります)。このとき変数は
が
と一致するような項で置き換えることになります。これは証明図で書くと以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものとなります。
は
内の変項
の全ての自由出現を項
で置換した論理式を表します。PLP では「関数」の形で変数に依存する項を書くことになっているので
は必要ないということになります。
ここまでが1回分の証明図となります。PLP の動作としてはここまでですが、さらに証明を続けると以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものとなります。
は
内の変項
の全ての自由出現を項
で置換した論理式を表します。
1回分の証明図をまとめて書くことを考えます。「」という形のものと論理積(ここでは
と書きます)と論理和(ここでは
と書きます)の組み合わせで書けるもの(自由分配束)を「シークエント式」と呼ぶことにします。「シークエント式」を使って1回分の証明図をまとめると以下のようになります。
図の上の と
は変数を適当な項で置き換えたものとなります。
シークエント計算(変数なし)
変数ありの証明図を見てみると、 の変数については、変数であっても変数を項で置き換えたものであっても、そこまでの証明図は同じものになることがわかります。また
についても証明図に書けるのは一つの項だけなので、最初からその項を書けば証明図としては同じものになるということがわかります。したがって
と
はあってもなくても証明図としては同じものになるということがわかります。それらを省略して変数を含まない形で書いてみます。
PLP で述語式の列(ゴール節) を実行するには、
、
、…、
をすべて実行することになります。これは証明図で書くと以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものを複数組み合わせたものをまとめたものとなります。
PLP で述語式 を一つのホーン節
に対して実行することは、
が
が一致するかどうかを調べて、ゴール節
を実行することになります。これは証明図で書くと以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものとなります。
PLP で述語式 を実行するには、ホーン節の集合
の中の
が
と一致する一つのホーン節
を選択することになります。これは証明図で書くと以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものとなります。
ここまでが1回分の証明図となります。PLP の動作としてはここまでですが、さらに証明を続けると以下のようになります。
これは以下の証明図のパターンの項を論理式で置き換えたものとなります。
1回分の証明図をまとめると以下のようになります。