Вопрос, который у меня есть, очень похож на вопрос, представленный в приведенной ниже ссылке, но на основе гипотезы, а не цели.
Примените функцию к обеим сторонам равенства в Coq?
Скажем, у меня есть следующее определение:
Definition make_couple (a:nat) (b:nat) := (a, b).
И следующую лемму для доказательства:
a, b : nat
H : (a, b) = make_couple a b
-------------------------------
(some goal to prove)
Я хотел бы выдвинуть следующую гипотезу:
new_H : fst (a, b) = fst (make_couple a b)
Один из способов - явно написать утверждение, а затем использовать eapply f_equal:
assert (fst (a, b) = fst (make_couple a b)). eapply f_equal; eauto.
Но я бы хотел по возможности избежать явного написания assert. Я хотел бы иметь некую тактику или эквивалент, который работал бы следующим образом:
apply_in_hypo fst H as new_H
Есть ли что-нибудь в Coq, что могло бы приблизиться к этому?
Спасибо за ответы.