Toda vez que acho que entendo o que o teorema de Rice significa, encontro um contra-exemplo para me confundir. Talvez alguém possa me dizer onde estou pensando errado.
Vamos usar uma propriedade não trivial do conjunto de funções computáveis, por exemplo, deixe . Obviamente, é infinito contável e há também um número infinito contável de funções computáveis não em .
Agora vamos considerar uma linguagem de programação completa sobre um conjunto finito de instruções e o conjunto de programas sintaticamente corretos , com. Se eu puder escolher a semântica da minha linguagem como quiser, também posso numerar os programas como quiser e, portanto, deve ser possível projetar uma linguagem de programação em que algum subconjunto dos programas calcule exatamente algum subconjunto arbitrário das funções computáveis, como desde que a cardinalidade corresponda. Por exemplo, deixe , e cada programa calcula uma função total. Desde, esse idioma deve existir.
No entanto, é obviamente computável em turing e, como , teríamos um programa que decide a propriedade não trivial , o que não é possível de acordo com o teorema de Rice.
Onde está o erro na minha dedução? Isso significa que não há linguagem de programação em que cada programa palindrômico (ou melhor, de qualquer estrutura computável) calcule exatamente as funções totais (ou melhor, qualquer conjunto de funções computáveis)? Isso realmente me deixa perplexo.