私が抱えている問題を示すために、このサンプルタイプを作成しました。
Inductive foo : nat -> Prop :=
| foo_1 : forall n, foo n
| foo_2 : forall n, foo n.
明らかfoo_1 0 <> foo_2 0
になりましたが、これを証明することはできません:
Lemma bar : foo_1 0 <> foo_2 0.
Proof. unfold not. intros H. discriminate H.
これはエラーを返します
差別可能な平等ではありません。
inversion H
コンテキストをまったく変更しません。奇妙なことに、 をfoo
からProp
に変更するとType
証明は通りますが、他の場所で問題が発生するため、実際のコードでこれを行うことはできません。
どうすればこの証明を通過させることができますか? そして、そもそもなぜこれが問題なのですか?