Coq中如何表达子集关系?
How to express subset relation in Coq?
我如何在 Coq 中描述一个集合 Y
是另一个集合 X
的子集?
我测试了以下内容:
Definition subset (Y X:Set) : Prop :=
forall y:Y, y:X.
,试图表达如果一个元素y
在Y
,那么y
在X
。但这会产生关于 y
的类型错误,这不足为奇。
有没有简单的方法在 Coq 中定义 subset
?
这是在标准库 (Coq.Logic.ClassicalChoice
) 中的实现方式:
Definition subset (U:Type) (P Q:U->Prop) : Prop := forall x, P x -> Q x.
一元谓词 P
和 Q
表示(通用)集合 U
的某些子集,因此上面的定义是:每当某些 x
在 P
,同时在Q
.
可以在 Coq.MSets.MSetInterface
:
中找到有点相似的定义
Definition Subset s s' := forall a : elt, In a s -> In a s'.
其中 In
具有类型 elt -> t -> Prop
,这意味着类型 elt
的某些元素是类型 t
.
的成员
我如何在 Coq 中描述一个集合 Y
是另一个集合 X
的子集?
我测试了以下内容:
Definition subset (Y X:Set) : Prop :=
forall y:Y, y:X.
,试图表达如果一个元素y
在Y
,那么y
在X
。但这会产生关于 y
的类型错误,这不足为奇。
有没有简单的方法在 Coq 中定义 subset
?
这是在标准库 (Coq.Logic.ClassicalChoice
) 中的实现方式:
Definition subset (U:Type) (P Q:U->Prop) : Prop := forall x, P x -> Q x.
一元谓词 P
和 Q
表示(通用)集合 U
的某些子集,因此上面的定义是:每当某些 x
在 P
,同时在Q
.
可以在 Coq.MSets.MSetInterface
:
Definition Subset s s' := forall a : elt, In a s -> In a s'.
其中 In
具有类型 elt -> t -> Prop
,这意味着类型 elt
的某些元素是类型 t
.