假设我有一个非常简单的归纳类型:
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.
这有效,但看起来真的很丑陋且不一般。