为什么prolog使用最通用的统一者而不是简单的统一者

时间:2018-01-07 08:11:36

标签: prolog

Prolog使用最通用的统一者而不仅仅是统一者,为什么会这样?

如果我没有错,那么我认为,因为Prolog是基于回溯的,如果我们不使用大多数通用的统一者,那么我们会错过变量统一的某些组合吗?

1 个答案:

答案 0 :(得分:7)

最常用的统一者与统一者之间的差异显示结果术语何时仍包含变量。考虑大多数一般统一问题:

?- X = Y.

具体的统一者将是:

X = a, Y = a.

但也

X = 23, Y = 23.

等等。

所以有很多这样的可能结果。但是,我们想要所有这些。这是最通用的统一者所做的事情:

X = Y.

Y = X.

仍然有两个,但这种歧义被忽略添加"直到重命名(变量)"如果背景需要它。