谓词在类型论中归纳定义中的作用是什么?


16

我们经常要定义一个对象一种ü根据一些推理规则。这些规则表示生成函数F,当它是单调的,产生一个至少固定点。我们取是“归纳定义”的。此外,单调性使我们能够以“归纳原理”进行推理,以确定集合何时包含(即,何时属性普遍持有)。μF一种:=μF一种F一种一种

在勒柯克这相当于编写定义有明确的介绍条款。尽管此定义表示特定函数,但该函数不一定是单调的。因此,Coq使用一些语法检查来确保定义的“格式正确”。在某种程度上,它拒绝了在引入词类型中出现在负数位置的一世ñdüCŤ一世vË一种F一种

(如果到目前为止我的理解存在缺陷,请纠正我!)

首先,关于Coq的一些问题:

1)Coq中的语法检查是否仅用于确保的定义为谓语?(如果是这样,则难辨性是定义定义不正确的唯一方法吗?)还是检查单调性?(相应地,非单调性会杀死它吗?)一种

2)这种否定出现是否必然意味着的定义是强制性/非单调性的?还是Coq在这种情况下根本无法验证其定义是否正确?A一种一种

更一般地说:

3)归纳定义的谓词性与该定义的生成函数的单调性之间有什么关系?它们是同一枚硬币的两个面吗?他们无关吗?非正式地,哪一个更重要?

Answers:


14

不,在这种情况下,谓词性和单调性并不紧密相关。

Coq / Adga中的阳性检查可确保您大致取得单调事物的最小固定点。

以下是根据晶格和单调算符来思考归纳类型的方法。回想一下Knaster-Tarski定理,它说在一个完整的格,每个单调算子f L L都有一个最小固定点μ f 。接下来,我们可以将类型理论中的类型视为在可证明性下形成晶格。也就是说,输入小号低于Ť如果真相小号引起该的Ť。现在,我们要做的是对类型采用单调运算符F,并使用Knaster-Tarski得出对该运算符的最小不动点的解释大号F大号大号μF小号Ť小号ŤFμF

但是,类型理论中的类型不只是一个格子:它们构成一个类别。也就是说,给出两种牛逼,也有可能很多办法小号会低于牛逼,以及每个证据的一种方式è 小号牛逼。因此,类型运算符F也必须对这些证明做些明智的事情。单调性的适当概括是函数性。也就是说,我们希望F在类型上有一个运算符,并在证明上有一个作用,使得如果e S T,则F 小号Ť小号ŤË小号ŤFFË小号ŤF(e):F(S)F(T)

现在,函数的性质是由和和积(例如,如果G是类型的内泛函子,则F + GF × G(按点作用)也是类型的仿函数(假设我们在的代数中有和和积)但是,它并没有被函数空间保留,因为指数双功能符F G在其左参数中是相反的,因此,当您编写归纳类型定义时,您将定义一个函子以使其最小固定点。为了确保它确实是一个函子,您需要排除函数空间左侧出现递归参数的可能性,因此要进行阳性检查。FGF+GF×GFG

通常避免过分折衷(在系统F的意义上),因为它是一种迫使您在经典逻辑和集合论模型之间进行选择的原则。如果具有F样式索引,则不能将类型解释为经典集合论中的集合。(请参阅雷诺兹着名的“多态不是集合论”。)

从类别上说,F风格的泛泛性表示类型和术语的类别构成一个小的完整类别(即,hom和object都是集合,并且所有小图的限制都存在)。传统上,这会迫使类别成为摆放姿势。许多建构主义者之所以具有建设性,是因为他们希望他们的定理不仅限于经典逻辑,而且可以容纳在更多的系统中,因此,他们不想证明任何经典的错误。因此,它们对强制性多态性持谨慎态度。

但是,多态可以让您说出类型理论内部传统上“大”的许多条件,而积极性就是其中之一!如果可以产生多态项,则类型运算符是函数。F

Fmap:α,β.(αβ)(F(α)F(β))

看到这如何与功能有关?IMO,这在Coq中将是一个非常不错的选择,因为它将使您更加轻松地进行通用编程。积极性检查的句法性质是通用编程的一大障碍,我很乐意将经典公理的可能性换成更灵活的功能程序。

编辑:您要问的Prop和Set之间的区别的问题是由于以下事实引起的:Coq开发人员希望允许您以幼稚的集合论术语考虑Coq定理,而不必强迫您这样做。从技术上讲,他们将Prop和Set分开,然后根据Prop的计算内容禁止集合。

因此,您可以将Prop解释为ZFC中的真值,即布尔值true和false。在这个世界上,所有命题证明都是平等的,因此很显然,您不应该依赖于命题证明。因此,根据Prop证明的计算内容来禁止集合是完全明智的。此外,2元素布尔型格显然是一个完整的格,因此它应支持强制性索引,因为存在任意集值满足。对集合的可预测性限制是由于这样的事实(如上所​​述),即在经典的集合论模型中F样式索引是退化的。

Coq还有其他模型(它是建设性的逻辑!),但要点是,它永远不会证明古典数学家会困惑的任何事情。


谢谢您的回应,尼尔。您对“归纳定义”的定义似乎更符合“初始代数”方法:与单调函数(不说证明和计算内容)相反,我们关注函子(更广义的概念)。因此,Coq实际上不是在检查单调性,而是在检查其功能性。但是,如果不考虑谓语性,那么Coq为什么要区分对P r o p中定义的对象和S e tT y p e中定义的对象的正向检查?FPropSetType
Scott Kilpatrick

我不明白您的问题:Coq讨厌Inductive Blah : Prop := Foo : (Blah -> Blah) -> Blah其他东西吗?
Neel Krishnaswami

1
啊,也许我误将阳性检查与另一项与隐性有关的检查了。考虑Inductive prop : Prop := prop_intro : Prop -> prop.Inductive set : Set := set_intro: Set -> set.。如果谓语性与归纳定义无关,为什么要区分呢?
Scott Kilpatrick

@ScottKilpatrick:的确是另一种检查,关于(im)谓语。强制性强Sigma类型允许对Girard的悖论进行编码,因此,存储某个宇宙成员的数据类型Type@{i}至少必须存在于更大的宇宙中Type@{i+1}
布莱索拉德(Blaisorblade)

6

归纳定义和可折现性之间有着非常深的联系,但是我的理解是,在您所谈论的(im)可折现性方面并没有特别的相关性,并且该测试纯粹是为了确保单调性,因此定点理论可以应用,即归纳原理是明确定义的。(我愿意对此进行纠正。)

Coquand 在本次演讲中探讨了隐含性和归纳定义之间的关系。可以追溯到G. Takeuti从50年代得出的一些结论,即强制性定义可以简化为归纳性定义。这本书

  • 分析的强制性子系统的证明理论-物理科学专着和教科书2作者:W。Buchholz,K。Schutte

如果可以帮助您,请对该主题进行很好的分析。这些幻灯片提供了概述。


4

仅仅为了完成尼尔的出色解释,泛泛性就具有“柔和”的含义:通过使用对自身的引用来定义集合或集合。从这个意义上说:

Inductive Lam : Set :=
| Var : Nat -> Lam
| App : Lam -> Lam -> Lam
| Abs : (Lam -> Lam) -> Lam

是强制性定义,因为它定义了归纳类型,使用函数空间(Lam-> Lam)的Lam引用了集合本身。在这种情况下,不可预测性是有害的:可以使用Cantor定理证明False。实际上,这与不可抗拒性是同一品牌,它剥夺了朴素的集合论作为数学的基础。因此,在Coq中不允许这样做。另一种非直谓性的形式不允许的,因为大家都知道:

Definition Unit : Prop := forall X:Prop, X -> X

Unit作为命题的定义引用了它是其成员的所有命题的集合。但是,出于某种原因,我对这种隐晦的了解并不有害,因为它在ZFC中以无界理解的形式存在(众所周知)。

总而言之,定义中归纳类型的否定出现是一种强制性形式,但在将CoC称为强制性框架时通常不是这种形式。


我了解您在说ZFC具有无限的理解力。但这听起来是错误的-math.stackexchange.com/q/24507/79293。Chlipala -impredicative-set在他的书adam.chlipala.net/cpdt/html/Universes.html中讨论时对此进行了讨论,并提到了消除的一些限制,但这对我也很模糊。
布莱布莱德(Blaisorblade)

1
一种XX

啊,谢谢!我还看到了上面的阻抗如何与ZFC中的阻抗匹配(尽管我使用的映射可能太幼稚了)。您可以在答案中添加链接吗?
布莱布莱德(Blaisorblade)2014年

不幸的是,这对于Google来说似乎很难(或者我不知道正确的关键字)。更糟糕的是,Wikipedia和nLab都将“受限理解”(在ZFC中,en.wikipedia.org / wiki / Axiom_schema_of_specification )和“受限/有界分离”(链接到的)区分开来。参见ncatlab.org/nlab/show/axiom+of+separation。但是所有这些术语看起来都像是一个误会,等待发生–我通常会像您和作者mathforum.org/kb/message.jspa?messageID=4492130一样,认为“分离〜理解” 也是如此。
Blaisorblade 2014年

这类讨论的最佳关键字也许是“构造集理论”,例如参见Wikipedia或Rathjen的这篇非常不错的文章。
科迪2014年
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.