如何在Coq中描述一组Y
是另一组X
的子集?
我测试了以下内容:
Definition subset (Y X:Set) : Prop :=
forall y:Y, y:X.
,尝试表示如果元素y
位于Y
,则y
位于X
。但这会产生关于y
的类型错误,这并不奇怪。
是否有一种简单的方法可以在Coq中定义subset
答案 0 :(得分:4)
以下是在标准库(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
类型的成员。