通过转型统一

时间:2012-03-12 20:28:13

标签: f# unification

我正在F#中编写unification算法,以便使用AST "Term Rewriting and All That"转换,使用WoldCat({{3}})来自Franz Baader和Tobias Nipkow。对于第4.6节“通过变换进行统一”,这个例子的数学理论太多了,并不像我希望的那样清晰。

有人可以提供或指出使用转换的更简单的示例:

删除,分解,定位,消除。

1 个答案:

答案 0 :(得分:3)

删除:t = t毫无意义,可以从方程组中删除。

1 =? 1 -> nil

Orient:我们想要x =? t形式的所有方程,所以以t =? x的形式翻转任何方程式。

2 =? x1 -> x1 =? 2

消除:给定x =? t,更改所有其他公式,将x的所有实例替换为t

x1 + x2 = 7, x2 = 5 -> x1 + 5 = 7, x2 = 5

分解:我们需要采用任何函数并消除它们以获得x =? t形式的方程式。请注意,此过程在技术上一次只能删除一个函数。

x1 + 5 = 7 -> x1 = 2
2 * (x1 + x2) = 14 -> x1 + x2 = 7

希望这有帮助。