我正在使用 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 上应用该函数时它失败了。我希望得到有关如何解决这个问题的建议。