私は Coq で作業していましたが、ワイルドカードを使用して Axiom で構築されたオブジェクトをパターン一致させようとして、いくつかの問題に遭遇しました。私の問題を示す最小限の Coq プログラムを作成しました。
Inductive MyType : Set :=
| A
| B.
Definition MyFunction (n:MyType) : nat :=
match n with
| A => 0
| _ => 1
end.
Eval compute in MyFunction A.
Eval compute in MyFunction B.
Axiom C : MyType.
Eval compute in MyFunction C.
基本的に、私はMyFunction C
1 に評価する必要があります。Coq は私のワイルドカードを に拡張しているように思え_
ますB
。この無意味なオブジェクト C に関数を適用しようとすると失敗します。この問題を回避する方法についてアドバイスをいただければ幸いです。