为什么不可能为教堂数字声明归纳原理


17

想象一下,我们在依存类型的lambda演算中将自然数定义为教堂数字。可以通过以下方式定义它们:

SimpleNat = (R : Set) → R → (R → R) → R

zero : SimpleNat
zero = λ R z _ → z

suc : SimpleNat → SimpleNat
suc sn = λ R z s → s (sn R z s)

SimpleNatRec : (R : Set) → R → (R → R) → SimpleNat → R
SimpleNatRec R z s sn = sn R z s

但是,似乎我们无法使用以下归纳原理类型来定义教堂数字:

NatInd : (C : Nat -> Set) -> (C zero) -> ((n : Nat) -> C n -> C (suc n)) -> (n : Nat) -> (C n)

为什么会这样呢?我如何证明这一点?似乎问题在于为Nat定义了一个类型,该类型变得递归。是否可以修改lambda演算以允许这样做?

Answers:


20

您所提出的问题很有趣且众所周知。您正在使用自然数的所谓命令式编码。让我解释一下背景。

给定一个类型构造,我们可能有兴趣在“最小”类型的一个满足一个牛逼。就范畴论而言,T是一个函子,A是初始的T代数。例如,如果T X = 1 + X,A对应于自然数。如果T X = 1 +ŤŤÿpËŤÿpË一种一种Ť一种Ť一种ŤŤX=1个+X一种 A是有限二叉树的类型。ŤX=1个+X×X一种

历史悠久的想法是,初始代数的类型为 A = X T y p eT X X X (您对相关产品使用的是Agda表示法,但是我使用的是更传统的数学表示法。)为什么会这样呢?好吧,A本质上是对初始T-代数的递归原理进行编码的:给定具有结构同构f的任何T-代数Y T YŤ

一种=XŤÿpËŤXXX
一种ŤŤÿ,我们得到一个代数同态 φ Ÿ φ = FŤÿÿϕ一种ÿ 因此,我们可以肯定地看到 A初始的。首先,我们必须知道 ϕ是唯一的。没有进一步的假设,情况并非如此,但是细节是技术性和令人讨厌的,需要阅读一些背景材料。例如,如果我们可以证明一个令人满意的参数定理,那么我们就赢了,但是还有其他方法(例如,对 A的定义进行推论,并假设 K-公理和函数可扩展性)。
ϕ一种=一种ÿF
一种ϕ一种ķ

ŤX=1个+X

ñ一种Ť=XŤÿpË1个+XXX=XŤÿpËX×XXX=XŤÿpËXXXX

对您的问题的技术解答是:存在类型理论模型,其中类型SimpleNat包含与数字不对应的奇特元素,而且这些元素破坏了归纳原理。SimpleNat这些模型中的类型太大,只是一个弱的初始代数。


8
我同意答案很好,但是这里有一些参考可能有用:Geuvers关于归纳的不可导性的论文以及Neel K's和Derek Dreyer关于从参量获得(一些)归纳的论文。但是我不知道有一篇文章可以全面探讨这种关系。
科迪

我在这方面的参考文献不太强,谢谢@cody!
安德烈·鲍尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.