下図は親子関係を示したプログラムです。
親子関係の事実に対して質問をしてみます。
サザエの親(X)は誰かという質問をしてみます。
質問のparent(X,sazae)と、上記4行のparent述語は述語名もアリティも一致します。
よって上記4行はサザエの親(X)を探す検索対象となります。
早速1節目のparent(namihei,sazae)がマッチし、Xの値がユニフィケーションされました。
今度はもう少し複雑な節を記述し、プログラムを動かしてみます。
personの中に複数の情報を記述したプログラムです。
→person の中にフルネーム、性別、年齢が定義されています。
先ほどの単位節より少し複雑ですが、同様に情報を扱うことが可能です。
"フグタ"という男性(male)の名前(X)と年齢(Y)を質問してみます。
まず1行目のparsonの第1引数、複合項nameの第1引数が質問と同じ"fuguta"であることからXがマッチします。 しかしその先のsexでサザエはmaleでないことからYはマッチしません。 よって、parent述語の1節目では質問が満たされないことがわかります。
続いて見ていくと4節目がX,Yともにマッチすることがわかります。 その結果、今回の質問はperson述語の4節目が呼びだされX,Yの値がユニフィケーションされました。