我试图定义一个归纳数据类型来保存一对自然数。这就是我所做的
Definition ordered_pair := (nat * nat) % type.
Inductive nat_pair(A B:nat):ordered_pair:=
|pair :ordered_pair->ordered_pair.
它会生成异常
Anomaly: Uncaught exception Reduction.NotArity. Please report.
有人知道吗?
答案 0 :(得分:2)
这种归纳定义没有意义。
您定义的类型ordered_pair
已经是自然数对的类型。
它被定义为对类型,应用于nat
类型的参数,因此要构建这样的对,您可以这样做:
Definition p : ordered_pair := (23, 42).
现在,如果您想要归纳地定义“类似”(但不是“相同”)类型,则语法为:
Inductive nat_pair : Set :=
| pair : nat -> nat -> nat_pair
.
请注意,您不会将自然数作为参数包含在类型中,而是构造函数包含两个这样的数字。
你似乎对归纳定义有一些误解,所以我建议你阅读更多关于归纳定义的内容。