Coq: как применить одну гипотезу к другой
Предположим, у меня есть две гипотезы в контексте,a_b : A -> B
а такжеa : A
, Я должен быть в состоянии подать заявкуa_b
вa
чтобы получить дальнейшую гипотезу,b : B
.
То есть, учитывая следующее состояние:
1 subgoal
A : Prop
B : Prop
C : Prop
a_b : A -> B
a : A
______________________________________(1/1)
C
Там должна быть какая-то тактика,foo (a_b a)
, чтобы преобразовать это в следующее состояние:
1 subgoal
A : Prop
B : Prop
C : Prop
a_b : A -> B
a : A
b : B
______________________________________(1/1)
C
Но я не знаю чтоfoo
является.
Одна вещь, которую я могу сделать, это:
assert B as b.
apply a_b.
exact a.
но это довольно многословно, и масштабируется плохо, если вместоa_b a
У меня есть несколько большее выражение.
Еще одна вещь, которую я могу сделать:
specialize (a_b a).
но этозаменяет a_b
гипотеза, которую я не хочу делать.