结合两个 Coq 假设

Sim*_*ine 2 coq

所以我有两个假设,一个是h : A -> B,另一个是h2 : A。我怎样才能h3 : B出现在我的假设中?

Ant*_*nov 5

pose proof (h h2) as h3.
Run Code Online (Sandbox Code Playgroud)

h3 : B作为一个新的假设引入,

specialize (h h2).
Run Code Online (Sandbox Code Playgroud)

修改h : A -> Bh : B- 如果您以后不需要,这可能很有用h,并且对称,

apply h in h2.
Run Code Online (Sandbox Code Playgroud)

转换h2 : Ah2 : B.

另一种(不是很方便)的方法是

assert B as h3 by exact (h h2).
Run Code Online (Sandbox Code Playgroud)

这就是pose proof变体的等价物。

此外,在如下所示的简单情况下,您可以在不引入新假设的情况下解决您的目标:

Goal forall (A B : Prop), (A -> B) -> A -> B.
  intros A B h h2.
  apply (h h2).
Qed.
Run Code Online (Sandbox Code Playgroud)