Klasa funkcji obliczalna przez Coq

22

Ponieważ nie pozwala na niekończące się obliczenia, Coq niekoniecznie nie jest kompletny w Turingu. Jaką klasę funkcji może obliczyć Coq? (czy istnieje ich interesująca charakterystyka?)

Steve
źródło

Odpowiedzi:

18

Benjamin Werner udowodnił wzajemną interpretację ZFC z niezliczoną liczbą niedostępnych i rachunku konstrukcji indukcyjnych w swoim artykule Zestawy w typach, Typy w zestawach .

Oznacza to z grubsza, że ​​dowolna funkcja, która może być pokazana jako całkowita w ZFC z niezliczoną liczbą niedostępnych, może być zdefiniowana w Coq. Więc jeśli nie jesteś teoretykiem zestawów pracującym na dużych kardynałach, jest mało prawdopodobne, aby jakakolwiek funkcja obliczeniowa, jakiej kiedykolwiek chciałeś, nie mogła zostać zdefiniowana w Coq.

Neel Krishnaswami
źródło
7
Z wyjątkiem tłumacza Coq ...
Jules
6
W rzeczywistości można zaimplementować interpreter języka Coq (a właściwie dowolne ogólne funkcje rekurencyjne) w Coq. Jeśli CIC jest spójny, nie będziesz w stanie udowodnić, że interpreter jest funkcją całkowitą, oczywiście, ale na pewno możesz ją zaimplementować.
Neel Krishnaswami,
2
Możesz użyć konstruktywnej monady windowej, , aby napisać ogólne funkcje rekurencyjne. Wówczas Twój typechecker będzie miał typ \ mathsf {kontekst} \ to \ mathsf {term} \ to \ mathsf {type} \ to \ mathsf {bool} _ \ bot . Jest to w zasadzie podejście Bove / Capretta. (Zobacz także Bentona, Kennedy'ego i Varminga „Some Domain Theory and Denotational Semantics in Coq”, dl.acm.org/citation.cfm?id=1616077.1616090. )Aνα.A+αcontexttermtypebool
Neel Krishnaswami
1
@Neel: To oszustwo. I nie bez powodu, mielibyśmy niespójność.
Andrej Bauer,
2
To oszustwo, ponieważ funkcja oceny ma oceniać rzeczy, a nie dawać ci brak odpowiedzi.
Andrej Bauer,