制御の流れ
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

Prologの制御の流れについては、W.F.ClocksinとC.S.Mellishのテキスト /ClocMel/で説明されています。

ここでは、与えられた事実と規則の集合から、推論を行う方法について説明します。

連言中の各ゴールついて、Prologが充足/再充足を繰り返し行う試みをバックトラッキングといいます。Prologはひとつのゴールから次のゴールへと、左から右の順に次々にゴールを満たそうとします。ひとつのゴールがうまくいくと、次のゴールにとりかかります。一つのゴールが満たされないと、Prologはバックトラッキングを始めます。直前に満たされたゴール(すぐ左のゴール)まで戻るのです。この場所を"最終分岐点"(チェックポイント)と呼びます。

最終分岐点は、IF/Prolog のデバッガでは"#"で示されます。

バックトラック中には、他の方法によっては満たされない組み込み述語はスキップされます(たとえば、"write(a(x,y,z))" はスキップされます)。

最終分岐点から、Prologは再び次々とゴールを満たそうと実行します。バックトラッキングは失敗から生じるので、最終分岐点以後に値を持ったすべての変数は、値を持たない状態に戻されます。

実行を制御する方法は、「デバッギング」の章で説明されています。ここでは、前の練習において生成したデータベースをデバッギングしています。


Darueber read on...