电源塔

问题描述

我想定义一个类型系列 name 使得:

  1. PowersetTower : Type -> nat -> Type
  2. 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 (将#修改为@)