【发布时间】:2013-06-25 22:41:48
【问题描述】:
在 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。
【问题讨论】: