如何在Coq中将形式P-> Q-> R的命题同时应用于两个假设P和Q?

时间:2019-10-26 03:03:23

标签: coq

我试图证明forall P Q R : Prop, P -> Q -> (P -> Q -> R) -> R。我的证明如下。

Goal forall P Q R : Prop, P -> Q -> (P -> Q -> R) -> R.
Proof.
  intros P Q R H1 H2 H3.
  apply H3 in H1.
  exact H1.
  exact H2.
Qed.

在H1中应用H3时,将出现两个目标。但是,我想像apply H3 in H1 and H2更直接地获得R。但是我找不到这样的方法。我该如何实现?

我已经知道以下内容也可以。但这不是我想要的。我不想增加目标。

Goal forall P Q R : Prop, P -> Q -> (P -> Q -> R) -> R.
Proof.
  intros P Q R H1 H2 H3.
  apply H3.
  exact H1.
  exact H2.
Qed.

1 个答案:

答案 0 :(得分:4)

您可以直接将H1H2应用于H3,而无需使用apply策略。

您的H3的类型为P -> Q -> R(该函数接受PQ的证明,并返回R的证明)。因此,表达式H3 H1 H2的类型为R

通过此操作,您可以将证明简化为以下内容:

Goal forall P Q R : Prop, P -> Q -> (P -> Q -> R) -> R.
Proof.
  intros P Q R H1 H2 H3.
  apply (H3 H1 H2).
Qed.

实际上,您的证明与上述证明完全相同,因为所有apply战术所做的都是将函数应用于参数。