Coq中的类型是否互斥?

时间:2018-06-22 14:02:10

标签: coq

问题:

Coq中的类型是否互斥?

例如在该问题的公认答案中: What exactly is a Set in COQ
提到“ Set <= Type_0”。 (这是否意味着Set类型的任何东西也都是Type类型的?)

另一方面,输入该问题的答案: Making and comparing Sets in Coq
提到“语言的每个有效元素都只有一种类型”。

我的动机:

Coq中的关系(在关系中:Coq.Relations.Relation_Definitions)定义为:

Variable A : Type.
Definition relation := A -> A -> Prop.

我的意图是表达对某些“较小” B的关系限制。如果类型是互斥的,则可能没有任何意义。

1 个答案:

答案 0 :(得分:1)

从某种意义上说,是的,类型是排他的。

您不能表达对某些较小<w:rFonts w:cs="Arial"/>的限制,至少不能在B之类的类别之间表达限制-一种类别中的所有内容也包含在较大类别中。

Coq中的子类型与传统语言略有不同。 Set/Prop/Type(0)意味着类型Set <= Type(0)的任何事物都可以提升为类型Set,而不是总是具有Type(0)Coq Manual的CIC / Sorts部分中说明了类别之间的子类型。

但是,如果使用类型类,则可以定义子类之间的关系限制!例如,您可以定义一个带有“ +”运算符的类型类,并定义一个与“ +”运算符相关联的子类。