Classe de funções computáveis ​​pela Coq

22

Como não permite computação não-terminativa, Coq não é necessariamente completo em Turing. Qual é a classe de funções que a Coq pode calcular? (existe uma caracterização interessante?)

Steve
fonte

Respostas:

18

Benjamin Werner provou a interpretabilidade mútua do ZFC com muitos inacessíveis e o Cálculo de Construções Indutivas, em seu artigo Sets in Types, Types in Sets .

Isso significa, grosso modo, que qualquer função que possa ser mostrada como total no ZFC, com muitos inacessíveis, pode ser definida no Coq. Portanto, a menos que você seja um teórico dos conjuntos trabalhando em cardeais grandes, é improvável que qualquer função computável que você já desejou não possa ser definida no Coq.

Neel Krishnaswami
fonte
7
Exceto um intérprete Coq ...
Jules
6
Na verdade, você pode implementar um intérprete Coq (de fato, funções recursivas gerais arbitrárias) dentro do Coq. Se o CIC for consistente, você não poderá provar que o intérprete é uma função total, é claro, mas você pode definitivamente implementá-lo.
Neel Krishnaswami
2
Você pode usar a mônada de elevação construtiva, , para escrever funções recursivas gerais. Em seguida, o seu typechecker terá tipo c o n t e x tt e r mT y p eb o o l . Essa é basicamente a abordagem Bove / Capretta. (Veja também Benton, Kennedy e Varming de "algum domínio Teoria e denotacional Semântica em Coq",dl.acm.org/citation.cfm?id=1616077.1616090.)UMAνα.UMA+αcontexttermtypebooeu
Neel Krishnaswami
1
@ Neel: Isso é trapaça. E por uma boa razão, caso contrário, teríamos uma inconsistência.
Andrej Bauer
2
É trapaça porque a função de avaliação deve avaliar as coisas, não fornecer uma não resposta.
Andrej Bauer 22/01