Prolog:提出 Herbrand Universe 和 Herbrand Base

Prolog: Coming up with Herbrand Universe and Herbrand Base

我在理解 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 是怎么想出来的?

很抱歉提出所有问题,但我想我把很多不同的 "Herbrand" 东西混在一起了 :-(。

谁能帮我解释一下?

谢谢。

维基百科says、"a Herbrand universe ... is defined starting from the set of constants and function symbols in a set of clauses."

因此,如果我们遵循这个定义,这里它将包含原子 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).

"The set of all ground atoms that can be formed from predicate symbols from S and terms from H is called the Herbrand base":

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