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

Kha*_*aab 3 prolog

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

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

fal*_*lse 7

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

?- X = Y.
Run Code Online (Sandbox Code Playgroud)

具体的统一者是:

X = a, Y = a.
Run Code Online (Sandbox Code Playgroud)

但是也

X = 23, Y = 23.
Run Code Online (Sandbox Code Playgroud)

等等.

所以有很多这样的可能结果.但是,我们希望得到所有这些.这就是最通用的统一者所做的事情:

X = Y.
Run Code Online (Sandbox Code Playgroud)

要么

Y = X.
Run Code Online (Sandbox Code Playgroud)

它们中仍有两个,但如果上下文需要,可以忽略这种歧义,添加"重命名(变量)".