在Coq作为一名数学家,我原以为
Set -> Set : Set
但我想这是因为我的数学家帽子已经开启了。我该怎么做才能让它发挥作用?
我是否应该考虑设置不同并使用不同类型的Set?
答案 0 :(得分:9)
我想这是因为我的数学家帽子在
也许你需要你的理论帽。我们可以通过将每个Set -> (Set -> Set)
发送到返回Set
的常量函数(即Set
)来构建注入fun S => (fun _ => S)
。如果(Set -> Set) : Set
,那么我们将有一个包含所有集合的集合(即(Set -> Set)
)。这将是一个问题,因为那时你可以跟随拉塞尔的悖论并询问所有不包含自己的集合的集合,你可以问这个集合是否包含自己,这是荒谬的。因此,你不能拥有(Set -> Set) : Set
。 (另请参阅Coq.Logic.Hurkens
了解该定理变体的形式化版本。)
由于(Set -> Set)
太大而不能成为Set
,因此它会在Type
中更上一层楼。 Set Printing Universes
可能会有所帮助。一般来说,我们有Type@{i} : Type@{i+1}
。