我正在学习Prolog的过程中,正在努力识别最通用的统一化,以及通过以下解决步骤来获得由此产生的新的目标术语列表。下面是我正在做的工作的一个例子。理解这里发生的事情的正确方式是什么?
resolution([append([],B,B)], [append(X,Y, [1,2])]
发布于 2020-11-12 15:13:46
IIRC MGU是使两个项相同的变量的替换。
由于术语是递归的数据结构,因此unification的直观算法可以在绑定变量时使用stack of pairs访问术语。
在您的示例中,解析采用2个列表,因此开始将它们一起推送到堆栈中。现在迭代,弹出最上面的术语对并应用basic steps,直到堆栈变为空-然后统一成功-或者不能-然后失败。
关键的观察结果是,堆栈中的每一对元素之间必须具有一致性。当然,逻辑变量在游戏中扮演着基本的角色。
https://stackoverflow.com/questions/64797932
复制相似问题