Типы AFAIU могут быть Set
элементами, чьи элементы являются программами, или proposition
элементами, чьи элементы являются доказательствами. Итак, исходя из этого понимания:
Inductive prod (X Y: Type) : Set :=
| pair: X -> Y -> prod X Y.
Следующий код компиляции , но это не из - за следующей ошибки. Если я изменяю Set
с Type
или другой Type
с Set
ним составляет штраф. Может кто-нибудь помочь мне понять, что означает следующая ошибка? Я пытаюсь научить себя Coq, используя книгу Software Foundations.
Ошибка:
Error: Large non-propositional inductive types must be in Type.
dependent-types
coq
Абхишек Кумар
источник
источник
Ответы:
Coq имеет 3 "больших" типа:
Prop
Set
Set
Type
является супертипом обоих из них, позволяя вам написать код, который работает сЯ уверен, что ваша ошибка в том, что вы определяете,
Set
чьи параметры могут бытьType
, что означает, что они могут бытьProp
, что недопустимо. Если вы измените на это:ваш код должен работать.
источник
Prop
если вы не добавите его в качестве аксиомы.