Coq - 在 Ssreflect 中证明空范围
Coq - proof over empty range in Ssreflect
我必须以以下形式证明目标:
forall x: ordinal_finType m, P x
我目前的情况是我的堆栈中有 Hm: m = 0
,所以这实际上是空集上的 forall
。在这种情况下我该如何进行?
使用
case => x.
给我留下
forall i : (x < m)%N, P i
但是我当然不能使用 rewrite Hm
,因为它因依赖类型错误而失败。
好吧,你需要用你的零假设重写,实际上,由于 math-comp 中 <
运算符的计算性质,空性的证明是微不足道的。
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.
我必须以以下形式证明目标:
forall x: ordinal_finType m, P x
我目前的情况是我的堆栈中有 Hm: m = 0
,所以这实际上是空集上的 forall
。在这种情况下我该如何进行?
使用
case => x.
给我留下
forall i : (x < m)%N, P i
但是我当然不能使用 rewrite Hm
,因为它因依赖类型错误而失败。
好吧,你需要用你的零假设重写,实际上,由于 math-comp 中 <
运算符的计算性质,空性的证明是微不足道的。
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.