Клас функцій, що обчислюється Coq


22

Оскільки він не дозволяє обчислити, що не припиняються, Coq обов'язково не є повним Тьюрінгом. Що таке клас функцій, який Coq може обчислити? (чи є цікава їх характеристика?)

Відповіді:


18

Бенджамін Вернер довів взаємну інтерпретацію ZFC з незліченною кількістю недоступних та обчислення індуктивних конструкцій у своїй роботі " Набори в типи", "Типи в набори" .

Це означає, що в Coq можна визначити будь-яку функцію, яка може бути показана як загальна в ZFC з численною кількістю недоступних. Отже, якщо ви не теоретик набору, який працює над великими кардиналами, навряд чи будь-яка обчислювана функція, яку ви коли-небудь хотіли, не може бути визначена в Coq.


7
За винятком перекладача Coq ...
Jules

6
Насправді ви можете реалізувати інтерпретатор Coq (справді, довільні загальні рекурсивні функції) всередині Coq. Якщо CIC є послідовним, ви, звичайно, не зможете довести, що інтерпретатор - це тотальна функція, але ви точно можете його реалізувати.
Ніл Крішнасвамі

2
Можна використовувати конструктивну ліфтову монаду, , щоб записати загальні рекурсивні функції. Тоді у вашого інструмента для введення тексту буде тип \ mathsf {контекст} \ до \ mathsf {термін} \ до \ mathsf {type} \ до \ mathsf {bool} _ \ bot . Це в основному підхід Бове / Капретта. (Див. Також "Деякі теорії домену та денотаційну семантику в Coq" Бентона, Кеннеді та Вармінга , dl.acm.org/citation.cfm?id=1616077.1616090. )Aνα.A+αcontexttermtypebool
Ніл

1
@Neel: Це обман. І з поважної причини, інакше ми мали б невідповідність.
Андрій Бауер

2
Це обман, тому що функція оцінювання повинна оцінювати речі, а не давати вам невідповідь.
Андрій Бауер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.