路径归纳是否具有建设性?


17

我正在阅读HoTT的书,并且很难理解路径归纳法。

当我查看1.12.1节中的类型时:

ind=A:C:x,y:A(x=Ay)U((x:AC(x,x,reflx))x,y:Ap:x=AyC(x,y,p)),
对于理解这意味着什么我没有任何问题(我只是从内存中写出类型,以进行检查)。

下一个问题是我的问题:

with the equalityind=A(C,c,x,x,reflx):≡c(x)
我的第一印象是,这最后一个表达式不限定所得到的函数
f:x,y:Ap:x=AyC(x,y,p),
但仅陈述其性质

这与先前的归纳原理indA×BindA+B示例形成对比indN- 为这些元素定义了方程式 -我们确实知道在给定前提的情况下如何构造结果函数。这与本章所提到的类型理论的“建设性”是一致的。

回到ind=A,我对它(未定义)的事实感到怀疑。指出元素f 刚刚存在似乎与本章的其余部分格格不入。实际上,第1.12.1节似乎强调我的印象是错误的,我们实际上已经定义了

... 函数 f:x,y:Ap:x=AyC(x,y,p),由下式定义
从路径感应c:x:AC(x,x,reflx),而且
满足 ...f(x,x,reflx):≡c(x)

这使我完全困惑,但是我觉得这一点对于所有进一步的发展都非常重要。那么,应该选择的两个读数中的哪个?或者,也许我错过了一些重要的微妙之处,答案是“都不”? ind=A


顺便说一句,这实际上不是特定于HoTT的问题,而是更通用的“依赖类型”问题。
科迪2014年

Answers:


12

错觉是计算规则“定义”或“构造”了它们所谈论的对象。您正确地观察到的方程式并未“定义”它,但是未能观察到在其他情况下也是如此。让我们考虑单元类型1的归纳原理,这似乎特别明显是“确定的”。根据HOTT书的第1.5节,我们有 Ñ d 1Π Ç 1 Ť ý p È Ç Π X 1个 Pind=A1 与等式 i n d 1C c = c 这种“定义”或“构造” i n d 1是否就其毫无疑问地对 i n d 1的 “作用”表示怀疑?例如,设置 Ç X = ñ一个= 42,并考虑我们能说 ñ d 1ç 42

ind1:C:1TypeC()x:1P(x)
ind1(C,c,)=c.
ind1ind1C(x)=Na=42
ind1(C,42,e)
对于类型1的给定表达式。您首先想到的是我们可以将其减少到42,因为“ 1的唯一元素”。但是相当精确的,该方程为Ñ ð 1仅适用如果我们显示Ë ≡ ,这是不可能的,当Ë是可变的,例如。我们可以尝试回避这一点,并说我们只对具有封闭项的计算感兴趣,因此应将e封闭。e1421ind1eee

是否不是类型1的每个闭项在判断上都等于?实际上,这取决于令人讨厌的细节和标准化的复杂证明。对于HoTT,答案是“否”,因为e可能包含Univalence公理的实例,并且尚不清楚该怎么做(这是HoTT中未解决问题)。e1e

我们可以通过考虑确实具有良好特性的类型理论的版本来规避问题,以使类型每个闭合项在判断上都等于。在那种情况下,可以说我们确实知道如何使用i n d 1进行计算,但是:1ind1

  1. 身份类型也一样,因为身份类型的每个封闭项在判断上都等于某个,因此,i n d = A的方程式告诉我们如何计算。refl(a)ind=A

  2. 仅仅因为我们知道如何使用类型的闭项进行计算,并不意味着我们实际上定义了任何东西,因为类型比闭项要多,正如我试图解释的那样。

例如,Martin-Löf类型理论(没有身份类型)可以在理论上以如下方式解释:包含两个元素,其中to对应于对应于非终止。las,由于无法在类型理论中写下非终止表达式,因此无法命名。因此,对于公式ñ ð 1没有告诉我们如何计算上(这两个明显的选择是“急切”和“懒惰”)。1ind1

用软件工程术语来说,我会说规范实现之间存在混淆。身份类型的HoTT公理是一种规范。等式没有告诉我们如何来计算与,或如何构建Ñ d = Ç,而是然而,那ñind=C(C,c,x,x,refl(x))c(x)ind=C是“实现的”,我们要求它满足方程式。它是是否有这样的单独的问题Ñ d = Ç可以以建设性的方式来获得。ind=Cind=C

最后,我对您如何使用“建设性”一词有些厌倦。似乎您认为“建设性”与“定义”相同。在这种解释下,停止oracle是具有建设性的,因为它的行为是由我们对其施加的要求定义的(即,根据给定的机器是否停止,它的输出为1或0)。完全有可能描述仅存在于非构造性环境中的对象。相反,完全有可能以建设性的方式谈论属性和其他实际无法计算的事物。这里是一个:所述关系通过所定义 ħ Ñ d HN×{0,1} 是建设性的,即存在没有错从一个建设性点这个定义。碰巧的是建设性的一个不能表明 ħ是一个总的关系,并且其特性映射 χ ħÑ × { 0 1 } P [R ö p 通过不因子 b ö ö

H(n,d)(d=1n-th machine halts)(d=0n-th machine diverges)
HχH:N×{0,1}Propbool,因此我们无法“计算”其值。

附录:您的问题的标题是“路径归纳是否具有建设性?” 在清除了“构造性”和“定义性”之间的区别之后,我们可以回答这个问题。是的,在某些情况下,路径归纳是有益的:

  1. 如果我们限制类型理论而没有Univalence,以便可以显示强归一化,则路径归纳和其他所有内容都是有建设性的,因为存在执行归一化过程的算法。

  2. 有类型理论的可实现性模型,这些模型解释了类型理论中的每个封闭项如何对应于图灵机。但是,这些模型满足了Streicher的Axiom K,后者排除了Univalence。

  3. 将类型理论(同样是不单价的)转化为构造性集合论CZF。这再次验证了Streicher的公理K。

  4. 可实现性模型中有一个类群模型,可让我们在没有 Streicher's K的情况下解释类型理论。这是Steve Awodey和我本人的初步工作。

我们确实需要理清Univalence的建设性地位。


我相信这个答案现在(部分)已经过时了
WorldSEnder

确实,与此同时,立方型理论给出了一个肯定的答案:存在一个单价型理论的建设性模型。
安德烈·鲍尔

7

我不是HoTT人,但是我会花两分钱。

fA:x,y:Ap:x=AyC(x,y,p)
x,y:Ap:x=AyAx,y
refla:a=Aa, for any a:一种
p[RËF一种 对于一些 一种一种,但这将迫使 X=一种=ÿ。因此,如果我们有一个元素CXX[RËFX 对于任何 X一种; 即如果我们有一个功能
baseC:x:AC(x,x,reflx)
(for our specific C), then our function fA can be defined as follows:
fA(x,y,p):=baseC(x,x,p)
.

Getting rid of the subscripts leads to the general inductive definition.

Hope that helps!


PS. I'm no HoTT guy, so I'm assuming `Axiom K'. More precisely, I'm assuming that an element e of type E must be the result of repeated applications of constructor of E. As far as I know, HoTT, probably chapter 2 onwards, throws away this notion ... and that makes absolutely no sense to me.


1
Perhaps you can make some sense of it, or at least get worried about your current intuitions by checking out math.andrej.com/2013/08/28/the-elements-of-an-inductive-type where I try to explain why it is harmful to think that the closed terms of a type are all there is to a type.
Andrej Bauer 2014年

2
By the way, you need not asssume Axiom K. For your answer to make sense, you need to know that every closed term of an identity type normalizes to refl. This has nothing to do with Axiom K, as such a normalization property does not prove axiom K, nor does it follow from axiom K.
Andrej Bauer

3

我是HoTT 的业余爱好者,所以我将尽力补充Moses已经不错的答案。我来拿一种×举个例子。马丁·洛夫(Martin-Löf)概述了建构型理论的基本原理是一种× 被描述为在构造函数的图像中:

p一种一世[R  一种一种×
这种理念使我们能够定义消除:构建功能F 出来一种×,足以描述其对图像的作用p一种一世[R

但是由于 p一种一世[R 是一个构造函数(特别是内射),这意味着要构建一个函数 F一种×C,就足以描述它对中的一对元素的作用 一种,所以

F一种C
足以描述这样的 F。总之,有一种规范的方法可以定义函数一种×,并且可以将其封装为
一种C一种×C
但这正是 一世ñd一种×

但这只是故事的一半:如果这个新建造的 F应用于给 p一种一世[R一种b?好吧F 应该同意其定义功能 F,即

Fp一种一世[R一种b := F 一种 b
一世ñd一种× F p一种一世[R一种b := F 一种 b
并且这应该在定义上(或在计算上)成立,这意味着两者在所有情况下都应完全可互换(这与= 在HoTT中)。

因此,您将看到使用给定构造函数的归纳类型的消除器的定义分为两个步骤:

  1. 一种存在原理,它描述了...的类型。一世ñd

  2. 一个相干性原则,其限定的计算行为一世ñd。在类别理论中,这在某种意义上将对应于消除器的唯一性


让我争辩说,对于 =一种类型。我们要建立,给定Xÿ一种pX=ÿ,是 C(为了简化,我们忘记了依赖性)。要做到这一点,我们需要承担的是p 是使用类型的构造函数构建的 X=ÿ只能是 [RËFž 对于一些 ž。这意味着要赋予功能

FΠXÿ一种X=ÿC
给出一个功能就足够了
FΠž一种C
[RËFž (再次,忘记了 C)。

现在,连贯性原则怎么说?好吧,如果将其应用于已知的构造函数,F 应该表现得像 F, 意思是

F ž ž [RËFž:=F ž

但这正是您所拥有的!赋予我们消除器存在和连贯性的同一原则一种× 给我们消除者的存在和连贯性 =一种

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.