Prolog:与Herbrand Universe和Herbrand Base合作

时间:2015-11-07 22:05:31

标签: prolog

我很难理解Prolog的概念以及相应的Herbrand Universe,Herbrand Base等。 例如,如果我有一个Prolog程序:

p(X,Y) :- q(X,Y), q(Y,X).
s(a).
s(b).
s(c).
q(a,b).
q(b,a).
q(a,c).

我的意思是 - 我知道Prolog程序应该做什么,但我无法想出相应的Herbrand Universe或Herbrand Base。

对于Herbrand Universe,我必须搜索所有无变量的构造函数术语。

  1. 在这种情况下,构造函数是什么?

  2. 我只是猜测HU = {a,b,c,s(a),s(b),s(c),q(a,a),q(a,b),q (b,a)...... p(a,a),p(a,b),... s(s(a))....}

  3. 如何推出Herbrand Base?

  4. 我很抱歉所有的问题,但我想我正在混合这么多不同的“Herbrand”事情:-(。

    任何人都可以帮助我并向我解释一下吗?

    谢谢。

1 个答案:

答案 0 :(得分:1)

维基百科says," Herbrand Universe ......是从一组子句中的常量和函数符号集开始定义的。"

因此,如果我们遵循这个定义,那么它将包含原子a, b, c和带有仿函数s/1, q/2, p/2的复合词以及Herbrand宇宙中的参数:

hu(a).
hu(b).
hu(c).
hu(s(Y)):- hu(Y).
hu(q(Y,Z)):- hu(Y), hu(Z).
hu(p(Y,Z)):- hu(Y), hu(Z).

"可以由S的谓词符号和H中的术语形成的所有地面原子的集合称为Herbrand base":

hb(s(Y)):- hu(Y).
hb(q(Y,Z)):- hu(Y), hu(Z).
hb(p(Y,Z)):- hu(Y), hu(Z).