问题描述
我想定义一个类型系列 name
使得:
PowersetTower : Type -> nat -> Type
-
PowersetTower A 0 = A
(即PowersetTower A (n+1) = Ensemble (PowersetTower A n)
)
这可能吗?一个想法是这样的
PowersetTower A n -> Prop
但是这里 Coq 抱怨构造函数 Inductive PowersetTower : Type -> nat -> Type :=
| base : forall (A : Type),PowersetTower A 0
| step : forall (A : Type) (n : nat),(PowersetTower A n -> Prop) -> PowersetTower A (S n)
.
中 PowersetTower
的非严格正出现。但是,出现在箭头左侧的是 step
,而不是 PowersetTower A n
,那么为什么 Coq 禁止这样做呢?对我来说似乎没问题,因为我正在使用“较小”的类型定义“较大”的类型。如果接受此定义(可能使用 PowersetTower A (S n)
属性),此定义是否会导致问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)