我正在阅读软件基础(*)并且在Coq中定义类型时遇到问题:在下面的示例中,我尝试进行2种类型定义。 t1
是自然列表,t2
是一对自然物。
Coq接受第一个定义t1
,但定义t2
被拒绝并显示错误消息:
术语
(nat, nat)
的类型为(Set * Set)%type
,而预期类型为Type
。
我不太明白错误是什么,这个消息意味着什么。定义t2
有什么问题?
Definition t1 : Type := list nat.
Definition t2 : Type := pair nat nat.
答案 0 :(得分:3)
不,pair
是构造函数,prod
是类型。
Print prod.
Check prod.
Check @pair.
Definition t1 : Type := list nat.
Definition t2 : Type := prod nat nat.
Definition t2' : Type := (nat * nat)%type.