我正在F#中编写unification算法,以便使用AST "Term Rewriting and All That"转换,使用WoldCat({{3}})来自Franz Baader和Tobias Nipkow。对于第4.6节“通过变换进行统一”,这个例子的数学理论太多了,并不像我希望的那样清晰。
有人可以提供或指出使用转换的更简单的示例:
删除,分解,定位,消除。
答案 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
希望这有帮助。