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?)

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.