通常,我试图将自己的布尔类型定义为:
Inductive mybool : Type :=
| true
| false.
然后我执行“打印mybool”。但输出显示
Inductive mybool : Set := true : mybool | false : mybool.
为什么设置了“ mybool”而不是“ Type”?
答案 0 :(得分:3)
Coq使用所谓的“ Universe Minimization”将归纳类型放入尽可能小的Universe中。由于mybool
不依赖于任何其他类型,也不进行任何通用量化,因此可以放心地将其置于Type
的(第二)最低级别,即Set
。最低级别为Prop
,但是归纳类型仅在它们只有一个构造函数(对此有一些例外)或显式标注时,才放置在Prop
中。
请注意,Coq的宇宙是累积的,因此mybool
实际上在Type
的每个级别中,但是仅显示了最小级别。