Logic 如何在Coq中声明某些归纳类型的常数?
下面是归纳类型的定义(这里使用参数化的高阶抽象语法-PHOAS): 我的问题是-如何使用构造函数将常量Logic 如何在Coq中声明某些归纳类型的常数?,logic,coq,Logic,Coq,下面是归纳类型的定义(这里使用参数化的高阶抽象语法-PHOAS): 我的问题是-如何使用构造函数将常量John定义为ClosedT类型 还有另外一个问题:在某些情况下,我可能想定义更多的类型,例如,John:Person和Bruno:Tortoise那么-我是否应该为新类型创建新类型,例如,ClosedT_TortoiseClosedT是构建对象逻辑的基本类型,因此,也许我不应该继续使用多端口逻辑 据我所知,我正在使用的线性逻辑的形式化应用于另一个Coq项目中,可能在那里定义了常数。但是略读源代
John
定义为ClosedT
类型
还有另外一个问题:在某些情况下,我可能想定义更多的类型,例如,John:Person
和Bruno:Tortoise
那么-我是否应该为新类型创建新类型,例如,ClosedT_Tortoise
ClosedT
是构建对象逻辑的基本类型,因此,也许我不应该继续使用多端口逻辑
据我所知,我正在使用的线性逻辑的形式化应用于另一个Coq项目中,可能在那里定义了常数。但是略读源代码我找不到它们。严格地说,你的问题陈述得不好:
ClosedT
不是一个类型,而是一系列命题,由类型项的元素索引。根据该文件,我认为ClosedT t
表示术语t:term
已关闭,您需要执行以下操作:
- 定义一种具有元素的常量
T
- 用
T
实例化开发的定义。为此,您需要将T
包装在类型为Eqset\u dec\u pol
的模块中,并证明T
具有可判定的相等性,并将文件开头出现的函子语法\u LL
应用于此模块
- 使用
Term
的Cte
“构造函数”在术语语法中嵌入John
。(这不是一个Coq意义上的构造函数,只是一个方便的包装器,用于构建Term
类型的元素)
- 证明该期限已结束;也就是说,证明
ClosedT(Cte John)
。这应该只是应用构造函数cl\u cte
的问题
这或多或少是你想要做的事情吗 严格地说,你的问题陈述不当:ClosedT
不是一个类型,而是一系列命题,由术语
类型的元素索引。根据该文件,我认为ClosedT t
表示术语t:term
已关闭,您需要执行以下操作:
- 定义一种具有元素的常量
T
- 用
T
实例化开发的定义。为此,您需要将T
包装在类型为Eqset\u dec\u pol
的模块中,并证明T
具有可判定的相等性,并将文件开头出现的函子语法\u LL
应用于此模块
- 使用
Term
的Cte
“构造函数”在术语语法中嵌入John
。(这不是一个Coq意义上的构造函数,只是一个方便的包装器,用于构建Term
类型的元素)
- 证明该期限已结束;也就是说,证明
ClosedT(Cte John)
。这应该只是应用构造函数cl\u cte
的问题
这或多或少是你想要做的事情吗
(** Closed Terms *)
Inductive ClosedT : Term -> Prop :=
| cl_cte: forall C, ClosedT (Cte C)
| cl_fc1: forall n t1, ClosedT t1 -> ClosedT (FC1 n t1)
| cl_fc2: forall n t1 t2, ClosedT t1 -> ClosedT t2 -> ClosedT (FC2 n t1 t2).