Coq 偏序集中空元素唯一性的证明
我试图通过在偏序集上实现事实来学习COQ。在证明我的第一个定理时,我被困在这里Coq 偏序集中空元素唯一性的证明,coq,Coq,我试图通过在偏序集上实现事实来学习COQ。在证明我的第一个定理时,我被困在这里 Class Poset {A: Type} ( leq : A -> A -> Prop ) : Prop := { reflexivity: forall x y : A, x = y -> (leq x y); antisymmetry: forall x y : A, ((leq x y) /\ (leq y x)) -> x = y; transitivity:
Class Poset {A: Type} ( leq : A -> A -> Prop ) : Prop := {
reflexivity: forall x y : A, x = y -> (leq x y);
antisymmetry: forall x y : A, ((leq x y) /\ (leq y x)) -> x = y;
transitivity: forall x y z :A, ((leq x y) /\ (leq y z) -> (leq x z))
}.
Module Poset.
Parameter A : Type.
Parameter leq : A -> A -> Prop.
Parameter poset : @Poset A leq.
Definition null_element (n : A) :=
forall a : A, leq n a.
Theorem uniqueness_of_null_element (n1 : A) (n2 : A) : null_element(n1) /\ null_element(n2) -> n1 = n2.
Proof.
unfold null_element.
Qed.
End Poset.
我不知道这之后该怎么办。有人能帮忙吗?我想我明白了。
这就是我所做的
Proof.
unfold null_element.
intros [H1 H2].
specialize H1 with n2.
specialize H2 with n1.
apply antisymmetry.
split.
- apply H1.
- apply H2.
Qed.
只需应用
反对称
,您就基本完成了。逐步证明:intros[h1h2]。应用反对称。分裂应用h1。应用h2。
更老练的证明现在介绍[h1 h2];应用反对称。
这比我想象的要简单得多。但是我现在不明白这一点。在切线上:在Coq中,更惯用的做法是将反对称性写成所有xy:a,leq x y->leq y x->x=y。啊,有效的套用。我明白了。感谢您无需使用专门化
,应用
足够智能,可以使用匹配计算正确的实例化;应用反对称。也可以处理引理。easy
战术(now
代表;easy
)足够聪明,可以分割目标,apply
可以提取合并。