在 Coq 中重新定义自然数类型并尝试使用它时,如下所示:
Inductive Nat: Type :=
| O: Nat
| S: Nat -> Nat.
Fixpoint plus (n: Nat) (m: Nat): Nat :=
match n with
| O => m
| S n' => S (plus n' m)
end.
Fixpoint mult (n: Nat) (m: Nat): Nat :=
match n with
| O => O
| S n' => plus m (mult n' m)
end.
Fixpoint factorial (n: Nat) : Nat :=
match n with
| O => 1
| (S n') => mult n (factorial n')
end.
Coq 发出错误
术语“1”具有“nat”类型,而预期具有“Nat”类型。
我理解这种行为的原因(实际数字 '1' 仍然映射到 Coq 的内置自然数类型),但有没有办法修复它?TIA。