[英]Type Hierarchy in Agda
我试图找出类型层次结构如何在Agda中工作。
假设我定义了一个集合类型X:
X : Set
然后继续构建归纳型
data Y : X -> Set where
什么是X -> Set
? 是设置还是类型?
谢谢!
好吧,为什么不问阿格达呢? 我将为Emacs使用出色的Agda模式。 我们从:
module Hierarchy where
postulate
X : Set
data Y : X → Set where
-- empty
我们必须使用Cc Cl
加载文件; 这个typechecks文件,转?
进入洞,语法高亮等等。
现在,有一个命令“推断(演绎)类型”可以通过Cc Cd
,所以让我们使用:
> C-c C-d
Expression:
> Y
X → Set
对,这是有道理的。 我们定义了Y : X → Set
,所以它应该不足为奇。 我们再问一遍:
> C-c C-d
Expression:
> X → Set
Set₁
所以,你有它: Y : X → Set : Set₁
。
虽然第一部分回答了问题,并向您展示了如何自己检查这些东西,但每次这样做都会变得乏味,至少。 以下是它的工作原理:
为避免悖论,我们要求
Set i : Set (i + 1)
它为您提供了Set
的(无限)层次结构。 如果你已经Set : Set
(这阿格达通过允许--type-in-type
标志),可以推导出矛盾,比如这一个 。
这也为我们提供了一个简单的函数规则:
A : Set i
B : A → Set j
(a : A) → B a : Set (max i j)
将此应用于您的示例:
X : Set
Set : Set₁
X → Set : Set (max 0 1)
X → Set : Set₁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.