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

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.


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 t → t e r m → T y p e → b 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+αcontext→term→type→booeu⊥
— 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.