Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Formais
Serão mostrados argumentos que permitem concluir que devem existir determi-
nados predicados lógico-matemáticos indecidı́veis, isto é, predicados cujo valor
lógico não pode ser determinado de forma algorı́tmica. A indecidibilidade é um
caso particular associado à existência de funções com domı́nio e contradomı́nio
no conjunto dos números naturais que não são computáveis, o que significa que
o valor assumido por tais funções não pode ser determinado de forma mecânica
para todos os seus argumentos. Um dos motivos para a existência de tais si-
tuações é a diferença entre as cardinalidades do conjunto de todas as máquinas
de Turing (dispositivo teórico que, supondo verdadeira a Tese de Church, cap-
tura definitivamente o conceito de computabilidade) e do conjunto de todas as
funções sobre os naturais. As demonstrações destes resultados utilizam prin-
cipalmente o método diagonal de Cantor, no qual se supõe que determinado
conjunto de objetos possa ser enumerado, mas, no entanto, consegue-se obter
um objeto do mesmo tipo que não está na enumeração, revelando a falsidade
da suposição inicial. Por fim, um importante exemplo de indecidibilidade e não
computabilidade apresentado é o problema da parada, que nos mostra que não
existe um método geral para determinar se um dado programa, sob determinada
entrada, irá parar ou não sua execução. A partir da indecidibilidade do pro-
blema da parada será verificado que não é possı́vel conceber um sistema formal
que esgote toda a verdade matemática (sistema formal completo), pois, se assim
fosse, o problema da parada seria decidı́vel.
1
SIGLAS UTILIZADAS
2
Sumário
1 Introdução 4
2 Objetivos 14
3 Fundamentação Teórica 15
3.1 Lógica Clássica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 Sistemas Formais . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 Cálculo Proposicional Clássico . . . . . . . . . . . . . . . 16
3.1.3 Lógica e Teorias de Primeira Ordem . . . . . . . . . . . . 18
3.2 Computabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.1 Máquina de Registradores Ilimitados . . . . . . . . . . . . 23
3.2.2 URM-Computabilidade . . . . . . . . . . . . . . . . . . . 24
3.2.3 Máquina de Turing . . . . . . . . . . . . . . . . . . . . . . 26
3.2.4 Turing-computabilidade . . . . . . . . . . . . . . . . . . . 27
3.2.5 A Tese de Church . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Problemas de Decisão . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 Conjuntos Recursivos e Recursivamente Enumeráveis . . . 30
6 Conclusão 45
7 Trabalhos Futuros 47
7.1 Incompletude da Aritmética de Peano e o Problema da Decisão
da Lógica de Primeira Ordem . . . . . . . . . . . . . . . . . . . . 47
7.2 Aleatoriedade e Incompressibilidade . . . . . . . . . . . . . . . . 47
Referências Bibliográficas 48
3
1 Introdução
Uma particularidade essencial do ser humano é sua capacidade de pensar sobre
si mesmo e sobre o mundo. O filósofo alemão Karl Jaspers (1883-1969) dizia que
as perguntas são mais essenciais do que as respostas e cada resposta transforma-
se em uma nova pergunta1 . Em outras palavras, cada pergunta traz um novo
horizonte a ser desbravado, onde novas questões serão levantadas.
Em cada época, a busca por respostas a questões matemáticas fez esta dis-
ciplina se defrontar com situações onde seu corpo de conhecimento não foi su-
ficiente para prover estrutura teórica e metodológica ou, ainda, se deparar com
resultados que, aparentemente, entravam em conflito com o pensamento vigente.
4
de Zenão, formulado por Zenão de Eleia (450 a. C.). A alegoria de Aquiles nos
auxilia a entender este paradoxo: Aquiles deseja alcançar o fim do estádio, mas,
para isto, precisaria de um determinado tempo para percorrer primeiramente a
metade do caminho. Da mesma forma, para percorrer a metade do caminho,
Aquiles necessitaria novamente de um determinado tempo para percorrer a me-
tade deste novo caminho, e, assim, sucessivamente. Deste modo, se o espaço
fosse infinitamente divisı́vel, o movimento era impossı́vel, já que Aquiles necessi-
taria de um tempo infinito para percorrer o estádio. O paradoxo surge pelo fato
de que sabemos que o movimento é possı́vel. Para Zenão, portanto, o tempo e
o espaço não eram infinitamente divisı́veis.
5
desenvolvimento (em especial, o cálculo) está entrelaçado às aplicações práticas
oriundas de problemas da fı́sica, por exemplo [30].
Um dos primeiros trabalhos realizados neste sentido foi iniciado por Weiers-
trass (1815-1897), Cantor (1845-1918) e Dedekind (1831-1916), e consistia em
fundamentar a teoria do continuum (ou a teoria dos números reais) em termos
puramente algébricos, eliminando assim a intuição geométrica, utilizada muitas
vezes como base para demonstrações do cálculo. A ideia principal destes ma-
temáticos era de expressar os conceitos básicos da matemática na linguagem da
aritmética, onde temos relações entre números inteiros.
(DP1 ) ∀x(x′ ̸= 0)
(DP2 ) ∀x, y(x′ = y ′ ⇒ x = y)
(DP3 ) ∀X(0 ∈ X ∧ ∀x(x ∈ X ⇒ x′ ∈ X) ⇒ ∀x(x ∈ X))
6
A descoberta de paradoxos na teoria de conjuntos constituiu a terceira crise
nos fundamentos da matemática, e motivou novamente diversas reflexões sobre
como livrá-la definitivamente de paradoxos.
R = {X : X ∈
/ X}.
7
desenvolvimento posterior da lógica, não é amplamente adotado pela comuni-
dade matemática, devido a sua alta complexidade.
8
da aritmética e de manipulação de sı́mbolos e sucessões de sı́mbolos;
Dessa forma, a solução para o segundo problema de Hilbert poderia ser cons-
truı́da apenas dentro de uma meta-teoria mais fraca que a aritmética formal, a
qual Hilbert chama de matemática finitária (como exposto no primeiro item do
Programa de Hilbert). Não existe precisamente uma definição de matemática
finitária dada por Hilbert, no entanto, ela pode se identificar com a Aritmética
Recursiva Primitiva (APR), proposta por Skolem, em 1923. Segundo o próprio
Hilbert, a consistência da APR segue do fato de que seus teoremas possuem
9
todas as suas instâncias verdadeiras2 .
Outro resultado alcançado por Gödel mostra que não é possı́vel provar a
consistência da aritmética formal através de métodos que pudessem ser forma-
lizados na própria aritmética formal, sendo assim, nenhuma teoria mais fraca
do que AP, por exemplo, a própria APR, poderia demonstrar a consistência
de AP.
2 Silva [35] cita aqui o trabalho Grundlagen der Mathematik, Berlin - Springer, 1934, de
Hilbert e Bernays.
3 Texto de uma conferência proferida por David Hilbert em 4 de junho de 1925 em um
10
A principal técnica empregada por Gödel para sua prova da incompletude
consiste em assimilar números naturais a termos e fórmulas de AP. O sucesso
de tal procedimento está baseado no Teorema Fundamental da Aritmética, que
assegura o fato de que todo número natural possui uma única representação
como produto de números primos. Esta numeração permite encontrar um único
número natural para cada fórmula, sequência de fórmulas e, até mesmo, provas
de AP [20]. Note que, para podermos aplicar o metateorema a um sistema for-
mal T , é necessária a utilização da técnica de numeração nesta teoria, por isso,
ela deve conter a aritmética formal (como colocado pelo primeiro metateorema).
11
Uma axiomatização tida como referencial para a teoria de conjuntos é o sis-
tema ZFC (teoria dos conjuntos de Zermelo-Fraenkel com o axioma da escolha).
Dentro deste sistema, Gödel demonstrou em 1938 que, supondo a consistência
de ZFC, ZFC + HC é consistente. Por outro lado, em 1963, o matemático Paul
J. Cohen (1934-2007) demonstrou que, supondo a consistência de ZFC, ZFC +
¬HC é consistente [22]. Estes dois resultados combinados mostram que, por-
tanto, HC é independente do sistema ZFC.
12
dentro de um sistema axiomatizado.
Uma vez formalizada esta questão, foi possı́vel verificar que existiam pro-
blemas para os quais nenhum algoritmo poderia resolvê-los (tais problemas são
chamados incomputáveis ou indecidı́veis, quanto expressos por um predicado
lógico). O primeiro destes problemas encontrado por Turing foi o halting pro-
blem (problema da parada). Simplificadamente, este problema nos apresenta
a seguinte questão: existirá um algoritmo que seja capaz de avaliar em tempo
finito se um outro algoritmo terminará ou não? Com auxı́lio deste resultado
(respondido de forma negativa), Turing demonstrou a impossibilidade do Ents-
cheidungsproblem de Hilbert.
13
2 Objetivos
De maneira geral, este trabalho tem por objetivo realizar um estudo introdutório
sobre dois grandes temas que se estabelecem fundamentalmente na Matemática
e na Ciência da Computação - filosofia da matemática e teoria das funções re-
cursivas.
14
3 Fundamentação Teórica
Nesta seção, formalizaremos os principais conceitos sobre lógica e sistemas for-
mais. Também passaremos a examinar formalmente os fundamentos da com-
putabilidade, decidibilidade e de suas negações, que são os conceitos principais
estudados neste trabalho.
Uma regra de inferência é uma relação que nos fornece uma maneira de se
obter novas fórmulas a partir de outras fórmulas. Este processo de obtenção de
novas fórmulas é chamado de dedução, simbolizado por ⊢. A fórmula obtida é
chamada de consequente e as fórmulas que a originaram são as premissas.
15
teorema de S e escrevemos S ⊢ α.
Os valores lógicos para estas sentenças podem ser dados pelas tabelas ver-
dades:
A ¬A
V F
F V
A B A∧B A∨B A⇒B A⇔B
V V V V V V
F V F V V F
V F F V F F
F F F F V V
Os sı́mbolos ¬, ∧, ∨, ⇒, ⇔ são chamados de conectivos proposicionais. As
fórmulas válidas, ou bem formadas (por simplicidade, serão chamadas de fbf,
tanto no singular quanto no plural), serão unicamente aquelas expressões obtidas
por meio das seguintes regras:
1. As letras maiúsculas A, B, C, . . . e estas mesmas letras com subı́ndices
são fbf;
2. Se A e B são fbf, então ¬A, A ∧ B, A ∨ B, A ⇒ B e A ⇔ B são fbf;
3. Somente as expressões que decorrem de aplicações de (1) ou (2) são fbf.
Uma fórmula é uma tautologia se em sua tabela verdade ocorre apenas o
valor lógico verdadeiro. Por exemplo, a fórmula A ⇒ (A ∨ B) é uma tautologia,
como se pode verificar pela sua tabela verdade:
A B A∨B A ⇒ (A ∨ B)
V V V V
F V V V
V F V V
F F F V
16
Uma fórmula A implica logicamente uma fórmula B (ou B é consequência
lógica de A) se, e somente se, B é verdadeira sempre que A é verdadeira, e é
logicamente equivalente a outra fórmula quando suas tabelas verdade coincidem.
Uma fórmula que é sempre falsa é dita contraditória. Por exemplo, a fórmula
A ∧ (¬A) é uma contradição, como pode ser verificado pela sua tabela verdade:
A ¬A A ∧ (¬A)
V F F
F V F
Apresentaremos agora um sistema axiomático formal L para o cálculo pro-
posicional clássico:
1. Os sı́mbolos de L são ¬, ⇒, ( , ) e as letras maiúsculas com subscritos Ai ,
i = 1, 2, . . .. Os sı́mbolos ¬ e ⇒ são chamados de conectivos primitivos e
as letras Ai são chamadas de sı́mbolos proposicionais;
(A1) (A ⇒ (B ⇒ A))
(A2) ((A ⇒ (B ⇒ C)) ⇒ ((A ⇒ B) ⇒ (A ⇒ C)))
(A3) (((¬B) ⇒ (¬A)) ⇒ (((¬B) ⇒ A) ⇒ B))
17
Corolário 3.1 (Consistência). O sistema L é consistente, isto é, não existe uma
fbf A tal que A e ¬A sejam ambas teoremas de L.
De fato, pela Proposição 3.1, todo teorema de L é uma tautologia. A negação
de uma tautologia não pode ser uma tautologia, logo, não podemos ter A e ¬A
como teoremas de L.
18
1. Toda fórmula atômica é uma fbf;
2. Se A e B são fórmulas e y é uma variável, então (¬A), (A ⇒ B) e ((∀y)B)
são fbf;
3. as fbf são geradas apenas pelas regras (1) e (2) acima.
Os sı́mbolos ∧, ∨ e ⇔ podem ser definidos da mesma forma realizada para o
sistema L (seção anterior). O sı́mbolo ∃ não precisa ser definido como primitivo,
pois podemos definir o quantificador existencial ((∃x)B) como (¬((∀x)(¬B))).
O escopo de (∀x3 ) é A31 (x1 , x2 , x3 ), o escopo de (∃x2 ) é A21 (x1 , x2 ) e, por fim, o
escopo de (∀x1 ) é (((∃x2 )A21 (x1 , x2 )) ⇒ ((∀x3 )A31 (x1 , x2 , x3 ))).
19
6. Um conjunto não vazio de sı́mbolos de predicado.
Por termo de LPO entendemos um termo cujos sı́mbolos são sı́mbolos de
LPO. Uma fbf de LPO significa uma fbf cujos sı́mbolos são sı́mbolos de LPO.
As constantes individuais e os sı́mbolos funcionais e de predicados são chamados
constantes não lógicas de LPO.
1) A21 (x1 , x2 )
2) (∀x2 )A21 (x1 , x2 )
3) (∃x1 )(∀x2 )A21 (x1 , x2 )
Seja LPO uma linguagem de primeira ordem. Uma teoria de primeira ordem
(a qual também chamaremos apenas de teoria) na linguagem LPO é uma teoria
20
(ou sistema) formal K cujos sı́mbolos e fbf são os sı́mbolos e fbf de LPO e cujos
axiomas e regras de inferência são:
1. Axiomas lógicos: Se B, C e D são fbf de LPO, então são axiomas lógicos
de K:
(A1) B ⇒ (C ⇒ B)
(A2) (B ⇒ (C ⇒ D)) ⇒ ((B ⇒ C) ⇒ (B ⇒ D))
(A3) (¬C ⇒ ¬B) ⇒ ((¬C ⇒ B) ⇒ C)
(A4) (∀xi )B(xi ) ⇒ B(t) se B(xi ) é uma fbf de LPO e t é um termo
livre para xi em B(xi )
(A5) (∀xi )(B ⇒ C) ⇒ (B ⇒ (∀xi )C) se B não contém ocorrências
livres de xi .
2. Axiomas próprios: Cada teoria pode definir seus axiomas próprios. Uma
teoria de primeira ordem que não possui axiomas próprios é chamada
cálculo de predicados de primeira ordem.
3. Regras de inferência: Qualquer teoria de primeira ordem possui as seguin-
tes regras:
• Modus Ponens (MP): C decorre de B e B ⇒ C.
• Generalização (Gen): (∀xi )B decorre de B.
Seja K uma teoria que possui o sı́mbolo de predicado A21 . Escrevemos t = s
como abreviação de A21 (t, s) e t ̸= s como abreviação de ¬A21 (t, s). Então, K
é chamada teoria de primeira ordem com igualdade se as seguintes sentenças
também são teoremas de K:
onde x e y são variáveis quaisquer, B(x, x) é uma fbf qualquer e B(x, y) é obtida
a partir de B(x, x) substituindo-se alguma ocorrência livre de x por y.
21
De fato, se uma fbf B e sua negação ¬B são ambas teoremas do cálculo
de predicados de primeira ordem, então, pela Proposição (3.4), B e ¬B seriam
logicamente válidas, o que não é possı́vel.
Portanto, tendo em vista este resultado, podemos afirmar que para uma te-
oria de primeira ordem K ser consistente, temos que encontrar alguma fbf desta
teoria que não é um teorema de K.
Uma teoria de primeira ordem K é dita completa se, para toda fbf B fechada
de K, temos que ou B ou ¬B é um teorema de K. Uma teoria K’ é chamada
de extensão de K se todo teorema de K é um teorema de K’.
3.2 Computabilidade
Um procedimento efetivo, ou algoritmo, é um método automático criado para
realizar alguma operação matemática sobre dados de entrada. Por método au-
tomático pode-se entender como uma lista de instruções que diz ao executor
como proceder para resolver determinado problema. Um algoritmo pode ser
dado, então, como uma sequência de passos, onde cada passo é completado em
um tempo finito e, ao final da execução (quando todas as instruções são re-
alizadas ou há uma ordem explı́cita para o término), um valor final deve ser
produzido.
22
para um dado n é chamado de computação.
R1 R2 R3 R4 R5 ···
r1 r2 r3 r4 r5 ···
23
4. J(m, n, q): Para cada m = 1 , 2 , 3, . . . e n = 1 , 2 , 3, . . . e q = 1 , 2
, 3, . . ., existe uma instrução J(m, n, q). Suponha que esta instrução foi
encontrada pela URM em um programa P . Os conteúdos dos registradores
Rm e Rn são comparados (ambos registradores permanecem inalterados).
Então, se rm = rn , a URM desloca a execução para a q-ésima instrução
de P . Caso contrário, a URM passa para a execução para a próxima
instrução em P . Se este avanço de instruções não for possı́vel porque P
possui menos do que q instruções, então a URM encerra a execução do
programa.
3.2.2 URM-Computabilidade
Foi estabelecido que uma função f é efetivamente computável se existe um al-
goritmo que permite encontrar o valor de f (n) para todos os valores n do seu
domı́nio. Uma vez estabelecido um modelo teórico de computação dado pela
URM, um algoritmo passa a ser, então, um programa P para este dispositivo.
Suponha que f (n) = b, para algum valor de n. Se este programa consegue exibir
em sua configuração final o valor b (que pode estar armazenado no registrador
24
R1 , por exemplo) tendo como configuração inicial o valor de n, então este pro-
grama computa a função f .
Uma função sobre inteiros positivos em inteiros positivos pode ser total ou
parcial. Ela será total de seu domı́nio for o conjunto dos inteiros positivos. Uma
função parcial será aquela cujo domı́nio é algum subconjunto do conjunto dos
inteiros positivos.
R1 R2 R3 R4 R5 ···
a1 a2 0 0 0 ···
I1 : J(3, 2, 5)
I2 : S(1)
I3 : S(3)
I4 : J(1, 1, 1)
25
de um programa P da seguinte forma:
b tal que P (a1 , a2 , . . . , an ) ↓ b, se
(n)
fP (a1 , a2 , . . . , an ) = P (a1 , a2 , . . . , an ) ↓
indef inida se P (a1 , a2 , . . . , an ) ↑
Note que uma dada função pode ser computada por diferentes programas.
Neste caso, se dois programas P1 e P2 são diferentes mas computam a mesma
(n) (n)
função, temos que fP1 = fP2 para algum n natural.
(qi , sj , sk , ql )
(qi , sj , D, ql )
(qi , sj , E, ql )
para 1 ≤ i, l ≤ m, 0 ≤ j, k ≤ n.
26
(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
3.2.4 Turing-computabilidade
Para realizar uma computação, a máquina deve ser inicializada com uma fita
que pode apresentar determinados sı́mbolos em seus quadrados. 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 ).
(x + 1 quadrados)
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’.
... 1 ...
... 1 1 1 1 ...
... 0 1 1 0 1 1 1 1 0 1 1 1 0 ...
27
É importante lembrarmos novamente 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.
q1 1 D q1
q1 0 1 q2
q 2 1 E q2
q2 0 D q3
28
q3 1 0 q4
q4 0 D q5
q5 1 0 q6
q6 0 D q7
q7 1 0 q8
q8 0 D q9
Sendo assim, a tese de Church pode ser expressa da seguinte forma: toda
função efetivamente calculável pode ser calculada (é computável) por uma máquina
de Turing (ou por uma URM). Portanto, considerando verdadeira a tese de
Church, podemos simplesmente dizer que uma função é computável se ela for
URM-computável ou turing-computável (conforme as definições 3.1 e 3.2) [10].
29
Exemplo 3.6. Queremos verificar se determinado número natural x possui
certa propriedade, por exemplo, ser múltiplo de um outro natural y. Se ado-
tarmos que 1 significa “sim” e que 0 significa “não”, podemos escrever nosso
problema em termos de uma função sobre os naturais:
{
1, se x é múltiplo de y,
f (x, y) =
0, se x não é múltiplo de y.
30
Em algumas situações, é possı́vel construir um procedimento efetivo (uma
MT ou uma URM, por exemplo) que computa parcialmente a função carac-
terı́stica de determinado conjunto. Geralmente, nesses casos, pode-se concluir
que um dado elemento pertence ao conjunto, no entanto, não pode-se concluir
que um elemento não perteça ao conjunto, isto é, para determinados argu-
mentos, o dispositivo de computação pode nunca parar. Assim, tais conjuntos
correspondem a predicados parcialmente decidı́veis.
31
4 Sobre a Existência de Funções Sobre os Natu-
rais Não Computáveis
Nesta seção, será apresentado um argumento do ponto de vista matemático que
nos mostra que deverão existir funções não computáveis. Este argumento pode
ser resumido da seguinte forma: como o conjunto de todas as funções de in-
teiros positivos em inteiros positivos é não enumerável e o conjunto de todas
as máquinas de Turing é enumerável, deverão existir funções que não são com-
putáveis [3]. Para demonstrar este resultado, estaremos supondo a veracidade
da tese de Church.
Vamos demonstrar agora alguns resultados importantes para esta seção. Da-
dos dois conjuntos X e Y , denotaremos por F (X; Y ) o conjunto de todas as
funções f : X → Y . O Teorema 4.1 e os Corolários 4.1 e 4.2 possuem como
referência [25].
32
Demonstração: Dada φ : X → F (X; Y ), indicaremos o valor de φ(x) por
φx , para todo x ∈ X (note que φx é uma função de X em Y ). Para mostrar que
φ : X → F (X; Y ) não é sobrejetora, temos que exibir uma função em F (X; Y )
que não é imagem de nenhum x ∈ X (ou seja, a imagem não é igual ao con-
tradomı́nio). Esta função pode se construı́da da seguinte forma: definimos para
todo x ∈ X uma função f : X → Y que assume um valor diferente de φx (x)
(isto é possı́vel, pois, por hipótese, Y possui pelo menos dois elementos). Assim,
f (x) difere de φx (x) para todo x ∈ X. Portanto, f não pertence à imagem de
φ e concluı́mos que φ : X → F (X; Y ) não é sobrejetora.
33
Podemos construir uma função f : N → Y escolhendo, para cada n ∈ N,
um elemento yn ∈ Y diferente do n-ésimo termo da diagonal. Esta função f
assumiria então os seguintes valores: f = (y1 , y2 , y3 , . . .), sendo que yn ̸= ynn
para todo natural n. Dessa forma, nossa função f não está na lista, pois, para
todo natural n, o n-ésimo valor assumido por f difere do n-ésimo valor assumido
pela função fn . Assim, nenhuma lista enumerável pode esgotar todas as funções
do conjunto F (N; Y ).
Σ0 = {ϵ}
Σ1 = {0, 1}
Σ2 = {00, 01, 10, 11}
∞
∪
Σ∗ = Σi .
i=0
34
O que queremos agora é para cada possı́vel palavra w formada por sı́mbolos
do alfabeto, associar a ela um único número natural G(w), de forma que cada
natural esteja associado a uma única palavra. O número G(w) será chamado
de número de Gödel da palavra w.
35
Exemplo 4.2. Vamos enumerar as palavras do alfabeto Σ = {a, b, c}. Primei-
ramente, associamos a cada sı́mbolo xi do alfabeto um inteiro positivo di , que
pode ser feito da seguinte forma:
1 se xi = a
di = 2 se xi = b
3 se xi = c
Uma vez que podemos enxergar uma máquina de Turing como uma sequência
finita de sı́mbolos, pelo teorema anterior, o conjunto de todas as máquinas de
Turing deve ser enumerável.
Corolário 4.3. O conjunto de todas as máquinas de Turing é enumerável.
Demonstração: Podemos representar uma máquina de Turing por meio de
uma palavra finita. Vamos considerar que o estado inicial é aquele de menor
número e o estado final (ou estado de parada) é aquele de maior número, para
o qual não há mais quádruplas informando a ação. Queremos ainda que, para
todo estado qi (exceto o estado de parada) e para todo sı́mbolo sj do alfabeto
da MT, existe uma quádrupla começando com qi sj . Se não houver alguma ins-
trução para qi sj , interpretamos este fato como uma instrução para a máquina
parar. Dessa forma, podemos adicionar uma instrução que mantenha o mesmo
sı́mbolo e altere o estado atual para o estado de parada. Assim, obtemos um
conjunto de quádruplas onde todos os estados e todos os sı́mbolos do alfabeto
da MT estão representados. Os elementos deste conjunto podem ser dispostos
36
lado-a-lado, formando uma cadeia finita de sı́mbolos. Assim, se tomarmos o con-
junto de todas as máquinas de Turing, estamos tomando o conjunto de palavras
sobre um dado alfabeto (que é a união dos conjuntos de estados e alfabetos de
cada MT e dos sı́mbolos “D” e “E”). Logo, pelo teorema anterior, este conjunto
é enumerável
37
de uma função caracterı́stica fS : Σ∗ → {0, 1}, definida como
{
1, se xj ∈ S,
fS (xj ) =
0, se xj ∈ / S,
para toda palavra xj ∈ Σ∗ (note que podemos falar da j-ésima palavra, pois,
pelo teorema 4.3, Σ∗ é enumerável). Suponha que ℘(Σ∗ ) fosse enumerável.
Então, poderı́amos enumerar todas as linguagens L1 , L2 , . . ., cada Li ∈ ℘(Σ∗ ).
No entanto, seria possı́vel construir uma linguagem L da seguinte forma: para
toda palavra xj ∈ Σ∗ , xj ∈ L se, e somente se, xj ∈ / Lj , ou, em termos de sua
função caracterı́stica fL ,
{
1, se xj ∈
/ Lj ,
fL (xj ) =
0, se xj ∈ Lj .
Assim, L é uma linguagem que não aparece na enumeração, pois ela difere de
toda linguagem Lj exatamente na j-ésima palavra. Portanto, o conjunto de
todas as linguagens não é enumerável e como o conjunto de todas as máquinas
de Turing é enumerável (Corolário 4.3), segue que existem linguagens que não
são reconhecidas por alguma máquina de Turing.
Há outro modo de provar este resultado fazendo uso do método diagonal.
Vamos supor que as funções sobre os naturais (podemos nos restringir às funções
de um argumento) possam ser enumeradas. Então, veremos que é possı́vel
construir uma função que difere de todas as demais da enumeração. Sendo
assim, esta função não é computável (cf. [3], [10]).
Teorema 4.5. Existe uma função total sobre os naturais de um argumento que
não é computável.
Demonstração: Pelo Corolário 4.3, existe apenas uma quantidade enu-
merável de máquinas de Turing. Sendo assim, o conjunto de todas as funções
computáveis é enumerável. Logo, podemos listar estas funções como f1 , f2 , . . ..
Agora, construa uma função f da seguinte forma:
{
fn (n) + 1, se fn (n) é definida,
f (n) =
0, se fn (n) é indefinida.
38
• se fn (n) não está definida, então f difere de fn já que f está definida.
Portanto, f é uma função que não ocorre na enumeração, logo, f não é com-
putável
39
imprime o n-ésimo dı́gito, pois, se pudéssemos sempre decidir esse problema, µ
não seria incomputável. Daı́ segue a indecidibilidade do problema da parada:
não existe um método geral para decidir se o n-ésimo programa imprime um
n-ésimo dı́gito (e para) ou não (continua indefinidamente).
Uma possı́vel demonstração para este fato pode ser dada em termos da
incomputabilidade da função caracterı́stica do predicado “Mm para com entrada
n”, apresentada em seguida.
Teorema 4.6 (Problema da Parada). O problema de decidir se uma dada
máquina de Turing arbitrária para ou não com deteminada entrada é insolúvel.
Demonstração: Como o conjunto das máquinas de Turing é enumerável
(Corolário 4.3), podemos listar todas elas da seguinte forma: M1 , M2 , M3 , e
assim por diante. Podemos tomar, em particular, as máquinas que computam
funções de uma variável. Considere o predicado P red(m, n) = “Mm para com
entrada n”. A função caracterı́stica associada é dada por
{
1, se Mm para com entrada n,
p(m, n) =
0, caso contrário.
Vamos mostrar que p(m, n) não é computável. Para isto, suponha que p(m, n)
fosse computável. Sendo assim, poderı́amos construir uma máquina de Turing
T que faz o seguinte: dada uma entrada n ∈ N,
3. Se, em sua configuração final, a fita está vazia, então escreva 1 e pare (é
equivalente dizer que se Mn não para com entrada n, escreva 1 e pare).
40
4.5.1 Máquina de Turing Universal
Devemos fazer uma ressalva em relação ao teorema anterior. Nossa definição
da máquina de Turing T possuı́a três instruções. A primeira delas dizia para,
dada uma entrada n, calcular p(n, n), o que é equivalente a executar o n-ésimo
programa da enumeração inicial. De certa forma, T é um programa capaz de
executar (ou simular) outro programa com uma dada entrada. Esta ideia é
possı́vel devido à existência da máquina universal de Turing.
41
5 Uma Breve Explanação Sobre o Problema da
Parada e o Programa de Hilbert
A ideia principal do Programa de Hilbert, como exposto na introdução deste
trabalho, era axiomatizar a matemática, isto é, fundamentar a matemática por
meio de um sistema formal axiomatizado, de forma que todos os teoremas pudes-
sem ser provados sem corrermos o risco de encontrar contradições. No entanto,
a indecidibilidade do problema da parada é um dos resultados que impossibili-
tam a realização deste programa. Para compreendermos este fato, relembremos
inicialmente algumas ideias de Hilbert.
Com relação às operações e aos métodos de prova aceitáveis do ponto de vista
do finitismo, não há uma definição precisa por parte de Hilbert, mas comumente
aceita-se aqueles métodos que podem ser formalizados em um sistema conhecido
por Aritmética Recursiva Primitiva (APR) [38], que consiste em (conforme
[30]):
• Linguagem: variáveis x, y, z, ..., para números;
• Constantes 0, 1, 2...;
• Sı́mbolo funcional f para cada função recursiva primitiva;
são introduzidos no discurso matemático com o intuito de ampliar seu alcance. Por exemplo,
a introdução dos números imaginários forneceu o elemento necessário para que se pudesse
alcançar o Teorema Fundamental da Álgebra.
42
1. ∀x(x′ ̸= 0)
2. ∀x, y(x′ = y ′ ⇒ x = y)
Vamos supor que exista um sistema formal U onde todo problema ma-
temático pudesse ser demonstrado (o que, de certa forma, está vinculado à
filosofia de Hilbert). Este sistema seria completo, isto é, toda sentença bem
formulada ou é teorema de U ou sua negação é teorema de U . Sendo assim,
poderı́amos buscar pela prova de que um dado programa qualquer para ou não
sob determinada entrada, o que implicaria na decidibilidade do predicado “Mm
para com entrada n”. A decidibilidade deste predicado, por sua vez, implicaria
na computabilidade da função caracterı́stica p(m, n) do teorema do problema da
parada (Teorema 4.6). Mas na própria demonstração do teorema, vimos que se
p(m, n) for computável, podemos construir uma contradição do tipo “a máquina
de Turing Mj para se e somente se Mj não para com entrada n” neste sistema.
O mı́nimo que devemos pedir de um sistema formal (dentro da lógica clássica)
é que ele seja consistente (não podemos derivar contradições), portanto, se U
for consistente, nada disto pode ocorrer. Portanto, U deve ser incompleto.
43
fundamentalmente o Programa de Hilbert.
Podemos pensar agora não em CG, mas em uma sentença arbitrária. Seria
possı́vel sempre decidir se tal sentença possui demonstração em T ? O problema
é que Gödel demonstrou que existem sentenças que, apesar de verdadeiras, não
possuem demonstração ou refutação em um teoria como T 6 . Se, por acaso, CG
fosse uma dessas sentenças de Gödel, o programa P nunca pararia (já que nunca
encontraria uma demonstração de CG ou de ¬CG).Como verificamos, a insolu-
bilidade do problema da parada não nos permite verificar algoritimicamente se
um programa irá parar ou não. Assim, não podemos verificar de forma mecânica
se um dado problema qualquer possui demonstração ou não em T .
5 Esta conjectura diz que todo número par maior do que 2 é a soma de dois números primos.
6 Relembrando que o primeiro teorema da incompletude de Gödel diz que se T é uma teoria
formal de primeira ordem, axiomatizada, consistente e contendo a aritmética, então existe um
sentença aritmética G tal que nem G nem a sua negação ¬G são teoremas de T [30].
44
6 Conclusão
Alguns fatos ocorridos ao longo da história do desenvolvimento da matemática e
da computação motivaram a escolha deste tema para este trabalho. Por exem-
plo, as ligações entre modelos matemáticos e a computação (teórica e fı́sica)
possuem implicações teóricas fundamentais, e contribuı́ram para o desenvolvi-
mento da Ciência da Computação. Vemos que apesar de o poder computaci-
onal de processamento e armazenamento de informação ser crescente, alguns
problemas nunca poderão ser resolvidos por computadores, devido a aspectos
referentes à sua própria natureza.
A busca por uma linguagem universal que nos possibilitasse alcançar todas
as verdades matemáticas, tal como Hilbert desejava através da axiomatização,
se mostrou inviável frente ao problema da parada, como mostrou-se neste tra-
balho. No entanto, a presença de indecidı́veis na matemática ocasionou o seu
desdobramento em diferentes cenários, possibilitando a coexistência de paisa-
gens matemáticas onde se estabelece ou não a veracidade destes indecidı́veis.
45
e contradomı́nio em N e subconjuntos de palavras (os quais foram chamados de
linguagens). Foram exibidas formas de como formalizar a computabilidade de
uma função e como reconhecer uma linguagem por máquinas de Turing. Como
foi demonstrado que o conjunto de todas as funções f : N → N e o conjunto
de todas as linguagens (conjunto das partes do conjunto de todas palavras) são
não enumeráveis, não é possı́vel que todos os objetos destes conjuntos possam
ser computados, uma vez que cada MT possui a capacidade de resolver apenas
um problema.
Estes dois resultados nos mostram uma limitação fundamental: com a atual
noção formal de computabilidade, não poderı́amos resolver todos os proble-
mas matemáticos de forma algorı́tmica, já que a quantidade de problemas ma-
temáticos é muito maior do que nossos dispositivos mecânicos, mesmo supondo
que tais dispositivos possam continuar trabalhando por um tempo infinito. Este
fato tem como base a tese de Church, que afirma que aquilo que achamos que
deva ser calculável mecanicamente (noção intuitiva de computabilidade), se as-
sim o for, deve então ser calculável por alguma máquina de Turing.
Sendo assim, se existisse um sistema formal a partir do qual toda verdade ma-
temática pudesse ser demonstrada, poderı́amos listar todas as provas possı́veis
e procurar por aquela que diz que um dado programa para ou que não para, nos
dando a possibilidade de decidir sobre a parada de qualquer programa. Como
o problema da parada é indecidı́vel, não deve existir um tal sistema formal com
essa propriedade. Uma das conclusões centrais deste trabalho diz, portanto, que
o problema da parada impede a completude de um sistema formal axiomatizado
com a caracterı́stica de provar todo problema formulado dentro deste sistema.
Esta incompletude significa, portanto, que há sentenças verdadeiras que não
são demonstráveis neste sistema. Então, dada um sentença qualquer, seria
possı́vel verificarmos mecanicamente se ela possui demonstração ou não? Foi
verificado que isto não é possı́vel, pois precisarı́amos saber sobre a parada ou
não de um determinado programa mediante uma entrada arbitrária (e não po-
demos saber isto sem inserir uma contradição na teoria). Assim, um sistema
formal incompleto não deve possuir um procedimento de decisão.
46
7 Trabalhos Futuros
7.1 Incompletude da Aritmética de Peano e o Problema
da Decisão da Lógica de Primeira Ordem
Os teoremas da incompletude de Gödel são considerados importantes resultados
da lógica. Uma de suas principais implicações está no fato de que as noções de
verdade e demonstrabilidade não se equivalem em determinados sistemas for-
mais axiomatizados. No caso da Aritmética de Peano, por exemplo, temos que
este sistema formal (supondo sua consistência) não consegue encerrar (demons-
trar) toda a verdade a respeito da teoria dos números.
47
reproduzir um conjunto de dados possua o mesmo tamanho que este conjunto
de dados – seria aquele programa que apenas exibe o conjunto. Neste caso, este
conjunto de dados se mostraria não comprimı́vel, ou aleatório.
Referências
[1] Barker-Plummer, David. Turing Machines. The Stanford Encyclopedia
of Philosophy (Winter 2012 Edition), Edward N. Zalta (ed.), URL =
http://plato.stanford.edu/archives/win2012/entries/turing-machine.
[2] Bolander, Thomas. Self-Reference. The Stanford Encyclopedia of Phi-
losophy (Fall 2012 Edition), Edward N. Zalta (ed.), URL =
http://plato.stanford.edu/archives/fall2012/entries/self-reference.
[3] Boolos, George S. Computabilidade e lógica. George S. Boolos, John P. Bur-
gess, Richard C. Jeffrey; tradução de Cezar A. Mortari - São Paulo: Editora
Unesp, 2012.
[4] Neri, Cassio; Cabral, Marco. Curso de análise real. 2 ed. V2.1 - Rio de
Janeiro, 2009.
[5] Carnielli, Walter; Epstein, Richard. Computabilidade, funções computáveis,
lógica e os fundamentos da matemática. 2 Edição - Revista. São Paulo: Edi-
tora UNESP, 2009.
[6] Chaitin, Gregory J. Computers, paradoxes and the foundations of mathema-
tics. American Scientist, vol. 90, 2002.
[7] Chaitin, Gregory J. The limits of reason. Scientific American, 2006.
[8] Chaitin, Gregory J. Randomness in arithmetic and the decline and fall of
reductionism in pure mathematics. In Thinking About Gödel and Turing -
Essays on Complexity, 1970-2007. World Scientific, 2007.
48
[9] Chaitin, Gregory J. Metamat! Em busca do Ômega. Tradução de Gita Guins-
burg - São Paulo: Perspectiva, 2009.
[10] Cutland, N. J. Computability: an introduction to recursive function theory.
Cambridge University Press, 1980.
[11] Filho, Edgard de Alencar. Iniciação à lógica matemática. São Paulo: Nobel,
2002.
[12] Fraenkel, A. A; Bar-Hillel, Y. Foundations of set theory. Amsterdam, Noth-
Holland, 1958.
[13] George, Alexander; Velleman, Daniel J. Philosophies of Mathematics.
Blackwell Publishers, 2002.
[14] Gödel, Kurt. On Formally Undecidable Propositions of Principia Mathe-
matica and Related Systems. 1931. Tradução de Martin Hirzel disponı́vel em
http://www.research.ibm.com/people/h/hirzel/papers/canon00-goedel.pdf
49
[24] Lewis, Harry R.; Papadimitriou, Christos H. Elementos de teoria da com-
putação. 2. Edição - Porto Alegre: Bookman, 2000.
[25] Lima, Elon Lages. Curso de análise. Vol. 1 - 13. Edição – Rio de Janeiro:
IMPA, 2011.
[26] Lucchesi, Cláudio L. et al. Aspectos teóricos da computação. Rio de Janeiro:
Instituto de Matemática Pura e Aplicada, 1979.
[27] Mendelson, Elliot. Introduction to mathematical logic. 5. edição - CRC
Press, 2010.
[28] Mosterı́n, Jesús. Kurt Gödel: Obras Completas. Madrid: Alianza Editorial,
2006.
[29] Nagel, E. A prova de Gödel. Ernest Nagel e James Newman; [tradução de
Gita K. Guinsburg]. São Paulo: Perspectiva, 2012.
[30] Oliveira, A. J. F. O advento da matemática não-standard. Monografias da
Sociedade Paranaense de Matemática, Curitiba, n. 8, Abril de 1990.
[31] Sant’Anna, A. S. O que é um axioma. Barueri - São Paulo: Manole, 2003.
50