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:

我试图通过在偏序集上实现事实来学习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: 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
可以提取合并。