You are on page 1of 44

Captulo 7

Teorema de G odel
7.1 Func oes recursivas primitivas
Introduziremos uma classe de func oes num ericas que s ao evidentemente efetivamente
comput aveis. O procedimento pode parecer umtanto ad hoc, mas ele nos d a uma classe
surpreendentemente rica de algoritmos. Usamos o m etodo indutivo, ou seja, xamos
um n umero de func oes iniciais que s ao t ao efetivas quanto se pode desejar; depois disso
especicamos maneiras de construir novos algoritmos a partir de outros algoritmos.
Os algoritmos iniciais s ao de fato extremamente simples: a func ao sucessor, as
func oes constantes e as func oes de projec ao.

E obvio que a composic ao (ou substituic ao)
de algoritmos d a origem a algoritmos. O uso de recurs ao foi como um dispositivo para
se obter novas func oes j a conhecido de Dedekind; que recurs ao produz algoritmos a
partir de algoritmos dados e tamb em facilmente visto. Em l ogica o estudo de func oes
recursivas primitivas foi iniciado por Skolem, Herbrand, G odel e outros.
Continuaremos agora com uma denic ao precisa, que ser a dada na forma de uma
denic ao indutiva. Primeiro apresentamos uma lista de func oes iniciais de uma na-
tureza inequivocamente algortmica, e ent ao especicamos como obter novos algorit-
mos de outros algoritmos. Todas as func oes t em sua pr opria aridade, o que signica
dizer que elas mapeiamN
k
emNpara umk adequado. Emgeral n ao especicaremos as
aridades das func oes envolvidas, e assumiremos que elas s ao escolhidas corretamente.
As chamadas func oes iniciais s ao
a func ao constante C
k
m
com C
k
m
(n
0
, . . . , n
k1
) = m,
a func ao sucessor S com S(n) = n + 1,
as func oes de projec ao P
k
i
com P
k
i
(n
0
, . . . , n
k1
) = n
i
(i < k)
Novos algoritmos s ao obtidos a partir de outros algoritmos por substituic ao ou composic ao
e recurs ao primitiva.
Uma classe T de func oes e fechada sob substituic ao se g, h
0
, . . . , h
p1
T
f T, onde f(n) = g(h
0
(n), . . . , h
p1
(n))
T e fechada sob recurs ao primitiva se, g, h T f T, onde
_
f(0, n) = g(n)
f(m+ 1, n) = h(f(m, n), n, m).
191
192 CAP

ITULO 7. TEOREMA DE G

ODEL
Denic ao 7.1.1 A classe das func oes recursivas primitivas e a menor classe de func oes
contendo a func ao constante, a func ao sucessor, e as func oes de projec ao, que e
fechada sob substituic ao e recurs ao primitiva.
Observac ao. Substituic ao foi denida de uma maneira particular: as func oes que
s ao substitudas t em todas a mesma cadeia de entradas. De modo a fazer substituic oes
arbitr arias e preciso fazer um pouco de trabalho adicional. Considere por exemplo
a func ao f(x, y) na qual desejamos substituir g(z) no lugar de x e f(z, x) no lugar
de y: f(g(z), f(z, x)). Isso e realizado como se segue: ponha h
0
(x, z) = g(z) =
g(P
2
1
(x, z)) e h
1
(x, z) = f(z, x) = f(P
2
1
(x, z), P
2
0
(x, z)). Ent ao o f(g(z), f(z, x))
desejado e obtido como f(h
0
(x, z), h
1
(x, z)). Assume-se que o leitor e capaz de lidar
com casos de substituic ao que vir ao a aparecer mais adiante.
Vamos comecar construindo umestoque de func oes recursivas primitivas. At ecnica
n ao e de forma nenhuma difcil, e maioria dos leitores a ter ao usado emdiveras ocasi oes.
O fato surpreendente e que tantas func oes possam ser obtidas por esses procedimentos
simples. Aqui vai um primeiro exemplo:
x +y, denida por
_
x + 0 = x
x + (y + 1) = (x +y) + 1.
Reformularemos essa denic ao de modo que o leitor possa ver que ela de fato se en-
caixa no formato prescrito:
_
+(0, x) = P
1
0
(x)
+(y + 1, x) = S(P
3
0
(+(y, x), P
2
0
(x, y), P
2
1
(x, y))).
Via de regra, continuaremos a usar a notac ao tradicional, de modo que escrevere-
mos simplesmente x+y no lugar de +(x, y). Tamb emusaremos tacitamente abreviac oes
da matem atica, e.g. omitiremos o ponto da multiplicac ao.
H a dois truques convenientes para adicionar ou remover vari aveis. O primeiro e a
introduc ao de vari aveis fantasma.
Lema 7.1.2 (vari aveis fantasma) Se f e recursiva primitiva, ent ao g tamb emo e, com
g(x
0
, . . . , x
n1
, z
0
, . . . , z
m1
) = f(x
0
, . . . , x
n1
).
Demonstrac ao. Ponha
g(x
0
, . . . , x
n1
, z
0
, . . . , z
m1
) = f(P
n+m
0
(x, z), . . . , P
n+m
n
(x, z)).
Lema 7.1.3 (identicac ao de vari aveis) Se f e recursiva primitiva, ent ao f(x
0
, . . . , x
n1
)[x
i
/x
j
]
tamb em o e, onde i, j n.
Demonstrac ao. Precisamos considerar apenas o case emque i ,= j. f(x
0
, . . . , x
n1
)[x
i
/x
j
] =
f(P
n
0
(x
0
, . . . , x
n1
), . . . , P
n
i
(x
0
, . . . , x
n1
), . . . , P
n
i
(x
0
, . . . , x
n1
), . . . , P
n
n1
(x
0
, . . . , x
n1
)),
onde o segundo P
n
i
est a na j- esima entrada.
Uma notac ao mais mundana e f(x
0
, . . . , x
i
, . . . , x
i
, . . . , x
n1
).
Lema 7.1.4 (permutac ao de vari aveis) Se f e recursiva primitiva, ent ao g tamb em o
e com g(x
0
, . . . , x
n1
) = f(x
0
, . . . , x
n1
)[x
i
, x
j
/x
j
, x
i
], onde i, j n.
7.1. FUNC

OES RECURSIVAS PRIMITIVAS 193
Demonstrac ao. Use substituic ao e func oes de projec ao.
De agora em diante usaremos as notac oes informais tradicionais, e.g. g(x) =
f(x, x, x), ou g(x, y) = f(y, x). Por conveni encia usamos e usaremos, sempre que
nenhuma confus ao possa surgir, a notac ao vetorial para cadeias de entradas.
O leitor pode facilmente vericar que os exemplos abaixo podem ser moldados no
formato requerido das func oes primitivas recursivas.
1. x +y
_
x + 0 = x
x + (y + 1) = (x +y) + 1
2. x y
_
x 0 = 0
x (y + 1) = x y +x (usamos (1))
3. x
y
_
x
0
= 1
x
y+1
= x
y
x
4. func ao predecessor
p(x) =
_
x 1 se x > 0
0 se x = 0
Aplique recurs ao:
_
p(0) = 0
p(x + 1) = x
5. subtrac ao de corte (monus)
x
.
y =
_
x y se x y
0 caso contr ario
6. func ao fatorial
n! = 1 2 3 (n 1) n.
7. func ao signum
sg(x) =
_
0 se x = 0
1 caso contr ario
Aplique recurs ao:
_
sg(0) = 0
sg(x + 1) = 1
8. sg(x) = 1
.
sg(x).
sg(x) =
_
1 se x = 0
0 caso contr ario
194 CAP

ITULO 7. TEOREMA DE G

ODEL
9. [x y[.
Observe que [x y[ = (x
.
y) + (y
.
x)
10. f(x, y) =

y
i=0
g(x, i), onde g e recursiva primitiva.
_
0
i=0
g(x, i) = g(x, 0)

y+1
i=0
g(x, i) =

y
i=0
g(x, i) +g(x, y + 1)
11.

y
i=0
g(x, i), idem.
12. Se f e recursiva primitiva e e uma permutac ao do conjunto 0, . . . , n 1
ent ao g com g(x) = f(x
0
, . . . , x
(n1)
) tamb em e recursiva primitiva.
13. Se f(x, y) e recursiva primitiva, ent ao f(x, k) tamb em o e.
A denic ao de func oes recursivas primitivas diretamente e um desao que vale
a pena, e o leitor encontrar a casos interessantes entre os exerccios. Para um acesso
r apido e eciente a um grande estoque de func oes recursivas primitivas existem, no
entanto, t ecnicas que cortam alguns caminhos. Vamos apresent a-las aqui.
Em primeiro lugar podemos relacionar conjuntos e func oes por meio de func oes
caractersticas. No cen ario das func oes da teoria dos n umeros, denimos func oes car-
actersticas da seguinte forma: para A N
k
a func ao caracterstica K
A
: N
k
0, 1
de A e dada por n A K
A
(n) = 1 (e portanto n / A K
A
(n) = 0). Ad-
vert encia: em l ogica a func ao caracterstica e ` as vezes denida com 0 e 1 intercambi-
ados. Para a teoria isso n ao faz diferenca alguma. Note que um subconjunto de N
k
e
tamb em chamado de uma relac ao k- aria. Quando lidamos com relac oes tacitamente
assumimos que temos o n umero correto de argumentos, e.g. quando escrevemos AB
supomos que A, B s ao subconjuntos do mesmo N
k
.
Denic ao 7.1.5 Uma relac ao R e recursiva primitiva se sua func ao caracterstica o e.
Note que isso corresponde ` a id eia de usar K
R
como um teste de pertin encia.
Os seguintes conjuntos (relac oes) s ao recursivos primitivos:
1. : K

(n) = 0 para todo n.


2. O conjunto P dos n umeros pares:
_
K
P
(0) = 1
K
P
(x + 1) = sg(K
P
(x))
3. A relac ao de igualdade: K
=
(x, y) = sg([x y[).
4. A relac ao de ordem: K
<
(x, y) = sg((x + 1)
.
y).
Lema 7.1.6 As relac oes recursivas primitivas s ao fechadas sob , ,
c
e quanticac ao
cotada.
Demonstrac ao. Seja C = A B, ent ao x C x A x B, portanto
K
C
(x) = 1 K
A
(x) = 1 K
B
(x) = 1. Por conseguinte, fazemos K
C
(x) =
K
A
(x) K
B
(x). Logo, a intersec ao de conjuntos recursivos primitivos e recursiva
7.1. FUNC

OES RECURSIVAS PRIMITIVAS 195
primitiva. Para a uni ao, tome K
AB
(x) = sg(K
A
(x)+K
B
(x)), e para o complemento
K
A
c(x) = sg(K
A
(x)).
Dizemos que R e obtida por quanticac ao cotada a partir de S se R(n, m) :=
Qx mS(n, x), onde Q e um dos quanticadores , .
Considere a quanticac ao existencial cotada: R(x, n) := y nS(x, y), ent ao
K
R
(x, n) = sg(

yn
K
S
(x, y)), portanto se S for recursivo primitivo, ent ao R
tamb em o e.
O caso do e semelhante; deixo ao leitor.
Lema 7.1.7 As relac oes recursivas primitivas s ao fechadas sob substituic oes recursi-
vas primitivas, i.e. se f
0
, . . . , f
n1
e R forem recursivas primitivas, ent ao S(n) :=
R(f
0
(x), . . . , f
n1
(x)) tamb em o e.
Demonstrac ao. K
S
(x) = K
R
(f
0
(x), . . . , f
n1
(x)).
Lema 7.1.8 (denic ao por casos) SejamR
1
, . . . , R
p
predicados recursivos primitivos
mutuamente exclusivos, tais que x(R
1
(x) R
2
(x) R
p
(x)) e suponha que
g
1
, . . . , g
p
sejam func oes recursivas primitivas, ent ao f com
_

_
g
1
(x) se R
1
(x)
g
2
(x) se R
2
(x)
.
.
.
g
p
(x) se R
p
(x)
e recursiva primitiva.
Demonstrac ao. Se K
Ri
(x) = 1, ent ao todas as outras func oes caractersticas pro-
duzem 0, portanto fazemos f(x) = g
1
(x) K
R1
(x) +. . . +g
p
(x) K
Rp
(x).
Os n umeros naturais s ao bem-ordenados, o que signica dizer que cada subcon-
junto n ao-vazio tem um elemento mnimo. Se pudermos testar o subconjunto com
relac ao a pertin encia, ent ao podemos sempre encontrar esse elemento mnimo efetiva-
mente. Isso e tornado preciso para conjuntos recursivos primitivos.
Um pouco de notac ao: (y)R(x, y) representa o menor n umero y tal que R(x, y)
caso exista pelo menos um. (y < m)R(x, y) representa o menor n umero y < m tal
que R(x, y) se um tal n umero existe; sen ao, simplesmente tomamo-lo como sendo m.
Lema 7.1.9 (minimizac ao limitada) R e recursiva primitiva (y < m)R(x, y) e
recursiva primitiva.
Demonstrac ao. Considere a seguinte tabela:
R R(x, 0), R(x, 1), . . . , R(x, i), R(x, i + 1), . . . , R(x, m)
K
R
0 0 . . . 1 0 . . . 1
g 0 0 . . . 1 1 . . . 1
h 1 1 . . . 0 0 . . . 0
f 1 2 . . . i i . . . i
Na primeira linha escrevemos os valores de K
R
(x, i) para 0 i m; na segunda
linha tornamos a seq u encia monot onica, e.g. tome g(x, i) = sg

i
j=0
K
R
(x, j). A
seguir trocamos 0 por 1 e vice-versa: h(x, i) = sg(g(x, i)) e nalmente somamos o
196 CAP

ITULO 7. TEOREMA DE G

ODEL
h : f(x, i) =

i
j=0
h(x, j). Se R(x, j) se d a pela primeira vez em i, ent ao f(x, m
1) = i, e se R(x, j) n ao se verica para nenhum j < m, ent ao f(x, m 1) = m.
Logo, (y < m)R(x, y) = f(x, m1), e portanto minimizac ao limitada produz uma
func ao recursiva primitiva.
Fazemos (y m)R(x, y) := (y < m+ 1)R(x, y).
Agora e hora de aplicar nosso arsenal de t ecnicas para obter uma grande variedade
de relac oes e func oes recursivas primitivas.
Teorema 7.1.10 S ao recursivas primitivas as seguintes:
1. O conjunto de primos:
Primo(x) x e um primo x ,= 1 yz x(x = yz y = 1 z = 1).
2. A relac ao de divisibilidade:
x[y z y(x z = y)
3. O expoente do primo p na fatorac ao de x:
(y x)(p
y
[x p
y+1
[x)
4. A func ao n- esimo primo:
_
p(0) = 2
p(n + 1) = (x p(n)
n
)(x e primo x > p(n)).
Note que comecamos a contar os n umeros primos a partir de zero, e usamos a notac ao
p
n
= p(n). Portanto p
0
= 2, p
1
= 3, p
2
= 5, . . .. O primeiro primo e p
0
, e o i- esimo
primo e p
i1
.
Demonstrac ao. Verica-se facilmente que os predicados denidores s ao recursivos
primitivos aplicando-se os teoremas acima.
Codicac ao de seq u encias nitas
Uma das caractersticas interessantes do sistema de n umeros naturais e que ele permite
uma codicac ao razoavelmente simples de pares de n umeros, triplas de n umeros, . . .,
e n-uplas em geral. Existe um bom n umero dessas codicac oes por a, cada uma
tendo seus pr oprios pontos fortes. As duas mais conhecidas s ao aquelas de Cantor e de
G odel. A codicac ao de Cantor e dada no exerccio 6, e a codicac ao de G odel ser a
usada aqui. Ela e baseada no fato bem-conhecido de que n umeros t em uma unica (a
menos da ordem) fatorac ao em primos.
A id eia e associar a uma seq u encia (n
0
, . . . , n
k1
) o n umero 2
n0+1
3
n1+1
. . .
p
ni+1
i
. . . p
n
k1
+1
k1
. O +1 extra nos expoentes e para levar em conta que a codicac ao
tem que mostrar os zeros que ocorrem numa seq u encia. Da fatorac ao prima de uma
seq u encia codicada podemos efetivamente extrair a seq u encia original. A forma
como introduzimos esses c odigos faz com que a codicac ao infelizmente n ao seja uma
bijec ao; por exemplo, 10 n ao e uma seq u encia codicada, enquanto que 6 e. Isso n ao e
uma limitac ao terrvel; h a rem edios, que n ao consideraremos aqui.
Lembremos que, no arcabouco da teoria dos conjuntos uma seq u encia de compri-
mento n e um mapeamento de 0, . . . , n 1 para N, portanto denimos a seq u encia
vazia como a unica seq u encia de comprimento 0, i.e. o unico mapa de para N, que e
a func ao (i.e. conjunto) vazia. Fazemos com que o c odigo da seq u encia vazia seja 1.
7.1. FUNC

OES RECURSIVAS PRIMITIVAS 197
Denic ao 7.1.11 1. Seq(n) := p, q n(Primo(p)Primo(q)q < pp[n
q[n) n ,= 0. (n umero de seq u encia)
Empalavras: n e umn umero de seq u encia se ele e o produto de pot encias primas
positivas consecutivas.
2. comp(n) := (x n + 1)(p
x
[n) (comprimento)
3. (n)
i
= (x < n)(p
x
i
[n (p
x+1
i
[n))
.
1 (decodicac ao ou projec ao)
Em palavras: o expoente do i- esimo primo na fatorac ao de n, menos 1. (n)
i
extrai o i- esimo elemento da seq u encia.
4. n m = n

comp(m)1
i=0
p
(m)i+1
comp(n)+i
(concatenac ao)
Em palavras: se m, n forem os c odigos de duas seq u encias m, n, ent ao o c odigo
da concatenac ao de m e n e obtido pelo produto de n e as pot encias primas que
se obt emsubindo todos os primos na fatorac ao de mpelo fator correspondente
ao comprimento de n.
Observac ao: 1 e trivialmente um n umero de seq u encia. A func ao comprimento s o
produz a sada correta para n umeros de seq u encia, e.g. comp(10) = 1. Al em do mais,
o comprimento de 1 e de fato 0, e o comprimento de uma 1-upla e 1.
Notac ao. Usaremos abreviac oes para as func oes de decodicac ao iteradas: (n)
i,j
=
((n)
i
)
j
, etc.
N umeros de seq u encia s ao, de agora emdiante, escritos como n
0
, . . . , n
k1
). Da, por
exemplo, 5, 0) = 2
6
3
1
. Escrevemos ) para representar o c odigo da seq u encia vazia.
A codicac ao bin aria, x, y), e usualmente chamada de uma func ao de pareamento.
At e agora usamos uma forma imediata de recurs ao, cada sada seguinte depende
dos par ametros e da sada anterior. Mas j a a seq u encia de Fibonacci nos mostra que
existem mais formas de recurs ao que ocorrem na pr atica:
_
_
_
F(0) = 1
F(1) = 1
F(n + 2) = F(n) +F(n + 1)
A generalizac ao obvia e uma func ao, onde cada sada depende dos par ametros e de
todas as sadas anteriores. Isso e chamado de recurs ao por curso de valores.
Denic ao 7.1.12 Para uma dada func ao f(y, x) sua func ao curso de valores

f(y, x)
e dada por
_

f(0, x) = 1

f(y + 1, x) =

f(y, x) p
f(y,x)+1
y
Exemplo: Se f(0) = 1, f(1) = 0, f(2) = 7, ent ao

f(0) = 1,

f(1) = 2
1+1
,

f(2) = 2
1+1
3
1
,

f(3) = 2
2
3 5
8
= 1, 0, 7).
Lema 7.1.13 Se f e recursiva primitiva, ent ao

f tamb em o e.
Demonstrac ao.

Obvia.
198 CAP

ITULO 7. TEOREMA DE G

ODEL
Como

f(n+1) codica, por assim dizer, toda a informac ao sobre f at e o n- esimo
valor, podemos usar

f para formular a recurs ao por curso-de-valor.
Teorema 7.1.14 Se g e recursiva primitiva e f(y, x) = g(

f(y, x), y, x), ent ao f e
recursiva primitiva.
Demonstrac ao. Primeiro denimos

f.
_

f(0, x) = 1

f(y + 1, x) =

f(y, x) g(

f(y, x), y, x)).

f e obviamente recursiva primitiva. Como f(y, x) = (



f(y + 1, x))
y
vemos que f e
recursiva primitiva.
Nesse ponto coletamos fatos sucientes para uso futuro sobre as func oes recursivas
primitivas. Poderamos perguntar se existem mais algoritmos que apenas as func oes
recursivas primitivas. A resposta vem a ser sim. Considere a seguinte construc ao: cada
func ao recursiva primitiva f e determinada por sua denic ao, que consiste de uma
cadeia de func oes f
0
, f
1
, . . . , f
n1
= f tal que cada func ao e uma func ao inicial, ou e
obtida de func oes anteriores por meio de substituic ao ou recurs ao primitiva.

E uma quest ao de rotina codicar toda a denic ao num n umero natural tal que
toda a informac ao pode ser efetivamente extrada do c odigo (veja [Hinman], p.34). A
construc ao mostra que podemos denir uma func ao F tal que F(x, y) = f
x
(y), onde
f
x
e a func ao recursiva primitiva com c odigo x. Agora considere D(x) = F(x, x) +1.
Suponha que D seja recursiva primitiva, portanto D = f
n
para um certo n, mas ent ao
D(n) = F(n, n) + 1 = f
n
(n) + 1 ,= f
n
(n). Contradic ao. Est a claro, entretanto, da
denic ao de D que ela e efetiva, portanto indicamos como obter uma func ao efetiva
que n ao e recursiva primitiva. Ao resultado acima pode tamb em ser dada a seguinte
formulac ao: n ao existe func ao recursiva primitiva bin aria F(x, y) tal que cada func ao
recursiva primitiva un aria e F(n, y) para algum n. Em outras palavras, as func oes
recursivas primitivas n ao podem ser recursivo-primitivamente enumeradas.
O argumento e, na verdade, completamente geral; suponha que tenhamos uma
classe de func oes efetivas que pode se enumerar a si pr opria da maneira consider-
ada acima; ent ao podemos sempre diagonalizar para fora da classe pela func ao
D. Chamamos isso diagonalizac ao. O moral dessa observac ao e que temos pouca
esperanca de obter todas as func oes efetivas de uma maneira efetiva. A t ecnica da
diagonalizac ao vai l a atr as para Cantor, que a introduziu para mostrar que os reais n ao
s ao enumer aveis. Em geral ele usou diagonalizac ao para mostrar que a cardinalidade
de um conjunto e menor que a cardinalidade de seu conjunto das partes.
Exerccios
1. Se h
1
e h
2
forem recursivas primitivas, ent ao o mesmo acontece comf e g, onde
_

_
f(0) = a
1
g(0) = a
2
f(x + 1) = h
1
(f(x), g(x), x)
g(x + 1) = h
2
(f(x), g(x), x)
7.2. FUNC

OES RECURSIVAS PARCIAIS 199
2. Mostre que a s erie de Fibonacci e recursiva primitiva, onde
_
f(0) = f(1) = 1
f(x + 2) = f(x) +f(x + 1)
3. Suponha que [a] denote a parte inteira do n umero real a (i.e. o maior inteiro a).
Mostre que
_
x
y+1
_
, para n umeros naturais x e y, e recursiva primitiva.
4. Mostre que max(x, y) e min(x, y) s ao recursivas primitivas.
5. Mostre que mdc (m aximo divisor comum) e mmc (mnimo m ultiplo comum)
s ao recursivas primitivas.
6. A func ao de pareamento de Cantor e dada por P(x, y) =
1
2
((x+y)
2
+3x+2y).
Mostre que P e recursiva primitiva, e que P e uma bijec ao de N
2
sobre N. (Sug-
est ao: Considere no plano uma caminhada sobre todos os pontos de um reticu-
lado da seguinte forma: (0, 0) (0, 1) (1, 0) (0, 2) (1, 1) (2, 0)
(0, 3) (1, 2) . . .). Dena as inversas E e D tais que P(E(z), D(z)) = z
e mostre que elas s ao recursivas primitivas.
7. Mostre que p
n
2
2
n
. Para mais informac oes sobre limitantes sobre p
n
veja
Smory nski 1980.
7.2 Func oes Recursivas Parciais
Dado o fato de que as func oes recursivas primitivas n ao esgotamos algoritmos num ericos,
estendemos de uma maneira natural a classe das func oes efetivas. Como vimos que
uma gerac ao efetiva de todos os algoritmos invariavelmente nos traz para um conito
com a diagonalizac ao, alargaremos nosso escopo permitindo func oes parciais. Dessa
maneira a situac ao conitante D(n) = D(n) + 1 para um certo n nos diz que D n ao e
denida para n.
No contexto presente func oes t em domnios naturais, i.e. conjuntos da forma N
n
(= (m
0
, . . . , m
n1
) [ m
i
N, assim-chamados produtos cartesianos), uma func ao
parcial tem um domnio que e um subconjunto de N
n
. Se o domnio e todo o conjunto
N
n
, ent ao chamamos a func ao de total.
Exemplo: f(x) = x
2
e total, g(x) = y(y
2
= x) e parcial e n ao total, (g(x) e a raiz
quadrada de x se ela existe).
Os algoritmos que vamos introduzir s ao chamados func oes recursivas parciais;
talvez func oes parciais recursivas teria sido uma melhor denominac ao. Entretanto,
o nome veio a ser sendo geralmente aceito. A t ecnica especca para denir func oes
recursivas parciais que empregamos aqui vai l a atr as at e Kleene. Tal qual antes, us-
amos uma denic ao indutiva; exceto a cl ausula R7 adiante, poderamos ter usado uma
formulac ao quase id entica ` aquela da denic ao das func oes recursivas primitivas. Como
desejamos uma func ao universal interna, ou seja, uma func ao que efetivamente enu-
mera as func oes, temos que empregar uma t ecnica mais renada que permite refer encia
explcita a v arios algoritmos. O truque n ao e de forma alguma esot erico, simplesmente
atribumos um c odigo num erico a cada algoritmo, que chamamos seu ndice. Fixamos
tais ndices antecipadamente de modo que podemos falar do algoritmo com ndice e
200 CAP

ITULO 7. TEOREMA DE G

ODEL
produz como sada y quando recebe como entrada (x
0
, . . . , x
n1
), simbolicamente
representado como e(x
0
, . . . , x
n1
) y.
A heurstica desse ndice aplicado ` a entrada e que um ndice e visto com uma
descric ao de uma m aquina abstrata que opera sobre entradas de uma aridade xa. Por-
tanto e(n) m deve ser lido como a m aquina com ndice e opera sobre n e produz
como sada m. Pode muito bem ser o caso que a m aquina n ao produz uma sada, e
nesse caso dizemos que e(n) diverge. Se existe uma sada, dizemos que e(n) con-
verge. Que a m aquina abstrata e um algoritmo vai se tornar aparente da especicac ao
na denic ao abaixo.
Note que n ao sabemos antecipadamente que o resultado e uma func ao, i.e. que para
cada entrada existe no m aximo uma sada. Independentemente do qu ao plausvel isso
seja, tem que haver uma demonstrac ao. Kleene introduziu o smbolo para igual-
dade em contextos onde termos podem resultar em valores indenidos. Isso acontece
de ser util no estudo de algoritmos que n ao necessariamente precisam produzir uma
sada. As m aquinas abstratas acima podem, por exemplo, entrar numa computac ao que
executa para sempre. Por exemplo, poderia haver uma instruc ao da forma a sada em
n e o sucessor da sada em n + 1.

E f acil ver que para nenhum n uma sada pode ser
obtida. Nesse contexto o uso do predicado de exist encia seria util, e seria o da
teoria de objetos parciais (cf. Troelstravan Dalen, 2.2). A convenc ao regulando e:
se t s ent ao t e s t em valores simultaneamente denidos e s ao id enticos, ou eles t em
valores simultaneamente indenidos.
Denic ao 7.2.1 A relac ao e(x) y e indutivamente denida por
R1 0, n, q)(m
0
, . . . , m
n1
) q
R2 1, n, i)(m
0
, . . . , m
n1
) m
i
, para 0 i < n
R3 2, n, i)(m
0
, . . . , m
n1
) m
i
+ 1, para 0 i < n
R4 3, n + 4)(p, q, r, s, m
0
, . . . , m
n1
) p, se r = s
3, n + 4)(p, q, r, s, m
0
, . . . , m
n1
) q, se r ,= s
R5 4, n, b, c
0
, . . . , c
k1
)(m
0
, . . . , m
n1
) p, se existem q
0
, . . . , q
k1
tais que
c
i
(m
0
, . . . , m
n1
) q
i
(0 i < k) e b(q
0
, . . . , q
k1
) p
R6 5, n + 2)(p, q, m
0
, . . . , m
n1
) S
1
n
(p, q)
R7 6, n + 1)(b, m
0
, . . . , m
n1
) p se b(m
0
, . . . , m
n1
) p.
A func ao S
1
n
em R6 ser a especicada no teorema S
m
n
adiante.
Mantendo em mente a leitura acima de e(x), podemos parafrasear o esquema da
seguinte forma:
R1 a m aquina com ndice 0, n, q) produz para a entrada (m
0
, . . . , m
n1
) a sada q
(a func ao constante),
R2 a m aquina com ndice 1, n, i) produz para a entrada m a sada m
i
(a func ao de
projec ao P
n
i
),
R3 a m aquina comndice 2, n, i) produz para a entrada m a sada m
i
+1 (a func ao
sucessor sobre o i- esimo argumento),
7.2. FUNC

OES RECURSIVAS PARCIAIS 201
R4 a m aquina com ndice 3, n + 4) testa a igualdade do terceiro e do quarto ar-
gumento da entrada e produz o primeiro argumento no caso da igualdade, e o
segundo argumento caso contr ario (a func ao discriminadora),
R5 a m aquina com ndice 4, n, b, c
0
, . . . , c
k1
) primeiro simula as m aquinas com
ndices c
0
, . . . , c
k1
comentrada m, e ent ao usa a seq u encia de sada (q
0
, . . . , q
k1
)
como entrada e simula as m aquinas com ndice b (substituic ao),
R7 a m aquina comndice 6, n+1) simula para uma dada entrada b, m
0
, . . . , m
n1
,
a m aquina com ndice b e entrada m
0
, . . . , m
n1
(reex ao).
Uma outra maneira de ver R7 e que ela prov e uma m aquina universal para todas
as m aquinas com entradas de n-argumentos, o que quer dizer que ela aceita como uma
entrada os ndices de m aquinas, e a as simula. Isso e o tipo de m aquina requerida para
o processo de diagonalizac ao. Se se pensa em m aquinas abstratas idealizadas, ent ao
R7 e bastante razo avel. Esperar-se-ia que se os ndices podem ser decifrados, uma
m aquina universal pode ser construda. Isso foi de fato realizado por Alan Turing, que
construiu (abstratamente) uma assim-chamada m aquina de Turing universal.
O leitor escrupuloso poderia chamar R7 de um caso de trapaca, pois ela se livra de
todo o trabalho arduo que se tem que fazer de modo a obter uma m aquina universal,
por exemplo, no caso das m aquinas de Turing.
Como e(x) y e indutivamente denido, tudo que provamos sobre conjuntos
indutivamente denidos se aplica aqui. Por exemplo, se e(x) y for o caso, ent ao
sabemos que existe uma seq u encia de formac ao (ver p agina 9) para ele. Essa seq u encia
especica como e e construda a partir de func oes recursivas parciais mais simples.
Note que poderamos tamb em ter visto a denic ao acima como uma denic ao indutiva
do conjunto de ndices (de func oes recursivas parciais).
Lema 7.2.2 A relac ao e(x) y e funcional.
Demonstrac ao. Temos que mostrar que e se comporta como uma func ao, ou seja,
e(x) y, e(x) z y = z. Isso e feito por induc ao sobre a denic ao de e.
Deixamos a prova ao leitor.
A denic ao de e(n) m tem um conte udo computacional, pois nos diz o que
fazer. Quando apresentados com e(n), primeiro olhamos para e; se a primeira en-
trada de e for 0, 1 ou 2, computamos a sada via a func ao inicial correspondente. Se
a primeira entrada for 3, determinamos a sada por casos. Se a primeira entrada for
4, primeiro realizamos as subcomputac oes indicadas por c
i
( m), e ent ao usamos as
sadas para conduzir as subcomputac oes para b(n). E assim por diante.
Se R7 for usada em tal composic ao, n ao temos mais garantia de que a computac ao
vai parar; de fato, podemos cair num laco, como mostra o exemplo a seguir.
De R7 segue, como veremos adiante, que existe um ndice e tal que e(x)
x(x). Para computar e para o argumento e passamos, conforme R7, para o lado
direito, i.e. temos que computar e(e), e como e foi introduzido por R7, temos que
repetir as transic oes para o lado direito, etc. Evidentemente que nosso procedimento
n ao nos leva a lugar algum!
Convenc oes. A relac ao e(x) y dene uma func ao sobre um domnio, que e
um subconjunto do domnio natural, i.e. um conjunto da forma N
n
. Tais func oes
s ao chamadas func oes recursivas parciais; elas s ao tradicionalmente denotadas por
202 CAP

ITULO 7. TEOREMA DE G

ODEL
smbolos do alfabeto grego, , , , etc. Se tal func ao e total sobre seu domnio
natural, ela e chamada de recursiva, e denotada por um smbolo romano, f, g, h, etc.
O uso do smbolo de igualdade = e pr oprio no contexto de func oes totais. Na pr atica,
no entanto, quando n ao houver confus ao, us a-la-emos freq uentemente ao inv es de .
O leitor deve tomar cuidado para n ao confundir f ormulas e func oes recursivas parciais;
car a sempre claro do contexto o que o smbolo representa. Conjuntos e relac oes ser ao
denotados por letras romanas mai usculas. Quando nenhuma confus ao pode ocorrer, ` as
vezes omitiremos par enteses, como em ex para e(x). Alguns autores usam uma
notac ao tipo bolinha preta para func oes recursivas parciais: e x. Insistiremos nos
par enteses de Kleene: e(x).
A terminologia abaixo e tradicionalmente usada em teoria da recurs ao:
Denic ao 7.2.3 1. Se para uma func ao parcial y((x) = y), ent ao dizemos
que converge em x, caso contr ario diverge em x.
2. Se uma func ao parcial converge para todas as entradas (pr oprias), ela e chamada
de total.
3. Uma func ao recursiva parcial total (sic!) ser a chamada de func ao recursiva.
4. Um conjunto (relac ao) e chamado de recursivo se sua func ao caracterstica (que,
por denic ao, e total) e recursiva.
Observe que e uma importante caracterstica de computac oes conforme denidas
na Denic ao 7.2.1, que e(
0
(n),
1
(n), . . . ,
k1
(n)) diverge se um de seus argu-
mentos
i
(n) diverge. Da, por exemplo, a func ao recursiva parcial e(x) e(x)
pode n ao convergir para todo e e x, pois primeiro temos que saber que e(x) con-
verge!
Essa caracterstica e ` as vezes inconveniente e levemente paradoxal, e.g. emaplicac oes
diretas do esquema discriminador R4, 3, 4)((x), (x), 0, 0) tem valor indenido
quando a func ao (aparentemente irrelevante) (x) tem valor indenido.
Com um pouco de trabalho extra, podemos obter umndice para uma func ao recur-
siva parcial que faz denic ao por casos sobre func oes recursivas parciais:
e(x) =
_
e
1
(x) se g
1
(x) = g
2
(x)
e
2
(x) se g
1
(x) ,= g
2
(x)
para g
1
, g
2
recursivas.
Dena
(x) =
_
e
1
se g
1
(x) = g
2
(x)
e
2
se g
1
(x) ,= g
2
(x)
por (x) = 3, 4)(e
1
, e
2
, g
1
(x), g
2
(x)). Portanto e(x) = (x) = [por R7] 6, n+
1)((x), x). Agora use R5 (substituic ao) para obter o ndice requerido.
Como as func oes recursivas primitivas formam tal classe natural de algoritmos,
nosso primeiro objetivo ser a mostrar que elas est ao contidas na classe das func oes
recursivas.
O teorema que vem a seguir tem uma bela motivac ao de m aquina. Considere uma
m aquina com ndice e operando sobre dois argumentos x e y. Mantendo x xo, temos
uma m aquina operando sobre y. Portanto obtemos uma seq u encia de m aquinas, uma
para cada x. O ndice de cada m aquina dessas depende, de uma maneira decente, de
x? A resposta plausvel parecer ser sim. O teorema a seguir conrma isso.
7.2. FUNC

OES RECURSIVAS PARCIAIS 203
Teorema 7.2.4 (O Teorema S
m
n
) Para todo m, n com 0 < m < n existe uma func ao
recursiva primitiva S
m
n
tal que
S
m
n
(e, x
0
, . . . , x
m1
)(x
m
, . . . , x
n1
) = e(x).
Demonstrac ao. A primeira func ao, S
1
n
, ocorre emR6, e havamos adiado sua denic ao
precisa, que aqui est a:
S
1
n
(e, y) = 4, (e)
1
.
1, e, 0, (e)
1
.
1, y), 1, (e)
1
.
1, 0), . . . , 1, (e)
1
.
1, n
.
2)).
Note que as aridades est ao corretas, e tem um argumento a mais que a func ao con-
stante e as func oes de projec ao envolvidas.
Agora, S
1
n
(e, y)(x) = z existem q
0
, . . . , q
n1
tais que
0, (e)
1
.
1, y)(x) = q
0
1, (e)
1
.
1, 0)(x) = q
1
. . .
1, (e)
1
.
1, n
.
2)(x) = q
n1
e(q
0
, . . . , q
n1
) = z.
Pelas cl ausulas R1 e R2 obtemos q
0
= y e q
i+1
= x
i
(0 i n 1), portanto
S
1
n
(e, y)(x) = e(y, x). Claramente, S
1
n
e recursiva primitiva.
A func ao recursiva primitiva S
m
n
e obtida aplicando-se S
1
n
m vezes. Da nossa
denic ao segue que S
m
n
e tamb em recursiva.
Afunc ao S
m
n
nos permite considerar algumas entradas como par ametros, e o restante
como entradas pr opriamente ditas. Essa e uma considerac ao de rotina no cotidiano da
matem atica: considere f(x, y) como uma func ao de y. A notac ao l ogica para essa
especicac ao de entradas faz uso do operador lambda. Digamos que t(x, y, z) seja
um termo (em alguma linguagem), ent ao x t(x, y, z) e para cada escolha de y, z a
func ao x t(x, y, z). Dizemos que y e z s ao par ametros nessa func ao. O c alculo
do valor desses termos lambda e simples: x t(x, y, z)(n) = t(n, y, z). Esse t opico
pertence ao chamado lambda-c alculo, e para n os a notac ao e apenas uma ferramenta
conveniente para nos expressarmos sucintamente.
O teorema S
m
n
expressa uma propriedade de uniformidade das func oes recursivas
parciais.

E de fato obvio que, digamos para uma func ao recursiva parcial (x, y),
cada indivduo (n, y) seja recursivo parcial (substitua x pela func ao constante n),
mas isso ainda n ao nos mostra que o ndice de y (x, y) seja, de uma forma sis-
tem atica, uniforme, comput avel a partir do ndice de e x. Pelo teorema S
m
n
, sabemos
que o ndice de e(x, y, z), considerado como uma func ao de, digamos, z depende
primitiva-recursivamente de x e y: h(x, y)(z) = e(x, y, z). Veremos um n umero
de aplicac oes do teorema S
m
n
.
A seguir provaremos um poderoso teorema sobre func oes recursivas parciais, que
nos permite introduzir func oes recursivas parciais por denic oes indutivas, ou por
denic oes implcitas. Func oes recursivas parciais podem, por esse teorema, ser dadas
como soluc oes de certas equac oes.
Exemplo.
(n) =
_
0 se n e um primo, ou 0, ou 1
(2n + 1) + 1 caso contr ario.
204 CAP

ITULO 7. TEOREMA DE G

ODEL
Ent ao (0) = (1) = (2) = (3) = 0, (4) = (9) + 1 = (19) + 2 = 2,
(5) = 0, e, e.g. (85) = 6.
`
A primeira vista, n ao podemos dizer muita coisa sobre
tal seq u encia. O teorema a seguir (de Kleene) mostra que podemos sempre encontrar
uma soluc ao recursiva parcial para uma tal equac ao para .
Teorema 7.2.5 (O Teorema da Recurs ao) Existe uma func ao recursiva primitiva rc
tal que para cada e e x, rc(e)(x) = e(rc(e), x).
Vamos notar primeiro que o teorema de fato d a a soluc ao r da seguinte equac ao:
r(x) = e(r, x). De fato, a soluc ao depende primitiva-recursivamente do ndice
dado e: f(e)(x) = e(f(e), x). Se n ao estivermos interessados na depend encia
(recursiva primitiva) do ndice da soluc ao em relac ao ao ndice antigo, podemos at e
nos contentar com a soluc ao de f(x) = e(f, x).
Demonstrac ao. Seja (m, e, x) = e(S
2
n+2
(m, m, e), x) e suponha que p seja um
ndice de . Faca rc(e) = S
2
n+2
(p, p, e), ent ao
rc(e)(x) = S
2
n+2
(p, p, e)(x) = p(p, e, x) = (p, e, x)
= e(S
2
n+2
(p, p, e), x) = e(rc(e), x).

Como um caso especial obtemos


Corol ario 7.2.6 Para cada e existe um n tal que n(x) = e(n, x).
Corol ario 7.2.7 Se e for recursiva primitiva, ent ao a soluc ao da equac ao f(e)(x) =
e(f(e), x) dada pelo teorema da recurs ao tamb em e recursiva primitiva.
Demonstrac ao. Imediata da denic ao explcita da func ao rc.
Daremos um n umero de exemplos assim que tivermos mostrado que podemos obter
todas as func oes recursivas primitivas. Por agora temos um amplo estoque de func oes
com as quais experimentar. Primeiro temos que provar alguns teoremas a mais.
As func oes recursivas parciais s ao fechadas sob uma forma geral de minimizac ao,
` as vezes chamada de busca ilimitada, que para uma dada func ao recursiva f(y, x) e
argumentos x percorre todos os valores de y e procura pelo primeiro que faz com que
f(y, x) seja igual a zero.
Teorema 7.2.8 Seja f uma func ao recursiva, ent ao (x) = y[f(y, x) = 0] e recur-
siva parcial.
Demonstrac ao. A id eia e computar consecutivamente f(0, x), f(1, x), f(2, x), . . .
at e que encontremos um valor 0. Isso n ao precisa forcosamente acontecer, mas se
acontece, chegaremos a ele. Enquanto estamos computando esses valores, contamos
o n umero de passos. Quem cuida disso e uma func ao recursiva. Portanto desejamos
uma func ao com ndice e, operando sobre y e x, que faz o trabalho para n os, i.e.
uma que ap os computar um valor positivo para f(y, x) vai para o pr oximo valor de
entrada y e adiciona 1 ao contador. Como quase n ao temos ferramentas aritm eticas no
momento, a construc ao e um tanto enrolada e articial.
Na tabela a seguir computamos f(y, x) passo a passo (as sadas est ao na terceira
linha), e na ultima linha computamos (y, x) de tr as para frente, como se fosse.
7.2. FUNC

OES RECURSIVAS PARCIAIS 205
y 0 1 2 3 . . . k 1 k
f(y, x) f(0, x) f(1, x) f(2, x) f(3, x) . . . f(k 1, x) f(k, x)
2 7 6 12 . . . 3 0
(y, x) k k 1 k 2 k 3 . . . 1 0
(0, x) e o k requerido. A instruc ao para e simples:
(y, x) =
_
0 se f(y, x) = 0
(y + 1, x) + 1 caso contr ario
De modo a encontrar um ndice para , faca (y, x) = e(y, x) e procure por um
valor para e. Introduzimos duas func oes auxiliares
1
e
2
com ndices b e c tais que

1
(e, y, x) = 0 e
2
(e, y, x) = (y+1, x)+1. Ondice c segue facilmente aplicando-
se R3, R7 e o teorema S
m
n
. Se f(y, x) = 0 ent ao consideramos
1
, sen ao
2
. Agora
introduzimos, pela cl ausula R4, uma nova func ao
0
que computa um ndice:

0
(e, y, x) =
_
b se f(y, x) = 0
c caso contr ario
e fazemos (e, y, x) =
0
(e, y, x)(e, y, x). O teorema da recurs ao nos fornece um
ndice e
0
tal que (e
0
, y, x) = e
0
(y, x).
Armamos que e
0
(0, x) produz o valor desejado k, se por acaso ele existe, i.e.
e
0
e o ndice da pelo qual est avamos procurando, e (x) = e(0, x).
Se f(y, x) ,= 0 ent ao (e, y, x) = c(e
0
, y, x) =
2
(e
0
, y, x) = (y +1, x) +1,
e se f(y, x) = 0 ent ao (e
0
, y, x) = b(e
0
, y, x) = 0.
Se, por outro lado, k for o primeiro valor y tal que f(y, x) = 0, ent ao (0, x) =
(1, x) + 1 = (2, x) + 2 = = (y
0
, x) +y
0
= k.
Note que a func ao dada n ao precisa ser recursiva, e que o argumento acima tamb em
funciona para f recursiva parcial. Temos ent ao que reformular y[f(x, y) = 0] como
o y tal que f(y, x) = 0 e para todo z < y o valor de f(z, x) est a denido e e positivo.
Lema 7.2.9 A func ao predecessor e recursiva.
Demonstrac ao. Dena
x
.
1 =
_
0 se x = 0
y[y + 1 = x] caso contr ario
onde y[y + 1 = x] = y[f(y, x) = 0] com
f(y, x) =
_
0 se y + 1 = x
1 caso contr ario

Teorema 7.2.10 As func oes recursivas s ao fechadas sob recurs ao primitiva.


Demonstrac ao. Sejam g e h recursivas, e suponha que f seja dada por
_
f(0, x) = g(x)
f(y + 1, x) = h(f(y, x), x, y)
206 CAP

ITULO 7. TEOREMA DE G

ODEL
Reescrevemos o esquema como
f(y, x) =
_
g(x) se y = 0
h(f(y
.
1, x), x, y
.
1) caso contr ario
No lado direito temos uma denic ao por casos. Portanto, ela dene uma func ao
recursiva parcial com ndice, digamos, a de y, x e o ndice e da func ao f que estamos
procurando. Isso leva a uma equac ao e(y, x) = a(y, x, e). Pelo teorema da re-
curs ao a equac ao tem uma soluc ao e
0
. Uma induc ao f acil sobre y mostra que e
0
e
total, portanto f e uma func ao recursiva.
Obtemos agora o obrigat orio
Corol ario 7.2.11 Todas as func oes recursivas primitivas s ao recursivas.
Agora que recuperamos as func oes recursivas primitivas, podemos obter muitas
func oes recursivas parciais.
Exemplos.
1. Dena (x) = e(x) + f(x), ent ao, por 7.2.11 e R5, e recursiva parcial
e gostaramos de expressar o ndice de como uma func ao de e e f. Considere
(e, f, x) = e(x) +f(x). e recursiva parcial, portanto ela tem umndice
n, i.e. n(e, f, x) = e(x) + f(x). Pelo teorema S
m
n
existe uma func ao
recursiva primitiva h tal que n(e, f, x) = h(n, e, f)(x). Por conseguinte,
g(e, f) = h(n, e, f) e a func ao requerida.
2. Existe uma func ao recursiva parcial tal que (n) = ((n+1)+1)
2
: Considere
z(n) = e(z, n) = (z(n + 1) + 1)
2
. Pelo teorema da recurs ao existe
uma soluc ao rc(e) para z, logo existe. Um argumento simples mostra que
n ao pode estar denida para nenhum n, portanto a soluc ao e a func ao vazia (a
m aquina que nunca d a uma sada).
3. A func ao de Ackermann, ver [Smorynski 1991], p.70. Considere a seguinte
seq u encia de func oes:

0
(m, n) = n +m

1
(m, n) = n m

2
(m, n) = n
m
.
.
.
_

k+1
(0, n) = n

k+1
(m+ 1, n) =
k
(
k+1
(m, n), n) (k 2)
Essa seq u encia consiste de func oes mais e mais rapidamente crescentes. Pode-
mos juntar todas essas func oes numa func ao:
(k, m, n) =
k
(m.n).
As equac oes acima podem ser resumidas:
_

_
(0, m, n) = n +m
(k + 1, 0, n) =
_
_
_
0 se k = 0
1 se k = 1
n caso contr ario
(k + 1, m+ 1, n) = (k, (k + 1), m, n), n).
7.2. FUNC

OES RECURSIVAS PARCIAIS 207
Note que a segunda equac ao tem que distinguir casos de acordo com
k+1
ser a
multiplicac ao, a exponenciac ao, ou o caso geral (k 2). Usando o fato de que
todas as func oes recursivas primitivas s ao recursivas, reescrevemos os tr es casos
numa equac ao da forma e(k, m, n) = f(e, k, m, n) para uma f recursiva ade-
quada (exerccio 3). Da, pelo teorema da recurs ao, existe uma func ao recursiva
com ndice e que satisfaz as equac oes acima. Ackermann mostrou que a func ao
(n, n, n) cresce, a partir de um certo momento, mais rapidamente que qualquer
func ao recursiva primitiva.
4. O teorema da recurs ao pode tamb em ser usado para denic oes indutivas de
conjuntos ou relac oes; isso e visto mudando para func oes caractersticas, e.g.
suponha que desejemos uma relac ao R(x, y) tal que
R(x, y) (x = 0 y ,= 0) ((x ,= 0 y ,= 0) R(x
.
1, y
.
1)).
Ent ao escrevemos
K
R
(x, y) = sg(sg(x) sg(y) +sg(x) sg(y) K
R
(x
.
1, y
.
1)),
de modo que existe um e tal que
K
R
(x, y) = e(K
R
(x
.
1, y
.
1), x, y).
Agora suponha que K
R
tenha ndice z, ent ao temos
z(x, y) = e

(z, x, y).
A soluc ao n como e dada pelo teorema da recurs ao e a func ao caracterstica
requerida. V e-se imediatamente que R e a relac ao menor que. Por conseguinte,
n e total, e portanto recursiva; isso mostra que R e tamb em recursiva. Note
que pela observac ao seguinte ao teorema da recurs ao, obtemos at e mesmo a re-
cursividade primitiva de R.
O teorema fundamental a seguir e extremamente util para muitas aplicac oes. Sua
import ancia te orica e que ele mostra que todas as func oes recursivas parciais podem
ser obtidas a partir de uma relac ao recursiva primitiva por uma minimizac ao.
Portanto minimizac ao e a ligac ao que faltava entre recursiva primitiva e recursiva
(parcial).
Teorema 7.2.12 (Teorema da Forma Normal) Existe um predicado recursivo primi-
tivo T tal que e(x) = ((z)T(e, x), z))
1
.
Demonstrac ao. Nossa heurstica para func oes recursivas parciais foi baseada na met afora
da m aquina: pense numa m aquina abstrata com ac oes prescritas pelas cl ausulas R1 a
R7. Ao reconstituir o ndice e de uma dessas m aquinas, damos por assim dizer um
procedimento de computac ao. Agora e um trabalho bracal especicar todos os pas-
sos envolvidos em tal computac ao. Uma vez que tivermos chegado a isso, teremos
tornado nossa noc ao de computac ao precisa, e da forma da especicac ao, podemos
imediatamente concluir que c e o c odigo de uma computac ao e de fato um predicado
recursivo primitivo. Buscamos por um predicado T(e, u, z) que formaliza o enunciado
heurstico z e uma computac ao (codicada) que e realizada por uma func ao recursiva
parcial com ndice e sobre a entrada u (i.e. x)). A computac ao foi arranjada de tal
maneira que a primeira projec ao de z e sua sada.
208 CAP

ITULO 7. TEOREMA DE G

ODEL
A prova e uma quest ao de perseveranca burocr atican ao difcil, mas tamb em n ao
empolgante. Para o leitor e melhor destrinchar alguns poucos casos por si s o e deixar
o restante, do que explicitar todos os detalhes seguintes.
Primeiro, dois exemplos.
1. A func ao sucessor aplicada a (1, 2, 3):
S
3
1
(1, 2, 3) = 2 + 1 = 3. Uma advert encia: aqui S
3
1
e usada para a func ao
sucessor operando sobre o segundo item da cadeia de entrada de comprimento 3.
A notac ao e usada somente aqui.
O ndice e e = 2, 3, 1), a entrada e u = 1, 2, 3), e o passo e a computac ao
direta z = 3, 1, 2, 3), 2, 3, 1)) = 3, u, e).
2. A composic ao da func ao constante com a func ao de projec ao.
P
3
2
(C
2
0
(7, 0), 5, 1) = 1.
Pela cl ausula R5, a entrada dessa func ao tem que ser uma cadeia de n umeros,
portanto temos que introduzir uma entrada apropriada. A soluc ao mais simples e
usar (7, 0) como entrada e fabricar os argumentos remanescentes 5 e 1 a partir
deles. Da, vamos fazer
P
3
2
(C
2
0
(7, 0), 5, 1) = P
3
2
(C
2
0
(7, 0), C
2
5
(7, 0), C
2
1
(7, 0)).
De modo a manter a notac ao legvel, usaremos vari aveis ao inv es das entradas
num ericas.
(y
0
, y
1
) = P
3
2
(C
2
0
(y
0
, y
1
), C
2
5
(y
0
, y
1
), C
2
1
(y
0
, y
1
)) = P
3
2
(C
2
0
(y
0
, y
1
), x
1
, x
2
).
Vamos primeiro escrever os dados para as func oes componentes:
ndice entrada passo
C
2
0
0, 2, 0) = e
0
y
0
, y
1
) = u 0, u, e
0
) = z
0
C
2
x1
0, 2, x
1
) = e
1
y
0
, y
1
) = u x
1
, u, e
1
) = z
1
C
2
x2
0, 2, x
2
) = e
2
y
0
, y
1
) = u x
2
, u, e
2
) = z
2
P
3
2
1, 3, 2) = e
3
0, x
1
, x
2
) = u

x
2
, u

, e
3
) = z
3
Agora a composic ao:
ndice entrada passo
f(y0, y1) 4, 2, e3, e0, e1, e2 = e y0, y1 = u x2, y0, y1, e, z3, z0, z1, z2 = z
Como vemos nesse exemplo, passo signica o ultimo passo na cadeia de passos
que leva ` a sada. Agora para uma computac ao real sobre entradas num ericas,
tudo o que se tem que fazer e substituir y
0
, y
1
, x
1
, x
2
por n umeros e escrever os
dados para (y
0
, y
1
).
Tentamos organizar a prova de uma forma legvel acrescentando sempre um co-
ment ario auxiliar.
Os ingredientes para, e as condic oes sobre, computac oes s ao listadas abaixo. O
ndice cont ema informac ao dada nas cl ausulas Ri. A computac ao codica os seguintes
itens:
(1) a sada (3) o ndice
(2) a entrada (4) subcomputac oes
7.2. FUNC

OES RECURSIVAS PARCIAIS 209
Note que z na tabela abaixo e o n umero mestre, i.e. podemos obter os dados
remanescentes a partir de z, e.g. e = (z)
2
, comp(u) = (e)
1
= (z)
2,1
, e a sada (se
houver alguma) da computac ao, (z)
0
. Em particular, podemos extrair os n umeros
mestre das subcomputac oes. Portanto, ao decodicar o c odigo para uma computac ao,
podemos efetivamente encontrar os c odigos para as subcomputac oes, etc. Isso sugere
um algoritmo recursivo primitivo para a extrac ao da hist oria total de uma computac ao
a partir do seu c odigo. Na realidade, isso e essencialmente o conte udo do teorema da
forma normal.

Indice Entrada Passo Condic oes sobre


Subcomputac oes
e u z
R1 0, n, q) x) q, u, e)
R2 1, n, i) x) x
i
, u, e)
R3 2, n, i) x) x
i
+ 1, u, e)
R4 3, n + 4) p, q, r, s, x) p, u, e) se r = s
q, u, e) se r ,= s
R5 4, n, b, c
0
, . . . , c
k1
) x) (z

)
0
, u, e, z

, z

, z

0
, . . . , z

k1
s ao
z

0
, . . . , z

k1
)) computac oes com
ndices b, c
0
, . . . , c
k1
.
z

tem entrada
(z

0
)
0
, . . . , (z

k1
)
0
).
R6 5, n + 2) p, q, x) s, u, e) (cf. 7.2.4)
R7 6, n + 1) b, x) (z

)
0
, u, e, z

) z

e uma computac ao
com entrada x
e ndice b.
Prosseguiremos agora de uma maneira (levemente) mais formal, denindo um
predicado C(z) (para z uma computac ao), usando a informac ao da tabela anterior.
Por conveni encia, assumimos que nas cl ausulas abaixo, as seq u encias u (em Seq(u))
t em comprimento positivo.
C(z) e denido por casos da seguinte forma:
210 CAP

ITULO 7. TEOREMA DE G

ODEL
C(z) :=
8
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
:
q, u, e < z(z = q, u, e Seq(u) e = 0, comp(u), q) (1)
ou
u, e, i < z(z = (u)i, u, e Seq(u) e = 1, comp(u), i) (2)
ou
u, e, i < z(z = (u)i + 1, u, e Seq(u) e = 2, comp(u), i) (3)
ou
u, e < z(Seq(u) e = 3, comp(u) comp(u) > 4 ((z = (u)0, u, e
(u)2 = (u)3) (z = (u)1, u, e (u)2 = (u)3))) (4)
ou
Seq(z) comp(z) = 5 Seq((z)2) Seq((z)4) comp((z)2) =
= 3 + comp((z)4) (z)2,0 = 4 C((z)3) (z)3,0 = (z)0 (z)3,1 =
= (z)4,0,0, , (z)
4,comp((z)
4
),0
(z)3,2 = (z)2,2

V
comp((z)
4
)1
i=0
(C((z)4,i) (z)4,i,2 = (z)0,2+i (z)4,i,1 = (z)1) (5)
ou
s, u, e < z(z = s, u, e Seq(u) e = 5, comp(u)
s = 4, (u)0,1
.
1, (u)0, 0, (u)0,1
.
1, (u)1, 1, (u)0,1
.
1, 0, . . .
. . . , 1, (u)0,1
.
1, (e)1
.
2), (6)
ou
u, e, w < z(Seq(u) e = 6, comp(y) z = (w)0, u, e, w C(w)
(w)2 = (u)0 (w)1 = (u)1, . . . , (u)
comp(u)1
) (7)
Observamos que o predicado C ocorre no lado direito apenas para argumentos
menores; al em do mais, todas as operac oes envolvidas nessa denic ao de C(z) s ao
recursivas primitivas. Agora aplicamos o teorema da recurs ao, como no exemplo 4
ap os o corol ario 7.2.11, e conclumos que C(z) e recursivo primitivo.
Agora fazemos T(e, x, z) := C(z) e = (z)
2
x) = (z)
1
. Portanto, o predi-
cado T(e, x, z) formaliza o enunciado z e a computac ao da func ao recursiva parcial
(m aquina) com ndice e operando sobre a entrada x. A sada da computac ao, se ela
existe, e U(z) = (z)
0
; logo, temos que e(x) = (zT(e, x, z))
0
.
Para aplicac oes a estrutura precisa de T n ao e importante, e suciente saber que ele
e recursivo primitivo.
Exerccios
1. Mostre que a func ao vazia (isto e, a func ao que diverge para todas as entradas) e
recursiva parcial. Indique um ndice para a func ao vazia.
2. Mostre que cada func ao recursiva parcial tem uma quantidade innita de ndices.
3. Faca a convers ao das tr es equac oes da func ao de Ackermann numa func ao, veja
o exemplo 3 ap os o corol ario 7.2.11.
7.3 Conjuntos recursivamente enumer aveis
Se um conjunto A tem uma func ao caracterstica, ent ao essa func ao age como um
teste efetivo de pertin encia. Podemos decidir quais elementos est ao em A e quais n ao
est ao. Conjuntos decidveis, embora convenientes, demandamdemais; usualmente n ao
e necess ario decidir o que est a num conjunto, desde que possamos ger a-lo efetiva-
mente. Equivalentemente, como veremos, e suciente se ter uma m aquina abstrata que
apenas aceite elementos, e n ao os rejeite. Se voc e a alimenta com um elemento, ela
7.3. CONJUNTOS RECURSIVAMENTE ENUMER

AVEIS 211
pode eventualmente mostrar uma luz verde de aceitac ao, mas n ao existe luz vermelha
para a rejeic ao.
Denic ao 7.3.1 1. Um conjunto (relac ao) e (recursivamente) decidvel se ele for
recursivo.
2. Um conjunto e recursivamente enumer avel (RE) se ele for o domnio de uma
func ao recursiva parcial.
3. W
k
e
= x N
k
[ y(e(x) = y), i.e. o domnio da func ao recursiva par-
cial e. Chamamos e de o ndice RE de W
k
e
. Se nenhuma confus ao surge
omitiremos o expoente.
Notac ao: escrevemos (x) (respectivamente, (x) ) para (x) converge (resp.
(x) diverge).

E uma boa heurstica pensar em conjuntos RE como sendo aceitos por m aquinas,
e.g. se A
i
for aceito pela m aquina M
i
(i = 0, 1), ent ao construimos uma nova m aquina
que simula M
0
e M
1
simultaneamente, e.g. voc e alimenta M
0
e M
1
com uma entrada,
e realiza a computac ao alternantemente um passo para M
0
e depois um passo para
M
1
, e assim n e aceito por M se for aceito por M
0
ou M
1
. Da, a uni ao de dois
conjuntos RE tamb em e RE.
Exemplo 7.3.2 1. N = o domnio da func ao constante 1.
2. = o domnio da func ao vazia. Essa func ao e recursiva parcial, como j a vimos.
3. Todo conjunto recursivo e RE. Seja A recursivo, faca
(x) = y(K
A
(x) = y y ,= 0)
Ent ao Dom() = A.
Os conjuntos recursivamente enumer aveis derivam sua import ancia do fato de que
eles s ao efetivamente dados, no sentido preciso do teorema que vem a seguir. Al em do
mais, verica-se que a maioria das relac oes importantes em l ogica s ao RE. Por exem-
plo, o conjunto de (c odigos de) sentencas demonstr aveis da aritm etica ou da l ogica de
predicados e RE. Os conjuntos RE representam o primeiro passo al em dos conjuntos
decidveis, como mostraremos adiante.
Teorema 7.3.3 Os seguintes enunciados s ao equivalentes, (A N):
1. A = Dom() para alguma recursiva parcial,
2. A = Ran() para alguma recursiva parcial,
3. A = x [ yR(x, y) para alguma R recursiva.
Demonstrac ao. (1) (2). Dena (x) = x sg((x) + 1). Se x Dom(),
ent ao (x) = x, portanto x Ran(), e se x Ran(), ent ao (x) , logo
x Dom().
212 CAP

ITULO 7. TEOREMA DE G

ODEL
(2) (3). Seja A = Ran(), com g = , ent ao
x A w(T(g, (w)
0
, (w)
1
) x = (w)
1,0
).
A relac ao no escopo do quanticador e recursiva.
Note que w simula umpar: primeira coordenadaentrada, segunda coordenada
computac ao, tudo no sentido do teorema da forma normal.
(3) (1). Dena (x) = yR(x, y). e recursiva parcial e Dom() = A.
Observe que (1) (3) tamb em se verica para A N
k
.

Como denimos conjuntos recursivos por meio de func oes caractersticas, e, dado
que estabelecemos o fecho sob recurs ao primitiva, podemos copiar todas as propriedades
de fechamento dos conjuntos (e relac oes) recursivos primitivos para conjuntos (e relac oes)
recursivos.
A seguir listamos um n umero de propriedades de fechamento de conjuntos RE.
Escreveremos conjuntos e relac oes tamb em como predicados, quando isso acontece de
ser conveniente.
Teorema 7.3.4 1. Se Ae B forem RE, ent ao o mesmo acontece comAB e AB.
2. Se R(x, y) for RE, ent ao xR(x, y) tamb em o e.
3. Se R(x, y) for RE e for recursiva parcial, ent ao R((y, z), y) e RE.
4. Se R(x, y) for RE, ent ao o mesmo acontece comx < zR(x, y) e x < zR(x, y).
Demonstrac ao. 1. Existem R e S recursivas tais que
Ay xR(x, y),
By xS(x, y).
Ent ao Ay By x
1
x
2
(R(x
1
, y) S(x
2
, y))
z(R((z)
0
, y) S((z)
1
, y))
A relac ao no escopo do quanticador e recursiva, portanto A B e RE. Um ar-
gumento semelhante estabelece a enumerabilidade recursiva de AB. O truque
de substituir x
1
e x
2
por (z)
0
e (z)
1
, e x
1
x
2
por z e chamado de contrac ao de
quanticadores.
2. Seja R(x, y) zS(z, x, y) para uma S recursiva, ent ao xR(x, y) xzS(z, x, y)
uS((u)
0
, (u)
1
, y). Portanto, a projec ao xR(x, y) de R e RE. Geometrica-
mente falando, xR(x, y) e de fato uma projec ao. Considere o caso bidimen-
sional,
_

R
S
7.3. CONJUNTOS RECURSIVAMENTE ENUMER

AVEIS 213
A projec ao vertical S de R e dada por Sx yR(x, y).
3. Seja R o domnio de uma recursiva parcial, ent ao R((y, z), y) e o domnio
de ((y, z), y).
4. Deixo ao leitor.

Teorema 7.3.5 O grafo de uma func ao parcial e RE sse a func ao e recursiva parcial.
Demonstrac ao. G = (x, y) [ y = e(x) e o grafo de e. Agora (x, y) G
z(T(e, x), z) y = (z)
0
), portanto G e RE.
Para a recproca, se G for RE, ent ao G(x, y) zR(x, y, z) para alguma R recur-
siva. Da, (x) = (wR(x, (w)
0
, (w)
1
))
0
, portanto e recursiva parcial.
Podemos tamb em caracterizar conjuntos recursivos em termos de conjuntos RE.
Suponha que tanto A quanto seu complemento A
c
sejam RE, ent ao (heuristicamente)
temos duas m aquinas enumerando A e A
c
. Agora, o teste de pertin encia de A e sim-
ples: ligue ambas as m aquinas e espere at e n aparecer como sada da primeira ou da
segunda m aquina. Isso tem necessariamente que ocorrer em um n umero nito de pas-
sos, pois n A ou n A
c
(princpio do terceiro excludo). Logo, temos um teste
efetivo. Formalizamos isso da seguinte forma:
Teorema 7.3.6 A e recursivo A e A
c
forem RE.
Demonstrac ao. Trivial: A(x) yA(x), onde y e uma vari avel dummy. Igual-
mente para A
c
.
Seja A(x) yA(x, y), A(x) zS(v, z). Como x(A(x) A(x)),
temos xy(R(x, y) S(x, y)), portanto f(x) = y[R(x, y) S(x, y)] e re-
cursiva e se inserirmos o y que encontramos em R(x, y), ent ao sabemos que se
R(x, f(x)) for verdadeira, o x pertence a A. Portanto, A(x) R(x, f(x)), i.e.
A e recursivo.

Para func oes recursivas parciais temos uma forma forte de denic ao por casos:
Teorema 7.3.7 Suponha que
0
, . . . ,
k1
sejam recursivas parciais, R
0
, . . . , R
k1
relac oes RE mutuamente disjuntas, ent ao a seguinte func ao e recursiva parcial:
(x) =
_

0
(x) se R
0
(x)

1
(x) se R
1
(x)
.
.
.
.
.
.

k1
(x) se R
k1
(x)
caso contr ario
Demonstrac ao. Consideramos o grafo da func ao .
G(x, y) (R
0
(x) y =
1
(x)) (R
k1
(x) y =
k1
(x)).
Pelas propriedades de conjuntos RE, G(x, y) e RE e, por conseguinte, (x) e recursiva
parcial. (Note que o ultimo caso na denic ao de e apenas um pouco de decorac ao.)
Agora podemos mostrar a exist encia de conjuntos RE indecidveis.
214 CAP

ITULO 7. TEOREMA DE G

ODEL
Exemplos.
(1) (O Problema da Parada (Turing))
Considere K = x [ zT(x, x, z). K e a projec ao de uma relac ao recursiva, por-
tanto e RE. Suponha que K
c
tamb em seja RE, ent ao x K
c
zT(e, x, z) para
algum ndice e. Agora e K zT(e, e, z) e K
c
. Contradic ao. Da, K
n ao e recursivo pelo teorema 7.3.6. Isso nos diz que existem conjuntos recursivamente
enumer aveis que n ao s ao recursivos. Em outras palavras, o fato de que se pode efeti-
vamente enumerar um conjunto n ao garante que ele seja decidvel.
O problema da decis ao para K e chamado problema da parada, porque ele pode
ser parafraseado como decida se a m aquina comndice x realiza uma computac ao que
p ara ap os um n umero nito de passos quando apresentada com x como entrada. Note
que e ipso facto indecidvel se a m aquina comndice x no nal das contas p ara quando
executa sobre a entrada y.
Trata-se de uma caracterstica especca de problemas de decis ao em teoria da
recurs ao, que eles concernem testes para entradas tomadas de algum domnio. N ao faz
sentido pedir por um procedimento de decis ao para, digamos, a hip otese de Riemann,
pois existe trivialmente uma func ao recursiva f que testa o problema no sentido de que
f(0) = 0 se a hip otese de Riemann se verica e f(0) = 1 se a hip otese de Riemann
for falsa. A saber, considere as func oes f
0
e f
1
, que s ao as func oes constantes 0 e 1
respectivamente. Agora, l ogica nos diz que uma das duas e a func ao requerida (essa e
a lei do terceiro excludo), infelizmente n ao sabemos qual func ao ela e. Portanto, para
problemas sempar ametros, n ao faz sentido, no arcabouco da teoria da recurs ao, discutir
decidibilidade. Como vimos, l ogica intuicionstica v e esse exemplo patol ogico sob
uma luz diferente.
(2) N ao e decidvel se x e uma func ao total.
Suponha que fosse decidvel, ent ao teramos uma func ao recursiva f tal que f(x) =
0 x e total. Agora considere
(x, y) :=
_
0 se x K
caso contr ario
Pelo teorema S
m
n
existe uma func ao recursiva h tal que h(x)(y) = (x, y). Agora,
h(x) e total x K, portanto f(h(x)) = 0 x K, i.e. temos uma func ao
caracterstica recursiva sg(f(h(x))) para K. Contradic ao. Da, tal f n ao existe, ou
seja, x [ x e total n ao e recursivo.
(3) O problema W
e
e nito n ao e recursivamente sol uvel.
Em palavras, n ao e decidvel se um conjunto recursivamente enumer avel e nito.
Suponha que existisse uma func ao recursiva f tal que f(e) = 0 W
e
e nito. Con-
sidere a h(x) denida no exemplo (2). Claramente, W
h(x)
= Domh(x) =
x / K, e W
h(x)
e innito para x K. f(h(x)) = 0 x / K, e portanto sg(f(h(x)))
e uma func ao caracterstica recursiva para K. Contradic ao.
Note que x K xx , portanto podemos reformular as soluc oes acima da
seguinte forma: em (2) tome (x, y) = 0 x(x) e em (3) (x, y) = x(x).
(4) A igualdade de conjuntos RE e indecidvel.
Ou seja, (x, y) [ W
x
= W
y
n ao e recursivo. Reduzimos o problema ` a soluc ao
de (3) escolhendo W
y
= .
(5) N ao e decidvel se W
e
e recursivo.
7.3. CONJUNTOS RECURSIVAMENTE ENUMER

AVEIS 215
Ponha (x, y) = x(x) y(y), ent ao (x, y) = h(x)(y) para uma certa h
recursiva, e
Domh(x) =
_
K se x K
caso contr ario
Suponha que houvesse uma func ao recursiva f tal que f(x) = 0 W
x
e recursivo,
ent ao f(h(x)) = 0 x / K e, portanto, K seria recursivo. Contradic ao.
Al emdessas, existemdiversas t ecnicas para se estabelecer indecidibilidade. Tratare-
mos o m etodo da inseparabilidade.
Denic ao 7.3.8 Dois conjuntos RE disjuntos W
m
e W
n
s ao recursivamente separ aveis
se existe um conjunto recursivo A tal que W
n
A e W
m
A
c
. Conjuntos disjuntos
A e B s ao efetivamente insepar aveis se existe uma func ao recursiva parcial tal que
para todos m, n com A W
m
, B W
n
, W
m
W
n
= , temos (m, n) e
(m, n) / W
m
W
n
.
_

A A
c
W
n
W
m
_

_
`

_
`

(m, n) ,
A B
W
m
W
n
Imediatamente vemos que conjuntos RE efetivamente insepar aveis s ao recursiva-
mente insepar aveis, i.e. n ao recursivamente separ aveis.
Teorema 7.3.9 Existem conjuntos RE efetivamente insepar aveis.
Demonstrac ao. Dena A = x [ x(x) = 0, B = x [ x(x) = 1. Claramente
A B = e ambos os conjuntos s ao RE.
Suponha que W
m
W
n
= e A W
m
, B W
n
. Para denir comecamos
testando x W
m
ou x W
n
; se primeiro encontrarmos x W
m
, fazemos com que
uma func ao auxiliar (x) seja igual a 1, e se x aparece primeiro em W
n
colocamos
(x) = 0.
Formalmente
(m, n, x) =
_
_
_
1 se z(T(m, x, z) e y < zT(n, x, y))
0 se z(T(n, x, z) e y zT(m, x, y))
caso contr ario.
Pelo teorema S
m
n
, h(m, n)(x) = (m, n, x) para alguma h recursiva.
h(m, n) W
m
h(m, n) / W
n
. Portanto z(T(m, h(m, n), z)
y < zT(n, h(m, n), y))
(m, n, h(m, n)) = 1 h(m, n)(h(m, n)) = 1
h(m, n) B h(m, n) W
n
.
Contradic ao. Da, h(m, n) / W
m
. Igualmente, h(m, n) / W
n
. Por conseguinte, h e a
requerida.
216 CAP

ITULO 7. TEOREMA DE G

ODEL
Denic ao 7.3.10 Um subconjunto A de N e produtivo se existe uma func ao recursiva
parcial , tal que para cada W
n
A, (n) e (n) AW
n
.
_

A
`
_
A
W
n
(n) ,
O teorema acima nos d a o seguinte:
Corol ario 7.3.11 Existem conjuntos produtivos.
Demonstrac ao. O conjunto A
c
denido na demonstrac ao acima e produtivo. Seja
W
k
A
c
. Faca W

= B W
k
= W
n
W
k
= W
h(n,k)
para uma func ao recur-
siva apropriada h. Agora aplique a func ao de separac ao da demonstrac ao do teorema
precedente a A = W
m
e W
h(n,k)
: (m, h(n, k)) A
c
W
m
.
Conjuntos produtivos s ao, num sentido forte, n ao RE: independentemente de como
se tenta encaixar um conjunto RE neles, pode-se uniformemente e efetivamente indicar
um ponto que n ao e levado em conta por esse conjunto RE.
Exerccios
1. A projec ao de um conjunto RE e RE, i.e. se R(x, y) for RE ent ao o mesmo
acontece com yR(x, y).
2. (i) Se A for enumerado por uma func ao estritamente mon otona, ent ao A e recur-
sivo.
(ii) Se A e innito e recursivo, ent ao A e enumerado por uma func ao recursiva
estritamente mon otona.
(iii) Um conjunto RE innito cont em um subconjunto recursivo innito.
3. Todo conjunto RE n ao-vazio e enumerado por uma func ao recursiva total.
4. Se A for um conjunto RE e f uma func ao parcialmente recursiva, ent ao f
1
(A)
(= x [ f(x) A) e f(A) s ao RE.
5. Mostre que os seguintes conjuntos n ao s ao recursivos:
(i) (x, y) [ W
x
= W
y

(ii) x [ W
x
e recursivo
(iii) x [ 0 W
x

7.4. UM POUCO DE ARITM

ETICA 217
7.4 Um pouco de aritm etica
Na sec ao sobre func oes recursivas estivemos trabalhando no modelo padr ao da ar-
itm etica; como estamos agora lidando com demonstrabilidade na aritm etica temos que
evitar argumentos sem anticos, e nos basearmos exclusivamente em derivac oes dentro
do sistema formal da aritm etica. A teoria geralmente aceita para a aritm etica vai l a
atr as a Peano, e portanto falamos da aritm etica de Peano, PA(cf. 2.7).
Uma grande quest ao no nal dos anos 1920s era a completude de PA. G odel p os
um m ` as grandes esperancas prevalentes da epoca mostrando que PA e incompleta
(1931). De forma a realizar os passos necess arios para a prova de G odel, temos que
provar um n umero de teoremas em PA. A maioria desses fatos podem ser encon-
trados nos textos sobre teoria dos n umeros, ou sobre os fundamentos da aritm etica.
Deixaremos um n umero consider avel de provas ao leitor. A maior parte do tempo
tem-se que aplicar uma forma apropriada de induc ao. Por mais importante que essas
reais demonstrac oes sejam, o corac ao do argumento de G odel reside na sua engenhosa
incorporac ao de argumentos recurs ao-te oricos dentro de PA.
Um das obvias pedras-no-caminho para uma imitac ao imediata da auto-refer encia
e a aparente pobreza da linguagem de PA. Ela n ao nos permite falar de, e.g., uma
cadeia nita de n umeros. Uma vez que temos exponenciac ao podemos simplesmente
codicar seq u encias nitas de n umeros. G odel mostrou que pode-se de fato denir a
exponencial (e muito mais) ao custo de umpouco de aritm etica adicional, levando ` a sua
famosa -func ao. Em 1971 Matiyashevich mostrou por outros meios que a exponen-
cial e denvel em PA, portanto nos permitindo manusear codicac ao de seq u encias
em PA diretamente. A aritm etica de Peano mais exponenciac ao e prima facie mais
forte que PA, mas os resultados supracitados mostram que a exponenciac ao pode ser
eliminada. Vamos chamar o sistema estendido de PA; nenhuma confus ao surgir a.
Repetimos os axiomas:
x(S(x) ,= 0),
xy(S(x) = S(y) x = y),
x(x + 0 = x),
xy(x +S(y)) = S(x +y)),
x(x 0 = 0),
xy(x S(y) = x y +x),
x(x
0
= 1),
xy(x
S(y)
= x
y
x),
(0) x((x) (S(x))) x(x).
Como 1 = S(0), usaremos ambos S(x) e x + 1, o que quer que seja mais con-
veniente. Usaremos tamb em as abreviac oes usuais. De modo a simplicar a notac ao,
omitiremos tacitamente o PA em frente de sempre que possvel. Como uma
outra simplicac ao inofensiva da notac ao, freq uentemente escreveremos simplesmente
n para n quando nenhuma confus ao possa surgir.
No que se segue daremos um n umero de teoremas de PA; de forma a melhorar
a legibilidade, omitiremos os quanticadores universais precedendo as f ormulas. O
leitor deve sempre pensar no fecho universal de . . . .
Al em do mais, usaremos as abreviac oes padr ao da algebra, i.e. deixando de fora
o ponto da multiplicac ao, os par enteses sup eruos, etc., quando nenhuma confus ao
surge. Escreveremos tamb em n ao inv es de n.
As operac oes b asicas satisfazem as leis bem-conhecidas:
218 CAP

ITULO 7. TEOREMA DE G

ODEL
Lema 7.4.1 Adic ao e multiplicac ao s ao associativas e comutativas, e distribui sobre
+.
(i) (x +y) +z = x + (y +z)
(ii) x +y = y +x
(iii) x(yz) = (xy)z
(iv) xy = yx
(v) x(y +z) = xy +xz
(vi) x
y+z
= x
y
x
z
(vii) (x
y
)
z
= x
yz
Demonstrac ao. Rotina.
Lema 7.4.2
(i) x = 0 y(x = Sy)
(ii) x +z = y +z x = y
(iii) z ,= 0 (xz = yz x = y)
(iv) x ,= 0 (x
y
= x
z
y = z)
(v) y ,= 0 (x
y
= z
y
x = z)
Demonstrac ao. Rotina.
Um n umero de fatos uteis s ao listados nos exerccios.
Embora a linguagem de PA seja modesta, muitas das relac oes e func oes usuais
podem ser denidas. A ordenac ao e um exemplo importante.
Denic ao 7.4.3 x < y := z(x +Sz = y).
Usaremos as seguintes abreviac oes:
x < y < z signica x < y y < z
x < y(x) signica x(x < y (x))
x < y(x) signica x(x < y (x))
x > y signica y < x
x y signica x < y x = y.
Teorema 7.4.4
(i) x < x
(ii) x < y y < z x < z
(iii) x < y x = y y < x
(iv) 0 = x 0 < x
(v) x < y Sx = y Sx < y
(vi) x < Sx
(vii) x < y y < Sx
(viii) x < Sy (x = y x < y)
(ix) x < y x +z < y +z
(x) z ,= 0 (x < y xz < yz)
(xi) x ,= 0 (0 < y < z x
y
< x
z
)
(xii) z ,= 0 (x < y x
z
< y
z
)
(xiii) x < y Sx < Sy
Demonstrac ao. Rotina.
7.4. UM POUCO DE ARITM

ETICA 219
Quanticac ao com um limitante explcito pode ser substituda por uma disjunc ao
(ou conjunc ao) repetida.
Teorema 7.4.5
x < n(x) (0) . . . (n 1), (n > 0),
x < n(x) (0) . . . (n 1), (n > 0).
Demonstrac ao. Induc ao sobre n.
Teorema 7.4.6 (i) induc ao bem-fundada
x(y < x (y) (x)) x(x)
(ii) princpio do menor n umero (PMN)
x(x) x((x) y < x(x))
Demonstrac ao. (i) Vamos fazer (x) := y < x(y). Assumimos que x((x)
(x)) e procedemos para aplicar induc ao sobre (x).
Claramente (0).
Assim, assuma, pela hip otese da induc ao, (x) .
Agora, (Sx) (y < Sx(y)) (y((y = x y < x) (y)))
(y((y = x (y)) (y < x (y)))) (y((x) (y < x (y))))
((x) y < x(y)) ((x) (x)).
Agora, (x) foi dada em (x) (x). Logo, obtemos (Sx). Isso mostra
x(x), e, por conseguinte, derivamos x(x).
(ii) Considere a contraposic ao e reduza-a a (i).

Em nossas considerac oes adicionais as seguintes noc oes ter ao seu papel a desem-
penhar.
Denic ao 7.4.7 (i) Divisibilidade
x[y := z(xz = y)
(ii) Subtrac ao com ponto de corte
z = y
.
x := (x < y x +z = y) (y x z = 0)
(iii) Resto ap os a divis ao
z = resto(x, y) := (x ,= 0 u(y = ux +z) z < x) (x = 0 z = y)
(iv) x e primo
Primo(x) := x > 1 yz(x = yz y = x y = 1)
Os lados direitos de (ii) e (iii) de fato determinam func oes, como mostrado em
Lema 7.4.8 (i) xy!z((x < y z +x = y) (y x z = 0))
(ii) xy!z((x ,= 0 u(y = ux +z) z < y) (x = 0 z = 0)).
Demonstrac ao. Em ambos os casos, induc ao sobre y.
220 CAP

ITULO 7. TEOREMA DE G

ODEL
Existe uma outra caracterizac ao dos n umeros primos.
Lema 7.4.9 (i) Primo(x) x > 1 y(y[x y = 1 y = x)
(ii) Primo(x) x > 1 yz(x[yz x[y x[z)
Demonstrac ao. (i) e uma mera reformulac ao da denic ao.
(ii) e um pouco complicado. Introduzimos um limitante no produto yz, e
fazemos uma induc ao bem-fundada sobre o limitante. Faca (w) = yz
w(x[yz x[y x[z). Agora mostramos w(v < w(v) (w)).
Suponha que v < w(v) e assuma que (w), i.e. existem y, z w tais
que x[yz, x[y, x[z. Vamos diminuir o y tal que o w e tamb em diminudo.
Como x[y, x[z, temos z ,= 0. Se y z, ent ao podemos substitu-lo por
y = resto(x, y) e prosseguir com o argumento. Portanto, suponha que y < x.
Agora uma vez mais obtemos o resto, x = ay + b com b < y. Consideramos
b = 0 e b > 0.
Se b = 0, ent ao x = ay; logo, y = 1 y = x. Se y = 1, ent ao x[z. Contradic ao.
Se y = x ent ao x[y. Contradic ao.
Agora, se b > 0, ent ao bz = (x ay)z = xz ayz. Como x[yz, obtemos x[bz.
Observe que bz < yz < w, portanto temos uma contradic ao com v < w(v).
Da, por RAA, estabelecemos o enunciado requerido.
Para a recproca (), temos somente que aplicar os fatos estabelecidos sobre
divisibilidade.

Podemos provar na aritm etica de Peano que existe algumprimo? Sim, por exemplo,
PA x(x > 1 y(Primo(y) y[x).
Demonstrac ao. Observe que y(y > 1 y[x). Pelo princpio PML existe um desses
menores y: y(y > 1 y[xz < y(z > 1 z[y)). Agora e f acil mostrar que esse
mnimo y e um primo.
Primos e e expoentes s ao muito uteis para codicar seq u encias nitas de n umeros
naturais, e, portanto, para codicac ao em geral. Existem muito mais codicac oes, e
algumas delas s ao mais realistas no sentido de que elas t em uma complexidade menor.
Para nosso prop osito, entretanto, primos e expoentes bastar ao.
Como vimos, podemos codicar uma seq u encia nita (n
0
, . . . , n
k1
) como o n umero
2
n0+1
3
n1+1
. . . p
n
k1
+1
k1
.
Introduziremos alguns predicados auxiliares.
Denic ao 7.4.10 (Primos sucessivos) Primossuc(x, y) := x < y Primo(x)
Primo(y) z(x < z < y Primo(z)).
O pr oximo passo e denir a seq u encia de n umeros primos 2, 3, 5, . . ., p
n
, . . .. O
truque b asico aqui e que consideramos todos os primos sucessivos com expoentes em
ascens ao: 2
0
, 3
1
, 5
2
, 7
3
, . . ., p
x
x
. Formamos o produto e a pegamos o ultimo fator.
Denic ao 7.4.11 (O x- esimo n umero primo, p
x
) p
x
= y := z(2[z v < yu
y(Primossuc(v, u) w < z(v
w
[z u
w+1
[z)) y
x
[z y
x+1
[z).
7.4. UM POUCO DE ARITM

ETICA 221
Observe que, como a denic ao d a origem a uma func ao, temos que mostrar que
Lema 7.4.12 z(2[z v < y
0
u(Primossuc(v, u) w < z(v
w
[z
u
w+1
[z)) y
x
0
[z y
x+1
0
[z) z(2[z v < y
1
u y
1
(Primossuc(v, u)
w < z(v
w
[z u
w+1
[z)) y
x
1
[z y
x+1
1
[z) y
0
= y
1
.
A denic ao acima simplesmente imita a descric ao informa. Note que podemos limitar
o quanticador existencial como z < y
x
2
. Agora acabamos de justicar a notac ao de
n umeros de seq u encias como produtos da forma
p
n0+1
0
p
n1+1
1
. . . p
n
k1
+1
k1
O leitor deve vericar isso de acordo com a denic ao p
0
= 2. A decodicac ao tamb em
pode ser denida. Em geral pode-se denir a pot encia de um fator primo.
Denic ao 7.4.13 (decodicac ao) (z)
k
= v := p
v+1
k
[z p
v+2
k
[z.
O comprimento de uma seq u encia codicada pode tamb em ser extrada do c odigo:
Denic ao 7.4.14 (comprimento) comp(z) = x := p
x
[z y < z(p
y
[z y < x).
Lema 7.4.15 Seq(z) (comp(z) = x (p
x
[z p
x+1
[z)).
Denimos separadamente a codicac ao da seq u encia vazia: ) := 1.
A codicac ao da seq u encia (x
0
, . . . , x
n1
) e denotada por x
0
, . . . , x
n1
).
Operac oes como concatenac ao e restric ao de seq u encias codicadas podem ser
denidas tais que
x
0
, . . . , x
n1
) y
0
, . . . , y
m1
) = x
0
, . . . , x
n1
, y
0
, . . . , y
m1
)
x
0
, . . . , x
n1
)[m = x
0
, . . . , x
m1
), onde m n (atenc ao: aqui [ e usado para a
relac ao de restric ao, n ao confunda com divisibilidade).
A cauda de uma seq u encia e denida da seguinte forma:
cauda(y) = z (x(y = x) z) (comp(y) = 0 z = 0)).
Termos fechados da PApodem ser calculados em PA:
Lema 7.4.16 Para qualquer termo fechado t existe um n umero n tal que t = n.
Demonstrac ao. Induc ao externa sobre t, cf. lema 2.3.3. Observe que n e univocamente
determinado.
Corol ario 7.4.17 N [= t
1
= t
2
t
1
= t
2
para t
1
, t
2
ambos fechados.
O teorema de G odel mostrar a que em geral verdadeiro no modelo padr ao (de
agora em diante simplesmente diremos verdadeiro) e demonstr avel em PA n ao s ao
o mesmo. Entretanto, para uma classe de sentencas simples, isso est a correto.
Denic ao 7.4.18
(i) A classe
0
de f ormulas e indutivamente denida por

0
para at omica
,
0
, , ,
0

0
x < y , x < y x
0
222 CAP

ITULO 7. TEOREMA DE G

ODEL
(ii) A classe
1
e dada por
,
1
para at omica
,
1
,
1

1
x < y , x < y
1
Uma f ormula e chamada
1
-estrita se ela for da forma x(x), onde e
0
.
Chamaremos f ormulas nas classes
0
e
1
de
0
-f ormulas e
1
-f ormulas, respec-
tivamente. F ormulas demonstravelmente equivalentes a
1
-f ormulas tamb em ser ao
chamadas de
1
-f ormulas.
Para
1
-f ormulas temos que verdadeiro = demonstr avel.
Lema 7.4.19 ou , para
0
-sentencas .
Demonstrac ao. Induc ao sobre .
(i) at omica. Se t
1
= t
2
e t
1
= t
2
for verdadeira, veja o corol ario 7.4.17.
Se t
1
= t
2
for falsa, ent ao t
1
= n e t
2
= m, onde, digamos n = m + k com
k > 0. Agora assuma (em PA) t
1
= t
2
, ent ao m = m + k. Pelo lema 7.4.2,
obtemos 0 = k. Mas como k = S(l) para algum l, obtemos uma contradic ao.
Da, t
1
= t
2
.
(ii) Os casos de induc ao s ao obvios. Para x < t (x), onde t e um termo
fechado, use a identidade x < n (x) (0) . . . (n 1). Igualmente
para x < t (x).

Teorema 7.4.20 (
1
-completude) [= PA , para
1
-sentencas .
Demonstrac ao. Como a veracidade de x(x) remete ` a veracidade de (n) para al-
gum n, podemos aplicar o lema acima.
7.5 Representabilidade
Nesta sec ao daremos a formalizac ao de tudo isso em PA, i.e. mostraremos que pred-
icados denveis existem correspondendo com os predicados introduzidos acima (no
modelo padr ao) e que suas propriedades s ao demonstr aveis.
Denic ao 7.5.1 (representabilidade)
Uma f ormula (x
0
, . . . , x
n1
, y) representa uma func ao n- aria f se para todos
k
0
, . . . , k
n1
f(k
0
, . . . , k
n1
) = p y((k
0
, . . . , k
n1
, y) y = p)
Uma f ormula (x
0
, . . . , x
n1
) representa umpredicado P se para todos k
0
, . . . , k
n1
P(k
0
, . . . , k
n1
) (k
0
, . . . , k
n1
)
e
P(k
0
, . . . , k
n1
) (k
0
, . . . , k
n1
)
7.5. REPRESENTABILIDADE 223
Um termo t(k
0
, . . . , k
n1
) representa f se para todos k
0
, . . . , k
n1
f(k
0
, . . . , k
n1
) = p t(k
0
, . . . , k
n1
) = p
Lema 7.5.2 Se f for represent avel por um termo, ent ao f e represent avel por uma
f ormula.
Demonstrac ao. Suponha que f seja represent avel por t. Faca f(k) = p. Ent ao
t(k) = p. Agora dena a f ormula (x, y) := t(x) = y. Ent ao temos (k, p). E,
portanto, p = y (k, p). Isso prova (k, p) p = y.
`
As vezes e conveniente dividir a representabilidade de func oes em duas cl ausulas.
Lema 7.5.3 Uma func ao k- aria e represent avel por sse
f(n
0
, . . . , n
k1
) = m (n
0
, . . . , n
k1
, m) e !z(n
0
, . . . , n
k1
, z).
Demonstrac ao. Imediata. Note que a ultima cl ausula pode ser substituda por
(n
0
, . . . , n
k1
, z) z = m.
As func oes b asicas da aritm etica t em seus termos representantes obvios. Func oes
bastante simples podem, no entanto, n ao ser representadas por temos. E.g., a func ao
signum e representada por (x, y) := (x = 0y = 0)(x = 0y = 1), mas n ao por
um termo. Entretanto podemos facilmente mostrar x!y(x, y), e por conseguinte
poderamos conservativamente adicionar a sg a PA (cf. teorema 3.4.6). Note que um
bom n umero de predicados e func oes uteis t em f ormulas
0
como uma representac ao.
Lema 7.5.4 P e represent avel K
P
e represent avel.
Demonstrac ao. Suponha que (x) represente P. Dena (x, y) = ((x) (y =
1)) ((x) (y = 0)). Ent ao representa K
P
, pois se K
P
(k) = 1, ent ao P(k),
portanto (k) e (k, y) (y = 1), e se K
P
(k) = 0, ent ao P(k), portanto
(k) e (k, y) (y = 0). Reciprocamente, suponha que (x, y) represente
K
P
. Dena (x) := (x, 1). Ent ao representa P.
Existe uma classe grande de func oes represent aveis, que inclui as func oes recursi-
vas primitivas.
Teorema 7.5.5 As func oes recursivas primitivas s ao represent aveis.
Demonstrac ao. Induc ao sobre a denic ao de func ao recursiva primitiva.

E simples
mostrar que func oes iniciais s ao represent aveis. A func ao constante C
k
w
e representada
pelo termo m, a func ao sucessor S e representada por x+1, e a func ao de projec ao P
k
i
e representada por x
i
.
As func oes represent aveis s ao fechadas sob substituic ao e recurs ao primitiva. Indi-
caremos a prova para o fecho sob recurs ao primitiva.
Considere
_
f(x, 0) = g(x)
f(x, y + 1) = h(f(x, y), x, y)
g e representada por , h e representada por :
g(n) = m
_
(n, m) e
(n, y) y = m
224 CAP

ITULO 7. TEOREMA DE G

ODEL
h(p, n, q) = m
_
(p, n, q, m) e
(p, n, q, y) y = m
Armac ao: f e representada por (x, y, z), que est a imitando w Seq(comp(w) =
y + 1 ((w)
0
= g(x) i y((w)
i+1
= h((w)
i
, x, i) z = (w)
y
)
(x, y, z) := w Seq(comp(w) = y + 1 (x, (w)
0
)
i y(((w)
i
, x, i(w)
i+1
) z = (w)
y
)
Agora faca f(n, p) = m, ent ao
_

_
f(n, 0) = g(n) = a
0
f(n, 1) = h(f(n, 0), n, 0) = a
1
f(n, 2) = h(f(n, 1), n, 1) = a
2
.
.
.
f(n, p) = h(f(n, p 1), n, p 1) = a
p
= m
Ponha w = a
0
, . . . , a
p
); note que comp(w) = p + 1.
g(n) = f(n, 0) = a
0
(n, a
0
)
f(n, 1) = a
1
(a
0
, n, 0, a
1
)
.
.
.
f(n, p) = a
p
(a
p1
, n, p 1, a
p
)
Por conseguinte, temos comp(w) = p + 1 (n, a
0
) (a
0
, n, 0, a
1
) . . .
(a
p1
, n, p 1, a
p
) (w)
p
= m e portanto (n, p, m).
Agora temos que provar a segunda parte: (n, p, z) z = m. Provamos isso
por induc ao sobre p.
(1) p = 0. Observe que (n, 0, z) (n, z), e como representa g, obtemos
(n, z) z = m.
(2) p = q + 1. Hip otese da induc ao: (n, q, z) z = f(n, q)(= m).
(n, q + 1, z) := w Seq(comp(w) = q + 2 (n, (w)
0
)
i y(((w)
i
, n, i(w)
i+1
) z = (w)
q+1
)
Agora vemos que
(n, q + 1, z) u((n, q, u) (u, n, q, z)).
Usando a hip otese da induc ao obtemos
(n, q + 1, z) u(u = f(n, q) (u, n, q, z)).
E portanto (n, q + 1, z) (f(n, q), n, q, z).
Logo, pela propriedade de : (n, q + 1, z) z = f(n, q + 1).

Agora e mais um passo para mostrar que todas as func oes recursivas s ao repre-
sent aveis, pois vimos que todas as func oes recursivas podem ser obtidas por uma unica
minimizac ao a partir de um predicado recursivo primitivo.
Teorema 7.5.6 Todas as func oes recursivas s ao represent aveis.
Demonstrac ao. Mostramos que as func oes represent aveis s ao fechadas sob minimizac ao.
Como representabilidade para predicados e equivalente a representabilidade para func oes,
consideramos o caso f(x) = y(x, y) para um predicado P representado por , onde
xyP(x, y).
7.6. DERIVABILIDADE 225
Armac ao. (x, y) := (x, y) z < y(x, y) representa yP(x, y).
m = yP(n, y) P(n, m) P(n, 0) . . . P(n, m1)
(n, m) (n, 0) . . . (n, m1)
(n, m) z < m(n, z)
(n, m)
Agora, suponha que (n, y) seja dada, ent ao temos (n, y) z < y(n, z).
Isso imediatamente leva a m y. Reciprocamente, como (n, m), vemos que m y.
Logo, y = m. Esse argumento informal e facilmente formalizado como (n, y)
y = m.
Estabelecemos que conjuntos recursivos s ao represent aveis. Poder-se-ia talvez es-
perar que isso pode ser estendido a conjuntos recursivamente enumer aveis. Acontece
que isso n ao e o caso. Consideraremos os conjuntos RE agora.
Denic ao 7.5.7 R(x) e semi-represent avel em T se R(n) T (n) para uma
(x).
Teorema 7.5.8 R e semi-represent avel R e recursivamente enumer avel.
Corol ario 7.5.9 R e represent avel R e recursiva.
Exerccios
1. Mostre
x +y = 0 x = 0 y = 0
xy = 0 x = 0 y = 0
xy = 1 x = 1 y = 1
x
y
= 1 y = 0 x = 1
x
y
= 0 x = 0 y ,= 0
x +y = 1 (x = 0 y = 1) (x = 1 y = 0)
2. Mostre que todas as
1
-f ormulas s ao equivalentes a f ormulas prenex com quan-
ticadores existenciais precedendo os universais limitados. (Dica: Considere a
combinac ao x < ty(x, y), isso leva a uma seq u encia codicada z tal que
x < t(x, (z)
x
)). I.e., em PA f ormulas
1
s ao equivalentes a f ormulas
1
estritas.)
3. Mostre que se pode contrair quanticadores similares. E.g., xy(x, y)
z((z)
0
, (z)
1
).
7.6 Derivabilidade
Nesta sec ao denimos uma codicac ao para um predicado recursivamente enumer avel
Teo(x), que diz que x e um teorema. Devido ` a minimizac ao e aos limitantes su-
periores sobre quanticadores, todos os predicados e func oes denidos ao longo do
caminho s ao recursivos primitivos. Observe que estamos de volta ` a teoria da recurs ao,
isto e, ` a aritm etica informal.
226 CAP

ITULO 7. TEOREMA DE G

ODEL
Codicac ao da sintaxe
A func ao codica a sintaxe. Para o alfabeto, e dada por
0 S + exp = ( ) x
i
2 3 5 7 11 13 17 19 23 29 31 p
11+i
A seguir codicamos os termos.
f(t
1
, . . . , t
n
) := f, (, t
1
, . . . , t
n
, ))
Finalmente codicamos as f ormulas. Note que , , e um conjunto funcional-
mente completo, portanto os conectivos remanescentes podem ser denidos.
(t = s) := (, t, =, s, ))
( ) := (, , , , ))
( ) := (, , , , ))
(x
i
) := (, , x
i
, , ))
Const(x) e V ar(x) caracterizam os c odigos de constantes e vari aveis, respectiva-
mente:
Const(x) := x = 0
V ar(x) := i x(p
11+i
= x)
Fnc1(x) := x = S
Fnc2(x) := x = + x = x = exp
Term(x) x e um termo e Form(x) x e uma f ormula s ao predicados recursivos
primitivos conforme a vers ao recursiva primitiva do teorema da recurs ao. Note que
codicaremos conforme a notac ao padr ao de func ao, e.g. +(x, y) ao inv es de x +y.
Term(x) := Const(x) V ar(x)
(Seq(x) comp(x) = 4 Fnc1((x)
0
)
(x)
1
= ( Term((x)
2
) (x)
3
= ))
(Seq(x) comp(x) = 5 Fnc2((x)
0
)
(x)
1
= ( Term((x)
2
) Term((x)
3
) (x)
4
= ))
Form(x) :=
_

_
Seq(x) comp(x) = 5 (x)
0
= ( (x)
4
= )
( (Term((x)
1
)) (x)
2
= = Term((x)
3
))
(Form((x)
1
) (x)
2
= Form((x)
3
))
(Form((x)
1
) (x)
2
= Form((x)
3
))
((x)
1
= V ar((x)
2
) Form((x)
3
)))
Todos os tipos de noc oes sint aticas podem ser codicadas em predicados recursivos
primitivos, por exemplo, Livre(x, y) x e uma vari avel livre emy, e LivrePara(x, y, z)
x e livre para y em z.
Livre(x, y) :=
_

_
(V ar(x) Term(y) Const(y)
(V ar(y) x = y)
(Fnc1((y)
0
) Livre(x, (y)
2
))
(Fnc2((y)
0
(Livre(x, (y)
2
) Livre(x, (y)
3
))))
ou
(V ar(x) Form(y)
((y)
1
,= (Livre(x, (y)
1
) Livre(x, (y)
3
))))
((y)
1
= (x ,= (y)
2
Livre(x, (y)
4
))))
7.6. DERIVABILIDADE 227
LivrePara(x, y, z) :=
_

_
Term(x) V ar(y) Form(z)
(((z)
2
= =)
((z)
1
,= LivrePara(x, y(z)
1
) LivrePara(x, y, (z)
3
)
((z)
1
= Livre((z)
2
, x)
(Livre(y, z) (Livre((z)
2
, x) Livre(x, y, (z)
3
)))))
Tendo codicado esses predicados, podemos denir um operador de substituic ao Sub
tal que Sub(, x, t) = [t/x].
Sub(x, y, z) :=
_

_
x se Const(x)
x se V ar(x) x ,= y
z se V ar(x) x = y
(x
)
, (, Sub((x)
2
, y, z), )) se Term(x)
Fnc1((x)
0
)
(x)
0
, (, Sub((x)
2
, y, z), Sub((x)
3
, y, z), )) se Term(x)
Fnc2((x)
0
)
(, Sub((x)
1
, y, z), (x)
2
, Sub((x)
3
, y, z), )) se Form(x)
LivrePara(x, y, z)
(x)
0
,=
(, (x)
1
, Sub((x)
3
, y, z), )) se Form(x)
LivrePara(z, y, x)
(x)
0
=
caso contr ario
Claramente Sub e recursiva primitiva (recurs ao de curso de valor).
Codicac ao da derivabilidade
Nosso pr oximo passo e obter um predicado recursivo primitivo Der que diz que x e
deriv avel com hip oteses y
0
, . . . , y
comp(y)1
e conclus ao z. Antes disso damos uma
codicac ao de derivac oes.
derivac ao inicial
[] = 0, )
I
_

_
D
1

D
2

( )
_

_ = 0, ),
_
D
1

_
,
_
D
2

_
, ( ))
E
_

_
D
( )

_ = 1, ),
_
D
( )
_
, )
I
_

( )
_

_
= 0, ),
_
D

_
, ( ))
228 CAP

ITULO 7. TEOREMA DE G

ODEL
E
_

_
D
1

D
2
( )

_ = 1, ),
_
D
1

_
,
_
D
2
( )
_
, )
RAA
_

_
( )
D

_
= 1, ),
_
D

_
, )
I
_

_
D

(x)
_

_ = 0, ),
_
D

_
, (x))
E
_

_
D
(x)
[t/x]
_

_ = 1, ),
_
D
(x)
_
, [t/x])
Para Der precisamos de um dispositivo para cancelar hip oteses de uma derivac ao.
Consideramos uma seq u encia y de (c odigos de) hip oteses e sucessivamente remover
os itens u.
Cancela(u, y) :=
_
_
_
y se comp(y) = 0
Cancela(u, cauda(y)) se (y)
0
= u
(y)
0
, Cancela(u, cauda(y))) se (y)
0
,= u
Aqui cauda(y) = z (comp(y) > 0 x(y = x) z) (comp(y) = 0 z = 0).
Agora podemos codicar Der, onde Der(x, y, z) signica x e o c odigo de uma
derivac ao de uma f ormula com c odigo z de uma seq u encia codicada de hip oteses y.
7.6. DERIVABILIDADE 229
Na denic ao de Der, e denida como (0 = 1).
Der(x, y, z) := Form(z)
_
comp(y)1
i=0
Form((i)
v
)
((i < comp(y)(z = (y)
i
x = 0, z))
ou
(x
1
x
2
xy
1
y
2
xz
1
z
2
x y = y
1
y
2

Der(x
1
, y
1
, z
1
) Der(x
2
, y
2
, z
2
)
z = (, z, , z
2
, )) x = 0, ), x
1
, x
2
, z))
ou
(u xx
1
xz
1
xDer(x
1
, y, z
1
)
(z
1
= (, z, , u, )) (z
1
= (, u, , z, )))
x = 1, ), x
1
, z))
ou
(x
1
xy
1
xu xz
1
x(y = Cancela(u, y
1
)
y = y
1
) Der(x
1
, y
1
, z
1
) z = (, u, , z
1
, ))
x = 0, ), x
1
, z
1
))
ou
(x
1
x
2
xy
1
y
2
xz
1
z
2
x(y = y
1
y
2

Der(x
1
, y
1
, z
1
) Der(x
2
, y
2
, z
2
)
z
2
= (, z
1
, , )) x = 1, ), x
1
, x
2
, z)))
ou
(x
1
xz
1
xv x(Der(x
1
, y, z
1
) V ar(v)
_
comp(y)1
i=0
Livre(v, (y)
i
)) z = , v, (, z
1
, ))
x = 0, , x
1
, z
1
)))
ou
(t xv xx
1
xz
1
x(V ar(v) Term(t)
LivrePara(t, v, z
1
) z = Sub(z
1
, v, t)
Der(x
1
, y, , v, (, z
1
, )) x = 1, ), y, z))))
ou
(x
1
xy
1
xz
1
x(Der(x
1
, y
1
, ))
y = Cancela(z, , ), y
1
) x = 1, , x
1
, z
1
))))
Codicac ao da demonstrabilidade
Os axiomas da aritm etica de Peano s ao listados no incio da sec ao 7.4. Entretanto, para
o prop osito de se codicar derivabilidade temos que ser precisos; devemos incluir os
axiomas para identidade. Eles s ao os usuais (veja 2.6 e 2.10.2), incluindo os axiomas
de congru encia para as operac oes:
(x
1
= y
1
x
2
= y
2
) (S(x
1
) = S(y
1
) x
1
+x
2
= y
1
+y
2

x
1
x
2
= y
1
y
2
x
x2
1
= y
y2
1
)
Esses axiomas podem ser facilmente codicados e reunidos num predicado recur-
sivo Ax(x) x e um axioma. O predicado de demonstrabilidade Prova(x, z) x e
uma derivac ao de z a partir dos axiomas de PA segue imediatamente.
Prova(x, z) := y x(Der(x, y, z)
comp(y)1

i=0
Ax((y)
i
))
230 CAP

ITULO 7. TEOREMA DE G

ODEL
Finalmente, podemos denir Teo(x) x e um teorema. Teo e recursivamente enu-
mer avel.
Teo(z) := xProva(x, z)
Tendo ` a nossa disposic ao o predicado da demonstrabilidade, que e
0
1
, podemos
concluir a prova de semi-represent avel = RE (Teorema 7.4.9).
Demonstrac ao. Por conveni encia, suponha que R seja un aria, i.e. um conjunto, e re-
cursivamente enumer avel.
R e semi-represent avel por . R(n) (n) yProva ((n), y). Note
que (n) e uma func ao recursiva de n. Prova e recursivo primitivo, portanto
R e recursivamente entumer avel.
R e recursivamente enumer avel R(n) = xP(n, x) para um P recursivo
primitivo. P(n, m) (n, m) para algum . R(n) P(n, m) para algum
m (n, m) para algumm y(n, y). Por conseguinte, temos tamb em
que y(n, y) R(n). Portanto y(n, y) semi-representa R.

7.7 Incompletude
Teorema 7.7.1 (Teorema do ponto xo) Para cada f ormula (x) (com
V L() = x) existe uma sentenca tal que () .
Demonstrac ao. Vers ao popular: considere uma func ao de substituic ao simplicada
s(x, y) que e a velha func ao de substituic ao para uma vari avel xada: s(x, y) =
Sub(x, x
0
, y). Ent ao dena (x) := (s(x, x)). Seja m := (x), ent ao faca
:= (m). Note que (m) (s(m, m)) (s((x), m)) ((m))
().
Esse argumento funcionaria se houvesse uma func ao (ou termo) para s na lin-
guagem. Isso poderia ser feito estendendo-se a linguagem com uma quantidade su-
ciente de func oes (todas as func oes recursivas primitivas certamente bastar a). Agora
temos que usar f ormulas representantes.
Vers ao formal: suponha que (x, y, z) represente a funcc ao recursiva primitiva
s(x, y). Agora suponha que (x) := y((y) (x, x, y)), m = (x) e = (m).
Ent ao
(m) y((y) (m, m, y)) (7.1)
y((m, m, y) y = s(m, m)
y((m, m, y) y = (m)) (7.2)
Por l ogica (7.1) e (7.2) d ao y((y) y = (m)) portanto ((m))
().
Denic ao 7.7.2 (i) PA (ou qualquer outra teoria T da aritm etica) e chamada de
-completa se x(x) (n) para algum n N.
(ii) T e -consistente se n ao existe tal que ( x(x) e (n) para todo n)
para todo .
7.7. INCOMPLETUDE 231
Teorema 7.7.3 (Primeiro teorema da incompletude de G odel) Se PAfor -consistente
ent ao PA e incompleta.
Demonstrac ao. Considere o predicado Prova(x, y) representado pela f ormula Prova(x, y).
Seja Teo(x) := yProva(x, y). Aplique o teorema do ponto xo a Teo(x): existe
uma tal que Teo(). , a chamada sentenca de G odel, diz em PA: Eu
n ao sou demonstr avel.
Armac ao 1: Se ent ao PA e inconsistente.
Demonstrac ao. existe um n tal que Prova(, n), da Prova(, n)
yProva(, y) Prova() . Logo, PA e inconsistente.
Armac ao 2: Se ent ao PA e -inconsistente.
Demonstrac ao. Teo() xProva(, x). Suponha que PA
seja -consistente; como -consist encia implica consist encia, temos que , e, por
conseguinte, Prova(, n) para todo n. Logo, Prova(, n) para todo n.
Contradicc ao.

Observac oes. Na demonstrac ao acima zemos uso da representabilidade do predi-


cado de demonstrabilidade, que por sua vez dependeu da representabilidade de todas
as func oes e predicados recursivos.
Para a representabilidade de Prova(x, y), o conjunto de axiomas tem que ser re-
cursivamente enumer avel. Portanto o primeiro teorema da incompletude de G odel se
verica para todas as teorias recursivamente enumer aveis nas quais as func oes recur-
sivas s ao represent aveis. Assim, n ao se pode tornar PA completa adicionando-se a
sentenca de G odel, pois a teoria resultante seria novamente incompleta.
No modelo padr ao N ou ou e verdadeira. A denic ao nos habilita a determi-
nar qual delas. Note que os axiomas de PA s ao verdadeiros em N, portanto [=
Teo(). Suponha que N [= Prova(, n) para algum n Prova(, n)
para algum n Teo() N [= Teo(). Contradic ao. Logo, e
verdadeira em N. Isso e usualmente expresso como existe um enunciado verdadeiro da
aritm etica que n ao e demonstr avel.
Observac oes.

E geralmente aceito que PA e uma teoria verdadeira, ou seja, N e
um modelo de PA, e portanto as condic oes sobre o teorema de G odel parecem ser
sup eruos. Entretanto, o fato de que PA e uma teoria verdadeira e baseado num ar-
gumento sem antico. O renamento consiste em se considerar teorias arbitr arias, sem o
uso de sem antica.
O teorema da incompletude pode ser liberado da condic ao de -consist encia. In-
troduzimos para esse prop osito o predicado de Rosser:
Ros(x) := y(Prova(neg(x), y) z < yProva(x, z)),
comneg() = . Opredicado ap os o quanticador e representado por Prova(neg(x, y), y)
z < yProva(x, z). Uma aplicac ao do teorema do ponto xo produz um tal que
y(Prova(, y) z < yProva((, z)) (1)
232 CAP

ITULO 7. TEOREMA DE G

ODEL
Armac ao: PA e consistente , e , .
Demonstrac ao.
(i) Suponha que . Ent ao existe umn tal que Prova(, n), portanto Prova(, n)
(2)
De (1) e (2) segue que y < nProva(, y), i.e. Prova(, 0) . . .
Prova(, n 1). Note que Prova e
0
, da o seguinte se verica:
ou , portanto Prova(, 0) ou . . . ou Prova(, n 1).
Logo, Prova(, i) para algum i < n PA e inconsistente.
(ii) Suponha que . Ent ao y(Prova(, y) z < yProva(, z)).
Tamb em, Prova(, n) para algum n Prova(, n) para
algum n z < nProva(, z) (como acima) Prova(, k) para
algum k < n, portanto PA e inconsistente.

Vimos que verdade em N n ao necessariamente implica demontrabilidade em PA


(ou qualquer outra extens ao axiomatiz avel (recursivamente enumer avel)). Entretanto,
vimos que PA

E
0
1
-completa, portanto verdade e demonstrabilidade ainda coincidem
para enunciados simples.
Denic ao 7.7.4 Uma teoria T (na linguagem de PA) e chamada de
0
1
-correta se
T N [= para
0
1
-sentencas .
N ao entraremos nas quest oes intrigantes dos fundamentos ou da losoa da matem atica
e da l ogica. Aceitando o fato de que o modelo padr ao N e um modelo de PA, obtemos
consist encia, corretude e
0
1
-corretude de graca.

E uma velha tradic ao em teoria da
prova enfraquecer suposic oes tanto quanto possvel, de forma que faca sentido ver o
que se pode fazer sem quaisquer noc oes sem anticas. O leitor interessado e remetido ` a
literatura.
Agora apresentamos uma prova alternativa do teorema da incompletude. Aqui us-
amos o fato de que PA e
0
1
-correta.
Teorema 7.7.5 PA e incompleta.
Demonstrac ao. Considere umconjunto RE X que n ao e recursivo. Ele e semi-representado
por uma
0
1
-f ormula . Seja Y = n [ PA (n).
Pela
0
1
-completude obtemos n X PA (n). Como
0
1
-corretude implica
consist encia, obtemos tamb em PA (n) n / X, logo, Y X
c
. O predicado
de demonstrabilidade nos diz que Y e RE. Agora, X
c
n ao e RE, portanto existe um
n umero k com k (X Y )
c
. Para esse n umero k sabemos que PA , (k) e
tamb em PA , (k), pois PA (k) implicaria, pela
0
1
-corretude, que k X.
Como resultado, estabelecemos que (k) e verdadeira mas n ao demonstr avel em
PA, i.e. PA e incompleta.
Quase que imediatamente obtemos a indecidibilidade de PA.
Teorema 7.7.6 PA e indecidvel.
7.7. INCOMPLETUDE 233
Demonstrac ao. Considere o mesmo conjunto X = n [ PA (n) como acima.
Se PAfosse decidvel, o conjunto X seria recursivo. Logo, PA e indecidvel.
Note que obtemos o mesmo resultado para qualquer extens ao
0
1
-correta axioma-
tiz avel de PA. Para resultados mais fortes veja no livro de Smorynski Logical Number
Theory
que f com f(n) = (n) e recursiva primitiva.
Observac oes. A sentenca de G odel Eu n ao sou demonstr avel e a negac ao de
uma
0
1
-sentenca estrita (uma assim-chamada
0
1
-sentenca). Sua negac ao n ao pode ser
verdadeira (por que?). Portanto PA+ n ao e
0
1
-correta.
Agora apresentaremos uma outra abordagem ` a indecidibilidade da aritm etica, baseada
em conjuntos efetivamente insepar aveis.
Denic ao 7.7.7 Sejam e f ormulas existenciais: = x

e = x

. As
f ormulas de comparac ao de testemunhas para e s ao dadas por:
:= x(

(x) y < x

(x))
< := x(

(x) y x

(x)).
Lema 7.7.8 (Lema da Reduc ao Informal) Suponha que e sejam
0
1
estritas,
1
:=
e
1
:= < . Ent ao
(i) N [=
1

(ii) N [=
1

(iii) N [=
1

1
(iv) N [= (
1

1
).
Demonstrac ao. Imediata da denic ao.
Lema 7.7.9 (Lema da Reduc ao Formal) Sejam , ,
1
e
1
como no lema acima.
(i)
1

(ii)
1

(iii) N [=
1

1
(iv) N [=
1

1
(v) N [=
1

1
(vi) N [=
1

1
(vii) (
1

1
).
Demonstrac ao. (i)(iv) s ao conseq u encias diretas da denic ao e da
0
1
-completude.
(v) e (vi) s ao exerccios em deduc ao natural (use uv(u < v v u)); e (vii)
segue de (v) (ou (vi)).
Teorema 7.7.10 (Indecidibilidade de PA) A relac ao yProva(x, y) n ao e recursiva.
Vers ao popular: n ao e decidvel para PA.
Demonstrac ao. Considere dois conjuntos recursivamente enumer aveis efetivamente
insepar aveis A e B com f ormulas
0
1
-denidas estritas (x) e (x). Dena
1
(x) :=
(x) (x) e
1
(x) := (x) < (x).
234 CAP

ITULO 7. TEOREMA DE G

ODEL
ent ao n A N [= (n) (n)
N [=
1
(n)

1
(n)
e n B N [= (n) (n)
N [=
1
(n)

1
(n).
Seja

A = n [
1
(n),

B = n [
1
(n), ent ao A

A e B

B. PA e
consistente, portanto

A

B = .

A e recursivamente enumer avel, mas, em raz ao
da inseparatividade efetiva de A e B, n ao recursivo. Suponha que [ seja
recursivo, i.e. X = k [ Form(k) zProva(k, z) e recursivo. Considere f com
f(n) =
1
(n), ent ao n [ zProva(
1
(n), z) tamb em e recursivo, i.e.

A e um
separador recursivo de A e B. Contradic ao. Por conseguinte, X n ao e recursivo.
Da indecidibilidade de PA imediatamente obtemos uma vez mais o teorema da
incompletude:
Corol ario 7.7.11 PA e incompleta.
Demonstrac ao. (a) Se PA fosse completa, ent ao do teorema geral teorias completas
axiomatiz aveis s ao decidveis seguiria que PAera decidvel.
(b) Em raz ao de

A e

B serem ambos recursivamente enumer aveis, existe um n com
n /

A

B, i.e. , (n) e , (n).
Observac ao. Os resultados acima n ao s ao de forma alguma otimos; pode-se repre-
sentar as func oes recursivas em sistemas consideravelmente mais fracos, e da provar
sua incompletude. Existe um n umero de subsistemas de PA que s ao nitamente ax-
iomatiz aveis, como, por exemplo, o sistema Q de Raphael Robinson (cf. Smorynski,
Logical number theory, p. 368ff), que e incompleto e indecidvel. Usando esse fato
obt em-se facilmente:
Corol ario 7.7.12 (Teorema de Church) A l ogica de predicados e indecidvel.
Demonstrac ao. Sejam
1
, . . . ,
n
os axiomas de Q, ent ao
1
, . . . ,
n

(
1
. . .
n
) . Um m etodo de decis ao para a l ogica de predicados nos forneceria,
portanto, um m etodo para Q.
Observac oes.
1. Como HA e umsubsistema de PA, a sentenca de G odel e certamente indepen-
dente de HA. Portanto, n ao e umteorema de HA. Pois se HA ,
ent ao pela propriedade da disjunc ao para HA, teramos HA ou HA ,
o que e impossvel para a sentenca de G odel. Logo, temos umteorema especco
de PAque n ao e demonstr avel em HA.
2. Como HAtem a propriedade da exist encia, pode-se percorrer a primeira vers ao
da prova do teorema da incompletude, evitando-se o uso de -consist encia.
Exerccios
1. Mostre que f com f(n) = t(n) e recursiva primitiva.
2. Mostre que f com f(n) = (n) e recursiva primitiva.
3. Encontre o que signica para um como acima.

You might also like