关于集合中元素的顺序

时间:2014-05-03 22:15:26

标签: coq

我有以下定义:

Definition n : set string := ("a" :: "b" :: nil).
Definition m : set (set string) := ("b" :: "a" :: nil) :: ("c" :: "d" :: nil) :: nil.

我尝试证明以下内容:

Example n_in_m : set_In n m.
Proof.
  unfold n . unfold m.
  simpl.

完成' simple'后,目标变为:

"b" :: "a" :: nil = "a" :: "b" :: nil \/
"c" :: "d" :: nil = "a" :: "b" :: nil \/ False

然后我不知道如何继续证明!是不是集合中元素的顺序并不重要?

1 个答案:

答案 0 :(得分:1)

您似乎在试图证明:

{a, b} ∈ { {b, a}, {c, d} }

但您的集合成员资格是根据命题平等来定义的。问题是这两个对象:

("a" :: "b" :: nil)

("b" :: "a" :: nil)

在命题上并不相同。


您可能希望使用更为set的更丰富的定义,这个定义是在两个元素被认为相等的情况下参数化的。