2017-07-28 12 views
3

以下のPrologのルール:我々はPrologのルールで何かを匿名変数を持っている場合ファーストオーダーロジックプロローグ匿名変数

理論的には
∀x ∀y ∀z ((P (x, y) ∧ P (y, z)) → G(x, z)) 

:一階述語論理で

grandparent(X,Z) :- parent(X,Y) , parent(Y,Z) 

があることを行っていますlike:

grandparent(X,Z) :- parent(X,Y, _) , parent(Y,Z, _) 

私は一番最初の論理でそれをどのように提示できますか?

は "子供の名前を付け、" アンダースコアがない単一の変数であることを

注:

答えて

3

は、単にルールを使用しています。 Prologの2つのアンダースコアは互いに関係がありません。

我々は単にでコードを置き換えることができます。

grandparent(X,Z) :- 
    parent(X,Y,A), 
    parent(Y,Z,B).

そして今、論理的な "同等" は次のようになります。

∀x∀y∀z∀a∀b:((P(理論的に言えば(おそらくここにはないので)、最初のものはであるので、ではないことに注意してください(ただし、x(y、z) parent/3コール、可能性がありますPrologのサブセットのみがそのような論理構造にマップされます。