Coq中的对定义具有“类型”;(设置*设置)%type“;而它应该是“类型”;“类型”;
我正在阅读软件基础(*),在Coq中定义类型时遇到了一个问题:在下面的示例中,我尝试了两个类型定义Coq中的对定义具有“类型”;(设置*设置)%type“;而它应该是“类型”;“类型”;,coq,Coq,我正在阅读软件基础(*),在Coq中定义类型时遇到了一个问题:在下面的示例中,我尝试了两个类型定义t1是自然列表,t2是一对自然列表 Coq接受第一个定义t1,但拒绝定义t2,并显示错误消息: 术语(nat,nat)具有type(Set*Set)%type,而预期它具有typetype 我不太明白什么是错的,这条信息意味着什么。定义t2有什么问题 Definition t1 : Type := list nat. Definition t2 : Type := pair nat nat.
t1
是自然列表,t2
是一对自然列表
Coq接受第一个定义t1
,但拒绝定义t2
,并显示错误消息:
术语(nat,nat)
具有type(Set*Set)%type
,而预期它具有typetype
我不太明白什么是错的,这条信息意味着什么。定义t2
有什么问题
Definition t1 : Type := list nat.
Definition t2 : Type := pair nat nat.
(*)否,
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.
Pair是数据构造函数,prod是类型构造函数?对<代码>对x1-x2:prod t1 t2,或使用其符号,
(x1,x2):t1*t2
。