Teorema de Gödel
Uma prova irrefutável de que na matemática é impossível provar tudo. Como surgiu Em fins do século XIX, no Congresso de Matemática de Paris, em 1900, Hilbert, renomado professor em Göttingen apresentou 23 problemas, que segundo ele estariam ocupando os matemáticos do século XX. Seu segundo problema perguntava se é possível provar que os axiomas da aritmética são consistentes, isto é, dado um número finito de passos lógicos corretos, nunca se chegará a uma contradição. Na esteira desse problema, Bertran Russell, um filósofo matemático (ou será matemático filósofo?) em 1910, começou uma série de livros (Principia Mathematica), na qual, baseado nos axiomas de Peano, desenvolvia todo um programa de formalização da matemática. A tentação era saborosa: provar que lógica e matemática eram a mesma coisa. Mas, o segundo problema de Hilbert continuava em aberto. Estudos posteriores de um jovem matemático austríaco, Kurt Gödel, emigrado para os EUA, que se consubstanciaram no teorema que leva o seu nome, deram o tiro de misericórdia na pretensão. Gödel provou que num sistema lógico formal existem assertivas verdadeiras que não podem ser provadas. Foi mais um sopetão na pretensão homocêntrica do Universo (assim como fizeram Copérnico, Darwin e Freud, só para ficar nos mais evidentes). Antes de passar pro Gödel, diga-se apenas que dos 23 problemas, aproximadamente a metade ainda não tem solução (terá algum dia?), e pior (ou melhor) a matemática se desenvolveu em centenas de direções nem sonhadas por Hilbert. Ainda bem que o trabalho final dele, terminava com a citação: Enquanto uma ciência oferece abundância de problemas, ela está viva. Lógica Antes de entrar no tema, precisamos rever alguma coisa da lógica formal. Será o nosso jargão, por assim dizer. A Lógica remonta aos gregos (o poder de argumentação significava poder político nas democracias gregas). Sobre esta base, constrói-se a lógica matemática que a partir de Leibnitz (século XVII) começa o seu desenvolvimento. A partir daqui, chega-se ao primeiro alicerce: a lógica proposicional (aquela que só admite os valores F e V) e a lógica de primeira ordem (na qual os elementos do alfabeto são infinitos). Sobre isto, se constrói:
Seja um exemplo ainda dos gregos: Protágoras ensinou Euathlos a argumentar. Pelo curso, Euathlos ficou de pagar uma certa quantia. Metade no fim do curso e a outra metade quando Euathlos ganhasse a sua primeira causa. Como o pagamento da segunda metade demorasse, Protágoras processou Euathlos. Argumentos: De Protágoras: Se ele ganhar, terá que me pagar (já que ele ganhou a sua primeira causa). Se ele perder, terá que me pagar, já que eu ganhei a causa contra ele. De Euathlos: Se eu ganhar, nada terei que pagar, já que ganhei a causa. Se eu perder, nada terei que pagar, já que não ganhei ainda nenhuma causa. Pergunta-se: quem está com a razão?? Lógica Proposicional A lógica proposicional, busca descrever a realidade e se constrói sobre poucos conceitos, a saber:
PS: Antes de continuar, reconheça-se a fragilidade da lógica para tratar o mundo real. Não há noção de passado / presente / futuro, e nem dá pra falar do tempo de Curitiba... Mas são os defeitos de qualquer modelagem. Não há o que fazer, a não ser ir em frente.
Até aqui, a lógica é chamada proposicional, porque se baseia em proposições claramente V ou F. Mas, isso é incompleto para descrever o mundo, senão vejamos o problema famoso: Sócrates é homem. Todo homem é mortal, logo... Sócrates é mortal. O problema surge ao ter que se tratar o fato de que Sócrates é uma instância de homem. A regra não se aplica só a Socrates, e sim a todos os homens. Nasce a necessidade de quantificadores, a menos que estejamos interessados em fazer uma proposição distinta para um dos homens da terra. Lógica de Predicados O passo seguinte, é passar da lógica de proposições para a lógica de predicados. Aqui, a proposição BilharMendes, seria escrita Bilhar(Mendes), mostrando claramente que Mendes é uma das pessoas que joga bilhar, ou Mendes tem o predicado Bilhar. Na lógica de predicados precisamos de 2 novos símbolos, chamados qualificadores. O Universal é " (lê-se qualquer que seja), e o Existencial é $ (lê-se existe). Introduz-se aqui o conceito de variável, que pode assumir qualquer valor dentro de um domínio especificado. Eis como ficaria a frase "Quem trabalha duro ou é amigo do chefe, tem promoção" em lógica de predicados: "x Promoção(x) Þ TrabalhaDuro(x) Ú AmigoChefe(x) Ou a frase: "Todo funcionário tem um chefe" Há uma distinção aqui: assertivas iniciais do problema, são chamadas axiomas, enquanto conclusões obtidas a partir das regras da lógica e dos axiomas originais, são chamados teoremas. O processo recebe o nome pomposo de Modus Ponens, que nada mais é que "Se há uma axioma E1 Þ E2, e há outro axioma E1, segue-se que E2 é V". Há também outra regra de inferência chamada Modus Tolens, que diz: Se há um axioma E1 Þ E2, e há também ~E2, segue-se logicamente que ~E1. (Donde o símbolo Þ pode ser lido como se e somente se). A demonstração de um teorema pode seguir dois caminhos. O primeiro, chamado RESOLUÇÃO, vai operando os axiomas e os teoremas até topar com o teorema que se quer provar. O segundo chamado REFUTAÇÃO, parte da negação lógica do que se quer provar e mediante as tratativas usuais chega a um ponto em que uma contradição é encontrada. Está provado o teorema original. Cláusulas Para que os teoremas possam ser provados, todos os axiomas e teoremas precisam estar na fórmula de cláusulas. Para conseguir isso, usam-se as seguintes regras:
O resultado final é uma série de cláusulas, cada uma delas unidas por E, que fica implícito. Processo de resolução A resolução agora é tomar duas cláusulas quaisquer, que resolvidas dão origem a uma nova cláusula. Para tanto, em cada uma das cláusulas juntadas deve haver o mesmo literal ora afirmado ora negado. Esses dois se cancelam, e a cláusula resultante é o que sobrou da anulação. Se se tentar o processo de resolução por refutação (o mais fácil), deve-se acrescentar a negação do teorema a provar. Vamos a um exemplo: Seja uma mesa que tem 2 tijolos, um sobre o outro. O de baixo é A, e o de cima é B. Claramente pode-se afirmar que Sobre(B,A) é V, e que Sobre(A,Mesa) também é V. Queremos provar que B está em cima da mesa. Ou, Acima(B,mesa). Axiomas: "x "y [Sobre(x,y) Þ Acima(x,y)] "x "y "z [Acima(x,y) ^ Acima(y,z) Þ Acima(x,z)] Percorrendo os procedimentos acima, os axiomas ficam ~Sobre (u, v) Ú Acima (u, v) ~Acima(x, y) Ú ~Acima(y, z) Ú Acima(x, z) Queremos provar Acima(B, mesa), logo introduzimos ~Acima (B, mesa). Fica o conjunto (1) ~Sobre (u, v) Ú Acima (u, v) (2) ~Acima (x, y) Ú ~Acima(y, z) Ú Acima (x, z) (3) Sobre (B, A) (4) Sobre (A, mesa) (5) ~Acima (B, mesa) Tomando (2) e (5) fazendo x = B e z = mesa, juntando e anulando, fica (6) ~Acima(B, y) Ú ~Acima(y, mesa) Tomando (1) e (6) fazendo u = y e v = mesa, fica (7) ~Sobre (y, mesa) Ú ~Acima (B, y) Tomando (1) com (7) fazendo u = B e v = y, fica (8) ~Sobre (B, y) Ú ~Sobre (y, mesa) Tomando (3) e (8) fazendo y = A (9) ~Sobre (A, mesa) Tomando (4) e (9), ambas se anulam e o resultado é NIHIL. Logo, a assertiva negada estava correta. Há ainda o teorema da unificação, que permite - em tempo finito - substituir literais dentro das cláusulas, (já que homem (João) e ~homem (José) não podem se anular, são coisas diferentes) devido a Kowalski em 1970. Do trabalho dele surgiu a Linguagem PROLOG. Bom, tudo isso foi para construir o jargão. Agora vamos ao Gödel. Seu teorema se baseia em um processo de 3 etapas:
Pulando a etapa 1, (já vista...(?), vamos para a etapa 2). Eis os axiomas de Peano para os números naturais. Note-se que o símbolo s denota sucessor, um conceito primitivo. O sucessor de 0 é 1, de 1 é 2, ... de n é n+1:
Com estas informações, Gödel, passou à etapa 3 do teorema, usando a tabela a seguir:
Note-se que só existe a variável x. Logo quando só aparece x, ele será identificado como x1. Quando aparecerem x e y, eles serão x1 e x11, e assim por diante. Agora para cada cláusula, Gödel bolou um número, que mais tarde foi chamado "Número de Gödel", e que é construído da seguinte maneira. Tomam-se os primos a partir do 2. São eles: 2, 3, 5, 7, 11, 13, 17, 23, 29... Cada axioma terá seu número de Gödel calculado por um sistema de numeração onde as bases são os primos e os expoentes são o numerinho da tabela acima. Pra clarear, vejamos o número de Gödel do axioma 4 de Peano: "x, y x+sy = s(x+y) [Escrito em matematiquez] x1 + sx11 = s(x1 + x11) [Escrito em Gödelez], e o número é: 29 .310 . 53 . 72 . 119 . 1310 . 1710 . 195 . 232 . 296 . 319 . 3710 . 413 . 439 . 4710 . 5310 . 597 Note-se que o numerão é enorme, mas isso é de propósito. É para que, dado um número, SE ELE FOR UM NÚMERO DE GÖDEL, possa-se recuperar qual o axioma ou teorema que lhe deu origem. Basta fatorá-lo em seus componentes primos, e verificar qual o expoente de cada um dos primos. Ou seja, a relação axioma - número de Gödel é bi-unívoca. Calma que estamos chegando perto da prova: Seja o predicado PROVA(x,y,z), lido como x é o número de Gödel da prova da fórmula Y (que tem número de Gödel y), o qual teve o inteiro z inserido dentro dela. Note-se que PROVA(x,y,z) é um jeito fácil de escrever uma imensa e longa expressão onde aparecem x1, x11 e x111, Essa expressão inclui muitos procedimentos, entre eles:
Claramente são procedimentos irrealizáveis na prática, mas, em princípio, computáveis. Vamos considerar um caso especial do predicado acima: Suponha que a fórmula Y é alimentada com seu próprio número de Gödel, e vamos tentar negar a existência de tal prova. Escreve-se ~$x PROVA(x,y,y) Em palavras: x é o número de Gödel da prova obtida na fórmula Y pelo número y (Número de Gödel de Y). Vamos chamar ao número de Gödel da PROVA(x,y,y) de g. Finalmente: TEOREMA DE GÖDEL ~$x PROVA(x,g,g) é verdadeiro, mas não é provável (no sentido de poder ser provado) no sistema aritmético formal. A demonstração ocupa poucas linhas: Suponha que ~$x PROVA(x,g,g) é provável (no mesmo sentido) e seja p o número de Gödel dessa prova P. Então, nós temos que PROVA(p,g,g) é verdadeiro, desde que P é a prova de G, na qual foram substituídas as variáveis livres. MAS, a veracidade de PROVA(p,g,g) contradiz ~$x PROVA(x,g,g), e daqui temos que não existe essa prova P. Então, se tudo foi construído direitinho, a afirmação ~$x PROVA(x,g,g) é verdadeira e portanto não existe a PROVA(x,g,g) dentro do sistema. Em resumo: Dentro de um sistema de lógica formal existem teoremas que são indecidíveis. Este tema está em conexão com o Paradoxo de Russel (O barbeiro da aldeia barbeia todos os homens que não se barbeiam sozinhos.) e com o argumento de Turing de que não há máquina de Turing capaz de resolver o problema de quando parar. Todos eles se baseiam na genial sacada de Cantor, chamada de corte diagonal, quando ele estudava o infinito. E que segundo a Jane, o levou à loucura... A propósito, Gödel também sofreu surtos paranóicos que determinaram sua internação em hospícios por longos períodos, em vários momentos de sua vida. Tinha muito medo que lhe envenenassem a comida e, um belo dia, deixou de comer. Pois é, morrendo de fome logo depois. Como dizia um professor meu, "A matemática é fogo na roupa". REFERÊNCIAS BIBLIOGRÁFICAS: DEWDNEY, A. K. The Turing Omnibus: 61 excursions in computer science. Rockville: Computer Science Press, 1989. FUCHS, Walter R. A matemática moderna. São Paulo: Polígono, 1970. PENROSE, Roger. The emperors new mind: concerning computers, minds, and laws of physics. Oxford: Oxford University Press, 1989. RICH, Elaine. Inteligência artificial. São Paulo: Makron, 1993. WINSTON, Patrick Henry. Inteligência artificial. Rio de Janeiro: LTC, 1988. |