Existem linguagens de programação (ou lógica) que podem implementar (ou expressar) uma função se e somente se for uma função bijetiva computável?
10
Existem linguagens de programação (ou lógica) que podem implementar (ou expressar) uma função se e somente se for uma função bijetiva computável?
Respostas:
Não existe esse idioma.
No entanto, dê uma olhada no Boomerang . É um idioma para escrever bijections entre strings. Não sei a extensão de uma classe de mapas, mas tenho certeza de que você poderá descobrir se pesquisar um pouco.
É razoável exigir de uma linguagem de programação que o conjunto de programas válidos seja reconhecível por um intérprete ou compilador, ou seja, que seja um conjunto computávelmente enumerável. Suponhamos que tivéssemos uma linguagem de programação cujo conjunto de programas válidos fosse computável enumerável e que implementasse com precisão todas as bjeções computáveis . Isso implicaria que podemos enumerar computacionalmente todas as bijeções computáveis (simplesmente enumerar todos os programas válidos nessa linguagem de programação), mas isso é impossível no próximo teorema.N→N
Teorema: Suponha que é uma sequência computável de bijections computáveis. Depois, há uma bijeção computável que não está na sequência.f0,f1,f2,…
Prova. Construímos uma bijeção seguinte maneira. Para definir os valores e , examinamos :g:N→N g(2k) g(2k+1) fk(2k)
Claramente, para cada , é diferente de porque . Além disso, é computável e é uma bijeção porque é o seu próprio inverso. QED.k∈N g fk g(2k)≠fk(2k) g
fonte