二叉树的Herbrand宇宙、Herbrand基和Herbrand模型(prolog)

二叉树的Herbrand宇宙、Herbrand基和Herbrand模型(prolog),prolog,Prolog,什么是二叉树的Herbrand宇宙、Herbrand基和Herbrand模型: binary_tree(empty). binary_tree(tree(Left,Element,Right)) :- binary_tree(Left), binary_tree(Right). 赫伯兰宇宙是给定签名的基本项。许多序言 系统有一个谓词ground/1,您可以使用它来检查一个术语是否正确 实际上是地面。ground/1的定义是它不包含变量: ?- ground(empt

什么是二叉树的Herbrand宇宙、Herbrand基和Herbrand模型:

binary_tree(empty). 
binary_tree(tree(Left,Element,Right)) :- 
     binary_tree(Left), 
     binary_tree(Right). 

赫伯兰宇宙是给定签名的基本项。许多序言 系统有一个谓词ground/1,您可以使用它来检查一个术语是否正确 实际上是地面。ground/1的定义是它不包含变量:

?- ground(empty).
Yes
?- ground(tree(X,Y,Z)).
No
Herbrand基是给定签名的基本素数公式。A. 素数公式是谓词或等式。您也可以使用地面/1 要检查基本公式是否可靠,请执行以下操作:

?- ground(a = X).
No
?- ground(a = b).
Yes
?- ground(binary_tree(X)).
No
?- ground(binary_tree(tree(empty,n,empty))).
Yes
Herbrand模型是一种模型,其中宇宙是Herbrand宇宙。观看 作为图表,Herbrand模型是Herbrand基的子集。一个理论可能 没有、有一个或多个Herbrand模型

Horn子句始终具有Herbrand模型,尤其是完整的Herbrand模型 这就是赫伯兰基地本身,永远是一个模型。霍恩条款连同 克拉克方程理论也有一个独特的极小Herbrand模型。那是 Herbrand程序运算符的不动点。程序的某些属性 操作员允许声明可在阶段omega达到固定点

但是使用赫伯兰模型是很笨拙的,因为它们没有被分类。许多的 分类签名和相应的地面模型更方便。为了简单起见 为了避免在本例中出现许多排序逻辑,我们可以假设 程序读取,即树元素为peano数:

binary_tree(empty). 
binary_tree(tree(Left,Element,Right)) :- 
    binary_tree(Left),
    tree_element(Element), 
    binary_tree(Right).
tree_element(n).
tree_element(s(X)) :-
    tree_element(X).
然后,您的二叉树定义将导致以下重复 关系:

T_0 = {}
T_n+1 = {binary_tree(empty)} u {binary_tree(tree(s,e,t)) | 
       binary_tree(s) in T_n, 
       tree_element(e) in T_n, 
       binary_tree(t) in T_n } u 
        {tree_element(n)} u {tree_element(s(e)) |
       tree_element(e) in T_n} u T_n
唯一的最小Herbrand模型是T=union\n T\n,即 上述递推关系的最小不动点。看起来像 什么也没说


拜拜

也许因为单态元素,没有赫伯兰模型?我无法列举基本项……严格地说,在一阶逻辑中,宇宙必须是非空的。所以至少需要假设一个常数。那么,这里的赫伯兰宇宙是什么?HU={element}我说的对吗?不按签名empty/0,n/0,s/1,tree/3排序,我们有HU={empty,n,s(empty),s(n),tree(empty,empty,empty),tree(n,empty,empty),等等