Ssreflect中空范围的Coq证明

Ssreflect中空范围的Coq证明,coq,ssreflect,Coq,Ssreflect,我必须以以下形式证明目标: forall x: ordinal_finType m, P x 我目前的情况是,我的堆栈中有Hm:m=0,因此这本质上是一个空集合上的forall。在这种情况下,我如何处理? 使用 留给我 forall i : (x < m)%N, P i forall i:(x

我必须以以下形式证明目标:

forall x: ordinal_finType m, P x
我目前的情况是,我的堆栈中有
Hm:m=0
,因此这本质上是一个空集合上的
forall
。在这种情况下,我如何处理? 使用

留给我

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

但是当然,我不能使用重写Hm,因为它会因依赖类型错误而失败。

你需要重写零假设,实际上,由于
调用的计算性质,空性的证明是微不足道的,依赖重写错误通常是由于没有重写
P
本身的定义而发生的。
forall i : (x < m)%N, P i
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.