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,我必须搜索所有无变量构造函数项。
什么是构造函数?
我只是猜测 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))....}
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).
我在理解 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,我必须搜索所有无变量构造函数项。
什么是构造函数?
我只是猜测
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))....}
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).