pi类型是什么类型?

时间:2018-11-25 11:42:03

标签: types dependent-type

依赖类型的语言提供“ pi类型”,允许类型依赖于输入的值。我的问题是,pi类型的类型是什么?

2 个答案:

答案 0 :(得分:3)

类型的类型是Universe。通常,Universe被分层为类型0,类型1,类型2 ...等级别,其中类型n的类型为类型(n + 1)。这样做的原因是,如果我们只有一个类型的Type,则Type的类型必须是Type,通常为leads to paradoxes

那么forall a: A, P a的类型是什么(使用Coq语法的pi类型)?如果假设A: Type mP: A -> Type n,则有forall a: A, P a: Type max(m, n)。如果我们有累积的Universe(如Coq一样),因此m≤nA: Type m暗示A: Type n,则forall a: A, P a的类型实际上是大于两个{{ 1}}和m

编辑:根据您的评论,n->A: Type m作为参数,并返回类型为P: A -> Type n的{​​{1}},因此类型pi构造函数的值是forall a: A, P a,或者用Agda语法是Type max(m, n)

答案 1 :(得分:0)

在lambda多维数据集中,Pi类型通过form规则形成:

G ⊢ A: s1   G, x: A ⊢ B : s2
--------------------------------- (form)
G ⊢ Πx : A. B: s2

{s1,s2}可以为

  1. {*,*}(STLC)
  2. {*,□}(依赖网络类型)
  3. {□,□}(类型构造函数)
  4. {□,*}(参数多态性)

form规则可以在Pure Type System中进一步推广