2

关于本科水平计算机科学的主题。
在复习该理论时,我遇到了一个令人烦恼的问题,即关于(0 m)lambda 演算中教堂数字的取幂。
据我所知,(0 m)当减少结果时λx. x,这不是1 (= m^0)预期的,甚至不在教堂的数字内。

我在由教堂编码编码的 lambda 演算中采用自然数的 n,通常如下所示

n := λfx. (f^n x) = (f ... (f x))

很多文献都这么说

EXP(m, n) := λmn. (n m)

返回m^n给定mn教堂的数字,我知道该功能在大多数情况下都能正确响应。但情况并非如此,n = 0因为

(0 m) = ((λfx. x) m) → λx. x

在数学中,1是自然数的单位元,被视为一个乘法群,即对于中x * 1 = 1 * x的任何一个。因此,如果我以以下形式设置功能xNEXP

EXP’(m, n) := λmn. (n (MUL m) 1)

因为MUL(m, n) = m * n,这似乎工作正常,与数学m^0中经常定义的事实相吻合。1在超操作的意义上,这似乎也很简单。

超操作: https ://en.m.wikipedia.org/wiki/Hyperoperation

我预计会有一些批评,比如m^0不一定1是数学,而死板的数学家会说这一切都取决于定义。但是,采用前一种风格是否有任何合乎逻辑的支持EXP(m, n)?当 时它不会返回教堂的数字n = 0,所以对我来说似乎仍然定义不明确。

问题是

  1. “为什么定义EXP(m, n) := λmn. (n m)通常被接受,m^n即使它的输出可以是非教堂的数字,用于教堂的数字输入?”</p>

  2. “你知道任何轻微的修正,EXP因此该功能适用​​于所有教堂的数字输入吗?”</p>

  3. “对我的批评有任何问题或误解(0 m)。”</p>

另外,作为函数组合的单位元的(0 m)to be的结果是否有逻辑背景λx. x,而不是 1?这只是巧合还是我想得太认真了?

欢迎任何想法。

如有必要,我想遵循与教堂数字相关的代数的维基百科定义。

教会的编码:https ://en.m.wikipedia.org/wiki/Church_encoding

谢谢。

4

1 回答 1

2

一个简单的误解:你说“ λx. x,这不是1”,但λx. x确实是教堂数字1。您可能知道 Church 数字1λfx. f x,但简单的 eta-reduction 和 alpha-conversion 表明这等价于λx. x

于 2020-01-11T05:48:58.530 回答