Чим відрізняється між Набір і Тип у Coq? [зачинено]


13

Типи AFAIU можуть бути Setелементами, елементи яких є програмами, або propositionелементами яких є Докази. Отже, виходячи з цього розуміння:

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

Наступний код повинен складатись, але він не пов'язаний із наступною помилкою. Якщо я міняюсь Setна Typeабо інший Typeз Setнею, складається добре. Чи може хтось допомогти мені зрозуміти, що означає наступна помилка? Я намагаюсь навчити себе Coq, використовуючи програму «Основи програмного забезпечення».

Помилка:

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

2
Підтвердження теореми завжди були сірою зоною для CS.SE, але я здогадуюсь, що це хороший кандидат для модників перейти до StackOverflow.
jmite

Це питання має відповіді на деякі питання тут .
Антон Трунов

@jmite З огляду на те, що це питання стосується обчислення конструкцій з Coq, що слугує лише конкретним синтаксисом, я думаю, це тут актуально.
Жил "ТАК - перестань бути злим"

Відповіді:


12

Coq має 3 "великі" типи:

  • Propпризначений для пропозицій. Це непередбачувано, це означає, що ви можете інстанціювати поліморфні функції за допомогою поліморфних типів. Він також має доказову невідповідність, тобто якщо то . Це дозволяє стирати терміни, які використовуються лише для підтвердження, в будь-який код, сформований Coq.p1,p2:Пp1=p2
  • Setпризначений для обчислення. Це предикативно і не має доказової невідповідності, що дозволяє вам робити хороші речі, як, наприклад, не вважати . У частині залишаються в процесі вилучення коду.1=2Set
  • Type є супертипом обох цих програм, що дозволяє вам написати код один раз, який працює з будь-яким

Я впевнений, що ваша помилка полягає в тому, що ви визначаєте, Setчиї параметри можуть бути Type, а значить, вони можуть бути Prop, а це не дозволяється. Якщо ви зміните це:

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

ваш код повинен працювати.


3
Coq не має доказової важливості, Propякщо ви не додасте його як аксіому.
Джефф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.