将应用策略应用于场所而不是目标

时间:2017-04-14 01:10:45

标签: coq

如果目标状态是这样的:

  a : Prop
  b : Prop
  H1 : a
  H2 : b -> c
  ============================
   c

然后我可以使用apply H2策略将其转换为以下状态:

  a : Prop
  b : Prop
  H1 : a
  H2 : b -> c
  ============================
   b

现在,我想做同样的事情但是假设:

  a : Prop
  b : Prop
  H1 : a
  H2 : b -> a
  ============================
   b

我想引入一个新的假设(或简化现有的假设),以便我在前提下有一个新的H3 : b。这可能吗?

我尝试了apply的各种变体,但一切都导致了某种错误。提升上述状态的代码:

Lemma test : forall {a b : Prop},
    a /\ (b -> a) -> b.
Proof.
  intros a b.
  intros [H1 H2].
Abort.

1 个答案:

答案 0 :(得分:4)

这是不可能的,因为你的a引理不成立。例如,将True设为b,将False设为a。前提(b -> ab)都有,但Lemma test : forall a b : Prop, a /\ (a -> b) -> b. Proof. intros [H1 H2]. apply H2 in H1. exact H1. Qed. 不成立。

但是,如果您稍微更改了结果的陈述,那么这将起作用:

{{1}}