Coq:如何将一个假设应用于另一个假设

jam*_*her 10 coq

假设我在上下文中有两个假设,a_b : A -> B并且a : A.我应该能够申请a_ba获得进一步的假设,b : B.

也就是说,给定以下状态:

1 subgoal
A : Prop
B : Prop
C : Prop
a_b : A -> B
a : A
______________________________________(1/1)
C
Run Code Online (Sandbox Code Playgroud)

应该有一些策略,foo (a_b a)将其转换为以下状态:

1 subgoal
A : Prop
B : Prop
C : Prop
a_b : A -> B
a : A
b : B
______________________________________(1/1)
C
Run Code Online (Sandbox Code Playgroud)

但我不知道是什么foo.

我能做的一件事是:

 assert B as b.
 apply a_b.
 exact a.
Run Code Online (Sandbox Code Playgroud)

但这是相当冗长的,如果不是a_b a我有一些更大的表达,就会严重缩放.

我能做的另一件事是:

specialize (a_b a).
Run Code Online (Sandbox Code Playgroud)

但这取代a_b我不想做的假设.

Pti*_*val 10

pose proof (a_b a) as B.
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.