Coq 关于集合中元素的顺序

Coq 关于集合中元素的顺序,coq,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. 在执行“siml”之后,目标变成: "b" ::

我有以下定义:

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.
在执行“siml”之后,目标变成:

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

那我就不知道怎么证明了!元素在集合中的顺序是否正确无所谓?

您似乎在试图证明:

{a, b} ∈ { {b, a}, {c, d} }
但是你的集合成员是根据命题等式定义的。问题在于这两个对象:

("a" :: "b" :: nil)
以及:

在命题上是不平等的



您可能希望为
集合使用更丰富的定义,该定义通过两个元素何时被视为相等来参数化。

是的,但如何为集合定义更丰富的定义?你是说对集合有一个新的定义吗?谢谢
("b" :: "a" :: nil)