Les types AFAIU peuvent être un Set
dont les éléments sont des programmes ou un proposition
dont les éléments sont des preuves. Donc, sur la base de cette compréhension:
Inductive prod (X Y: Type) : Set :=
| pair: X -> Y -> prod X Y.
Le code suivant doit être compilé, mais il n'est pas dû à l'erreur suivante. Si je change Set
avec Type
ou l'autre Type
avec Set
ça se compile très bien. Quelqu'un peut-il m'aider à comprendre ce que signifie l'erreur suivante? J'essaie d'enseigner moi-même Coq en utilisant le livre Software Foundations.
Erreur:
Error: Large non-propositional inductive types must be in Type.
dependent-types
coq
Abhishek Kumar
la source
la source
Réponses:
Coq a 3 "grands" types:
Prop
Set
Set
Type
est un super-type des deux, vous permettant d'écrire du code une fois qui fonctionne avecJe suis sûr que votre erreur est due au fait que vous définissez un
Set
dont les paramètres peuvent êtreType
, ce qui signifie qu'ils peuvent l'êtreProp
, ce qui n'est pas autorisé. Si vous passez à ceci:votre code devrait fonctionner.
la source
Prop
moins que vous ne l'ajoutiez comme axiome.