CoqのSetとTypeの違いは何ですか?[閉まっている]


13

AFAIU型は、Setその要素がプログラムである、またはproposition要素が証明であるにすることができます。したがって、この理解に基づいて:

Inductive prod (X Y: Type) : Set := 
| pair: X -> Y -> prod X Y.

次のコードはコンパイルされるはずですが、次のエラーが原因ではありません。私が変更された場合SetType、または他TypeとのSetそれは罰金をコンパイルします。誰かが次のエラーの意味を理解するのを手伝ってくれる?Software Foundationsの本を使ってCoqを教えようとしています。

エラー:

Error: Large non-propositional inductive types must be in Type.

2
定理の証明者は常にCS.SEの灰色の領域でしたが、私はこれがModをStackOverflowに移行するための良い候補だと思います。
jmite 2017

この質問はここにいくつかの答えがあります
アントントルノフ2017

@jmiteこの質問は、Coqが具体的な構文として機能している構造の計算に関するものであることを考えると、ここでは話題になっていると思います。
Gilles「SO-邪悪なこと

回答:


12

Coqには3つの「大きな」タイプがあります。

  • Propp1p2Pp1=p2
  • Set1=2Set
  • Type これらの両方のスーパータイプであり、どちらかで機能するコードを一度記述できます

私はかなり確信して、あなたが定義しているので、あなたの誤差があるんだSetそのパラメータができType、彼らがすることができた手段、Prop許可されていないが、。これに変更した場合:

Inductive prod (X Y: Set) : Set := 
| pair: X -> Y -> prod X Y. 

コードが機能するはずです。


3
CoqはProp、公理として追加しない限り、妥当性を証明するものではありません。
ジェフ・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.