假设您想要找到满足以下等式的λ-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)))
有没有自动解决这种λ演算方程的策略?这个主题的现状是什么?
答案 0 :(得分:9)
我不确定最先进的技术,但William E Byrd关于关系翻译的工作(例如this paper)允许这种程序合成。
另见他的PolyConf talk搜索程序条款的一些简洁内容。你的例子似乎很容易以这种方式表达。
答案 1 :(得分:3)
一般来说,higher order unification是不可判定的,所以你不可能希望找到解决这些方程的一般程序。
在寻找解决这些问题的方法方面已经做了大量的工作,但我不知道有什么可以解决你的特定问题。本答案总结了一些很好的参考资料:Higher-order unification