Teste Gödel | 页面 2

Running title • November 2012 • Vol . XXI , No . 1
for completa e consistente seria possível descrever um programa para f . Assim concluímos que nossa teoria axiomátizável e completa é , na verdade , inconsistente .
Este texto foi inspirado em “ Gödel for Goldilocks : A Rigorous , Streamlined Proof of Gödel ’ s First Incompleteness Theorem , Requiring Minimal Background ” e nesta lista de exercícios .
2 . Uma função não-computável
Comece fixando uma linguagem de programação P , pode ser algo como C , Pascal , Fortran , Java , etc . A linguagem é finita , isto é , tem finitos símbolos e cada programa gerado é finito . Mas isso não quer dizer que a quantidade de programas possíveis tenha tamanho limitado ; pense nos números naturais - temos finitos algarismos , cada número usa finitos algarismos e a quantidade de números é infinita .
A quantidade de programas possíveis de serem feitos em P é enumerável . Um conjunto é dito enumerável quando há entre ele e os naturais uma injeção . Vamos dar para cada símbolo da nossa linguagem um número , note que unindo vários símbolos estaremos unindo também vários números e formando um número maior , poderíamos associar então para cada programa esse número gerado pela concaternação dos números de cada símbolo . Mas como garantir que esse número seja único 1 ? Veja essa sequência de símbolos :
0
¬
!
)
(
=
+
.
100
101
102
103
104
105
106
107
108
109
110
111
Associamos para cada um símbolo um número de três casas decimais . Isso se deve ao fato de não querermos dupla interpretação para uma frase , suponha que tivéssemos os símbolos A e B com os números 1 e 11 , respectivamente , não saberíamos se o número 111 representaria “ AB ”, “ AAA ”, “ BA ” ou “ ∗ ”. Tendo cada número representado por três casas decimais saberemos que 111103 representa somente “ ∗ ∼ ”. Claro que 3 casas decimais seria a melhor representação para uma línguagem com até 900 símbolos , para maiores quantidades poderiam ser 4 casas decimais , 5 ou o “ n ” que melhor se adequasse . Assim poderíamos associar para cada programa de nossa linguagem um número único formado pela concaternação de números de n casas decimais .
Definição 1 . Seja f : N → { 0 , 1 }. Vamos dizer que f é uma função computável se existe um programa feito na linguagem P que , ao receber o valor n , devolve f ( n ).
Da definição sabemos então o que é uma função não computável : uma função para a qual não existe programa feito na linguagem P que ao receber o valor n , devolve f ( n ). Para provar que existem tais funções vamos olhar a ilustração abaixo :
0 , 1 , 2 , 3 , 4 , 5 , 6 , ...
f 0
=
0 , 1 , 1 , 0 , 1 , 0 , 0 , ...
f 1
=
0 , 0 , 1 , 0 , 0 , 1 , 1 , ...
f 2
=
1 , 1 , 1 , 0 , 1 , 1 , 0 , ...
f 3
=
1 , 0 , 0 , 1 , 0 , 0 , 0 , ...
f 4
=
0 , 0 , 1 , 1 , 1 , 0 , 1 , ...
f 5
=
1 , 1 , 0 , 0 , 1 , 0 , 0 , ...
f 6
=
0 , 1 , 0 , 0 , 1 , 0 , 1 , ...
.
.
.
f
=
1 , 1 , 0 , 0 , 0 , 1 , 0 , ...
1 Perceba que tendo cada programa um número único a função que associa para cada programa um número formaria uma injeção com os naturais , logo estaríamos provando que a quantidade de programas em P é enumerável .
2