3.ユニフィケーション

下図は親子関係を示したプログラムです。
親子関係の事実に対して質問をしてみます。

サザエの親(X)は誰かという質問をしてみます。

family1

質問のparent(X,sazae)と、上記4行のparent述語は述語名もアリティも一致します。
よって上記4行はサザエの親(X)を探す検索対象となります。  

早速1節目のparent(namihei,sazae)がマッチし、Xの値がユニフィケーションされました。
family2

今度はもう少し複雑な節を記述し、プログラムを動かしてみます。
personの中に複数の情報を記述したプログラムです。 
→person の中にフルネーム、性別、年齢が定義されています。 
先ほどの単位節より少し複雑ですが、同様に情報を扱うことが可能です。 

"フグタ"という男性(male)の名前(X)と年齢(Y)を質問してみます。
family(2-1)

まず1行目のparsonの第1引数、複合項nameの第1引数が質問と同じ"fuguta"であることからXがマッチします。 しかしその先のsexでサザエはmaleでないことからYはマッチしません。 よって、parent述語の1節目では質問が満たされないことがわかります。
family(2-2)

続いて見ていくと4節目がX,Yともにマッチすることがわかります。 その結果、今回の質問はperson述語の4節目が呼びだされX,Yの値がユニフィケーションされました。
family(2-2)