我有以下定义:
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
然后我不知道如何继续证明!是不是集合中元素的顺序并不重要?
答案 0 :(得分:1)
您似乎在试图证明:
{a, b} ∈ { {b, a}, {c, d} }
但您的集合成员资格是根据命题平等来定义的。问题是这两个对象:
("a" :: "b" :: nil)
和
("b" :: "a" :: nil)
在命题上并不相同。
您可能希望使用更为set
的更丰富的定义,这个定义是在两个元素被认为相等的情况下参数化的。