Haskell 有可能推导出教堂编码的Nat的归纳法吗?

Haskell 有可能推导出教堂编码的Nat的归纳法吗?,haskell,functional-programming,coq,agda,idris,Haskell,Functional Programming,Coq,Agda,Idris,我只是想知道是否有可能在Idris、Agda、Coq和类似的基础上推导出church编码的Nat类型的归纳法。请注意,这与在CoC上执行这项操作(已知这是不可能的)是不同的,因为我们在CoC上有更多的表现力(例如,我们能够提取Sigma的第二个元素) 下面是一个关于Idris的拙劣证明草图(有很多语法问题): 我通过构建一个Sigma类型,从CZ**z一直到CS(CS…CZ)**s(s…z)。问题是,虽然我知道它的第一个元素将等于n,但我不确定如何证明它。我认为没有正式的证据证明这是不可能的,但

我只是想知道是否有可能在Idris、Agda、Coq和类似的基础上推导出church编码的Nat类型的归纳法。请注意,这与在CoC上执行这项操作(已知这是不可能的)是不同的,因为我们在CoC上有更多的表现力(例如,我们能够提取Sigma的第二个元素)

下面是一个关于Idris的拙劣证明草图(有很多语法问题):


我通过构建一个Sigma类型,从
CZ**z
一直到
CS(CS…CZ)**s(s…z)
。问题是,虽然我知道它的第一个元素将等于
n
,但我不确定如何证明它。

我认为没有正式的证据证明这是不可能的,但一般认为这是不可能的。例如,参见。

这里有一个关于同伦类型理论的问题。我在这里也有点深不可测,所以对这一切都要谨慎对待

我已经证明了这一点。此外,我们知道(在霍特)。也就是说,使用LEM,您可以定义
CN
s,例如

foo : CN
foo T z s = if T is Bool then not z else z

这不是一个合适的教堂,自然也不会包含在归纳原则中。因为被排除的middle和HoTT与你所问的类型理论(据我所知)是一致的,因此不会有关于
ind

的证明,这是已知的不可证明的,因为有一些构造演算模型,其中自然数的非指示性编码不是初始的(即不满足归纳法)。
正如菲尔·瓦德勒(Phil Wadler)很久以前所展示的那样,它确实源自关系参数。因此,将瓦德勒与内部关系参数阿拉·穆林(ala Moulin)和伯纳德(Bernardy)相结合可能会起到作用。

但据我所知,亚伦在CoC(即没有归纳类型的语言,只有lambda编码的值)的上下文中对这一不可能性进行了辩论伊德里斯和类似的人都有这些,所以很自然地会想,如果能够使用归纳类型,是否可以证明教堂编码的对应物的归纳。啊,很好的结果。你认为它可以延伸,至少在一个方向上。我的意思是,考虑到UA和参数,你会认为有可能证明任何(?)归纳类型与其Church编码是同构的?@chi我怀疑该技术至少扩展到了常规归纳类型(尽管由于使用生成的自由定理,证明它通常看起来相当具有挑战性)你声称
CN
同构于
Nat
CN
的自由定理成立时。我们知道
CN
的自由定理适用于CoC,但不适用于Coq/Agda。因此,我们不能推导CoC上的
CN
的归纳,但可以假设
CN
的归纳(没有LEM)不破坏一致性。对吗?@MaiaVictor,听起来对我来说是对的,尽管我会说“我们‘知道’CN的自由定理适用于CoC,但它不能从理论内部证明”。(这里的“知道它适用”是用证明理论的所有常见警告来理解的)我不确定我是否完全理解你的意思。如果有CoC模型,其中Nat的非指示性编码不是初始的,那么这意味着假设归纳会导致不一致性。但是你声称归纳来自关系参数,它保持CoC…那么,它不应该导致不一致性。我想我“我误解了你的观点,因为它似乎是矛盾的。@CoC的主参数性(没有额外的公理)是一个元理论属性,而不是一个内部定理。添加公理(如LEM)会使参数性失败。
foo : CN
foo T z s = if T is Bool then not z else z