Лучший способ выполнить универсальную реализацию в Coq

Предположим, у меня есть гипотеза H : forall ( x : X ), P x и переменная x : X в контексте. Я хочу выполнить универсальную реализацию и получить новую гипотезу H' : P x, Какой самый безболезненный способ сделать это? По-видимому apply H in x не работает. assert ( P x ) с последующим apply H делает, но это может стать очень грязным, если P это сложно.

Есть похожий вопрос, который кажется несколько связанным. Не уверен, что это можно применить здесь, хотя.

3 ответа

Решение

pose proof (H x) as H'.

Скобки не являются обязательными.

Если вам нужна новая гипотеза, вы можете использовать ответ @Ptival, или

assert (H' := H x).

Если это нормально, чтобы заменить существующую гипотезу

specialize (H x).

Вы можете использовать что-то вроде generalize (H x); intros Hx: generalize добавлю (H x) как новый смысл перед текущей целью, и intros поместит это в ваши гипотезы.

Другие вопросы по тегам