Coq - доказательство более пустого диапазона в Ssreflect

Я должен доказать цель в виде:

forall x: ordinal_finType m, P x

Я в настоящее время в случае, когда у меня есть Hm: m = 0 в моем стеке, так что это по сути forall по пустому набору. Как я могу действовать в этом случае? С помощью

case => x.

оставляет меня с

forall i : (x < m)%N, P i

но тогда, конечно, я не могу использовать rewrite Hm как это терпит неудачу с ошибкой зависимого типа.

1 ответ

Решение

Ну, вам нужно переписать нулевую гипотезу, на самом деле доказательство пустоты тривиально из-за вычислительной природы < оператор в математике

Lemma ordinal0P P : 'I_0 -> P.
Proof. by case. Qed.

или если вы хотите:

Lemma avoid_rewrite_error: forall P m, m = 0 -> forall (i : 'I_m), P.
Proof. by move=> ? ? -> []. Qed.
Другие вопросы по тегам