如何在Coq中表达子集关系?

时间:2016-07-24 09:50:45

标签: coq set-theory

如何在Coq中描述一组Y是另一组X的子集?

我测试了以下内容:

Definition subset (Y X:Set) : Prop :=
  forall y:Y, y:X.

,尝试表示如果元素y位于Y,则y位于X。但这会产生关于y的类型错误,这并不奇怪。

是否有一种简单的方法可以在Coq中定义subset

1 个答案:

答案 0 :(得分:4)

以下是在标准库(Coq.Logic.ClassicalChoice)中完成的工作方式:

Definition subset (U:Type) (P Q:U->Prop) : Prop := forall x, P x -> Q x.

一元谓词PQ代表(通用)集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类型的成员。