3
我有以下代碼片段。宇宙不一致(由於嚴格的積極性限制?)
Set Implicit Arguments.
Inductive Simple (A: Type) := simple : Simple A.
Inductive Wrap (A: Type) :=
| wrap : A -> Wrap A
| funWrap : forall X, Simple X -> (X -> Wrap A) -> Wrap A.
Definition anotherWrap A : Wrap A :=
funWrap (simple A) (fun x => wrap x).
Fail Definition specialWrap1 A : Wrap (Wrap A) :=
funWrap (simple (Wrap A)) (fun x => wrap x).
Fail Definition specialWrap A : Wrap A :=
funWrap (simple (Wrap A)) (fun x => x).
我首先想到的是,在funWrap
的X
不能Wrap A
被實例化,因爲歸納類型嚴格限制陽性的。是這種情況還是存在不一致的另一個原因(也可能採用不同的方法來定義功能specialWrap
)?
編輯:第二個定義的解釋在所選答案的評論中給出。
我想補充一點,我想明白爲什麼第二個定義不起作用(即使是你的宇宙多態擴展)。正如[Timany和Jacobs最近的論文](https://lirias.kuleuven.be/bitstream/123456789/513812/2/CIT.pdf)中所提到的,Coq的多態宇宙擴展並不支持歸納的歸納類型。我上面的定義類似於他們小組合的例子。 – ichistmeinname