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.