Haskell 求解函数方程的最新方法是什么?

Haskell 求解函数方程的最新方法是什么?,haskell,functional-programming,equation,solver,lambda-calculus,Haskell,Functional Programming,Equation,Solver,Lambda 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 (λ

假设你想找到一个λ-演算程序,
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)))

是否有自动求解此类λ-演算方程的策略?这方面的最新进展是什么?

我不确定最新进展如何,但威廉·伯德(William E Byrd)在关系解释器(如)方面的工作允许进行此类程序合成

也可以看到他的一些关于搜索程序术语的简洁的东西。你的例子似乎很容易用这种方式表达。

一般来说,是不可判定的,所以你不能指望有一个通用的程序来找到这类方程的解


在寻找解决这些问题的方法方面,已经做了大量的工作,但我不知道有哪一个能给你的问题提供答案。以下答案总结了一些好的参考资料:

您在这里使用的平等概念是什么?*。请阅读
a=b
,因为
a
beta降低为
b
,呈强正态形式。虽然我觉得你的问题很有趣,但我认为这不适合堆栈溢出。如果你在问算法,你应该在[computer science.SE]上问。就目前情况而言,你的问题似乎不是关于编程,而是关于算法设计,而且范围太广,无法回答(对你的问题的明确答案应该是一本书或几套书)。我不知道在哪里发布,欢迎你提出书的建议。