什么是最先进的求解函数方程的方法?

时间:2015-09-21 04:05:11

标签: haskell functional-programming equation solver lambda-calculus

假设您想要找到满足以下等式的λ-calculus程序T

(T (λ f x . x))            = (λ a t . a)
(T (λ f x . (f x)))        = (λ a t . (t a))
(T (λ f x . (f (f x))))    = (λ a b t . (t a b))
(T (λ f x . (f (f (f x)))) = (λ a b c t . (t a b c))

在这种情况下,我手动找到了这个解决方案:

T = (λ t . (t (λ b c d . (b (λ e . (c e d)))) (λ b . b) (λ b . b)))

有没有自动解决这种λ演算方程的策略?这个主题的现状是什么?

2 个答案:

答案 0 :(得分:9)

我不确定最先进的技术,但William E Byrd关于关系翻译的工作(例如this paper)允许这种程序合成。

另见他的PolyConf talk搜索程序条款的一些简洁内容。你的例子似乎很容易以这种方式表达。

答案 1 :(得分:3)

一般来说,higher order unification是不可判定的,所以你不可能希望找到解决这些方程的一般程序。

在寻找解决这些问题的方法方面已经做了大量的工作,但我不知道有什么可以解决你的特定问题。本答案总结了一些很好的参考资料:Higher-order unification