A declaração informal não é verdadeira, como mostra a seguinte linguagem de programação. Qualquer sequência de caracteres, digamos, ASCII é um programa válido e o significado de cada programa é "Saída de um programa que apenas gera uma cópia de sua entrada". Portanto, todo programa nesse idioma é um compilador para o idioma, mas o idioma não é completo para Turing.
Não tenho certeza se a sua "versão da teoria da computabilidade" é equivalente, mas também não é verdadeira. Pelo segundo teorema da recursão de Kleene , para qualquer codificação de máquinas de Turing, existe uma TM que aceita sua própria codificação e rejeita todas as outras. 1 Esta máquina é um contra-exemplo da proposição. Mais concretamente, podemos alcançar o resultado escolhendo uma codificação. Por exemplo, permita que todo número ímpar codifique a máquina definida por "Se minha entrada for ímpar, aceite-a; caso contrário, rejeite" e deixe o número 2 x codificar a máquina codificada por x em seu próprio esquema de codificação favorito para máquinas de Turing. ⟨ M ⟩ está na linguagem L aceita por MM2xx⟨M⟩LMmas não está completo de Turing.FL
1 segunda recursão de Kleene teorema diz que, para qualquer enumeração das funções recursivas parciais (isto é, para qualquer codificação de programas como inteiros), e qualquer parcial recursiva função Q ( x , y ) , há uma número inteiro p tal que ϕ p é a função que mapeia y para Q ( p , y ) . Então, em particular, seja Q a função que aceita se x = y(ϕi)i≥0Q(x,y)pϕpyQ(p,y)Qx=ye rejeita o contrário. Pelo teorema, existe um número inteiro que codifica o programa ϕ p ( y ) = Q ( p , y ) . Ou seja, accepts p aceita sua própria codificação p e rejeita todas as outras entradas.pϕp(y)=Q(p,y)ϕpp