Coq 中 Prop、Set 和 Type_i 的基数

Cardinality of Prop, Set and Type_i in Coq

我们可以在 Coq 的库中分配 cardinals in Coq to Prop, Set and each Type_i ? I only see the definition of finite cardinals 吗,所以也许我们需要大红雀的那个开始。

根据proof-irrelevance语义,例如暴露here, Set and the Type_i form an increasing sequence of inaccessible cardinals。这可以在 Coq 中证明吗?

Prop 似乎更复杂,因为它是不可预测的。证明无关意味着我们识别相同 P : Prop 的所有证明,并将 Prop 本身解释为对 {false, true}。因此 Prop 的基数将为 2。但是,对于任何两个证明 p1 p2 : P,Coq 不接受 eq_refl p1 作为 p1 = p2 的证明。所以 Coq 并没有完全识别 p1p2。另一方面,预测性意味着对于任何 A : TypeP : PropA -> P 都是 Prop 类型。这比 Set.

的居民多得多

如果这太难了,Coq 能证明 PropSet 是不可数的吗?通过 Cantor's theorem,Coq 轻松证明不存在满射 nat -> (nat -> Prop)。这似乎离证明不存在满射不远nat -> Prop。但随后我们需要过滤器 Prop -> (nat -> Prop),它可以隔离哪些 Prop 具有空闲的 nat 变量。我们可以在 Coq 中定义这个过滤器吗,因为我们不能在 Prop 上进行模式匹配?

无法证明 Prop 在 Coq 中是不可数的。标准库中的 ClassicalFacts 模块表明命题退化公理 forall A : Prop, A = True \/ A = False 等价于排中律和命题外延性的存在。由于 Coq 的集合论模型验证了这两个公理,Coq 无法反驳退化。

当然可以证明 SetType 是无限的,因为它们包含所有类型 Fin nn 为界的自然数,并且这些类型可以证明彼此不同,因为它们具有不同的基数。我怀疑可以通过采用通常的对角化论证来证明它们是不可数的——也就是说,假设一些可逆计数函数 e : nat -> Set,并尝试编码类似于所有自然数类型的东西 "do not contain themselves"。我不知道你会如何证明这些类型是不可访问的基数。