【发布时间】:2018-12-09 01:04:12
【问题描述】:
U 的以下归纳定义被 Coq 接受,因为它可以看到 U 在 M.T U -> U 中的出现是严格正数。
Module M.
Definition T (A : Type) : Type := unit -> A.
End M.
Module N.
Inductive U : Type :=
| c : M.T U -> U.
End N.
另一方面,U 的以下归纳定义不被 Coq 接受,因为根据 M.T 的定义,它可能会出现非严格的正数。
Module Type S.
Parameter T : Type -> Type.
End S.
Module N (M : S).
Fail Inductive U : Type :=
| c : M.T U -> U.
End N.
我如何在签名S 中指定 T 的参数应该只出现严格的负数?从而防止在其定义中出现任何非严格正数的 U。
【问题讨论】:
标签: coq