如何在Coq中证明以下内容?

时间:2019-02-24 06:01:46

标签: logic coq

如何在Coq中证明以下内容?

(p-> q)->(〜q->〜p)

这就是我的开始:

Lemma work : (forall p q : Prop, (p->q)->(~q->~p)).
Proof.
  intros p q.
  intros p_implies_q not_q.
  intros p_true.

1 个答案:

答案 0 :(得分:1)

Lemma work : (forall p q : Prop, (p->q)->(~q->~p)).
Proof.
  intros p q.
  intros p_implies_q not_q.
  intros p_true.
  apply not_q.
  apply p_implies_q.
  auto.
Qed.

一些评论:

  • 只要您有A -> B形式的目标, 您可以使用intros H命令将H: A添加到场所列表中,并留下目标B

  • ~PP -> False的语法糖。因此,如果您的目标是~P,那么intros H会将H: P添加到您的场所列表中,并将目标减少到False

  • 如果您的目标是Q,并且前提是H: P -> Q,则执行命令apply H会将目标更改为P

  • 连续intros命令可以合并为一个,因此证明可以缩短为

    Proof.
      intros p q p_implies_q not_q p_true.
      apply not_q.
      apply p_implies_q.
      auto.
    Qed.