AFAIU-Typen können a sein, Set
deren Elemente Programme sind oder proposition
deren Elemente Proofs sind. Basierend auf diesem Verständnis:
Inductive prod (X Y: Type) : Set :=
| pair: X -> Y -> prod X Y.
Der folgende Code sollte kompiliert werden, dies ist jedoch aufgrund des folgenden Fehlers nicht der Fall. Wenn ich ändern Set
mit Type
oder die andere Type
mit Set
kompiliert in Ordnung. Kann mir jemand helfen zu verstehen, was der folgende Fehler bedeutet? Ich versuche, mir Coq mithilfe des Software Foundations-Buches beizubringen.
Error:
Error: Large non-propositional inductive types must be in Type.
dependent-types
coq
Abhishek Kumar
quelle
quelle
Antworten:
Coq hat 3 "große" Typen:
Prop
Set
Set
Type
ist ein Supertyp von beiden, mit dem Sie Code schreiben können, sobald er mit beiden funktioniertIch bin mir ziemlich sicher, dass Ihr Fehler darin besteht, dass Sie einen definieren,
Set
dessen Parameter sein könnenType
, was bedeutet, dass sie sein könnenProp
, was nicht erlaubt ist. Wenn Sie dies ändern:Ihr Code sollte funktionieren.
quelle
Prop
sei denn, Sie fügen ihn als Axiom hinzu.