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)