有人可以解释一下在没有以下类型的自由变量的情况下找到lambda-terme的过程吗?我对如何解决这个问题有所了解,但我不确定这是正确的方法。
a)p->(q-> q)
b)(p-> q) - >((q-> r) - >(p-> r))
c)(p->(q->(q-> r))) - >(p->(q-> r))
答案 0 :(得分:0)
p -> (q -> q)
我们需要点p
,
\p -> …
并产生一个q -> q
,所以我们重复一次,取q,我们唯一可以做的就是返回那个q
\p -> \q -> q
我们可以添加parens以强调:
\p -> (\q -> q)
我们再说一遍。我们的术语从p
到q
的函数开始:
\p2q -> …
它必须返回((q -> r) -> (p -> r))
类型的函数,因此我们首先返回一些函数从q
返回r
\p2q -> \q2r -> …
我们现在需要它来生成r
给定p
。只有很多方法可以拼凑出可用的部分:
\p2q -> \q2r -> \p -> q2r (p2q p)
再次,用重点括号:
\p2q -> (\q2r -> (\p -> q2r (p2q p)))
(p -> (q -> (q -> r))) -> (p -> (q -> r))
首先,我们的术语需要(p -> (q -> (q -> r)))
:
\p2q2q2r -> …
接下来,我们必须生成(p -> (q -> r))
类型的字词,因此我们将其设为p
,然后选择q
:
\p2q2q2r -> \p -> \q -> …
现在生成r
只是将我们拥有的东西拼凑起来
\p2q2q2r -> \p -> \q -> ((p2q2q2r p) q) q
希望帮助你完成家庭作业;)