我可以有一个“依赖的副产品类型”吗?


14

我正在阅读HoTT的书,并且对第一章中的内容有一个(可能很幼稚)问题。

本章介绍函数类型 ,然后通过使依赖于来对其进行概括 这就是所谓的从属函数类型B x A B A U

f:AB
Bx:A
B:AU,g:x:AB(x)

接下来,本章介绍产品类型 ,然后通过使依赖于归纳产品类型 ,这称为依赖对类型B x A B A U

f:A×B
Bx:A
B:AU,g:x:AB(x)

我绝对可以在这里看到一个模式。

接下来,本章将介绍副产品类型 和... combobreaker ...没有讨论这种类型的依赖版本。

f:A+B

对此是否有一些基本限制,或者与本书的主题无关?无论如何,有人可以帮助我了解功能和产品类型的原因吗?是什么让这两个如此特别,以至于它们被泛化为依赖类型,然后用于构建其他所有内容?

Answers:


18

相依和是笛卡尔乘积副乘积的共同概括。碰巧的是,HoTT本书通过泛化引入依赖和,因为这不需要首先定义布尔类型。A×B A+BA×B

副产品是依存和的特例。给定类型和,请考虑类型族由和定义的。从属总和等效于。顺便说一下,您还可以将作为从属产品。ABP:boolUP(false)=AP(true)=Bb:boolP(b)A+BA×Bb:boolP(b)

您问产品和功能类型有何特别之处。和是“必需的”的原因有很多。从逻辑上讲,它们是必需的,因为它们通过命题即类型对应关系对应于和(但这仅将问题转移到“为什么和必需的?”)。就类别论而言,和是必需的,因为它们是替换的左右伴随。问一个更具体的问题,如果您想了解更多。Π ∀ ∀ Σ Π


你好。请问您如何显示“和分别与替换相邻”。将使用什么类别?Π
ChoMedit

我猜想替换就像是对角函子,充当其索引类别。然后,也许假定的类别是类型的类别。A
ChoMedit

1

我将在软件工程上进行更多讨论。

您是否在谈论一种协同产品类型,其后一个构造函数可以引用先前的构造函数(看起来与后者的字段可以引用先前的构造的产品非常相似)?引入HIT之后(在2.6.0版中),这在Agda中是可能的:

-- Auxiliary definition: Nat
data Nat : Set where
  zero : Nat
  succ : Nat -> Nat

-- The HIT I was talking about
data Int : Set where
  positive : Nat -> Int
  negative : Nat -> Int
  -- Note this constructor uses `positive` and `negative`.
  zeroPath : positive zero ≡ negative zero

通过遵循本文,如果您的类型检查器检查使用图“(26)”中显示的语法定义的定义,我相信支持“依赖的副产品”非常简单。

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.