Coq 布尔函数的归纳定义

Coq 布尔函数的归纳定义,coq,Coq,简单地说,我试图将自己的bool类型定义为: Inductive mybool : Type := | true | false. 然后我做一个“打印mybool”,但输出显示 Inductive mybool : Set := true : mybool | false : mybool. 为什么设置了“mybool”的类型而不是类型?Coq使用所谓的“宇宙最小化”将归纳类型放入最小的可能宇宙中。由于mybool不依赖于任何其他类型,也不进行任何通用量化,因此它可以安全地放

简单地说,我试图将自己的bool类型定义为:

Inductive mybool : Type :=
    | true
    | false.
然后我做一个“打印mybool”,但输出显示

Inductive mybool : Set := true : mybool | false : mybool.
为什么设置了“mybool”的类型而不是类型?

Coq使用所谓的“宇宙最小化”将归纳类型放入最小的可能宇宙中。由于
mybool
不依赖于任何其他类型,也不进行任何通用量化,因此它可以安全地放在
类型
的(第二)最低级别,即
。最低级别是
Prop
,但归纳类型只有在只有一个构造函数(这有一些例外)或显式注释的情况下才放在
Prop


请注意,Coq的宇宙是累积的,因此
mybool
确实存在于
Type
的每个级别,但它只显示最低级别。

当然,您一定已经完成了“打印mybool”。你能纠正这个问题吗?我想Set是最低级的字体。第二低的是道具(道具高于设定值)。我以为道具是用来做命题的。在我的书中,我们有两个构造器。我不确定我是否理解这一部分。@ShuhengZheng
Prop
确实是用于命题的,可以被认为是最多有一个元素的类型。这意味着
Prop
不包含通常在
Set
中找到的“大型”类型,如
nat
bool
。但另一方面,
Prop
中的所有内容都适合
Set
,因此
Prop
的级别低于
Set
。您可以使用类似于Axiom P:Prop的东西来检查这一点。检查P:Set.(有效)vs
公理P:Set。勾选P:Prop.
(它没有)。注意还有
未设置的宇宙最小化设置