非常に単純な帰納型があるとします。
Inductive ind : Set :=
| ind0 : ind
| ind1 : ind -> ind.
特定の値が存在しないことを証明したいと思います。具体的には、十分に根拠のない値があってはならないこと: ~exists i, i = ind1 i
.
私はインターネットで少し見回しましたが、何も思いつきませんでした。私は書くことができました:
Fixpoint depth (i : ind) : nat :=
match i with
| ind0 => 0
| ind1 i2 => 1 + depth i2
end.
Goal ~exists i, i = ind1 i.
Proof.
intro. inversion_clear H.
remember (depth x) as d.
induction d.
rewrite H0 in Heqd; simpl in Heqd. discriminate.
rewrite H0 in Heqd; simpl in Heqd. injection Heqd. assumption.
Qed.
これは機能しますが、本当に醜く、一般的ではないようです。