我在网上找到了Mike Gordon的功能编程简介 Notes,我正在努力解决这个问题。在第9页上有这个问题:
Find an example to show that if V1 = V2 , then even if V2 is not free in E1,
it is not necessarily the case that:
(λ V1 V2 . E ) E1 E2 = E [E1/V1][E2/V2]
我猜我可以说因为V1和V2是相同的,所以我们可以重做它:
(λ V2 V1 . E ) E1 E2
因此说
(λ V1 . E[E1/V2] ) E2
给出了在E1中V2不可用的规定。但后来我们不能说
E[E1/V2][E2/V1]
因为E2必然会有V1免费。或者我错过了什么?
答案 0 :(得分:1)
这不是一个反例。除此之外,我不明白你在最后一步的推理 - 为什么V1必须在E2中自由发生?除此之外,您最后一步中的E[E1/V2][E2/V1]
不是声明。 saing是什么意思“我们不能说E[E1/V2][E2/V1]
?”
您应该尝试为此假设构建一个显式反例,即选择V1=V2=x
(由于α转换,它确实无关紧要),然后找到 explicit < / em>表达式E
,E1
,E2
使得它们满足假设的假设(V2
在E1
中不可用),但表达式{ {1}}不等于`E[E1/V2][E2/V2]
的缩减。
既然你说你想自己做这件事,我不会给你解决方案,但可以随意提出更多指示。