Logic 为什么lambda演算中的变量集通常被定义为可数无限?

Logic 为什么lambda演算中的变量集通常被定义为可数无限?,logic,lambda-calculus,formal-languages,formal-methods,Logic,Lambda Calculus,Formal Languages,Formal Methods,当阅读lambda演算的形式描述时,变量集似乎总是被定义为可数无限。为什么这个集合不能是有限的似乎很清楚;将变量集定义为有限变量将以不可接受的方式限制术语构造。然而,为什么不允许集合是不可数无限的呢 目前,对于这个问题,我得到的最合理的答案是,选择一组可数无限的变量意味着我们可能会枚举变量,从而使如何选择新变量的描述(比如alpha重写)变得自然 我正在寻找这个问题的明确答案。这个集合需要可数的原因很简单。想象一下,你们有一个装满变量的袋子。除非集合是可数的,否则无法计算此包中的变量数 请注意,

当阅读lambda演算的形式描述时,变量集似乎总是被定义为可数无限。为什么这个集合不能是有限的似乎很清楚;将变量集定义为有限变量将以不可接受的方式限制术语构造。然而,为什么不允许集合是不可数无限的呢

目前,对于这个问题,我得到的最合理的答案是,选择一组可数无限的变量意味着我们可能会枚举变量,从而使如何选择新变量的描述(比如alpha重写)变得自然


我正在寻找这个问题的明确答案。

这个集合需要可数的原因很简单。想象一下,你们有一个装满变量的袋子。除非集合是可数的,否则无法计算此包中的变量数


请注意,袋子与袋子是同构的。

数学和逻辑中的大多数定义和结构仅包括达到预期目的所需的最小装置。正如您所注意到的,可能需要的变量数量不止有限。但既然只需要一个可数的无穷大,为什么还要允许更多呢?

不可数的事物集合似乎通常都有。我不确定所有不可数集合是否都具有此属性,但我强烈怀疑它们具有此属性

因此,您甚至无法以任何合理的方式写出这些元素的名称。例如,与pi等数字不同,您不能有一个程序写出超过某个有限位数的数字。可计算实数的集合是可数无限的,因此您得到的“附加”实数是不可计算的


我也不相信你能从这个数不清的集合中得到任何东西。因此,您将引入不可计算的名称而没有任何好处(据我所知)。

具有可计数的变量数量,并且它们之间有一个可计算的双射ℕ, 让我们在∧和之间创建一个双射ℕ:

  • #v=⟨0,f(v)⟩, 其中f是可计算的双射