Класс функций, вычислимый по Coq

22

Поскольку он не допускает вычислений без прерывания, Coq обязательно не является тьюрингово-полным. Какой класс функций может вычислять Coq? (есть интересная характеристика этого?)

Стив
источник

Ответы:

18

Бенджамин Вернер доказал взаимную интерпретацию ZFC со счетным количеством недоступных и исчислением индуктивных конструкций в своей статье « Наборы в типах», «Типы в наборах» .

Это примерно означает, что любая функция, которая может быть показана как полная в ZFC со счетным числом недоступных, может быть определена в Coq. Поэтому, если вы не теоретик множеств, работающий с большими кардиналами, маловероятно, что любая вычислимая функция, которую вы когда-либо хотели, не может быть определена в Coq.

Нил Кришнасвами
источник
7
За исключением переводчика Coq ...
Жюль
6
На самом деле, вы можете реализовать интерпретатор Coq (на самом деле, произвольные общие рекурсивные функции) внутри Coq. Если CIC непротиворечив, вы, конечно, не сможете доказать, что интерпретатор является полной функцией, но вы определенно можете ее реализовать.
Нил Кришнасвами
2
Вы можете использовать монаду конструктивного лифта, , для написания общих рекурсивных функций. Тогда ваш типограф будет иметь тип \ mathsf {context} \ to \ mathsf {term} \ to \ mathsf {type} \ to \ mathsf {bool} _ \ bot . Это в основном подход Бове / Капретта. (См. Также Бентон, Кеннеди и Варминг "Некоторая теория доменов и денотационная семантика в Coq", dl.acm.org/citation.cfm?id=1616077.1616090. )Aνα,A+αсоNTеИксTTермTYпебооL
Нил Кришнасвами
1
@Neel: Это обман. И по уважительной причине, в противном случае у нас было бы несоответствие.
Андрей Бауэр
2
Это обман, потому что функция оценки должна оценивать вещи, а не давать вам ответ.
Андрей Бауэр