Você está na página 1de 14

Incompletude em Sistemas Formais - Parte 2:

Indecidibilidade

Vinı́cius A. de Souza
Fevereiro de 2015

Nesta apresentação falarei um pouco sobre o capı́tulo 3 do livro Godel’s theo-


rem - an incomplete guide to its use and abuse, de Torkel Franzén, que trata um
pouco sobre a teoria da computabilidade e sua aplicação no estudo dos funda-
mentos da matemática, mais precisamente, na obtenção de propriedades de in-
decidibilidade de certos conjuntos numéricos e de incompletude de sistemas for-
mais especı́ficos (veremos adiante o que eu quero dizer com “especı́fico”) outrora
reveladas principalmente por Gödel e Turing. Cabe aqui a observação de que du-
rante todo o texto o leitor encontrará uma bibliografia adicional para que possa
realizar um possı́vel aprofundamento, caso julgue interessante. Sendo assim,
abordarei introdutoriamente alguns tópicos como sistemas formais, máquina
de Turing e noção formal de computabilidade, conjuntos recursivamente enu-
meráveis, decidı́veis e indecidı́veis, indecidibilidade do problema da parada e a
incompletude de sistemas formais. O leitor também encontrará alguns resulta-
dos para serem demonstrados, caso queira um pouco de atividade.

1 Sistemas Formais
Simplificadamente falando, um sistema formal é um sistema de manipulação de
sı́mbolos no qual se explicita as regras de derivação que permitirão produzir
novas cadeias de sı́mbolos, por assim dizer, e onde se pode formalizar o conceito
de prova. Minha exposição aqui sobre sistemas formais segue principalmente os
livros do Elliot Mendelson [6] e do Adonai Sant’Anna [7].

Um sistema formal S é definido quando são satisfeitas as seguintes pro-


priedades:
1. Existe um conjunto contável de sı́mbolos. Uma sequência qualquer de
sı́mbolos de S é chamada de expressão.
2. Existem um subconjunto de expressões de S chamadas de fórmulas bem
formadas (abreviarei por fbf no singular e fbfs no plural) e um procedi-
mento efetivo que determina quais expressões são fórmulas bem formadas.
∗ Graduando em Matemática Computacional pela Universidade Federal de São Paulo -

UNIFESP / SJC. Contato: va.vinicius@gmail.com.

1
3. Do conjunto de fbfs, extrai-se um conjunto de axiomas de S. Quando
existe um procedimento efetivo para decidir quais fórmulas bem formadas
são axiomas dizemos que S é um sistema formal axiomático.
4. Existe um conjunto finito de relações R1 , R2 , . . . , Rn entre fbfs chamadas
de regras de inferência. Para cada Ri , existe um único inteiro positivo j tal
que para todo conjunto de j fbfs e para cada fbf B, podemos decidir se as
j fbfs estão na relação Ri com B. Se este for o caso, dizemos que B segue
das tais fbfs por uso da regra de inferência Ri ou que B é consequência
direta das fbfs por virtude de Ri .
Podemos agora definir os importantes conceitos de prova e teorema de um
sistema formal. Uma prova ou demonstração em S é uma sequência finita
B1 , B2 , . . . , Bk de fbfs tal que, para cada i, ou Bi é um axioma ou é consequência
direta de alguma(s) fbf(s) anterior(es) a Bi por virtude de alguma regra de
inferência do sistema. Sendo assim, um teorema de S é uma fbf B de S tal que
B é a última fbf de alguma prova em S. Tal prova é dita, portanto, prova de B
em S. Você pode dizer, então, que B é um teorema de S ou é demonstrável em
S se existe uma prova em S onde B é a última fbf desta prova.
Exemplo 1 Vejamos um sistema formal L para o cálculo proposicional1 .
1. Os sı́mbolos de L são ¬, ⇒, (, ) e letras Ai com inteiros positivos i como
subscritos. Os sı́mbolos ¬ e ⇒ são chamados de conectivos primitivos e
as letras Ai são chamadas de letras sentenciais.
2. As fbfs são dadas por:
• Todas as letras sentenciais são fbfs.
• Se B e C são fbfs, então (¬B) e (B ⇒ C) também são fbfs.
• Uma fbf de L é uma sentença construı́da por meio dos conectivos
primitivos a partir de letras sentenciais.
3. Se B, C e D são fbfs de L, então são axiomas de L:
• (A1) (B ⇒ (C ⇒ B))
• (A2) ((B ⇒ (C ⇒ D)) ⇒ ((B ⇒ C) ⇒ (B ⇒ D)))
• (A3) (((¬C) ⇒ (¬B)) ⇒ (((¬C) ⇒ B) ⇒ C))
4. Há uma única regra de inferência denominada Modus Ponens (MP): C é
consequência direta de B e (B ⇒ C).
No próximo exemplo, vamos demonstrar um teorema no sistema L. Lembre-
se de que devemos partir de algum axioma e ir obtendo consequências por meio
da regra de inferência MP.
1 Este exemplo é retirado do livro do Mendelson [6]. Certamente poderá haver outros

sistemas formais para o cálculo proposicional clássico.

2
Exemplo 2 Para toda fbf B, (B ⇒ B) é teorema de L. A prova é dada pela
seguinte sequência:
1. ((B ⇒ ((B ⇒ B) ⇒ B)) ⇒ ((B ⇒ (B ⇒ B)) ⇒ (B ⇒ B)))
2. (B ⇒ ((B ⇒ B) ⇒ B))
3. (B ⇒ (B ⇒ B)) ⇒ (B ⇒ B)
4. (B ⇒ (B ⇒ B))
5. B ⇒ B
Note que a primeira e a segunda fbfs são instâncias, respectivamente, dos axi-
omas (A2) e (A1). A terceira fbf segue da segunda e da primeira por meio de
MP. A quarta fbf é uma instância do axioma (A1) e, por fim, a última fbf da
demonstração segue da quarta e da quinta fbf por MP.
Há três propriedades sobre sistemas formais que devem ser mencionadas.
Primeiramente, dizemos que um sistema formal é decidı́vel se existe um proce-
dimento efetivo que decida se uma dada fbf qualquer de S é um teorema de S.
Caso não exista tal procedimento efetivo, o sistema é dito, então, indecidı́vel.
Assumindo que a linguagem do sistema formal possui um operador de negação
(digamos, representado por ¬), ele será consistente se não existe nenhuma fbf
α tal que α e ¬α são ambas teoremas deste sistema. Caso contrário, é dito
inconsistente. Por fim, um sistema formal será completo se toda fbf possui
demonstração ou refutação, isto é, se β é uma fbf qualquer, então ou β ou
¬β possui demonstração neste sistema. Caso contrário, será dito incompleto.
Quando um sistema formal é incompleto, isto significa, portanto, que existe uma
fbf γ indecidı́vel, no sentido de que tanto γ quanto ¬γ não possuem demonstra-
ção neste sistema.

Cabe aqui fazermos algumas observações sobre nossas definições iniciais que
envolvem algumas imprecisões principalmente no que se refere a axiomas2 .
Primeiramente, note que os axiomas de um sistema formal podem, de certa
forma, ser escolhidos arbitrariamente do conjunto de fbfs. Nenhuma exigência
foi realizada no sentido de eles serem consistentes, nem que formem um conjunto
finito ou mesmo que sejam imediatamente intuitivos.

Há ainda duas frases imprecisas que às vezes ouvimos. A primeira diz que
“axiomas são sempre verdadeiros”. Este é um tópico que necessita de um pouco
mais de ferramentas da lógica. Primeiramente, você pôde notar que, em nossa
definição de sistema formal, não fizemos nenhuma referência à noção de ver-
dade. Sant’Anna diz que “se o sistema formal for uma teoria de primeira or-
dem e se estivermos falando de verdade no sentido de Tarski, um dado axioma
pode ser verdadeiro ou falso em uma dada interpretação”3 . Tentarei explicar
2 Sobre isto, veja o capı́tulo 2 do livro do Sant’Anna [7].
3 Página 92 do livro O que é um axioma [7]. Ele inclusive fornece um exemplo deste fato
na página 102.

3
isto em outras palavras. Quando se constroi um sistema formal, estabelecemos
inicialmente noções sintáticas, isto é, noções que se aplicam a sequências de
sı́mbolos isentos de significado. Por outro lado, a semântica formal vai permitir
atribuir valores verdade às fórmulas de um sistema formal. Sendo assim, uma
interpretação é algo que nos fornecerá um exemplo ou realização daquela parte
sintática, e pode ser feita de tal modo que um axioma seja falso.

Por fim, a segunda diz que “axiomas são verdades aceitas sem demonstra-
ção”. De acordo com a definição apresentada do conceito de prova, o próprio
leitor pode demonstrar que em um sistema formal todo axioma é demonstrável.

2 Máquinas de Turing
Quando dizemos intuitivamente que um problema ou objeto é computável ou
calculável, imaginamos que seja possı́vel resolver este problema ou construir
este objeto de forma automática, apenas seguindo uma série de instruções. En-
tretanto, para responder certas questões oriundas inicialmente da lógica e da
matemática, precisamos de uma noção formal de computabilidade, pois, pelo
menos na matemática, me parece que nossas respostas não devem depender da
sua ou da minha ideia em particular.

Alan Turing foi um dos primeiros a estabelecer uma noção formal de com-
putabilidade (1936/1937), formalização esta que ficou conhecida por máquina
de Turing, publicada no artigo On computable numbers, with an application to
the Entscheidungsproblem4 . A aplicação a qual este artigo se refere, o Entschei-
dungsproblem, trata do problema de decisão da lógica de primeira ordem (pro-
posto por Hilbert). Este problema pergunta, basicamente, se existe um método
automático para decidir se uma sentença qualquer da lógica de primeira ordem
possui demonstração ou não.

Em computable numbers Turing responde de forma negativa ao problema da


decisão. Alonso Church, lógico americano, também anunciou este resultado de
forma independente, utilizando uma formalização do conceito de computabili-
dade denominada λ-definibilidade. O próprio Turing demonstrou que as duas
noções são equivalentes. Aliás, outras noções de computabilidade foram pro-
postas, sendo todas elas provadas como equivalentes. Este é o principal argu-
mento em favor da denominada Tese de Turing, onde se estabelece que não
há uma noção mais poderosa de computabilidade do que a máquina de Tu-
ring. Sendo assim, se assumirmos como verdadeira a tese mencionada, estamos
considerando que qualquer procedimento calculável (no sentido intuitivo) é com-
putável por máquina de Turing.

4 Uma digitalização deste artigo está disponı́vel no projeto Turing Digital Archive, no link

http://www.turingarchive.org/browse.php/B/12.

4
Vale mencionar que, aparentemente, a máquina de Turing causa um maior
fascı́nio do que a λ-definibilidade de Church (é uma opinião minha, é claro,
mas também de muitos outros). Ela não só forneceu um aparato teórico para
a construção dos próprios computadores fı́sicos, mas talvez inaugura também
todo um pensamento comtemporâneo a respeito da própria mente humana, com
implicações não somente na lógica e na matemática, mas também na filosofia5 .
Feitas estas observações, introduziremos inicialmente algumas definições e, em
seguida, formalizaremos a máquina de Turing com base em [1] e [2].

Uma Máquina de Turing (MT) é um dispositivo constituı́do por uma fita


potencialmente infinita, isto é, uma fita que pode ser infinitamente prolongada
à esquerda e à direita, que está dividida em quadrados. Cada quadrado está
vazio ou contém algum sı́mbolo de uma lista finita s1 , s2 , . . . , sn de sı́mbolos
(conjunto este chamado de alfabeto da MT). A MT ainda possui uma cabeça
de leitura, que realiza a leitura de um único sı́mbolo de um quadrado da fita e
pode fazer o seguinte:

1. Apagar o sı́mbolo do quadrado lido e escrever neste quadrado um sı́mbolo


qualquer do alfabeto.
2. Mover a cabeça de leitura um quadrado à direita ou à esquerda do quadrado
que está sendo lido.
Em qualquer instante de tempo, a MT está em um estado oriundo de um
número finito de estados, representados por q1 , q2 , . . . , qm . A ação a ser tomada
pela MT depende de seu estado atual e do sı́mbolo que está sendo lido no
momento. Sendo assim podemos especificar suas ações por um conjunto finito
Q de quádruplas (podemos chamá-las de instruções), que podem assumir uma
das formas abaixo:
(qi , sj , sk , ql )
(qi , sj , D, ql )
(qi , sj , E, ql )
para 1 ≤ i, l ≤ m, 0 ≤ j, k ≤ n.

Vejamos o significado das instruções. Uma quádrupla (qi , sj , α, ql ) ∈ Q in-


forma à MT, quando ela está no estado qi e realiza a leitura do sı́mbolo sj , que
deve realizar as seguintes ações:

1. Verifique as condições abaixo:


(a) Se α = sk , apague sj e escreva sk no quadrado que está sendo lido.
(b) Se α = D, mova a cabeça de leitura um quadrado para a direita.
(c) Se α = E, mova a cabeça de leitura um quadrado para a esquerda.
5 Para saber um pouco mais sobre a filosofia de Turing, recomendo a leitura do livro Turing

- um filósofo da natureza, de Andrew Hodges, publicado pela Editora UNESP em 2001.

5
2. Modifique o estado atual para ql e vá para a próxima instrução.

Até este ponto, aprendemos então como criar um “programa” em uma


máquina de Turing. Um programa, então, nada mais é do que uma sequência
finita de instruções que obedecem às especificações acima. No próximo tópico,
estabelecemos como uma MT realiza uma computação.

2.1 Turing-computabilidade
Para realizar uma computação, a máquina deve ser inicializada com uma fita
(que já pode conter determinados sı́mbolos em seus quadrados - seria o input da
máquina). A máquina deve estar em um estado inicial e a cabeça de leitura deve
estar posicionada em determinado quadrado. Vamos ainda estabelecer algumas
convenções:
1. Uma MT sempre começa no seu estado de menor número, que chamaremos
de q1 .
2. Se não houver instrução a seguir, a máquina interrompe a computação,
isto é, a máquina para se, quando estiver no estado qi e realizando a leitura
do sı́mbolo sj , não houver uma quádrupla da forma (qi , sj , α, β) em Q.
3. Não deve haver confilto entre instruções, isto é, não deve haver duas
quádruplas com os dois primeiros valores iguais mas um dos dois últimos
diferentes.
Uma configuração de uma MT passa a ser então uma tripla ordenada da
forma (conteúdo da fita, quadrado examinado, estado atual ).

Para representarmos números naturais, utilizamos o alfabeto Σ = {0, 1},


onde ‘0’ representa que o quadrado está em branco e ‘1’ será nosso sı́mbolo para
marcação. Assim, x ∈ N será representado como x+1 aparições em sequência do
sı́mbolo ‘1’ (que denotaremos por 1x+1 ), cada sı́mbolo escrito em um quadrado
da fita de uma MT (logo adiante há exemplos desta representação).

Uma fita estará na configuração padrão se está em branco ou contém somente


uma cadeia da forma 1k , para algum natural k ≥ 1. Podemos ainda representar
n-uplas de números naturais (x1 , x2 , . . . , xn ) como uma lista das representações
de cada xi separados pelo sı́mbolo ‘0’.
Exemplo 3 As fitas abaixo mostram, por exemplo, as representações para os
naturais 0 e 3 e para a tripla (1, 3, 2), respectivamente:

... 1 ...

... 1 1 1 1 ...

... 0 1 1 0 1 1 1 1 0 1 1 1 0 ...

6
Dizemos que uma função f : Nk −→ N ( k ∈ N, k ≥ 1) é parcial se não está
necessariamente definida para todos os valores de seu domı́nio. Caso contrário,
ou seja, se f está definida para todos os valores de seu domı́nio, então dizemos
que f é total.

Podemos definir agora a computabilidade de uma função parcial f : Nk −→


N ( k ∈ N, k ≥ 1) por uma máquina de Turing. Primeiramente, estabelecemos
como uma MT computa uma função f :

• Considere uma computação de uma MT cuja fita contém somente as rep-


resentações de x1 , x2 , . . . , xk (o restante da fita está em branco), inicia
no estado de menor número e sua cabeça de leitura está posicionada no
quadrado que possui o primeiro sı́mbolo ‘1’ à esquerda;
• Então, após uma sequência finita de instruções de Q, f (x1 , x2 , . . . , xk )
será igual ao número de ocorrências do sı́mbolo ‘1’ na configuração final
da fita (caso a computação termina) ou será indefinida, caso a MT nunca
atinja seu estado final. Observe que a representação do valor da função
no final da computação difere da representação dos valores de entrada
representados inicialmente na fita;

• Quando possı́vel, a MT para em seu estado de maior número e sua fita


está na configuração padrão.

Logo, definimos que uma função parcial f é Turing-computável se existe uma


máquina de Turing que a computa conforme especificado acima. Perceba que
uma mesma função pode ser computada por diferentes máquinas de Turing,
mas, no entanto, uma máquina de Turing computa apenas uma determinada
função. Vou te dar um exemplo de uma função Turing-computável:

Exemplo 4 A função f : N2 → N dada por f (a1 , a2 ) = (a1 + a2 ) é Turing-


computável. Considere uma MT com as representações de a1 e a2 em sua
fita, inicializando no estado q1 e examinando inicialmente o quadrado mais à
esquerda:

... 1 1 ... 1 1 B 1 1 ... 1 1 ...

Como a configuração inicial da fita apresenta (a1 + 1) + (a2 + 1) = a1 +


a2 + 2 ocorrências do sı́mbolo ‘1’, temos simplesmente que apagar as duas
primeiras ocorrências deste sı́mbolo. Dessa forma, a fita possuirá exatamente
a1 +a2 ocorrências do sı́mbolo ‘1’. Para fazermos a fita finalizar na configuração
padrão, a máquina irá escrever ‘1’ no quadrado em branco, irá para a esquerda
e apagará três sı́mbolos ‘1’. A sequência de instruções que realiza este processo
pode ser dada por
(q1 , 1, D, q1 ), (q1 , 0, 1, q2 ), (q2 , 1, E, q2 ), (q2 , 0, D, q3 ), (q3 , 1, 0, q4 )
(q4 , 0, D, q5 ), (q5 , 1, 0, q6 ), (q6 , 0, D, q7 ), (q7 , 1, 0, q8 ), (q8 , 0, D, q9 )

7
As duas primeiras quádruplas buscam pelo quadrado em branco e escreve o
sı́mbolo ‘1’ neste quadrado. A terceira e a quarta quádruplas movem a cabeça
de leitura para o primeiro ‘1’ à esquerda. As quádruplas restantes apagam os
três primeiros sı́mbolos ‘1’. A máquina para a execução no estado q9 , já que
não há nenhuma quádrupla que informe à MT o que fazer quando estiver neste
estado.

Caso o leitor não esteja convencido de que as 10 instruções dadas são capazes
de calcular a soma de dois números inteiros, convido-o a utilizá-las para fazer
uma soma qualquer (tente 2+3, por exemplo).

3 Computabilidade, Sistemas Formais e Incom-


pletude
3.1 O Problema da Parada
Neste ponto você já consegue perceber que sentenças, axiomas, provas e teo-
remas de um sistema formal podem ser vistos, em última instância, como
sequências de sı́mbolos. Do ponto de vista da matemática, strings e números
são, de certa forma, intercambiáveis, já que através de um processo chamado de
numeração de Gödel, podemos representar strings arbitrárias de forma unı́voca
por números. Aliás, esta é uma das duas propriedades mais importantes de uma
numeração:
1. Dada uma string, podemos computar seu número de Gödel e

2. Dado um número inteiro, podemos descobrir se este número é o número


de Gödel de alguma string e qual é esta string.
Dizemos que um conjunto E de strings é recursivamente enumerável se e-
xiste um procedimento mecânico que produza e escreva os elementos de E e
é dito decidı́vel se existe um algoritmo que decida, dada qualquer string s de
sı́mbolos, se s pertence ou não a E. Vale ressaltar que agora estamos utilizando
os termos “procedimento mecânico” e “algoritmo” para diferenciar um procedi-
mento automático que não para, isto é, que pode permanecer executando sua
tarefa indefinidamente (o primeiro) de um procedimento automático que para
sua execução (o último). Finalmente, tais definições podem ser estendidas a
conjuntos de números naturais ou quaisquer objetos matemáticos que podem
ser representados por números.
Exercı́cio 1 Prove que todo conjunto finito de strings é decidı́vel.
Não obstante, vale ressaltar ainda que existe de fato uma conexão entre
os sentidos de decidibilidade quando aplicados a conjunto de strings e quando
aplicado a sentenças de um sistema formal (neste último caso, dizemos que uma
sentença α em um sistema formal é decidı́vel se α ou a negação de α é demons-
trável neste sistema, caso contrário, α é dita indecidı́vel), pois podemos usar

8
o fato de que certos conjuntos são indecidı́veis para provar que certos sistemas
formais possuem sentenças indecidı́veis.

Há duas relações básicas entre enumerabilidade recursiva e decidibilidade.


A primeira é que todo conjunto decidı́vel é recursivamente enumerável e a se-
gunda é que um conjunto E é decidı́vel se e somente se os conjuntos E e o seu
complemento são recursivamente enumeráveis. Dito isto, passemos a investigar
um importante resultado da teoria de computabilidade (o teorema e os lemas
seguem [5]):
Teorema 1 Nem todo conjunto recursivamente enumerável é decidı́vel.

O formalismo das máquinas de Turing nos permite afirmar que um programa


(conjunto de instruções) é, em si mesmo, uma string de sı́mbolos (aliás, isto vale
para qualquer linguagem de programação que você conheça) e, desde que exista
um conjunto de regras para escrever tais programas, o conjunto de programas
é decidı́vel (tente provar isto como um lema). Sendo assim, consideremos uma
enumeração apenas do subconjunto daqueles programas que recebem uma string
como entrada e ou ficam executando para sempre ou terminam sua execução e
fornecem uma string como saı́da, digamos,

P0 , P1 , P2 , . . .

Chamemos o número i de ı́ndice do programa Pi . Seja K o conjunto daqueles


ı́ndices i tais que o programa Pi termina sua execução e imprime uma string
qualquer quando recebe como entrada o seu próprio ı́ndice i. Queremos mostrar,
então, que este conjunto K é recursivamente enumerável e indecidı́vel.
Lema 1 O conjunto K é recursivamente enumerável.

Demonstração. Inicialmente, observamos que sempre podemos decidir se um


programa Pi , ao receber determinada entrada k, encerra sua execução após,
digamos, n passos – basta gerar este programa, executá-lo e esperar no máximo
esta quantidade de passos serem realizados. Sendo assim, o conjunto das sen-
tenças verdadeiras da forma “a computação realizada por Pi com entrada k
termina após de, no máximo, n passos”, onde k e n são numerais, é decidı́vel.
Logo, para enumerarmos K, passamos pelas strings da forma indicada anterior-
mente e adicionamos i à lista de elementos de K sempre que encontrarmos para
k = i uma sentença verdadeira, o que encerra a demonstração.
Lema 2 O conjunto K não é decidı́vel.

Demonstração. Se K fosse decidı́vel, existiria um algoritmo G que, dado qual-


quer ı́ndice i, decide se o i-ésimo programa para ou não sua execução ao receber
i como entrada. Daı́, poderı́amos definir um procedimento H que faz o seguinte:
1. Recebe qualquer input i e, através de G, decide se i pertence ou não a K.
2. Se i não pertece a K, nosso algoritmo H fornece 0 como saı́da.

9
3. Se i pertence a K, nosso procedimento executa Pi . A saı́da do nosso
procedimento H será a saı́da do programa Pi adicionada de um sı́mbolo
qualquer ao fim.
Nosso procedimento H é de fato um algoritmo da mesma natureza do que
aqueles da enumeração inicial, já que recebe uma string de entrada e computa
outra string como saı́da. Sendo assim, H deve ser idêntico a Pm para algum
m da enumeração, mas, no entanto, difere de todos os programas em m – con-
tradição. Portanto, nossa hipótese inicial é falsa, logo, K não é decidı́vel, como
querı́amos demonstrar.

O leitor atento percebeu que esta última demonstração se utiliza de algo


parecido com o argumento diagonal de Cantor. De fato, sua percepção está
aguçada. Veja se concorda comigo: vimos que a hipótese de K ser decidı́vel nos
permitiu supor a existência de um programa G que consegue saber se dado i
pertence ou não a K, em outras palavras, se qualquer programa Pi encerra ou
não sua execução ao receber o próprio i como entrada, algo, digamos, assim:

G Entrada
Programa 0 1 2 3 ...
0 ”para” ...
1 ”não para” ...
2 ”para” ...
3 ”para” ...
.. .. .. .. ..
. . . . . ...

O que fizemos foi construir um procedimento H que difere de todos os pro-


gramas da suposta enumeração exatamente na diagonal. Por fim, como H deve
ser também um algoritmo da lista, digamos H = Pm , encontramos uma con-
tradição, pois, de acordo com as instruções de H, se Pm não para (instrução 2),
então Pm para e fornece 0 e se Pm para, então Pm fornece uma saı́da diferente
do que ela mesmo deveria fornecer (instrução 3), e daı́ H 6= Pm , ou seja, con-
cluı́mos que H deve ser igual e diferente de Pm ao mesmo tempo! Isto mostra
que a decidibilidade de K é absurda.

De maneira geral, não existe um algoritmo G que decida se um dado pro-


grama qualquer para ou não sua execução ao receber um dado input, fato este
conhecido como a insolubilidade do problema da parada e demonstrado por Tur-
ing. A prova é análoga à apresentada anteriormente para o problema sobre o
conjunto K.

3.2 Indecidibilidade e Incompletude


Como já mencionado anteriormente, a ideia agora é utilizarmos o fato de que
existem conjuntos recursivamente enumeráveis que são indecidı́veis para obter-
mos uma demonstração de que certos sistemas formais possuem sentenças inde-

10
cidı́veis, em outras palavras, de que certos sistemas formais são incompletos.

De acordo com o livro do Franzén (mais precisamente na página 74), é


possı́vel construirmos uma versão do primeiro teorema da incompletude baseando-
se no fato citado anteriormente, de tal modo que não se faz necessária a for-
malização de sentenças autorreferentes (núcleo do argumento técnico de Gödel).
Tudo o que precisamos é que o sistema formal em questão contenha um mı́nimo
de aritmética e satisfaça certa propriedade (já veremos mais à frente). Não
obstante, se utilizarmos como base da demonstração o conjunto das equações
diofantinas solúveis (que devemos, é claro, demonstrar ser recursivamente enu-
merável e indecidı́vel), Franzén ressalta ainda que temos a vantagem de não
ser necessária a preocupação com a artimetização da linguagem, já que serão
manipuladas apenas sentenças aritméticas simples.

Sendo assim, inicialmente apresentarei os argumentos do Franzén, que são in-


teressantes também pela sua conexão com o 10◦ problema de Hilbert. É possı́vel
empreendermos uma generalização deste resultado de incompletude como con-
sequência da indecidibilidade de conjuntos. Para saber mais sobre isto, re-
comendo a leitura do artigo [4] de Martin Davis, que pode ser encontrado no site
da American Mathematical Society (http://www.ams.org/notices/200604/).

3.2.1 Equações Diofantinas e Incompletude


Uma equação diofantina é uma equação da forma D(x1 , x2 , . . . , xn ) = 0, onde
D é um polinômio com coeficientes inteiros. O 10◦ problema de Hilbert consis-
tia em determinar se existe ou não um algoritmo para decidir se uma equação
diofantina qualquer possui solução nos inteiros6 .

É possı́vel estabelecer a enumerabilidade recursiva e a indecidibilidade do


conjunto das equações diofantinas solúveis. Não irei demonstrar tais resultados,
limito-me aqui a direcionar o leitor interessado ao artigo de Martin Davis [3] que
fala sobre a insolubilidade do 10◦ problema de Hilbert7 . Vamos então apenas
formalizar isto:

Teorema 2 O conjunto D das equações diofantinas solúveis é recursivamente


enumerável e indecidı́vel.

Observação 1 Antes de adentrarmos propriamente ao problema da incomple-


tude, vale ressaltar uma consequência do teorema anterior. Como o conjunto das
equações diofantinas solúveis é indecidı́vel, isto implica que o seu complemento
não é recursivamente enumerável, ou seja, o conjunto das equações diofantinas
que não possuem solução não é recursivamente enumerável.
6 Você pode encontrar as notas da conferência proferida por Hilbert em 1900 neste link:

http://www.rbhm.org.br/vo3-no5.html
7 Pode ser lido aqui: http://www.maa.org/programs/maa-awards/writing-awards/hilberts-

tenth-problem-is-unsolvable.

11
Consideremos agora um sistema formal S cujos axiomas e regras de inferência
são tais que o conjunto de teoremas de S é recursivamente enumerável8 . Além
disso, S é um sistema formal que contém artimética necessária para provarmos
as sentenças verdadeiras da forma “D(x1 , . . . , xn ) = 0 possui solução x1 =
k1 , . . . , xn = kn ”. Vamos nos concentrar nos teoremas de S da forma

“D(x1 , . . . , xn ) = 0 não possui solução”.

Observação 2 Observe que se S é consistente, então, todo teorema destacado


acima (sentenças da forma acima que possuem demonstração) é verdadeiro.
Esta passagem foi rápida. Mas pense o seguinte: não pode haver uma demons-
tração de uma sentença falsa da forma “D(x1 , . . . , xn ) = 0 não possui solução”,
pois, se houvesse, isto significaria que tal equação possui solução e este fato
seria demonstrável em S (pelas nossas hipóteses iniciais sobre S), implicando
na inconsistência do sistema, pois S possibilitaria demonstrar uma sentença e
sua negação.

Vejamos agora nosso primeiro teorema de incompletude:

Teorema 3 Considerando as hipóteses anteriormente apresentadas sobre S,


existe uma equação D(x1 , . . . , xn ) = 0 que não possui solução porém este fato
não é demonstrável em S, em outras palavras, existem sentenças “D(x1 , . . . , xn ) =
0 não possui solução” verdadeiras que não são teoremas de S.

Demonstração. Se para toda equação D(x1 , . . . , xn ) = 0 que não possui solução


houvesse demonstração deste fato em S, isto tornaria D decidı́vel, pois caso
D(x1 , . . . , xn ) = 0 possua solução, isto pode ser encontrado pela própria enu-
meração de D (lembre-se de que D é recursivamente enumerável), caso contrário,
o fato de D(x1 , . . . , xn ) = 0 não possuir solução poderia então ser listado como
um teorema de S (podemos confiar que a equação de fato não tem solução pela
observação 2), já que supomos que o conjunto de teoremas de S é recursivamente
enumerável. Como sabemos que D é indecidı́vel, segue que, portanto, que nem
toda equação D(x1 , . . . , xn ) = 0 que não possui solução encontra demonstração
deste fato em S.

Exercı́cio 2 Mostre que a união de dois conjuntos recursivamente enumeráveis


é recursivamente enumerável.

Exercı́cio 3 Se A é o conjunto das equações para as quais existe prova de que


não possuem solução e B o conjunto das equações que não possuem solução,
mostre que o conjunto das sentenças verdadeiras da forma “D(x1 , . . . , xn ) = 0
não possui solução” que não possuem prova em S não é recursivamente enu-
merável.

Considerando o primeiro teorema, vamos reforçar as hipóteses sobre S e


investigar o segundo teorema de incompletude:
8 Tente pensar em hipóteses e maneiras para podemos listar recursivamente os teoremas.

12
Teorema 4 Se assumirmos adicionalmente que S possui a propriedade de que
sentenças demonstráveis são verdadeiras, então podemos concluir que existe uma
equação D(x1 , . . . , xn ) = 0 indecidı́vel em S, em outras palavras, que existe uma
sentença “D(x1 , . . . , xn ) = 0 não possui solução” indecidı́vel.
Demonstração. Anteriormente, obtemos que existe uma equação D(x1 , . . . , xn ) =
0 que não possui solução e que não podemos demonstrar este fato em S. Se α
é uma dessas equações (só para frisar, α é, portanto, uma equação que não
possui solução e cuja demonstração deste fato é impossı́vel), então, é claro que
também não podemos demonstrar que α possui solução pois, neste caso, S es-
taria demonstrando uma sentença falsa, a saber, aquela que diz que α possui ao
menos uma solução, e vimos que isto é bloqueado pela hipótese de que sentenças
demonstráveis em S são verdadeiras.

Portanto, podemos afirmar que um sistema formal S consistente, cujo con-


junto de teoremas é recursivamente enumerável e possui um mı́nimo de aritméti-
ca necessária para trabalharmos com equações diofantinas, possui uma sentença
numérica, digamos, β, dada por “D(x1 , . . . , xn ) = 0 não possui solução” ver-
dadeira porém não demonstrável em S. Se adicionarmos a hipótese de que as
sentenças demonstráveis em S são verdadeiras, então a negação de β também
não é demonstrável.

4 Conclusão
Começamos investigando estes dois objetos matemáticos, por assim dizer: sis-
temas formais e máquinas de Turing. Numa perspectiva hilbertiana, poderı́amos
nos perguntar então se seria possı́vel, por meio de um sistema formal, gerarmos
mecanicamente todos os teoremas verdadeiros da matemática. Os resultados
aqui apresentados, cujo motor inicial provém principalmente de Gödel e Tur-
ing, nos revelam que o formalismo (construção da matemática por meio de
sistemas formais) possui limitações, pois um sistema formal, sob determinadas
condições especı́ficas (deve ser principalmente consistente e possuir um mı́nimo
de aritmética), apresentará sentenças que são verdadeiras mas indemonstráveis
neste sistema. Cabe ressaltar que a existência de tais sentenças não significa
em absoluto que existirão verdades matemáticas que nunca serão demonstradas,
significam apenas que não possuem demonstração em um dado sistema formal
especı́fico.

A teoria da computabilidade nos permite provar a existência de certos con-


juntos que possuem a propriedade de serem recursivamente enumeráveis e inde-
cidı́veis. Isto quer dizer que se B é um conjunto com tais propriedades, é possı́vel
listarmos mecanicamente os elementos de B mas, no entanto, não podemos sem-
pre decidir se um dado elemento pertence ou não a B. Daı́ segue também que
o complemento de B não é recursivamente enumerável.

13
A incompletude pode ser estabelecida em um sistema formal S com certas
propriedades especı́ficas por meio de um conjunto como B. Seguindo a linha
de raciocı́nio de Franzél, tomamos B como o conjunto das equações diofanti-
nas solúveis, que é recursivamente enumerável e indecidı́vel, para podermos
trabalhar apenas com sentenças artiméticas simples. Como coloca o próprio
autor anteriormente citado, poderı́amos escolher qualquer outro conjunto que
seja recursivamente enumerável e indecidı́vel. Perceba que a existência destes
conjuntos nos permite concluir, então, um importante resultado para os funda-
mentos da matemática: não existe um sistema formal G onde toda a verdade
matemática sobre números pode ser mecanicamente derivada, ou, em outras
palavras, o método axiomático aplicado à teoria dos números não é capaz de es-
gotar toda a verdade aritmética, pois se assim fosse, poderı́amos sempre decidir
se um dado elemento pertence a B (através da enumeração do próprio conjunto)
ou não (pela enumeração dos teoremas de G), tornando contraditoriamente de-
cidı́vel um conjunto indecidı́vel.

Espero nesta apresentação ter ajudado o leitor a conhecer um pouco mais os


incrı́veis resultados oriundos da teoria da computabilidade e sua consequência
sobre a noção de incompletude em sistemas formais. Meu método de trabalho
foi apenas fornecer-lhes uma leitura particular das referências aqui citadas, por-
tanto, para quem quiser saber mais sobre o assunto, recomendo fortemente os
livros e artigos aqui citados.

Referências
[1] W. Carnielli and R. L. Epstein. Computabilidade, Funções Computáveis,
Lógica e os Fundamentos da Matemática. UNESP, 2009.

[2] N. Cutland. Computability: An Introduction to Recursive Function Theory.


Cambridge University Press, 1980.
[3] M. Davis. Hilbert’s tenth problem is unsolvable. The American Mathematical
Monthly, 80(3):233–269, 1973.
[4] M. Davis. The incompleteness theorem. Notices of the AMS, 53(4):414–418,
2006.
[5] T. Franzén. Gödel’s Theorem: An Incomplete Guide to Its Use and Abuse.
A K Peters/CRC Press, 2005.
[6] E. Mendelson. Introduction to Mathematical Logic. Chapman-Hall, 1997.

[7] A. Sant’Anna. O que é um axioma. Manole, 2003.

14

Você também pode gostar