Я работал с Coq, и у меня возникли проблемы с попыткой сопоставить объекты совпадения, построенные с помощью Axiom, с помощью подстановочного знака. Я создал минимальную программу Coq, которая демонстрирует мою проблему.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. Я бы оцените совет, как это работает вокруг этой проблемы.