Coq 布尔函数的归纳定义
简单地说,我试图将自己的bool类型定义为:Coq 布尔函数的归纳定义,coq,Coq,简单地说,我试图将自己的bool类型定义为: Inductive mybool : Type := | true | false. 然后我做一个“打印mybool”,但输出显示 Inductive mybool : Set := true : mybool | false : mybool. 为什么设置了“mybool”的类型而不是类型?Coq使用所谓的“宇宙最小化”将归纳类型放入最小的可能宇宙中。由于mybool不依赖于任何其他类型,也不进行任何通用量化,因此它可以安全地放
Inductive mybool : Type :=
| true
| false.
然后我做一个“打印mybool”,但输出显示
Inductive mybool : Set := true : mybool | false : mybool.
为什么设置了“mybool”的类型而不是类型?Coq使用所谓的“宇宙最小化”将归纳类型放入最小的可能宇宙中。由于mybool
不依赖于任何其他类型,也不进行任何通用量化,因此它可以安全地放在类型
的(第二)最低级别,即集
。最低级别是Prop
,但归纳类型只有在只有一个构造函数(这有一些例外)或显式注释的情况下才放在Prop
中
请注意,Coq的宇宙是累积的,因此
mybool
确实存在于Type
的每个级别,但它只显示最低级别。当然,您一定已经完成了“打印mybool”。你能纠正这个问题吗?我想Set是最低级的字体。第二低的是道具(道具高于设定值)。我以为道具是用来做命题的。在我的书中,我们有两个构造器。我不确定我是否理解这一部分。@ShuhengZhengProp
确实是用于命题的,可以被认为是最多有一个元素的类型。这意味着Prop
不包含通常在Set
中找到的“大型”类型,如nat
或bool
。但另一方面,Prop
中的所有内容都适合Set
,因此Prop
的级别低于Set
。您可以使用类似于Axiom P:Prop的东西来检查这一点。检查P:Set.(有效)vs公理P:Set。勾选P:Prop.
(它没有)。注意还有未设置的宇宙最小化设置