Escolar Documentos
Profissional Documentos
Cultura Documentos
e
Sistemas Formais
1 Introdu»
c~
ao 1
2 No»c~
o es Preliminares 3
2.1 Conjuntos, Fun»c~o es e Rela»c~oes : : : : : : : : : : : : : : : 3
2.1.1 Conjuntos : : : : : : : : : : : : : : : : : : : : : : : 3
2.1.2 Fun»c~ oes : : : : : : : : : : : : : : : : : : : : : : : : 6
2.1.3 Rela»c~ oes : : : : : : : : : : : : : : : : : : : : : : : : 9
2.2 Indu»c~
ao ¯nita : : : : : : : : : : : : : : : : : : : : : : : : : 14
2.2.1 De¯ni»c~oes Indutivas : : : : : : : : : : : : : : : : : 15
2.3 Alfabetos e Linguagens : : : : : : : : : : : : : : : : : : : : 19
2.4 Objetos ¯nitos e espa»cos : : : : : : : : : : : : : : : : : : : 20
2.4.1 Sistemas de Representa»c~ao : : : : : : : : : : : : : 21
2.5 Conclus~ o es e Refer^encias : : : : : : : : : : : : : : : : : : : 24
2.6 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 25
3 Fun»c~
oes Recursivas 29
3.1 Fun»c~oes Recursivas Primitivas : : : : : : : : : : : : : : : : 30
3.1.1 Fun»c~ oes Iniciais : : : : : : : : : : : : : : : : : : : : 30
3.1.2 Composi»c~ao : : : : : : : : : : : : : : : : : : : : : : 34
3.1.3 Combina»c~a o : : : : : : : : : : : : : : : : : : : : : : 35
3.1.4 Expoentiza»c~ao : : : : : : : : : : : : : : : : : : : : 36
3.2 A linguagem b¶asica : : : : : : : : : : : : : : : : : : : : : : 40
3.3 Fun»c~oes aritm¶eticas : : : : : : : : : : : : : : : : : : : : : : 41
3.4 Manipula»c~ ao de tuplas : : : : : : : : : : : : : : : : : : : : 48
i
ii ¶INDICE
4 Linguagem de Programa» c~
ao Minimal 73
4.1 A linguagem LPM : : : : : : : : : : : : : : : : : : : : : : 73
4.2 Sem^ a ntica operacional de programas : : : : : : : : : : : : 76
4.3 Computabilidade de fun»c~oes : : : : : : : : : : : : : : : : : 80
4.3.1 Fun»c~ o es LP M ¡ fGOT Og¡comput¶aveis : : : : : : 82
4.3.2 Extens~ oes da linguagem LPM : : : : : : : : : : : : 84
4.3.3 Computabilidade em LPM ¡ fGOT Og : : : : : : 86
4.4 Estrutura de Dados : : : : : : : : : : : : : : : : : : : : : : 92
4.4.1 Vari¶ a veis indexadas : : : : : : : : : : : : : : : : : 96
4.4.2 Listas : : : : : : : : : : : : : : : : : : : : : : : : : 98
4.5 Conclus~ oes e Refer^ encias : : : : : : : : : : : : : : : : : : : 98
4.6 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 99
x2 A x pertence a A 3
AµB A est¶a contido em B 4
A¶B A cont¶em B 4
A½B A¶ e subconjunto pr¶oprio de B 4
}(A) conjunto pot^encia de A 5
A[B A uni~ ao B 5
A\B A interce»c~
ao Bs 5
A¡B diferen»ca entre A e B 5
A¹ complemento de A 5
dom(f) dom¶³nio da fun»c~ao f 6
img(f ) imagem da fun»c~a o f 6
# converg^encia de fun»c~a o 7
" diverg^encia de fun»c~a o 7
N conjunto dos n¶umeros naturais 7
< conjunto dos n¶umeros reais 7
f ¡1 fun»c~
ao inversa 7
f ±g composi»c~ao das fun»c~o es f e g 8,34
ÂA fun»c~
ao caracter¶³stica de A 8
#(A) cardinalidade de A 9
@0 cardinalidade enumer¶avel (alef 0) 9
< a;b > par ordenado 9
xn n-upla < x1 ; x2 ; ¢¢ ¢ ; xn > 9
A£B produto cartesiano de A e B 9
[x]R classe de equival^encia de x com respeito a R 11
x¹y x precede y ou x ¶e subcadeia de y 12,126,135
xÁy x estritamente precede y 12
¤ cadeia vazia 19
§¤ conjunto de cadeias do alfabeto § 20
v
vi Lista de S¶³mbolos
º fun»c~
ao de avalia»c~ao 21
W espa»co de tuplas 22
¶ fun»c~
ao identidade 31
z fun»c~
ao zero 31
¼ fun»c~
ao pro je»c~
ao 31
p¶ p
s fun»c~
ao sucessor 31
z p
componente at^ omica da identidade 31
p¼
componente at^ omica da zero 31
ps p
componente at^ omica da proje»c~ao 31
componente at^ omica da sucessor 31
£ combina»c~ao de fun»c~o es 35
# expoentiza»c~ao de fun»c~a o 38
j®j fun»c~
ao computada por ® 40,81,129
r
± fun»c~
ao delta 42
r ±
r
componente at^ omica de ± 43
a
f® fun»c~
ao acumulador de f 45
a
1 fun»c~
ao predecessor 47
fun»c~
ao subtra»c~ ao 48
1 »2 fun»c~
ao troca 49
¶r fun»c~
ao identidade de aridade r 49
¼r fun»c~
ao pro je»c~
a o de aridade r 49
< f; g > funcional 51
funcional 51
fir
f r
funcional 52
f!g funcional 53
caso funcional caso 54,156
inic fun»c~
ao cadeia inicial 56
fim fun»c~
ao s¶³mbolo ¯nal 56
compr fun»c~
ao comprimento da cadeia 57
_ fun»c~
ao concatena»c~a o 59
½ fun»c~
ao cadeia reversa 60
corte fun»c~
ao cadeia ¯nal 61
prims fun»c~
ao primeiro s¶³mbolo 61
segin fun»c~
ao segmento inicial 62
sefin fun»c~
ao segmento ¯nal 63
inicia fun»c~
ao segmento inicial 63
Lista de S¶³mbolos vii
A no»c~
a o de n¶umero natural tem uma origem emp¶³rica e ¶e uma das mais
antigas cria»c~
o es do esp¶³rito humano, atrav¶es da opera»c~ao de contar. Cer-
tas gravuras feitas em cavernas, compostas de tra»cos e pontos, parecem
indicar sinais de numera»c~ao. Os progressos feitos na arte de contar,
ou seja no que se denomina Aritm¶etica ¶e uma medida do progresso
na vida econ^ omica da humanidade. Segundo [MdSP45] os ind¶³genas
BAKUMU (talvez extintos) n~ao sabiam contar al¶em de 30 ou 40, pois
seus contratos comerciais ou de matrim^o nio n~ao ultrapassavam 30 ou 40
unidades. Certos costumes de registrar o resultado de contagem, que s~ao
provavelmente pr¶ e-hist¶o ricos, s~ao utilizados ainda hoje mesmo por pes-
soas educadas. Por exemplo ¶e usual se contar pontos em jogos usando-se
¯guras como as abaixo
@
@
para representar o resultado da contagem 1 a 5. Ou no t^enis com a
estranha contagem 15; 30; 40, cuja origem desconhecemos.
A evolu»c~
ao na representa»c~ao dos n¶umeros naturais desenvolveu, pou-
co a pouco, certas cren»cas de fundo m¶³stico, como na escola Pitag¶o rica:
\o n¶umero ¶e a alma das coisas" ou \o n¶umero tr^es representa a divin-
dade", etc. A partir do uso emp¶³rico da Aritm¶etica os homens desen-
volveram leis de c¶ a lculo sobre as representa»c~o es inventadas. H¶a pelo
menos 5:000 anos a humanidade sabe calcular com os n¶umeros natu-
rais. No Egito antigo e na Babil^o nia existiam calculadores pro¯ssionais,
chamados escribas pelos eg¶³pcios e log¶³sticos pelos gregos.
Depois dos eg¶³pcios e babil^o nios, foram os gregos que mais con-
tribu¶³ram para o desenvolvimento da Aritm¶etica. Euclides iniciou uma
ix
x Pref¶
acio
++ @@ ¡¡
AD-HOC
Resolutor
++
+
@@ ¡¡
Solu»
c~ao ¡¡ Solu»c ~
ao
@@ Formal
A ¯gura acima ilustra as abordagens direta, pelo uso de met¶ odos ad
hoc, ou seja pela aus^
encia de m¶ etodos e a indireta obtida pela utiliza»c~ao
de mecanismos desenvolvidos com o objetivo de resolver classes cada vez
mais abrangentes de problemas, aos quais damos o nome de resolutores.
Alguns destes resolutores foram delineados na antiguidade hist¶o rica,
sob a forma de algoritmos e seu uso faz parte dos curr¶³culos escolares
em todo o mundo. Aprendemos a resolver problemas aritm¶eticos como
adi»c~
ao, subtra»c~
ao, multiplica»c~ao, divis~ao e at¶e mesmo a extra»c~a o de
ra¶³zes, sem nunca nos perguntarmos o porqu^ e de tais m¶
e todos, com
a con¯an»ca que somente as crian»cas possuem. Nos tornamos adultos
xii Pref¶
acio
o es ¾ Programas
Fun»c~ - em
Recursivas LISP
6 6
I µ
Solu»c~
o es
Met¶
o dicas
ª R
? ?
M¶a quina Programas
de ¾ - em
Turing FORTRAN
Introdu»
c~
ao
1
2 Cap¶³tulo 1. Introdu»
c~ao
No»
c~
oes Preliminares
3
4 Cap¶³tulo 2. No»
c~oes Preliminares
De¯ni» c~
ao 2.1.2 (Conjunto pot^encia) Seja A um conjunto. O con-
junto de subconjuntos de A ¶
e chamado de conjunto das partes de A ou
encia de A, denotado por }(A) = fX j X µ Ag.
conjunto pot^
De¯ni»
c~ao 2.1.3 (Opera»
c~
o es sobre conjuntos)
Uni~
ao Sejam A e B conjuntos. A uni~ ao de A e B denotada por A [ B
e de¯nida por A [ B = f x j x 2 A ou x 2 Bg. Seja fA ig i2I uma
¶
fam¶³lia de conjuntos com ¶³ndice I . Ent~
ao a uni~
a o da fam¶³lia ¶
e
de¯nida por
[
Ai = fx j existe i 2 I tal q ue x 2 A ig
i2I
Se I = 1; 2; ¢ ¢ ¢ ; n escrevemos
i=n
[ n
[
Ai ou Ai
i=1 i=1
Interse»c~
ao Sejam A e B conjuntos. A interse»c~ a o de A e B denotada
por A \ B ¶ e de¯nida por A \ B = f x j x 2 A e x 2 Bg. Seja
fAi gi2I uma fam¶³lia de conjuntos com ¶³ndice I . Ent~
a o a inter-
se»c~
a o da fam¶³lia ¶
e de¯nida por
\
Ai = fx j para todo i 2 I x 2 Ai g
i2I
Se I = 1; 2; ¢ ¢ ¢ ; n escrevemos
i=n
\ n
\
Ai ou Ai
i=1 i=1
Lema 2.1.2 S~
a o v¶
a lidas as seguintes propriedades:
(p3) A µ B ) A [B = B
(p4) A µ B ) A \B = A
(p5) A µ B ) B¹ µ A ¹
(p6) A \ (B [ C ) = (A \ B) [ (A \ C)
(p7) A [ (B \ C ) = (A [ B) \ (A [ C)
(p8) A [ B = A¹ \ B¹
(p9) ¹
A\ B = A [ B ¹
Demonstra»c~
a o: Deixamos para o leitor. 2
2.1.2 Fun»c~
oes
Sejam A e B conjuntos quaisquer. Uma fun»c~a o f de A em B ¶e uma
regra que associa a certos elementos de A um u¶nico elemento de B. Esta
unicidade signi¯ca que se f associa a 2 A a b1 2 B e a b2 2 B ent~a o
b1 = b2 .
Se f ¶ e uma fun»c~a o de A em B usamos a nota»c~a o f : A ! B. O
conjunto de todas as fun»c~ oes de A em B ¶e denotado por B A, ou seja
A
B = ff jf : A ! Bg. Seja A um conjunto, ent~ao chamamos de
opera»c~ a o n-¶
aria uma fun»c~ao f : An ! A. O natural n ¶e a aridade da
fun»c~ µ
a o f . As vezes, para indicar a aridade n da fun»c~ao f, escrevemos
f (n) .
Se f : A ! B ent~ ao dizemos que A ¶e o conjunto de partida de f e
B o conjunto de chegada de f. O subconjunto de A cujos elementos s~a o
associados a elementos de B ¶ e chamado de dom¶³nio de f, que denotamos
por dom(f). O subconjunto de B, aos quais aqueles elementos de A
foram associados, ¶ e chamado de imagem ou contradom¶³nio de f, que
denotamos por img(f). Denotamos o elemento de B associado a um
elemento a 2 A por f (a).
ar
X X rf (b)
X X » »:
» »
c r » » » X» X X X - rf(c)
X X »
X zX rf (a)
b r » » »
»
1. f ¶
e uma fun»c~
a o total de A em B se e somente se dom(f) = A.
2. se x 2 dom(f) ent~ a o f(x) # (f converge em x); se x 2 A¡ dom(f)
a o f (x) " (f diverge em x).
ent~
3. f ¶e uma sobreje»c ~
ao, ou que f ¶
e uma fun»c~
a o de A sobre B, se e
somente se img(f) = B.
4. f ¶e uma inje»c~
a o ou injetiva de A em B se e somente se para todo
x; y 2 dom(f ) se f(x) = f (y) ent~ao x = y.
5. f ¶
e uma bije»c~
a o se e somente se f ¶e uma inje»c~
ao e uma sobreje»c~
ao.
Fun»
c~ o es f : N ! N :
oes no discreto Por exemplo fun»c~
1. f (x) = x + 1 - total
2. f (x) = 2:x - total
3. f (x) = x=3 - parcial pois dom(f ) = f0; 3; 6; 9;¢ ¢ ¢g
Fun»
c~ oes f : < ! <, onde < ¶
oes no cont¶³nuo Por exemplo fun»c~ e o
conjunto dos reais.
De¯ni» c~
ao 2.1.6 Sejam as fun»c~ o es f : A ! B e g : B ! C . A com-
a o de f e g, g ±f , ¶e a fun»c~
posi»c~ ao de A em C tal que g ± f(x) = g(f (x)).
Fun»c~
o es caracter¶³sticas de um conjunto A s~
ao, em geral, denotadas por
ÂA.
2. Se A n~
a o for vazio, retira-se um elemento de A e aumenta-se o valor
da contagem por 1;
Quando este processo pode ser representado por uma fun»c~ao sobre-
jetora h : N ! A, onde h associa a cada n¶umero natural um elemento
de A, ent~ a o diz-se que A ¶
e cont¶a vel, caso contr¶a rio ¶e n~a o cont¶a vel.
Se o processo de contagem termina, ou seja, se existe uma bije»c~a o
2.1. Conjuntos, Fun»
c~
o es e Rela»
c~oes 9
2.1.3 Rela»c~
oes
FreqÄuentemente, usamos a no»c~a o de rela»c~oes entre duas ou mais coisas.
Por exemplo, Caetano Veloso se relaciona a Maria Bet^a nia como irm~a o;
ou, a rela»c~
a o de \estar entre" pode ser veri¯cada entre tr^es objetos quais-
quer do espa»co f¶³sico. Informalmente exigimos que exista uma conex~ao
entre as coisas que se relacionam. Esta id¶eia vaga de conex~ao ¶e incorpo-
rada formalmente pelo conceito de par ordenado. Para n¶o s, fundamen-
talmente, um par ordenado < a; b > possui a seguinte propriedade1:
A no»c~
ao de par ordenado ¶e extendida pela no»c~ao de n-tupla ordenada,
denotada por < a1 ; a2 ;¢ ¢ ¢ ; an > com a propriedade:
De¯ni»c~
ao 2.1.8 (Produto Cartesiano) Sejam A e B conjuntos. De-
¯nimos o produto cartesiano 2 de A e B, denotado por A£ B como sendo
1
Esta propriedade ¶e derivada da de¯ni»c~ a o formal de par ordenado < a; b >=
ffag; fa; bgg, veja [Sup60].
2
O nome cartesiano ¶ e uma homenagem a Ren¶ e Descartes, que historicamente repre-
sentou fun»c~o es utilizando eixos ortogonais, o eixo horizontal representando o dom¶³nio
da fun»c~
a o e o vertical o contradom¶³nio. Assim qualquer regi~ a o destes planos de coor-
denadas ¶e uma rela»c~ a o, incluindo as fun»c~
o es.
10 Cap¶³tulo 2. No»
c~oes Preliminares
B6
r
¡µ b @
¡ @
¡r @R- r - re
a@ ¡µ d
@ ¡
@R r
¡
c
-
A
(i) (ii)
O natural n ¶
e a aridade da rela»c~ao R.
De¯ni» c~
ao 2.1.9 (Composi» c~
ao) Sejam A e B conjuntos, R uma rela-
ao em A £ B e S uma rela»c~
»c~ a o em B £ C . Ent~ ao R ± S
ao, a composi»c~
a o em A £ C de¯nida por
e uma rela»c~
¶
Rela»
c~
oes de Equival^
encia e Congru^encia
De¯ni»
c~
ao 2.1.10 Seja R uma rela»c~
a o em um conjunto A. R ¶
e:
2.1. Conjuntos, Fun»
c~
o es e Rela»
c~oes 11
De¯ni»
c~ao 2.1.11 Seja R uma rela»c~ ao em um conjunto A. Dizemos que
R¶
e uma rela»c~
a o de equival^
encia se R ¶e re°exiva, sim¶
etrica e transitiva.
Exemplo 2.1.3
² A rela»c~
ao = ¶
e o caso ¶
obvio de rela»c~
a o de equival^
encia.
De¯ni»c~
ao 2.1.12 Seja R uma rela»c~
a o de equival^
encia em um conjunto
A e x 2 A. De¯nimos a classe de equival^ encia de x com respeito a R
por
[x] R = fy 2 Aj < x; y >2 Rg
.
2. [x]R \ [y]R 6
= ; se e somente se [x]R = [y]R .
S
3. x2A [x]R =A
Demonstra»c~
ao: Deixamos para o leitor. 2
12 Cap¶³tulo 2. No»
c~oes Preliminares
r
x
¢ r
yr
[y]R r fi ¢
H Hj ®¢ ¢ u R
[x]
fiHHj r
v H HHj Q¢® Q A
Qs r
[f (x; y)]R
De¯ni» c~
ao 2.1.13 (Parti» ao) Seja A um conjunto e fAig i2I uma fa-
c~
m¶³lia de subconjuntos de A. Dizemos que fAi gi2I ¶
e uma parti»c~
a o de A
se e somente se:
[
Ai = A e para todo i; j 2 I e i 6
= j Ai \ Aj = ;
i2I
De¯ni» c~
ao 2.1.14 Seja A um conjunto, R uma rela»c~ a o de equival^
encia
2
em A e f : A ! A, dizemos que R ¶e uma rela»c~ ao de congru^encia com
encia) se e somente se, para todo x; y;u;v 2 A,
respeito a f (f-congru^
se < x; u >;< y; v >2 R ent~
a o < f(x; y); f (u; v) >2 R. Ver ¯gura 2.2.
Rela»
c~
oes de ordem
De¯ni»c~
ao 2.1.15 Dizemos que uma rela»c~ ao R em um conjunto A ¶e
uma rela»c~
a o de ordem parcial em A, ou simplesmente uma ordem em
2.1. Conjuntos, Fun»
c~
o es e Rela»
c~oes 13
4r r r r
10 11 12
@I 6 ¡µ
r
6 6r @ ¡r
¡µ I@
r
6 5r ¡r @ r r
6
6 ¡µ I@ 6 6
rr @ rr r r
6
¡
6 @I ¡µ @I ¡µ ¡µ @I6
r @ r
¡ @ r¡ r
¡ r@ r
1 2 3 7 8 9
Figura 2.3: Exemplos de ordem
1. · ¶
e a mais conhecida das ordens parciais e ¶
e total.
De¯ni» c~
ao 2.1.16 Uma estrutura de ordem ou simplesmente uma or-
dem ¶e um par < A; ¹>, onde A ¶ e um conjunto e ¹ uma rela»c~
ao de
ordem parcial em A.
De¯ni»
c~ao 2.1.17 Seja < A; ¹> uma ordem e X µ A. Dizemos que
6. a 2 X ¶
e m¶³nimo em X se e somente se para todo x 2 X, a ¹ x;
na ¯gura 2.3 1; 2 e 3 s~
a o m¶³nimos.
8. a 2 X ¶
e m¶aximo em X se e somente se para todo x 2 X, x ¹ a;
na ¯gura 2.3 4; 5 e 6 s~
a o m¶
a ximos.
2.2 Indu»
c~ao ¯nita
As propriedades principais do conjunto dos n¶umeros naturais s~a o:
Princ¶³pio da indu» c~
ao ¯nita Seja P uma propriedade de n¶ umeros
naturais. Se 0 tem a propriedade P , e quando n tem a propriedade P ,
n+1 tamb¶ em tem a propriedade P , ent~
a o todo natural tem a propriedade
P.
O princ¶³pio da indu»c~
ao ¶
e usado para demonstrar asser»c~oes, digamos
P, sobre n¶umeros naturais, e o procedimento de demonstra»c~ao tem os
seguintes passos:
(d) Conclus~a o da indu»c~ao: de (a), (b) e (c) concluir que todo natural
n satisfaz a asser»c~a o P.
k : (k+1)
Exemplo 2.2.1 Vamos provar que 0 + 1 + 2 + 3 + ¢ ¢ ¢ + k = 2 .
0:(0+1)
BI Se k = 0 temos 0 = 2
n:(n+1)
a lido para k = n, ou seja 0 + 1 + ¢ ¢ ¢ + n =
HI Suponha v¶ 2
PI Para k = n + 1, temos
n : (n +1)
0 + 1 + 2 + ¢ ¢ ¢ + n + (n + 1) = 2 + (n + 1) por HI
n : (n +1)
= 2 + 2 : (n+1)
2
(n+1) :(n+2)
= 2
(n+1) :((n+1)+1)
= 2
CI A propriedade ¶
e v¶
a lida.
2.2.1 De¯ni»c~
oes Indutivas
O princ¶³pio da indu»c~ao ¯nita ¶e utilizado nos n¶umeros naturais porque
este conjunto ¶e indutivo. Observe que existe um elemento inicial 0 e que,
todos os outros elementos s~a o gerados a partir do inicial pela aplica»c~ao
da fun»c~
ao sucessor. Este ¶e um caso particular de conjunto indutivo. A
pr¶
oxima de¯ni»c~ a o generaliza esta no»c~a o, para incluir aqueles conjuntos
que incluam um conjunto de elementos iniciais (possivelmente in¯nito),
e possuam um conjunto de fun»c~oes geradoras (possivelmente in¯nito).
Os exemplos a seguir motivam a de¯ni»c~a o.
f:C !C
f(2x) = 2x3
f(3x) = 3x2
16 Cap¶³tulo 2. No»
c~oes Preliminares
g : C2 ! C
g(x; y) = x3y
De¯nimos o conjunto O como:
1. A = f2; 3g µ O;
2. Se x 2 O ent~
a o f (x) 2 O;
3. Se x; y 2 O ent~
ao g(x; y) 2 O;
4. Os ¶
unicos elementos de O s~
ao os objetos satisfazendo os ¶³tens 1,
2 e 3 acima.
¶ f¶
E a cil veri¯car que 23; 32 s~
a o elementos de O, por¶
em 22 n~
ao ¶e.
1. 0 ¶e um n¶
umero natural;
2. Se a ¶
e um n¶
umero natural ent~
ao o sucessor de a ¶e um n¶
umero
natural.
3. Os ¶unicos n¶
umeros naturais s~
a o os objetos satisfazendo os ¶³tens 1
e 2 acima
De¯ni»
c~
ao 2.2.1
Conjunto Indutivo Sejam D e A ½ D conjuntos, e F um conjunto
oes f : Dk ! D, k > 0. Dizemos que um conjunto B ¶
de fun»c~ e
indutivo em A, se e somente:
2.2. Indu»
c~ao ¯nita 17
1. A µ B;
2. Se a1 ; a2; ¢ ¢ ¢ ;ak 2 B ent~
a o f (a1 ; a2 ; ¢ ¢¢ ; ak ) 2 B para toda
f 2 F;
1. B 0 = A
(d) Conclus~
ao da indu»c~a o: de (a), (b) e (c) concluir que todo elemento
do conjunto satisfaz a asser»c~ao P .
f ! : C2 ! C
f !(x; y) = (x ! y)
f: : C ! C
f:(x) = :x
1. A = fa; bg µ O;
2. Se x; y 2 O ent~
ao f! (x; y) 2 O;
3. Se x 2 O ent~
a o f: (x) 2 O;
4. Os ¶
unicos elementos de O s~
ao os objetos satisfazendo os ¶³tens 1,
2 e 3 acima.
Ent~
a o, em todo elemento de O, o n¶
umero de s¶³mbolos ( ¶
e igual ao
n¶
umero de s¶³mbolos ).
(a) E¶ v¶
a lido para o conjunto inicial A = fa; bg, pois n~
ao cont^
em ( e ).
(d) Ent~
a o todo elemento de O satisfaz µ
a propriedade.
2.3. Alfabetos e Linguagens 19
1. As letras devem possuir uma estrutura espacial que facilite sua re-
ao e reconhecimento. Por exemplo: 2; 4; j;¤. Como contra-
produ»c~
exemplo o leitor pode imaginar ¯guras complicadas como rubricas
pessoais, tais como
3. Para a constru»c~
ao de alguns sistemas, existe a necessidade de um
suprimento in¯nito de letras, assim deve-se exigir que elas possam
ser produzidas de modo uniforme.
Crit¶
erio 1: As ¶unicas palavras s~a o as express~oes onde n~ao apare»cam
mais que duas ocorr^encias sucessivas de \*" e n~a o menos que duas
de \j" em seqÄ
u^encia.
De¯ni»
c~
ao 2.3.1 (Linguagem) Seja § um alfabeto. Ent~
ao:
L = f2 ; 2 4; 2 ¯; 4g
e uma linguagem em §.
¶
1. A classe de n¶
umeros naturais;
a o espa»cos ent~a o A £ B;
2. Se A e B s~
3. A classe dos n¶
umeros naturais divis¶³vel por 5.
De¯ni»
c~
ao 2.4.1 Um sistema de representa»c~
ao n¡¶
adico ¶
e constitu¶³do
de:
§n : um alfabeto ordenado com n s¶³mbolos
W : conjunto de todas as palavras de §n
Wi : conjunto de todas as i-tuplas de W
W0 : conjunto contendo apenas a 0-tupla < >
ºn : fun»c~
ao de avalia»c~ao
O conjunto de todas as o es, W ¶
tuplas, de todas as dimens~ e de¯nido
como:
W1 = W1 = W
Wi+1 = W i+1 = Wi £ W
W = [1
i=0 Wi
4
a cadeia 1024 est¶
a em negrito para acentuar a diferen»ca com o valor abstrato
1024
2.4. Objetos ¯nitos e espa»
cos 23
A fun»c~
ao ºn ¶e de¯nida como:
FreqÄ
uentemente usamos a nota»c~a o W em vez de Wn , quando ¯car
claro que estamos trabalhando com um alfabeto ¯xado § em que o
n¶
umero de letras n~ ao ¶e importante. Os sistemas n¡¶a dicos foram es-
colhidos como o sistema de representa»c~a o num¶erico para os espa»cos W
pelas seguintes raz~
oes:
1. A fun»c~
ao º ¶
e uma bije»c~ao.
as cole»c~
oes com cinco objetos t^em 5 como cardinal, e no plano simb¶o lico
as cadeias f5 ; 05 ; 005 ; ¢¢ ¢ g t^em valor 5.
¡
¡ rkW1 W ¡ ¡ Plano Simb¶ o lico
¡ ¡
µ¡ C ºn (valor)
CWrk
¡ C
¡ ¡ N ¡¡ Plano Conceitual
agente - ¡
¡ ¡
@ ¢̧ AK ] (cardinalidade)
@ ¢ A
r
@R
¡ ¢ r ob1 rob
¢
¡ 2A
k ¡ ¡ Plano Real
ob
¡ ¡
Por exemplo, sejam as cadeias 12 e 21 cujos valores s~ao 4 e 5, respec-
tivamente num sistema 2¡¶ adico em §2 = f1; 2g:
² a opera»c~
ao aritm¶
etica 12 + 21 = 121 seria mais confortavelmente
calculada, por raz~
oes de aculturamento, no sistema decimal. Ope-
rar¶³amos 4+ 5 = 9 e depois converter¶³amos para sua representa»c~a o
121;
² a opera»c~
a o de concatena»c~ao de 12 com 21 ¶e mais facilmente re-
alizada simbolicamente, gerando 1221. Mais tarde veremos que
concatena»c~a o tamb¶
em ¶
e uma opera»c~ao aritm¶etica.
2.5 Conclus~
o es e Refer^
encias
Neste cap¶³tulo ¯zemos uma breve revis~ao dos pre-requisitos de Matem¶a-
tica Discreta necess¶arios para o estudo de computabilidade. Insistimos
que o leitor deva estar bastante familiarizado com este material antes de
prosseguir.
O material apresentado pode ser encontrado em in¶umeros textos de
Teoria dos Conjuntos. Dentre os cl¶a ssicos encontram-se [Sto61], [Mir92],
¶
[Hal70] e [Sup60]. Para maior apronfundamento em Algebra Universal,
[Gra68] e [Coh65] s~a o textos com um tratamento extremamente preciso
e extensivo. Para um apanhado geral e objetivo da base matem¶atica
necess¶aria para um curso de l¶ogica computacional, o leitor deve fazer
refer^
encia ao segundo cap¶³tulo de [Gal87]. Para um curso completo de
Estruturas Discretas recomendamos fortemente o texto [PY73]. Alguns
2.6. Exerc¶³cios 25
2.6 Exerc¶³cios
1. Demonstre as propriedades do lema 2.1.1.
9. Sejam < A; ¹> e < B;¹ 0 > duas ordens parciais. Uma fun»c~ao
f :A !B ¶ e monot^onica se, para todo a;b 2 A, se a ¹ b ent~ao
0
f (a) ¹ f (b). Mostre que a composi»c~a o de fun»c~oes monot^onicas ¶e
monot^ onica. Mostre que se f ¶e monot^onica e m ¶e o m¶³nimo de um
subconjunto S de A, ent~a o f(m) ¶e o m¶³nimo de f (x); x 2 S.
26 Cap¶³tulo 2. No»
c~oes Preliminares
Evid^
encias para a Tese de
Church
27
Cap¶³tulo 3
Fun»
c~oes Recursivas
29
30 Cap¶³tulo 3. Fun»
c~oes Recursivas
3.1 Fun»
c~
oes Recursivas Primitivas
3.1.1 Fun»c~
oes Iniciais
As fun»c~
o es iniciais apresentadas nesta se»c~ao s~ao formalismos que repre-
sentam objetos ¯nitos e realiz¶aveis1 .
1
S~
ao nomes de processadores elementares, de um ponto de vista apenas conceitual ¶ e
que s~
ao fun»c~
o es, e portanto abstra»c~
o es. A id¶
eia ¶
e que tais processadores elementares
3.1. Fun»
c~oes Recursivas Primitivas 31
De¯ni» c~
ao 3.1.1 Uma fun»c~ a o f : Wn ¡! Wm ¶
e inicial se e somente
se f for uma das fun»c~
oes abaixo:
x- ¶ - x z - 0
Identidade Zero
x - ¼ x- s - y; º n(y) = x + 1
Pro je»c~
ao Sucessor
As fun»c~
oes iniciais s~ao representadas pelas seguintes componentes
at^
omicas:
q¶ q qs q
¶ ¢¢ ¢ s ¢ ¢¢
z q q¼
z ¢¢¢ ¼ ¢¢¢
¶
W2
AU ¢q q
W1 q
..
Y s .
z6 ¼? Wi
W0 ..
.
Wn
p¶ p z pps pp¼
rompida ¶ e a regi~
a o que n~ao pode ser acessada.
A id¶ e que f
eia ¶ ; ; ; g ¶e o conjunto de componentes
b¶asicas at^o micas para a constru»c~a o de m¶aquinas mais complexas. Estas
componentes s~ ao fornecidas como caixas pretas obedecendo µas especi-
nas z p
registros criados anteriormente. Assim, segundo esta interpreta»c~ao, ape-
tem utilidade quando considerada isoladamente.
Se desejarmos criar espa»cos e transform¶a-los devemos buscar racks
que permitam juntar tais componentes at^omicas em organismos estrutu-
rados. Se considerarmos juntar componentes e organismos j¶a preparados
em s¶erie, podemos obter componentes moleculares com estrutura linear.
Assim podemos ter estruturas como abaixo:
z q
qs q-
1 ¢¢¢
z q
qs qq s q-
2 ¢¢¢
z q
qs q¢ ¢ ¢ q s q -
n ¢ ¢¢
| {z }
n
3.1. Fun»
c~oes Recursivas Primitivas 33
q
qs q¢¢¢ q s q -
n q z
para representar | {z }
n
poss¶³veis s~
a o redundantes por exemplo
- qs q
q¶ -q
z -q z q
- - qs q
-
-q qs -q qs -q
-
z -
, e
z q
-
z q
qs q-
n1 q
-
n2 q
-
n3 q
-
As fun»c~
o es iniciais, quanto ao conjunto de partida e imagem, s~ao de
tr^es tipos:
1. z de¯nida de W0 em W1;
2. ¼ de¯nida de W1 em W0;
3. s e ¶ de¯nidas de W0 em W0
3.1.2 Composi»c~
ao
De¯ni»
c~
ao 3.1.2 Sejam as fun»c~ o es f : Wr ¡! Ws e g : Ws ¡! Wt .
A composi»c~ a o g ± f : Wr ¡! Wt de¯nida por:
a o de f e g ¶e a fun»c~
g ± f(xr) = g(f(xr))
3.1.3 Combina»c~
ao
De¯ni»c~ao 3.1.3 Sejam as fun»c~ o es f : Wr ! Ws e g : Wt ! Wu. A
combina»c~
a o de f com g ¶ ao f £ g : Wr+t ! Ws+u, de¯nida por:
e a fun»c~
xr - f - f (xr )
¢¢̧ A
¢ A
xr - AU -
yt
- £ ¢̧
f £ g(xr ; yt )
A ¢
AAU ¢
yt
- g - g(yt )
¤¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¡
££
¢£
¢£
¢£
¢£
¢£
¢£
¢£
¢£
¢¢
¤¤
¡¤
¡¡ ¤¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¡
££
¢£
¢¢ ££
¢£
¢£
¢£
¢£
¢£
¢¢
¤¤
¡¤
¡¤
¡¤
¡¡ ¤¤
¡¤
¡¤
¡¤
¡¡
££
¢£
¢£
¢£
¢¢ ££
¢£
¢£
¢£
¢¢
¤¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¡ ¤¤
¡¤
¡¡
££
¢£
¢£
¢£
¢£
¢£
¢¢ ££
¢£
¢¢
¶
Figura 3.2: Abaco
3.1.4 Expoentiza»c~
ao
Vimos que todos os pontos do espa»co W podem ser realizados (depen-
dendo de interpreta»c~
a o) no plano real por objetos compostos pelas com-
ponentes at^
o micos
z q qs q
e
molecular z p s p ¢ ¢ ps }p
modo geral uma palavra de W1 de valor n corresponde ao componente
| ¢{z .
n
Note que n~ a o existe circularidade nesta representa»c~a o, pois o n ¶e uti-
lizado como recurso metalingu¶³stico para explicar a representa»c~a o. As-
sim temos representa»c~ o es ¯nit¶arias para objetos reais, seja atrav¶es da
linguagem de representa»c~ a o num¶erica, seja como componente molecu-
lar. Esta representa»c~ao nos lembra as linhas de um ¶a baco, como mostra
Esta substitui»c~
a o corresponderia a reaplicar a fun»c~a o f a x. Para se obter
z ppor p¶ p
a fun»c~
a o que seria aplicada a uma entrada qualquer x basta substituir
, obtendo-se assim a componente molecular
entrada for z p
a representa»c~ao do n¶ umero de vezes que Pf deve ser reaplicado. Se a
ent~
a o a chave em a ¶e ligada na a posi»c~ao b; se a entrada
for diferente de 0 ent~ ao o controle liga a chave para a posi»c~ao c e em
seguida retorna a chave para a posi»c~a o d aguardando a pr¶o xima entrada
at^omica. Isto ¶ e como ligar a chave cada vez que passa uma conta do
a baco para a direita.
¶
- q¶ q -
b r r
6 d
- ¡r -r
¡µ
Pf - ? -
a6 c
¾ ?
1 - Controle
q
r
Pf rq
r +q
1¢¢¢ ¢ ¢}¢ r q
| {z
q
6
-
38 Cap¶³tulo 3. Fun»
c~oes Recursivas
q
r
Pf rq
¢| ¢ ¢ {z ¢ ¢¢}
q
6
-
q
r
Pf rq
De¯ni» c~
ao 3.1.4 (Expoentiza» c~ a o f : Wr ¡! Wr . A
a o) Seja a fun»c~
expoentiza»c~
a o de f ¶ ao f # : Wr +1 ¡! Wr, de¯nida por:
e a fun»c~
f #(x r; 0) = xr
f #(x r; y + 1) = f(f # (xr ; y))
xr ¢ ¢ ¢ f ¢¢ ¢
-
| {z } - f # (x ; y)
q
- 6
r
y -
De¯ni»
c~ao 3.1.5 (Fun»
c~
o es recursivas primitivas)
1. Dizemos que uma fun»c~ ao f : W ! W ¶ e recursiva primitiva se
existe uma seqÄu^ oes em W W tal que f = f n
encia f1 ; ¢¢ ¢ ; fn de fun»c~
e para todo i; 1 · i < n fi ¶e uma fun»c~ ao inicial ou f i satisfaz um
dos itens abaixo:
(I ) fi = fj ± fk 1 · j;k < i
(I I ) fi = fj £ fk 1 · j;k < i
(I I I) fi = (fj )# 1 ·j <i
3.2 A linguagem b¶
asica
Nesta se»c~ a o introduzimos uma linguagem de programa»c~ao que chama-
mos de linguagem b¶ asica-r ou LB ¡ r. Esta linguagem ¶e naturalmente
obtida ao considerarem-se as express~o es formadas a partir das fun»c~o es
iniciais ¶; ¼;zz ; s e os esquemas de composi»c~a o ±, combina»c~a o £, expoen-
a o #. O esquema de repeti»c~a o r ¶e de¯nido na se»c~ao 3.8 e estende
tiza»c~
a linguagem posteriormente.
e outras condi»c~
o es que n~a o formulamos gramaticalmente, por exemplo
s ± ¼ satisfaz a especi¯ca»c~
ao dada acima para express~ a o LB ¡ r, mas
n~
ao ¶e um programa em LB ¡ r, tendo em vista que s : W1 ! W1
e ¼ : W1 ! W0 . Tais restri»c~ o es s~
a o de natureza sem^antica e sempre
dizem respeito µa composi»c~a o de fun»c~
oes.
Cada express~
ao LB¡r est¶a associada a uma fun»c~a o, como ¶e de¯nido
a seguir.
De¯ni»c~
ao 3.2.2 Seja ® uma express~ ao LB ¡ r, ent~ a o a fun»c~
ao com-
putada por ® denotada por j®j ¶
e de¯nida da seguinte maneira:
1. Se ® ´ ¶ ent~
a o j®j(x) = x;
2. Se ® ´ z ent~
a o j®j(<>) = 0;
3. Se ® ´ ¼ ent~
a o j®j(x) =<>;
4. Se ® ´ s ent~
ao j®j(x) = x + 1;
j®j(xr ) = j¯j(j°j(xr ))
3.3. Fun»
c~oes aritm¶
eticas 41
7. Se ® ´ ¯ #, ¯ 2 WrWr ent~
ao
j®j(xr; 0) = xr
j®j(xr; y + 1) = j¯j(j®j(xr ;y))
Nas se»c~
oes a seguir implementamos nesta linguagem uma s¶erie de
fun»c~
oes mais complexas, todas elas recursivas primitivas, j¶a que esta
linguagem s¶ o implementa fun»c~o es recursivas primitivas. Seguimos o
seguinte m¶etodo:
3.3 Fun»
c~
o es aritm¶
eticas
A seguir constru¶³mos um conjunto de fun»c~oes aritm¶eticas baseadas na
linguagem LB ¡ r. Fica evidente a di¯culdade de compor e combinar
fun»c~
oes de¯nidas e tomando valores em espa»cos diversos. Por exemplo,
seja f;g; h : W1 ! W1 . Para computar f ± h e g ± h gostar¶³amos de
computar (f £ g) ± h, por¶em h s¶o tem uma sa¶³da. A fun»c~a o ± abaixo
resolve este problema.
42 Cap¶³tulo 3. Fun»
c~oes Recursivas
De¯ni»
c~ ao ± : W1 ! W2 como:
ao 3.3.1 De¯nimos a fun»c~
r
¶
© ©* W2
¢ ©rq
©±
AU q q
© ..
W1 Y s .
z6 ¼ ? Wi
W0 ..
.
Wn
1. Temos que ± = (s £ s) # ± (z
z £ z £ ¶), que provamos por indu»c~
ao.
f1 ¢¢ ¢ z ¢ ¢ ¢ (inicial)
f2 ¢¢ ¢ z£z ¢ ¢ ¢ (f1 £ f 1)
f3 ¢¢ ¢ ¶ ¢ ¢ ¢ (inicial)
f4 ¢¢ ¢ (zz £ z) £ ¶ ¢ ¢ ¢ (f2 £ f 3)
f5 ¢¢ ¢ s ¢ ¢ ¢ (inicial)
f6 ¢¢ ¢ s£s ¢ ¢ ¢ (f5 £ f 5)
f7 ¢¢ ¢ (s £ s)# ¢ ¢ ¢ (f6 #)
f8 ¢¢ ¢ (s £ s)# ± ((z
z £ z) £ ¶) ¢ ¢ ¢ (f7 ± f 4)
2
3.3. Fun»
c~oes aritm¶
eticas 43
r
r ±
r
que corresponde µ
a componente molecular
qs q
q- -
qs q
z - -
- - z q- - ¢| ¢ ¢ {z ¢ ¢¢}
q¶ q- - -
q
- 6
-
De¯ni»
c~ao 3.3.2 De¯nimos + : W2 ! W1 como:
+(x;0) = x
+(x;s(y)) = s(+(x; y))
44 Cap¶³tulo 3. Fun»
c~oes Recursivas
f1 ¢¢ ¢ s ¢ ¢ ¢(inicial)
f2 ¢¢ ¢ s# ¢ ¢ ¢(f1 #)
A componente molecular de + ¶e
qs q
- ¢| ¢ ¢ {z ¢ ¢¢} -
q
- 6
-
De¯ni»
c~ao 3.3.3 De¯nimos : : W2 ! W1 como
:(x; 0) = 0
:(x; y + 1) = +(:(x; y); x)
Aparentemente devemos repetir o argumento anterior, utilizado para
a soma: o produto de dois n¶umeros naturais x e y ¶e o resultado da
aplica»c~
ao da fun»c~
a o soma, que j¶a temos como um objeto, ao primeiro
n¶
umero x tantas vezes quanto ¶e o valor do segundo n¶umero y. Assim:
£ = +# ¢ ¢ ¢ (E1 )
2. A seqÄu^
encia de fun»c~
o es abaixo completam a demonstra»c~
ao que f®
e recursiva primitiva, pela de¯ni»c~
¶ a o 3.1.5:
f1
..
.
fj ¢¢¢ f
f j+1 ¢¢¢ z ¢ ¢ ¢ (inicial)
f j+2 ¢¢¢ z £z ¢ ¢ ¢ (f j+1 £ fj+1 )
f j+3 ¢¢¢ ¶ ¢ ¢ ¢ (inicial)
f j+4 ¢¢¢ z £ z) £ ¶
(z ¢ ¢ ¢ (f j+2 £ fj+3 )
f j+5 ¢¢¢ s ¢ ¢ ¢ (inicial)
f j+6 ¢¢¢ (s £ s) ¢ ¢ ¢ (f j+5 £ fj+5 )
f j+7 ¢¢¢ (s £ s) # ¢ ¢ ¢ (f j+6 #)
f j+8 ¢¢¢ (s £ s) # ± ((z
z £ z ) £ ¶) ¢ ¢ ¢ (f j+7 ± fj+4 )
f j+9 ¢¢¢ f £¶ ¢ ¢ ¢ (f j £ f j+3 )
fj+10 ¢¢¢ ¶£± ¢ ¢ ¢ (f j+3 £ fj+8 )
fj+11 ¢¢¢ (f £ ¶) ± (¶ £ ± ) ¢ ¢ ¢ (f j+9 ± fj+10 )
- q¶ q- -
- - - - f - - -
q-
-
q±
-
q- q¶ q- -
- f® - =
- - -
q
q¶ q
z - - - -
- - ¢| ¢ ¢- + ®- ¢ ¢ ¢ - -
-
p- q¶ -q -
q¼
{z } --
- =
q¶ -q - q
- - 6 - -
-
a
De¯ni»
c~ao 3.3.5 De¯nimos a fun»c~
ao 1 : W1 ! W1 como
a
(
x ¡ 1 se x ¸ 1
1 (x) =
0 se x = 0
a
Lema 3.3.5 1 ¶ e uma fun»c~
ao recursiva primitiva.
Demonstra»c~ao: A id¶eia da implementa»c~ao ¶
e uma fun»c~
ao que gera a
partir de um n¶umero natural x a seqÄ
u^
encia:
< 0;0 >; < 1; 0 >; < 2; 1 >;¢ ¢ ¢ ; < x;x ¡ 1 >
e ent~
a o do ¶
ultimo par da seqÄu^encia obtemos o resultado por proje»c~
ao, que
a
neste caso ¶ a o ¼ £ ¶. Deixamos a veri¯ca»c~
e a fun»c~ ao de que a express~ ao
abaixo ¶e uma poss¶³vel representa»c~a o para 1 .
a
1 = (¼ £ ¶) ± (((s £ ¶) ± ± ± (¶ £ ¼))# ± (z
z £ z £ ¶))
a
A componente molecular para 1 ¶e:
z p
- - - -
p¼
- -
a- z p- - ¢| ¢ ¢
- H -
p¶ p
- - ¢ ¢¢} -
p¶ p
1 = {z
- -
q
- - 6
-
onde
48 Cap¶³tulo 3. Fun»
c~oes Recursivas
qs q -
p¶ p
-
q
- -
q±
p¼ qq ¶ q -
- H - =
-
a
(
x ¡ y se x ¸ y
(x; y) =
0 se x < y
a
a a#
Lema 3.3.6 : W2 ! W1 ¶e uma fun»c~ao recursiva primitiva.
a
Demonstra»c~a o: Temos que = 1 . Deixamos para o leitor veri¯car
esta igualdade e exibir uma dedu»c~
ao para .
2
- - a-
a-
¢| ¢ ¢ 1 ¢¢¢
- {z } -
- =
q
- 6
-
3.4 Manipula»
c~
ao de tuplas
A necessidade de lidar com argumentos de fun»c~oes motiva a introdu»c~a o
oes f : W ! W , que aplicadas a uma r-tupla < x1 ; x2; ¢ ¢ ¢ ; xr >,
de fun»c~
geram uma s-tupla < xi1 ; xi2 ; ¢ ¢ ¢ ; xis >, i1; i2 ; ¢ ¢¢ ; is 2 f1; 2; 3; ¢ ¢ ¢; rg.
Estas fun»c~
o es fazem reordena»c~oes e redimensionamentos da tupla da
entrada. Um exemplo que j¶ a tratamos ¶e a fun»c~a o ± . Fazemos refer^encia
a este tipo de fun»c~
a o como fun»c~
oes arranjo.
De¯ni»
c~ o es arranjo f : Wr ! Ws como:
ao 3.4.1 De¯nimos as fun»c~
² Fun»c~
ao diagonal: ± : W1 ! W2 , ± (x) =< x;x >
à !
1
±=
1 1
² Fun»c~
ao troca: 1 »2 : W2 ! W2, 1 »2 (x1 ; x2 ) =< x2 ; x1 >
à !
2
1 »2 =
2 1
- - z - q- - -
- G - - -
q ¶ - q- ¢| ¢ ¢ {z ¢¢ }¢
- - q¶ - q-
- -
q
6
-
onde
- q s -q
- -
q¶ -q
- G - =
-
µr+t¡1
it ± ¢ ¢¢ ±µr+1 r
i2 ±µi1 (x1 ; x2 ; ¢ ¢ ¢; xr ) =< x 1; x2 ; ¢ ¢ ¢; x r; xi1 ;x i2 ; ¢ ¢ ¢ ; xit >
Cada fun»c~
ao arranjo tem uma correspondente componente molecu-
lar, e indicamos tal componente de forma simpli¯cada. Por exemplo:
-
3 -
2 -
- 2 -
- -
1 -
3
e¶ recursiva primitiva.
Demonstra»c~ao: E¶ f¶
a cil ver que:
à !
r
< f; g >= (f £ g) ±
1 ¢¢¢ r 1 ¢¢¢r
2
1: q
r
f s q
q s +qt q q r 2:rq2:r
q s +qt s +qt
:
r r r
< f; g > =
q t q
1: r
: g
r
Podemos tamb¶ em aplicar uma fun»c~ao bin¶a ria a uma r ¡ tupla e uma
1 ¡ tupla ¯xada.
e¶ recursiva primitiva.
Demonstra»c~a o:
r à !
z }| { r+1
f r= (f £ f ¢ ¢ ¢ f £ f) ± 1 r +1 2 r+1 ¢¢¢ r r +1
Exemplo 3.5.1 + (xr ; y) =< +(x1; y); +(x2 ; y); ¢¢ ¢ ; +(xr; y) >
r
-
- f -
1
q1 q= q1 q1 2:rq q
r +1
..
r+ r r+ r+ . r
f r
.
.
.
r
.
r ..
r +1
-
- f -
e¶ recursiva primitiva.
Demonstra»c~a o:
r à !
fir = (f £ f ¢ ¢ ¢ f £ f ) ±
z }| { 2:r
1 r + 1 2 r + 2 ¢ ¢ ¢ r 2r
2
3.5. Funcionais especiais 53
-
1 - f -
r+1 ..
q r q q q 2:rq . rq
fir
2:r 2:r 2:r
= .
.
.
r
..
r .
-
2:r
- f -
Exemplo 3.5.2
+i(xr ; y r) =< +(x1 ; y1 ); +(x2 ; y2 ); ¢ ¢ ¢; +(xr ; yr ) >
.i(xr ; y ) =< :(x1 ; y1 ); :(x2 ; y2 ); ¢ ¢ ¢; :(xr; y r) >
r
r
m(x ; y ) =< exp(x 1; y1 ); exp(x 2; y2 ); ¢ ¢ ¢ ; exp(xr; y r) >
r
exp r
r r
e¶ recursiva primitiva.
Demonstra»c~ao: Seja:
(
1 se x > 0
sg(x) =
0 se x = 0
Veri¯que que:
f ! g = . ± (< g; sg ± f >)
s
A demonstra»c~
ao de que sg ¶e recursiva primitiva faz parte do exerc¶³cio
1. 2
q sq
1
r
q f ! g q= q
2rqq s +q s qs q
.
.
. g
r s r 2r 1
q f q
q sg q
r
1
:
r 1 1 1 s
.
.
.
r
54 Cap¶³tulo 3. Fun»
c~oes Recursivas
De¯ni» c~
ao 3.5.1 (funcional caso) Sejam as fun»c~ oes f : Wr ! W1 ,
g1 ; g2 : Ws ! Wt , de¯nimos caso : W1 Wr £ Wt Ws £ Wt Ws ! Wt Wr+s ,
por
(
g1 (y s) se f(x r) = 0
caso(f; g1 ; g2 )(x r; y s) =
g2 (y s) se f(x r) > 0
Note que:
caso(f;g 1; g 2)(xr ;y s ) = +i( p(g1 (y s); sg(f (xr ))); p(g 2(ys ); sg(f(x r))))
t t t
pois toda vez que f(xr ) = 0, seu sinal sg ¶ e 0, logo todas as compo-
nentes de g1 (y s) ser~a o multiplicadas por 1, enquanto as componentes de
g2 (y s) ser~
a o multiplicadas por 0. Na soma componente a componente, 0
ser¶a somado µ a s componentes de g1 (y s), portanto o resultado ¯nal ser¶a
exatamente g 1(y s ). Se f (xr ) > 0, vale o racioc¶³nio contr¶
ario. Portanto
onde
à !
r+s
H=
r + 1 ¢ ¢ ¢ r + s 1 ¢¢ ¢ r r + 1 ¢ ¢ ¢r + s 1 ¢ ¢ ¢ r
A prova de que sg ¶
e recursiva primitiva ¶
e parte do exerc¶³cio 1. 2
3.6. Processamento de cadeias 55
q
s g t qq
t ¶ tq
r +1
t +q : ttq
¢
¢ 1 t 1
q 1qq
1 sg 1 q
r +s
1
r
r +q q r +q q+ r) 2:tq g t q
¢
¢ f
q
s g t qq
t ¶ tq
s t s r 2:(s
caso(f; g1 ; g2 ) r +1 +t
=
t +q : ttq
¢
¢ 2 t
q
r f 1 qq
1 sg 1 q
r +s 1
1
¢
¢
r
(4) As ¶
unicas cadeias em § s~a o as express~oes satisfazendo os crit¶erios
(1), (2) e (3) acima.
A de¯ni»c~
ao acima motiva uma ordem na gera»c~ao de cadeias, a partir
ao do alfabeto §. Por exemplo para §2 = f1; 2g
da cadeia 0 e da ordena»c~
temos as seguintes 20 primeiras cadeias:
0; 1; 2; 11; 12; 21; 22; 111; 112; 121; 122; 211; 212; 221; 222; 1111; 1112; 1 121; 1122
De¯ni»
c~
ao 3.6.1 (cadeia inicial e s¶³mbolo ¯nal)
1. A fun»c~
a o inic ¶e obtida por opera»c~
o es aritm¶
eticas.Observando que,
se x = ¾k ¾k¡1 ¢¢ ¢ ¾1 ¾0 ent~
ao inic(x) = ¾k ¾k¡1 ¢ ¢ ¢ ¾1 . Como
j=k
X
º(x) = ( º(¾ j ):n j )
j=0
3.6. Processamento de cadeias 57
e
j=k
X
º(inic(x)) = ( º(¾j ):n j¡1 )
j=1
e portanto
º (x) ¡ º(¾0 )
º(inic(x)) =
n
Como inic(x) n~ ao ¶
e injetora, j¶
a que para todos os poss¶³veis valores
de ¾0 temos o mesmo valor de inic(x), basta calcularmos para
a
¾ 0 = 1, o menor valor em §. Logo temos que inic(x) = (x ¡ 1)=n,
ou seja inic = = ± ( 1 £ n), bastando demonstrar que a divis~ ao
inteira (/) ¶
e recursiva primitiva (ver a lista de exerc¶³cios). A
correspondente componente molecular ¶ e:
- a- -
--
q
- inic- = - - 1
=- -
n -
a
2. Temos que f im(x) = x inic(x):n, e portanto
a
fim = ± (¶ £ : ± (inic £ n)) ± ±
q¶ q
s- - -
s a-
s
- fim- = ± - inic- -
- - -
- - ¢ - -
q
-
n
De¯ni»
c~ao 3.6.2 (comprimento da cadeia)
De¯nimos compr : §¤ ! §¤ como
(
0 se x = 0
compr(x) =
compr(x 0) + 1 se x = x 0¾; ¾ 2 §
58 Cap¶³tulo 3. Fun»
c~oes Recursivas
r1 0 r2 ¾k¡1 ¾ k¡2 ¢ ¢ ¢ ¾1 ¾0
r1 0 r2 ¾k¡1 ¾k¡2 ¢ ¢ ¢¾ 1¾ 0
# #
r1 1 r2 ¾k¡1¾ k¡2 ¢ ¢ ¢ ¾1
# #
2 ¾k¡1¾ k¡2 ¢ ¢ ¢ ¾2
#. #.
.. ..
k 0
N~a o sabemos de antem~a o quando o registro r2 est¶
a vazio, assim nosso
algoritmo deve ser tal que repete (b) at¶
e que isto aconte»ca. Vamos de¯nir
uma fun»c~ a o g : W2 ! W2 por
(
< x + 1; inic(y) > se y 6
=0
g(x; y) =
< x; y > se y = 0
satisfaz a de¯ni»c~
ao de g. A componente molecular para g ¶e:
1- - q¶ q
- - -
- +- -
- - - sg - - -
- g- = 2- -
- -
- - - inic -
2
q
- - - g -
z - - -
q
¢| ¢ ¢ ¢ ¢ }¢
q±
- compr- =- - - {z
1-
q
q
6 - -
- - -
Assim chegamos µ
a express~
a o:
à ! à !
2 2
compr = ± (((+ ± (¶ £ sg)) £ inic) ± )# ± (z
z £ ±)
1 1 2 2
2
De¯ni»
c~ao 3.6.3 (concatena»
c~ao)
¤ ¤ ¤
De¯nimos _: § £ § ! § como
_ (x; 0) = x
_ (x; y¾) =_ (x;y)¾
Por exemplo: _ (122;112) = 122112.
e portanto
à !
2
_= + ± ((: ± (¶ £ exp ± (n £ compr))) £ ¶) ±
1 2 2
- - 1- - -
- _-
-
- F - - -
- 2- - + - -
q¶ q- -
=
- - - -
2
onde
q¶ q
q-
- - -
-
- F - = n - ¢-
- - - exp - - -
- compr- -
De¯ni»
c~
ao 3.6.4 (cadeia reversa)
De¯nimos ½ : §¤ ! §¤ como
½(0) = 0
½(x¾) = ¾½(x)
q¶ q
1- - - - -
- _- -
- - - - f im- - -
- f- = 2- -
- -
2- - - inic-
e portanto à !
2
½= ± f # ± (z
z £ ¶ £ compr) ± ±
1
com componente molecular:
q - -
r
z - -
q¶ q
- - f- - -
r ±
r
¢| ¢ ¢ ¢ ¢}¢
- ½- = - - - {z 1- -
q
- 6 - -
- compr- - - -
De¯ni»
c~ao 3.6.5 (cadeia ¯nal)
De¯nimos corte : §¤ ! §¤ como
(
x 0 se x = ¾x0 ; ¾ 2 §
corte(x) =
0 se x = 0
Por exemplo: corte(1221) = 221.
Lema 3.6.5 corte : §¤ ! §¤ ¶ e uma fun»c~
a o recursiva primitiva.
ao: corte = ½ ± inic ± ½.
Demonstra»c~ 2
De¯ni»
c~ao 3.6.6 (primeiro s¶³mbolo)
De¯nimos prims : §¤ ! § como
(
¾ se x = ¾x0 ; ¾ 2 §
prims(x) =
0 se x = 0
Por exemplo: prims(1221) = 1.
62 Cap¶³tulo 3. Fun»
c~oes Recursivas
De¯ni»
c~
ao 3.6.7 (segmento inicial de tamanho y)
De¯nimos segin : §¤ £ §¤ ! §¤ como
segin(¾k ¢ ¢ ¢ ¾0; 0) = 0(
¾k ¢ ¢ ¢ ¾0 se k < y
segin(¾k ¢ ¢ ¢ ¾0; y) =
¾k ¢ ¢ ¢ ¾k¡y+1 se k ¸ y
Por exemplo: segin(abcdef; 3) = abc.
Lema 3.6.7 segin : §¤ £ §¤ ! §¤ ¶ e uma fun»c~
ao recursiva primitiva.
Demonstra»c~
a o: Seja g de¯nida por:
g(x;0) =< x; 0 >
g(x;¾y) =< x¾; y > ¾ 2 §
deixamos para o leitor veri¯car que
g = ((_ ±(¶ £ prims)) £ corte) ± (¶ £ ±)
e que tem como componente molecular
q¶ q
- - -
q¶ q
- -
- - - -
_ - -
- prims -
q
q±
- g - - -
q
=
- -
- - - corte -
e portanto à !
2
segin = ± g # ± (z
z £ ¶ £ ¶)
1
A correspondente componente molecular ¶
e:
z q
- - - g --
- - - -
q¶ q
- segin -
¢| ¢ ¢ ¢ ¢¢}
= - - {z
1-
q¶ q q
- 6 - -
- - -
2
3.6. Processamento de cadeias 63
De¯ni»
c~ao 3.6.8 (segmento ¯nal de tamanho compr(x) ¡ y)
De¯nimos sef in : §¤ £ §¤ ! §¤ como
sef in(¾ k ¢¢ ¢ ¾0 ; 0) = ¾
(k ¢ ¢ ¢ ¾0
0 se k < y
sef in(¾ k ¢¢ ¢ ¾0 ; y) =
¾ y¡1 ¢ ¢ ¢ ¾0 sek ¸ y
onde g ¶
e a mesma fun»c~
a o do item anterior, a componente molecular ¶
e:
q -
-
z - -
- G -- - -
q¶ q
- sefin -
¢| ¢¢ ¢ ¢}¢
= - - {z 2-
q¶ q q
- 6 - -
- - -
2
De¯ni»
c~ao 3.6.9 (x ¶
e segmento inicial de y)
De¯nimos inicia : §¤ £ §¤ ! §¤ como
(
1 se y = xz, para algum z 2 §¤
inicia(x; y) =
0 caso contr¶a rio
pois
q¶ q
- 1- -
q¶ q -
- inicia - = 2- - - - -
- - - igual -
- segin - - -
1- - - - - compr - - -
3.7 Rela»
c~
ao entre alfabetos
Vimos que os alfabetos §n = f1; 2; ¢ ¢ ¢ ; ng s~ao conjuntos ¯nitos de
s¶³mbolos, onde os n¶ umeros 1; 2; ¢¢ ¢ ; n s~a o na realidade os valores de
certos sinais gr¶
a ¯cos. Por exemplo, poder¶³amos ter um alfabeto com
a¯cos, digamos f2; ¦; ¯g, aos quais podemos atribuir valores
3 sinais gr¶
1; 2;3 para signi¯car uma ordem arbitr¶aria.
Vimos tamb¶ em que a fun»c~a o º : §¤ ! N ¶e uma extens~a o da fun»c~a o
que d¶a o valor de cada s¶³mbolo enquanto indiv¶³duo. Assim para o alfa-
beto f2; ¦; ¯g temos que º(2¦) = 5.
Observamos que n~ ao atribu¶³mos a nenhum s¶³mbolo o valor 0, por-
tanto trabalhamos com sistemas de representa»c~ao n-¶adicos.
Consideramos, na pr¶ o xima de¯ni»c~ao, a rela»c~ao que existe entre pa-
lavras de diferentes alfabetos quando o valor ¶e o mesmo.
De¯ni»
c~ ao ·n;m : §¤n ! §¤m , por
ao 3.7.1 De¯nimos a fun»c~
+2 (11; 1) = 12; +2 (11; 2) = 21; + 2 (11; 11) = 22; +2 (11; 12) = 111
:2(1; 2) = 2; :2 (11; 2) = 22; : 2(12; 2) = 112
P
Assim, sendo m o somat¶orio na base m:
k
X
m xj = x0 + m x1 +m + m ¢ ¢ ¢ +m x k
j=0
e (x)jm a exponencia»c~
ao na base m:
j
z }| {
(x)jm = x:m ¢¢ ¢ :m x
temos que
k
X
· n;m (¾k ¾k¡1 ¢¢ ¢ ¾1 ¾0 ) = m ·n ;m (¾j ):m (· n;m (n))jm
j=0
3 :5 3 = (3)25 = 14
3 :5 (3)25 = 3 :5 14 = 52
1 :5 (3)35 = 1 :5 52 = 52
ent~
ao, f ¶
e recursiva primitiva e sua expressao LB ¶e:
à !
2
f = (+ ± (: ± (¶ £ n) £ prims) £ corte) ±
1 2 2
Assim
à ! à !
2 2
·n;m = ± f # ± (z
z £ ¶ £ compr) ±
1 1 1
De¯ni»
c~
ao 3.7.2 Sejam os alfabetos §n e §m e seja § = §maxfm;ng .
a o natural ¹·n;m : §¤ ! §¤ de · n;m , por
De¯nimos a extens~
(
·n;m (x) se x 2 §¤n
·n;m (x) =
¹
0 se x 2 (§ ¡ §n )¤
a o caracter¶³stica de §¤ ) ¶
2. §¤ (fun»c~ e recursiva primitiva.
Demonstra»c~
ao:
a
1. § = sg ± ( ± (s ± n £ ¶))
2. Seja f : §¤2 ! §¤3 , de¯nida por f (x; ¾y) =< x;¾; y >; ¾ 2 §,
ent~
a o f ¶e recursiva primitiva pois
à !
2
f = (¶ £ prims £ corte) ±
1 2 2
3.8 Repeti»
c~
ao
O funcional expoentiza»c~ao realiza a reaplica»c~a o repetida de uma fun»c~a o.
A repeti»c~
a o ¶e controlada pela contagem de um ¶³ndice natural que de-
cresce de 1 cada vez que f ¶e aplicada. Logo o processo ¶e ¯nito. Agora
68 Cap¶³tulo 3. Fun»
c~oes Recursivas
¾qr + 1 qr + 1 ?
1 -q Controle
6 ?1
a
a o f : W2 ! W2 , f (x; y) =< x + 1; y 3 >,
Exemplo 3.8.1 Seja a fun»c~
ao g : W1 ! W1 de¯nida por
ent~
g(y) = f r(0; y + 1)
e¶ a fun»c~
ao que nos d¶
a o quociente da divis~
a o de y por 3 se y for divis¶³vel
por 3 e diverge em caso contr¶a rio.
g(6) = f r (0;7) = 2
pois f (0; 7) =< 1; 4 >; f(f(0; 7)) = f (1; 4) =< 2;1 >
g(7) = f r (0; 8) "
pois
f (0;8) =< 1; 5 >
f (f (0; 8)) = f(1; 5) =< 2; 2 >
f (f (f(0; 8))) = f(f(1; 5)) = f (2; 2) =< 3; 0 >
f (f (f(f(0; 8)))) = f(f(f (1;5))) = f (f(2; 2)) = f (3;0) =< 4;0 >
..
.
3.8. Repeti»
c~ao 69
De¯ni» c~
ao 3.8.2 (fun» c~
ao parcialmente recursiva) Dizemos que u-
ao f : W ! W ¶
ma fun»c~ e parcialmente recursiva se e somente se existe
uma sequ^ encia de fun»c~o es g1 ; g2 ; :: : ; gn tal que f = gn e para todo i,
1 · i · n, gi ¶
e inicial ou:
gi = gi1 ± g i2 1 · i1 ; i2 < i; ou
gi = gi1 £ g i2 1 · i1 ; i2 < i; ou
#
gi = gi1 1 · i1 < i
gi = gir1 1 · i1 < i
Agora podemos estender a linguagem b¶a sica LB ¡ nabla, com a
adi»c~
ao do novo funcional. Um programa LB ¶e uma express~ao que satisfaz
a seguinte de¯ni»c~
a o formal:
< express~ao > ::= < inicial > j
(< express~ao > ± < express~ao >) j
(< express~ao > £ < express~ao >) j
< express~a o > # j
< express~a o > r
< inicial > ::= ¶ j ¼ j z j s
De¯ni» c~
ao 3.8.3 Seja ® uma express~ao LB, ent~
a o a fun»c~
ao computada
por ® denotada por j®j ¶
e de¯nida da seguinte maneira:
1. Se ® ´ ¶ ent~
ao j®j(x) = x;
2. Se ® ´ z ent~
a o j®j(<>) = 0;
3. Se ® ´ ¼ ent~
a o j®j(x) =<>;
4. Se ® ´ s ent~
ao j®j(x) = x + 1;
j®j(x r) = j¯j(j°j(xr))
7. Se ® ´ ¯# , ¯ 2 Wr Wr ent~
ao
j®j(xr ; 0) = xr
j®j(xr ; y + 1) = j¯j(j®j(x r; y))
9. As u¶nicas fun»c~ o es LB ¡ r s~
o es computadas por express~ a o ex-
oes em LB ¡ r que satisfazem 1 a 8 acima.
press~
3.9 Conclus~
o es e Refer^
encias
Apresentamos uma caracteriza»c~ao das fun»c~oes recursivas com uma lin-
guagem funcional LB e esquemas gr¶a ¯cos que auxiliam na visualiza»c~a o
e compreens~ ao da computa»c~a o das fun»c~o es. A linguagem b¶asica uti-
lizada neste cap¶³tulo tem origem em [BL74]. No entanto, para uma
apresenta»c~ a o mais tradicional, o leitor n~ao ter¶a di¯culdades em encon-
trar bibliogra¯a abordando a teoria das fun»c~oes recursivas.
Entre os textos mais consagrados devemos destacar [Kle52], [Rog67],
[Dav83] e [BJ74]. A diferen»ca mais evidente entre a nossa caracteriza-
»c~ao e as mais tradicionais ¶ e devida µa simplicidade do nosso conjunto
de fun»c~o es iniciais e de funcionais b¶a sicos. Em geral, considera-se um
conjunto in¯nito de fun»c~ oes iniciais (todas as proje»c~oes e todas as cons-
tantes, por exemplo) e a composi»c~a o envolve um n¶umero qualquer de
fun»c~
o es.
3.10 Exerc¶³cios
1. Mostre que as fun»c~
oes de¯nidas abaixo s~ao recursivas primitivas:
(a) exp(x; y) = xy
(b) !(x) = x!
3.10. Exerc¶³cios 71
(
1 se x > 0
(c) sg(x) =
0 se x = 0
(
0 se x > 0
(d) sg(x) =
1 se x = 0
(
1 se x > 0 ou y > 0
(e) _(x; y) =
0 se x = 0 e y = 0
(
1 se x > 0 e y > 0
(f) ^(x; y) =
0 se x = 0 ou y = 0
(
0 se x > 0 e y = 0
(g) ) (x; y) =
1 se x = 0 ou y > 0
(
1 se x = y
(h) igual(x; y) =
0 se x 6
=y
(
1 se x < y
(i) < (x; y) =
0 se x ¸ y
(j) =(x; y) = q onde x = q:y e r < y
2. Escreva a fun»c~
ao compr da de¯ni»c~a o 3.6.2 utilizando o funcional
caso.
(f £ ¶) ± (¶ £ g £ h) = ((f ± (¶ £ g)) £ ¶) ± (¶ £ ¶ £ h)
± ± f = (f £ f ) ± ±
f(x 1; ¢ ¢ ¢ ; xm ) = (¼ £ ¶| £ ¢{z
¢ ¢ £ }¶) ± (¶ £ f)(x0 ; x1 ;¢ ¢ ¢ ; xm )
n
(¶ £ ±) ± (¶ £ h) = (¶ £ h £ h) ± (¶ £ ±)
72 Cap¶³tulo 3. Fun»
c~oes Recursivas
(f £ g) # = (f # £ g # ) ± h
a
12. Veri¯que a igualdade do lema 3.3.6 e exiba uma dedu»c~ao para a
fun»c~
ao .
Linguagem de
Programa»
c~ao Minimal
73
74 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal
ao: X Ã 0, X Ã Y e X Ã X + 1. Formalmente:
atribui»c~
< atribui»c~
ao >::= < nome >Ã 0 j
< nome >Ã< nome > j
< nome >Ã< nome > +1
² < atribui»c~
ao > ¶e uma vari¶avel sint¶a tica que indica a forma ou
sintaxe dos comandos de atribui»c~ao.
² < nome > ¶ e uma vari¶avel sint¶atica que, em um comando de
atribui»c~
a o, pode ser substitu¶³da por qualquer cadeia de s¶³mbolos
de um alfabeto ¯xado que obede»ca µa especi¯ca»c~a o formal abaixo:
< nome > ::= < literal > j < literal >< numeral >
< literal > ::= < letra > j < letra >< literal >
< letra > ::= AjBj ¢ ¢ ¢ jZ
< numeral > ::= < algarismo > j < algarismo >< numeral >
< al garismo > ::= 0j1j ¢ ¢ ¢ j9
Exemplo 4.1.1
(
declara»c~
ao EN T RADA X;
de
entrada e sa¶³da SAI DA Y ;
8
>
> Z Ã 0;
>
>
>
> Z Ã Z + 1;
>
>
>
>
corpo < L1 Y Ã 0;
de LOOP Z ;
programa >
>
>
> Y Ã Y + 1;
>
>
>
> GOT O L1;
>
>
: EN D;
8 8
>
> EN T RADA X1 ;X2 ; >
> EN T RADA X1; X2 ; X3 ;
>
< >
<
S AIDA Y1 ; Y2 ; S AIDA Y1 ; Y2 ;
P3 P4
>
> >
>
>
: >
:
P P
..
.
oes f 1 : W1 ! W1, f2 : W1 ! W2 , f3 : W2 ! W2 ,
que computariam fun»c~
f4 : W3 ! W2 , etc.
4.2 Sem^
antica operacional de programas
Apresentamos uma interpreta»c~a o operacional poss¶³vel da sem^antica dos
programas escritos em LPM. A interpreta»c~a o aqui adotada n~ao ¶e a ¶unica,
4.2. Sem^
antica operacional de programas 77
o leitor poder¶
a imaginar uma interpreta»c~ao suprimindo R4, e adotando
um requisito para passagem de par^a metro.
A execu»c~
a o de um programa obedece os seguintes requisitos:
R2 Os comandos s~
a o executados na ordem que aparecem.
R3:1 U Ã 0 associa o n¶
umero natural 0 a U
R3:2 U Ã V associa a U o valor associado a V
R3:3 U Ã U + 1 aumenta o valor associado a U de 1
R4 Vari¶
a veis de entrada n~ao podem ocorrer µa esquerda de um comando
de atribui»c~
ao.
s< x ; x ; x ;¢ ¢ ¢ ; x ; 0; ¢ ¢¢ ; 0 >
m¡r
z }| {
1 2 3 r
W
R1 R2 R3 Rr
registros
c om x1 x2 x3 ¢¢ ¢ xr ¢¢ ¢
conteudo
¶
6 6 6 6
vari¶
a ve is
d o programa X1 X2 X3 ¢¢ ¢ Xr ¢¢ ¢
R5 Repeti»c~
o es de um grupo de comandos s~ao representadas pelo uso
de pares LOOP, END. A vari¶a vel utilizada num comando LOOP
e chamada de vari¶
¶ a vel do LOOP. O grupo de comandos seguindo
1
No pr¶oximo cap¶³tulo apresentamos como esta opera»c~
ao de carga ¶
e realizada para
uma m¶a quina com registros.
4.2. Sem^
antica operacional de programas 79
..
.
com k
EN D;
continua»c~
ao ou ¯m
» X? X
N» » » X X ¾
X X NXOV A >» 0?» »
X »
?S
com1
.?
..
?
co mk
NOV A Ã N OV A¡1
- continua»c~
ao ou ¯m
R7 Se a vari¶
avel do LOOP estiver associado ao valor 0 os comandos do
bloco LOOP ¡ EN D correspondentes n~ao ser~a o executados, ou
seja, ser~
ao executados 0 vezes.
2. ou pela execu»c~
a o de um comando GOTO com um r¶otulo que
n~
a o ocorre no programa.
EN T RADA X;
SAI DA Y;
Y Ã X;
LOOP X;
Y Ã Y + 1;
EN D;
² Se µ
a vari¶
a vel de entrada X associamos o valor 0, ent~
a o o primeiro
comando do corpo Y Ã X, associa a Y o valor que est¶ a associado
a X (por R3.2), o comando (¶ unico) do bloco LOOP ¡ EN D, n~ ao
ser¶
a executado e o programa termina com o valor de Y igual a 0,
portanto satisfaz a fun»c~
a o 0 = 2:0
De¯ni»
c~ao 4.3.1 Seja P um programa em LPM:
EN T RADA X1 ;X 2; ¢ ¢ ¢ ; Xr;
S AI DA Y1 ; Y2 ; ¢ ¢ ¢; Y s;
P1
r m¡r
z }| { z }| {
®r = ( ¶ £ ¶ £ ¢ ¢ ¢ £ ¶ £ z £ z £ ¢ ¢ ¢ £ z )
2
O conceito de m¶ aquinas abstratas ¶
e formalmente apresentado no pr¶o ximo
cap¶³tulo, por enquanto basta entender que uma das componentes destas m¶
a quinas
e um conjunto de cardinalidade no m¶
¶ aximo enumer¶
avel de registros.
82 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal
q Wr
¡ xr
¡ ®r
jPj ¡
s q
¡
q
¡
¡ª ¡ < xr; 0 m¡r >
k Ws jFj¡
q
¡ª
Wm
< xr ;y s ;z m¡(r+s) >
¯s
r s m¡(r+s)
z }| { z }| { z }| {
¯s = ( ¼ £ ¼ £ ¢¢ ¢ £ ¼ £ ¶ £ ¶ £ ¢ ¢¢ £ ¶ £ ¼ £ ¼ £ ¢¢ ¢ £ ¼)
1. + : W2 ! W1 ; +(x; y) = x + y
E NT RADA X1; X2;
S AIDA Y 1;
Y 1 Ã X1;
LOOP X 2 ;
Y1 Ã Y1 + 1;
E ND;
a a
(
x ¡ 1 se x ¸ 1
2. 1 : W1 ! W1, 1(x) =
0 se x = 0
E NT RADA X1;
S AIDA Y 1;
Z 1 Ã 0;
LOOP X1 ;
Z2 Ã Z1 ;
Z1 Ã Z1 + 1;
E ND;
Y 1 Ã Z 2;
a a
(
x ¡ y se x ¸ y
3. : W2 ! W1 , (x; y) =
0 se x < y
ENT RADA X1 ; X 2 ;
SAIDA Y1 ; U1 Ã Z1 ;
Z1 Ã X 1 ; U2 Ã 0;
Z2 Ã X 2 ; LOO P U1 ;
a
LOOP Z2 ; (I)
U3 Ã U2 ;
Z1 Ã 1 (Z 1 ); ¢ ¢ ¢ (I) U2 Ã U2 + 1;
END; EN D;
Y1 Ã Z 1 Z1 Ã U3 ;
84 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal
a
Note que (I ) ¶
e o corpo do programa que realiza a fun»c~ ao 1, mo-
di¯cado pela substitui»c~ aveis 3 e pela introdu»c~
a o adequadadas vari¶ ao
de dois novos comandos: o primeiro U 1 Ã Z1 , que inicializa a
ultimo, Z1 à U2 , que fornece o valor de sa¶³da.
entrada, e o ¶
A2 Comandos da forma < nome >Ã < nome > +n, onde n ¶e um
n¶
umero natural. Qualquer comando desta forma, por exemplo
U Ã V + n pode ser emulado em LPM pelos comandos:
U Ã V;
8
< U
> Ã U + 1;
n ..
> .
:
U Ã U + 1;
por exemplo:
IF U · V THE N;
P1
ELSE ;
P2
END;
onde, se U · V o programa P1 ¶e executado, e se U > V o
programa P 2 ¶
e executado. Isto pode emulado em LPM ¡fGOT Og
a
pelo programa:
Z Ã sg(U V );
LOO P Z
P1
a
END;
V Ã sg(U V)
LOO P V ;
P2
END;
Os programas da forma
IF < nome1 >=< nome2 > T HEN ;
< programa1 >
ELSE ;
< programa2 >
END;
tamb¶
em podem ser admitidios, com constru»c~a o semelhante (U = V se
e somente se U · V e V · U). A rela»c~ao 6
= ¶e an¶a loga.
Composi»
c~ao Sejam f : Wr ! Ws e g : Ws ! Wt fun»c~ o es LPM ¡
fGOT Og comput¶ a veis. Vamos mostrar que g ± f : Wr ! Wt e¶
tamb¶em LPM ¡ fGOT Og comput¶ a vel.
Considere os programas abaixo
8
>
< EN T RADA X1 ;X2 ; ¢ ¢ ¢ ;Xr ;
Pf S AIDA Y1 ; Y2 ; ¢ ¢¢ ; Y s;
>
: F
que computa f, e
8
>
< EN T RADA X1; X2 ; ¢ ¢ ¢; Xs ;
Pg SAIDA Y1 ; Y2 ; ¢ ¢ ¢; Y t;
>
: G
P f e P g de tal modo que nenhum con°ito nos nomes das vari¶ aveis
o tulos ocorra. Suponha que em P f ocorram m vari¶
e r¶ aveis e em
P g ocorram l vari¶a veis. Uma maneira de se fazer isto ¶
e:
aveis do primeiro programa, ou seja de Pf ,
(I ) Renomear as vari¶
de tal modo que nele ocorra apenas as vari¶
a veis
Combina»
c~ao Sejam f : Wr ! Ws e g : Wt ! Wu fun»c ~ oes LPM ¡
fGOT Og comput¶ a veis. Vamos mostrar que f £ g : Wr +t ! Ws+u
e tamb¶em LPM ¡ fGOT Og comput¶
¶ a vel.
a o do programa para f £ g a
Deixamos para o leitor a constru»c~
partir dos programas para f e g.
Expoentiza»
c~ao Seja f : Wr ! Wr LP M ¡ fGOT Og comput¶ avel.
Vamos mostrar que f # : Wr+1 ! Wr ¶ em LP M ¡ fGOT Og
e tamb¶
comput¶
avel. Suponha que
(
E NT RADA X1 ; X 2 ; ¢ ¢ ¢ ; Xr ;
Pf S AIDA Y1 ; Y2 ; ¢ ¢ ¢ ; Y r ;
F
1. Um comando de atribui»c~
ao. Neste caso podemos ter:
jF j = jP2 j ± jP1 j
Repeti»
c~
ao Seja o programa
(
EN TRADA X 1 ; X2 ; ¢ ¢ ¢ ; X r ; X r+1 ;
Pf SAI DA Y 1 ; Y2 ; ¢ ¢ ¢ ; Yr ; Yr+1 ;
F
e um r¶
¶ a o o programa que computa f r ¶
o tulo novo. Ent~ e:
8
> E NT RADA X 1 ; X 2 ; ¢ ¢ ¢ ; X r ; X r+1 ;
>
> SAI DA Y 1 ; Y2 ; ¢ ¢ ¢ ; Yr ;
>
>
>
> U 1 Ã X1;
>
>
>
> ¢¢¢
>
>
>
> U r à Xr ;
>
>
>
> U r+1 Ã X r+1 ;
>
>
>
> L1 Z Ã6 = (U r+1 ; 1);
>
> LOOP Z;
>
>
>
< F0
Pr
f L2 U 1 Ã Y 1;
>
> U 2 Ã Y 2;
>
>
>
> ¢¢ ¢
>
>
>
> U r à Yr;
>
>
>
> U r+1 Ã Y r+1 ;
>
>
>
> GOT O L1 ;
>
>
>
> EN D;
>
>
>
> Y 1 Ã U1 ;
>
> ¢¢¢
:
Y r à Ur ;
De¯ni» c~ o es ¯ : N 2 ! N , 1¯ 2 : N ! N e
ao 4.4.1 De¯nimos as fun»c~
2 ¯2 : N ! N por:
(x+y):(x+y+1)
¯(x; y) = x+ 2
1 ¯2 (¯(x; y)) = x
2 ¯2 (¯(x; y)) = y
As fun»c~
o es ¯ em linearizam pares ordenados de modo que a seguinte
enumera»c~
ao ¶e gerada:
De¯ni»
c~ao 4.4.2 De¯nimos as fun»c~
o es:
1. ¯ r : N r ! N indutivamente por:
¯1 (x) = x
¯2 (x1 ; x2 ) = ¯(x1 ;x 2)
¯k+1 (x1 ; ¢ ¢ ¢ ;x k ; xk+1 ) = ¯(¯k (x1 ; ¢ ¢ ¢; x k ); xk+1 ); k ¸ 2
94 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal
q q q q q q
5q q q q q q
4 q10 q q q q q
@So
3 q6 @S@R q q q q q
S
@J] S@
2 q3J@@R q S7 @@R q q q q
@AK J @ S @
1 q1A@@R q4 @R q @R q q q
A J @ S 8@
J S
@6 A @ J @ S @
0 q0 @@R Aq2 @@RJ q5 @@RS q9 @@R q q
0 1 2 3 4 5
Temos que
¯4 (0; 1;0; 5) = ¯(¯(¯(0; 1); 0); 5)
= ¯(¯(1; 0); 5)
= ¯(2; 5)
= 30
Vari¶
aveis indexadas
Podemos estender a linguagem LPM por comandos com a seguinte sin-
taxe:
V ARINDEX < nome >:< numeral >; (declara»c~
ao)
< nome >Ã< nome > (< numeral >) (atribui»c~
ao)
< nome > (< numeral >) Ã< nome > (atribui»c~
ao)
< nome > (< numeral >) Ã< nome > (< numeral >) (atribui»c~
ao)
T Ã ¯(1; 7) T = ¯(1;7)
T Ã ¯(T; 2 ¯2 (R)) T = ¯3 (1; 7; 3)
T Ã ¯(T; 2 ¯2 (1 ¯2(R))) T = ¯4 (1; 7; 3; 4)
T Ã ¯(T; 1 ¯2 (1 ¯2(R))) T = ¯5 (1; 7; 3; 4;5)
Demonstra»c~
ao:
onde DI MX ¶
e uma vari¶
avel nova.
2. Substitua todo comando X(Z ) Ã U ; por:
a
I F Z · DI M X T HE N;
N Ã DI M X Z;
T Ã X;
R Ã 0;
LOOP N;
R Ã ¯(R; 2 ¯2 (T));
T Ã 1 ¯2 (T);
END;
T Ã ¯( 1 ¯2 (T ); U );
LOOP N;
T Ã ¯(T; 2 ¯ 2 (R));
R Ã 1 ¯ 2 (R);
END;
X Ã T;
E LSE;
E ND;
a
T Ã X;
N Ã DI M X Z;
LOOP N;
T Ã 1 ¯2 (T);
END;
U Ã 2 ¯ 2 (T );
E LSE U Ã 0;
LB - LP M
& % & %
Listas
Extender LPM para permitir comandos dos tipos
4.5 Conclus~
o es e Refer^
encias
Neste cap¶³tulo, apresentamos mais uma caracteriza»c~ao para as fun»c~o es
recursivas. A ¯gura 4.4 ¶ e um resumo gr¶a ¯co dos resultados de equiva-
l^encia que foram vistos.
A linguagem LPM utilizada neste cap¶³tulo tem origem em [BL74]
e [MDW94]. Para uma abordagem de computabilidade utilizando uma
linguagem de programa»c~ a o mais moderna e de alto n¶³vel o leitor deve
fazer refer^
encia a [ML84].
4.6. Exerc¶³cios 99
4.6 Exerc¶³cios
1. Escreva programas em LP M ¡fGOT Og para computar as fun»c~oes
abaixo:
M¶
aquinas com Registros
r
z }| {
< x1 ; x2 ; ¢ ¢ ¢; x n >
£± 6 BM
£ B
£
£
Wn BB
£ B
£ B
x1 x2 ¢ ¢¢ xn
101
102 Cap¶³tulo 5. M¶
aquinas com Registros
5.1 M¶
aquinas com Registros - Geral
As seguintes de¯ni»c~oes s~
a o gerais para este cap¶³tulo: a de¯ni»c~a o do
conceito de m¶a quina com registros,o conceito de programa e o conceito
de computa»c~
a o para estas m¶ aquinas.
De¯ni»c~
ao 5.1.1 Uma m¶
a quina com registros M =< §; R; M; I; ®r ; !s >
e um 6-tupla, onde:
¶
² R¶
e um conjunto enumer¶
a vel de objetos chamados de registros;
² I¶ o es de M em M chamadas de instru»c~
e um conjunto de fun»c~ oes.
² ®r ¶ ao de Wr em M e ¶
e uma fun»c~ e chamada de fun»c~
ao de entrada.
² !s ¶ ao de M em Ws e ¶
e uma fun»c~ e chamada de fun»c~
ao de sa¶³da.
§ = f1; 2g
R = fr1 ; r2 g
M = §¤fr0 ;r1 g
I = ff1 ; f2 g
5.1. M¶
a quinas com Registros - Geral 103
onde f 1 e f 2 s~
ao de¯nidas por:
A fun»c~
ao ® carrega os registros r0 e r1 com os valores x0 e x1 , repecti-
vamente. A fun»c~ao ! recupera dos registros r0 e r1 os valores z0 e z1 ,
repectivamente.
cortadir(r;¾)(¹) = ¹0 se e somente se
(
0 x se ¹(r) = x _ ¾
¹ (r) =
" se ¹(r) 6
=x_¾
104 Cap¶³tulo 5. M¶
aquinas com Registros
4. cortaesq : R£§ ! MM, tal que para todo <r; ¾ >, cortaesq(r; ¾)
a o de M em M, de¯nida por
e uma fun»c~
¶
ident(r)(¹) = ¹
T µ L £ I £ L e¶ chamado de texto de P
IµL e chamado de conjunto de r¶
¶ o tulos iniciais de P
F µL e chamado de conjunto de r¶
¶ o tulos ¯nais de P
¶ ³
µ ´
3
AK
¶ ³ ¶ ³ º
¶ ³ ·
cortadir(r 2; 1) cortaesq(r 1; 1)
- AU 1
testa(r 1) testa(r2 )
- -
¢̧ µ ´ µ ´ µ ´
¹ ¸
2 5
¶ ³
cortadir(r 2; 2) cortaesq(r 1; 2)
¢®
µ ´
4
1 cortaesq(r1 ; 1) 3
1 cortaesq(r1 ; 2) 4
1 testa(r1 ) 2
2 testa(r2 ) 5
3 cortadir(r2; 1) 1
4 cortadir(r2; 2) 1
Neste programa 1 ¶e o r¶
otulo inicial e 5 ¶
e o r¶
o tulo ¯nal. Podemos associar
a cada programa um grafo dirigido com r¶ o tulos, como mostrado na ¯gura
5.2. Este programa veri¯ca se os conte¶ udos dos registros r1 e r2 s~ao
sim¶etricos.
As tr^
es de¯ni»c~
o es a seguir estabelecem o conceito de computa»c~ao
para m¶
aquinas com registros. O estado de uma m¶a quina M ¶e uma
106 Cap¶³tulo 5. M¶
aquinas com Registros
situa»c~
ao instant^
a nea de M , em um dado momento da computa»c~a o. Um
estado poss¶³vel de M ¶e um estado que pode ser atingido atrav¶es de
estados poss¶³veis intermedi¶ arios anteriores. Observe que esta ¶e uma
de¯ni»c~ao recursiva.
De¯ni» c~
ao 5.1.3 Seja P =< T ;I ; F > um programa para a m¶ aquina
com registros M =< §;R;M;I; ®; ! >. Um estado de M com respeito
ao programa P ¶ e qualquer par < l; < x1 ;¢ ¢ ¢ ; xm >>, onde l 2 L e
< x1 ; ¢ ¢¢ ; xm >2 §¤ m . Um estado < l;< x 1; ¢ ¢ ¢ ; xm >> ¶
e dito ser um
estado poss¶³vel de M com respeito a P se e somente se:
De¯ni» c~
ao 5.1.4 Seja P =< T ;I ; F > um programa para a m¶ aquina
com registros M =< §;R; M;I; ®; ! >. Uma computa»c~ ao de P em M ¶ e
um par < xr ;y s >2 Wr £ Ws, tal que existe uma seqÄ encia q0; q1 ; ¢ ¢¢ ; qk
u^
de estados poss¶³veis satisfazendo as seguintes condi»c~
oes:
1. q0 =< l; xr > ¶
e um estado inicial;
5.1. M¶
a quinas com Registros - Geral 107
¶ ³
µ ´
2
AK
¶ ³ º¶ ³·
cortaesq(r1 ; 1) concdir(r 1; 2)
- AU 1
ident(r 1)
-
¢̧µ ´ ¹µ ´¸
4
¶ ³
cortadir(r 1; 2) concesq(r1 ; 1)
¢®
µ ´
3
O segundo item da de¯ni»c~a o acima implica que para cada r¶o tulo l,
mesmo que haja diversos triplas em T com r¶otulo l, h¶a apenas uma pos-
sibilidade de transforma»c~
a o de con¯gura»c~a o. Portanto podemos concluir
imediatamente o seguinte corol¶ario.
Corol¶
ario 5.1.1 Se P ¶
e determin¶³stico ent~
a o a rela»c~
a o computada por
P ¶
e uma fun»c~
ao.
5.2 M¶
aquinas com in¯nitos registros (MIR)
Nesta se»c~
a o apresentamos uma m¶a quina abstrata com um n¶umero in-
¯nito de registros, a que damos o nome de MIR.
De¯ni» ao 5.2.1 Uma MIR M =< §; R; M; I;®r ; !s > ¶
c~ e uma m¶
a qui-
na com registros, onde:
§ = §n ; n > 0;
R = fr 0; r1 ; ¢ ¢ ¢ ; rk ; ¢ ¢ ¢g
M = §¤ R
I = fcortaesq(rk ; ¾); concdir(rk ; ¾ ); testa(rk ) j k > 0 e ¾ 2 §g
5.2.1 Macros
Muitas linguagens de programa»c~a o incluem facilidades para dar nomes
a seqÄ u^
encias de instru»c~oes que s~ao usadas em v¶arias partes de um pro-
grama. Estes nomes s~ a o escritos no lugar destas seqÄu^encias de instru-
»c~
o es. De¯nimos algumas macros com a ¯nalidade de facilitar os pr¶o ximos
programas. Adotamos as seguintes conven»c~oes:
4. a de¯ni»c~
ao de uma macro pode conter par^a metros que variam com
o nome do registro.
Macro Expans~ ao
l limpe(rk) l0 l testa(r k) l0 , cortaesq(rk; ¾ 1 ) l
, cortaesq(rk; ¾ 2 ) l
..
.
, cortaesq(rk; ¾ n ) l
conc(rk; r j ) Concatena o conte¶
udo do registro rj ¶
a direita do conte¶udo
do registro rk . O conte¶
udo do registro rj ¶
e 0 depois da opera»c~a o;
Macro Expans~ ao
l conc(rk; r j ) l0 l testa(r j) l0 , cortaesq(rj ; ¾1 ) l:¾ 1
, cortaesq(rj ; ¾2 ) l:¾ 2
..
.
, cortaesq(rj ; ¾n ) l:¾n
l:¾1 concdir(rk; ¾ 1 ) l
l:¾2 concdir(rk; ¾ 2 ) l
..
.
l:¾n concdir(rk; ¾ n ) l
110 Cap¶³tulo 5. M¶
aquinas com Registros
Macro Expans~
ao
l mova(rk; r j ) l0 l limpe(rk )
l:1 conc(r k; rj ) l0
l cortaesq(rk ; ¾) l:¾; ¾ 2 §
l:¾ concdir(rk ; ¾) l; ¾ 2 §
Macro Expans~ao
l copie(rk ; rj ) l0 l limpe(rk)
j6= 0; k 6
=0 e j 6 =k l:1 limpe(r0 )
l:2 testa(rj ) l:2:1; cortaesq(rj ; ¾) l:3:¾ ¾2§
l:2:1 mova(rj ; r0 ) l0
l:3:¾ concdir(r0 ; ¾) l:4:¾ ¾2§
l:4:¾ concdir(rk ; ¾) l:2 ¾2§
concesq(rk ; ¾) Concatena ¾ µ
a esquerda do conte¶
udo do registro rk.
Macro Expans~
ao
l concesq(rk ; ¾) l0 ; k 6
=0 l limpe(r0 )
l:1 concdir(r0 ; ¾)
l:2 conc(r0 ; rk )
l:3 mova(rk ; r0 ) l0
Tendo como objetivo dar mais clareza aos programas de¯nimos uma
macro especial f im de tal modo a representar o ¯nal de um programa,
assim o comando l f im ¶ e para ser interpretado como sendo o comando
l limpe(r0 ) l 0, onde l 0 ¶
e um r¶
otulo n~a o existente no programa.
5.2. M¶
a quinas com in¯nitos registros (MIR) 111
1 copie(r3 ; r1 )
2 concdir(r2 ; 1)
3 concdir(r3 ; 2)
4 fim
computa a fun»c~
ao f(x) =< x; 1; x2 >.
5.2.2 Interpreta»c~
a o de LPM-programas em MIR
Nesta se»c~a o vamos traduzir programas escritos na linguagem LPM em
programas para uma m¶aquina abstrata MIR. Para realizar estas tradu-
»c~
o es vamos admitir que os programas escritos em LPM respeitam certas
conven»c~
o es adicionais µ
a s discutidas no cap¶³tulo 3.
As regras de tradu»c~
ao, de um programa escrito em LPM para um
programa escrito em MIR no alfabeto §1, s~a o as seguintes:
o es de ENTRADA e SA¶IDA;
1. Elimine as declara»c~
5. Substitua l Xk à Xj por:
l copie(rk ; rj ) se k 6
=j
l limpe(r0 ) se k = j
l copie(rm+1 ;rk )
l:1 testa(rm+1 ) l 0 + 1; cortaesq(rm ;1) l + 1
1 copie(r3; r1 )
2 copie(r5; r2 )
2:1 testa(r5 ) 9; cortaesq (r5; 1) 3
3 limpe(r4)
4 copie(r6; r3 )
4:1 testa(r6 ) 8; cortaesq (r6; 1) 5
5 copie(r3; r4 )
6 concdir(r4 ; 1)
7 limpe(r0) 4:1
8 limpe(r0) 2:1
9 copie(r1; r3 )
10 f im
O leitor que seguiu as discuss~oes anteriores pode veri¯car que vale o
seguinte teorema.
a o f : Wr ! Ws, computada por um pro-
Teorema 5.2.1 Toda fun»c~
grama LPM , ¶
e tamb¶
em computada por um programa em uma m¶aquina
M I R, M =< §; R; M; I;®r ; !s >. 2
114 Cap¶³tulo 5. M¶
aquinas com Registros
5.3 M¶
aquinas com um s¶
o registro (MUR)
Nesta se»c~
a o apresentamos uma m¶a quina abstrata com apenas um regis-
tro, a que damos o nome de MUR.
§ = §n ; n > 0;
R = fr1g
M = §¤R
I = fcortaesq(r1 ; ¾); concdir(r1; ¾); testa(r1 )g; ¾ 2 §
A extens~
a o do alfabeto § com o s¶³mbolo novo $ nos permite simular
um n¶
umero in¯nito de registros.
ao: E¶ o
Demonstra»c~ ¶ bvio que a representa»c~
ao em MUR da con¯gura»c~
ao
MIR
f< r0; x 0 >; < r1 ; x1 >; ¢ ¢ ¢ ;< rn ;x n >; ¢¢ ¢g
e¶ < r1; x0 $x1 $ ¢ ¢ ¢$xn $ >. Admitimos que temos, em MUR, um pro-
grama rodareg $(k) que seja capaz de posicionar o conte¶ udo x k µ a esquerda
de forma que rodareg$ (k) =< r1 ; xk $ ¢ ¢ ¢ $xm $x0 $ ¢ ¢ ¢ $xk¡1$ >. Pre-
cisamos tamb¶ em do programa rodareg(k) que faz o mesmo sem deixar
a direita, rodareg(k) =< r1 ; xk $ ¢ ¢ ¢ $x m $x0 $ ¢ ¢ ¢ $x k¡1 >.
os s¶³mbolo $ µ
Para transformar o programa MIR P em um programa MUR P 0 ,
o tulos de P substitua as linhas de P de acordo com a tabela
preserve os r¶
abaixo:
MIR MUR
l concdir(rk ; ¾) l0 l rodareg(m + 1 + k + 1)
l:1 concdir(r1 ; ¾)
l:2 concdir(r1 ; $)
l:3 rodareg$ (m ¡ k) l0
l cortaesq(rk ; ¾) l0 l rodareg$ (m + 1 + k)
l:1 cortaesq(r1 ; ¾) l:2:¾; ¾ 2 §
l:2:¾ rodareg$ (m + 1 ¡ k)
l testa(rk ) l0 l rodareg$ (m + 1 + k)
l:1 cortaesq(r1 ; $) l:2; testa(r1 ) l
l:2 concdir(r1 ; $)
l:3 rodareg$ (m ¡ k) l0
Observa» c~a o: computamos rodareg$ (m + 1 + k) para o caso k = 0
Macro Expans~ ao
l roda1() l0 l cortaesq(r1 ; $) l0 ; testa(r1 ) l; cortaesq(r 1 ; ¾) l:¾ ¾2§
l:¾ concdir(r1 ; ¾) l ¾2§
roda() transforma x0 $x1 $ ¢ ¢ ¢ $x m $ em x1 $x1 $ ¢ ¢ ¢ $xm $x 0 $
Macro Expans~
ao
l roda() l0 l roda1()
l:1 concdir(r1 ; $) l0
116 Cap¶³tulo 5. M¶
aquinas com Registros
rodareg $ (k )
transforma x0 $x1 $ ¢ ¢ ¢ $x m $ em xk $xk+1 $ ¢ ¢ ¢ $xm $x0 $x1 $ ¢ ¢ ¢ $xk¡1 $
Macro Expans~
ao
l rodareg $ (k ) l0 l roda()
l:1 roda()
..
.
l:k ¡ 1 roda() l0
rodareg(k)
transforma x 0 $x 1 $ ¢ ¢ ¢ $xm $ em xk$xk+1 $ ¢ ¢ ¢ $xm $x0 $x1 $ ¢ ¢ ¢ $xk ¡1
Macro Expans~
ao
l rodareg(k) l0 l roda()
l:1 roda()
..
.
l:k ¡ 2 roda()
l:k ¡ 1 roda1() l0
l1 concdir(r1 ; $)
l2 concdir(r1 ; $)
l3 concdir(r1 ; $)
.. ..
. .
l m¡r+1 concdir(r1 ; $)
l m¡r+2 rodareg $(m)
onde l ¶e um novo r¶
o tulo, e os comandos
se e somente se
5.4 M¶
aquinas de Turing
Um dos primeiros modelos de m¶a quina abstrata foi a m¶aquina de Turing.
A explica»c~ao que se segue ¶e um resumo do entendimento do pr¶oprio Alan
Turing do que se constitui um computador [Tur65].
Computar ¶ e normalmente escrever s¶³mbolos em um papel1. Suponha
que o papel ¶e quadriculado, podendo ser ignorada a bidimensionalidade,
que n~ ao ¶e essencial. Suponha que o n¶ umero de s¶³mbolos ¶ e ¯nito. [¢ ¢ ¢].
O comportamento do(a) computador(a) ¶ e determinado pelos s¶³mbolos
que ele(a) observam num dado momento, e seu estado mental neste
momento. Suponha que exista um n¶ umero m¶ a ximo de s¶³mbolos ou qua-
dr¶³culas que ele(a) pode observar a cada momento. Para observar mais
ser~a o necess¶
a rias observa»c~
o es sucessivas. Admitamos um n¶ umero ¯nito
de estados mentais [¢ ¢ ¢].
Vamos imaginar que as a»c~ oes feitas pelo(a) computador(a) ser~ ao di-
vididas em opera»c ~ oes t~
ao elementares que s~ ao indivis¶³veis. Cada a»c~ ao
consiste na mudan»ca do sistema computador(a) e papel. O estado do
sistema ¶ e dado pelos s¶³mbolos no papel, os s¶³mbolos observados pelo(a)
computador(a) e seu estado mental. A cada opera»c~ a o n~ao mais de
1
O texto ¶
e de 1937
118 Cap¶³tulo 5. M¶
aquinas com Registros
Controle
² O registro r1 s¶
o pode ser acessado pela direita e o r2 pela esquerda.
² Substitui»c~
o es de letras na ¯ta s~a o feitas atrav¶es da elimina»c~a o µa
esquerda (direita) no registro r2 (r1) da letra a ser substituida e
concatena»c~ao µa esquerda (direita) da letra que substitui no mesmo
registro.
5.4. M¶
a quinas de Turing 119
registro 1 registro 2
¢¢¢ ¢ ¢¢
6 6
controle
De¯ni»c~
ao 5.4.1 Uma m¶ aquina de Turing (TM) em § ¶
e uma m¶
aquina
com dois registros e as seguintes instru»c~
o es:
As fun»c~
o es de entrada e sa¶³da para a TM s~
ao:
®r (x1 ; x 2 ; ¢ ¢ ¢ ; xr ) = f< r 1; 0 >; < r 2; x1 $x2 $ ¢ ¢ ¢ $x r $ >g
½
<y1 ; ¢ ¢ ¢ ; ys > se s · t
!s(f< r 1; x >; < r2 ; y1 $y2$ ¢ ¢ ¢ $yt$z >g) =
<y1 ; ¢ ¢ ¢ ; yt; 0; ¢ ¢ ¢ ; 0 > se s > t
1 movedir 1; testa(r2 ) 2
2 subst(r1 ; 1; 2) 4; subst(r1 ; 2; 3) 4; concesq(r2 ; 1) ± testa(r1 ) 5; subst(r1 ; 3; 1) 3
3 moveesq 2
4 moveesq 4; testa(r1 ) 5
5 f im
da tabela abaixo:
MUR TM
l cortaesq(r1 ; ¾) l 0 l cortaesq(r2; ¾) ± testa(r1 ) l 0 ; ¾ 2 §
l concdir(r1; ¾) l 0 l movedir l; concdir(r1; ¾) ± testa(r2 ) l:1 ¾ 2 §
l:1 moveesq l:1; testa(r1 ) l 0
l testa(r1) l 0 l testa(r2 ) l0
Os r¶o tulos de P 0 s~
ao os mesmos de P acrescidos dos r¶ o tulos do tipo
l:1 introduzido na substitui»c~ao da linha 2 da tabela acima. 2
' $ ' $
TM ¾ MU R
& % & @I %
@
@ ' $
@
' $ ' $
MIR
µ¡& %
LB LPM
¡ ¾ - ¡
& % & % ¡
frg fGOT Og
& % & %
5.5 Conclus~
oes e Refer^
encias
Os modelos de m¶aquinas apresentadas neste cap¶³tulo se aproximam bas-
tante das m¶
aquinas reais conhecidas como M¶a quinas RAM (Random Ac-
cess Machines). Todas estas m¶a quinas possuem um conjunto bastante
122 Cap¶³tulo 5. M¶
aquinas com Registros
5.6 Exerc¶³cios
1. Mostre que o comando LOOP pode ser implementado
em LP M ¡ fLOOPg + fIF g.
W HILE X 6
= Y;
P
END;
(a) adi»c~
ao em §2 ;
(b) multiplica»c~
ao em §1 ;
(c) ½ em §2 ;
6.1 De¯ni»
c~
ao da Linguagem
Inicialmente de¯nimos os alfabetos. Podemos adiantar que um AMR
trabalha sobre uma palavra w, transformando-a. Dado um alfabeto
e um elemento de §¤, no in¶³cio da execu»c~a o do AMR.
§, esta palavra ¶
Para manipul¶a-la, havar¶a a necessidade de s¶³mbolos auxiliares. Portanto,
125
126 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos
² l e l 0 s~
a o n¶
umeros naturais ou suas representa»c~oes, chamados
de r¶ otulos de comando e r¶ o tulo de transfer^encia, respectiva-
mente.
² x ¶e uma palavra no alfabeto ©, chamada de esquerda do co-
mando.
² y ¶
e uma palavra no alfabeto ©, chamada de direita do co-
mando.
onde subst(w; xl ; yl ) ¶
e o resultado da substitui»c~
a o da primeira ocorr^
encia
de xl em w por y l , e xl ¹ w signi¯ca que x l ¶e uma sub-cadeia de w. As
oes subst e ¹ ser~
fun»c~ ao estudadas na se»c~
ao 6.2.2.
A(i) ¶
e o trecho do AM R A come»cando no comando de r¶otulo i e
terminando no ¶ultimo comando de A.
Para o AM R A do exemplo 6.1.1, temos:
A(0) = A
A(3) = [3 : a ! 2=5; ]
2 3
1 : a1 ! 1a=1;
6 7
A(1) = 4 2 : a2 ! 2a=1; 5
3 : a ! 2=5;
e w 2 ©¤ uma cadeia.
6.1. De¯ni»
c~ao da Linguagem 129
jAj(w) = jA(0)j(w)
¶ f¶
E a cil ver que jA® j(w) = [jw]. Agora vamos renomear os r¶ o tulos do
programa P, em T M, de tal modo que seu menor r¶o tulo seja n+2 e al¶
em
disso estejam ordenados em ordem crescente a partir de n + 2, obtendo-
se o programa P 0. Agora substitua os comandos de P 0 por comandos de
AM R utilizando a seguinte tabela:
TM AMR
l concesq(r2 ; ¿ ) ± cortaesq (r2 ;¾) l 0 l : j¾ ! j¿ =l 0
l concdir(r1 ; ¿ ) ± cortadir(r1 ; ¾) l0 l : ¾j ! ¿ j=l 0
l concesq(r2 ; ¾) ± cortadir(r1; ¾) l0 l : ¾j ! j¾=l0
l concdir(r1 ; ¾) ± cortaesq(r2; ¾) l0 l : j¾ ! ¾j=l0
l cortaesq (r2 ;¾) ± testa(r1) l 0 l : [j¾ ! [j=l 0
l concesq(r2 ; ¾) ± testa(r1 ) l0 l : [j ! [j¾=l 0
l cortadir(r2 ; ¾) ± testa(r2 ) l0 l : ¾j] ! j]=l 0
l concdir(r1 ; ¾) ± testa(r2 ) l0 l : j] ! ¾j]=l 0
l testa(r1 ) l 0 l : [j ! [j=l 0
l testa(r2 ) l 0 l : j] ! j]=l 0
a esquerda do j. Se N ¶
apagar os s¶³mbolos µ e o maior r¶
o tulo utilizado em
A® Ac, seja A¯ o seguinte AMR:
2 3
N+1 : 1j ! j=N + 1;
6 N+2 : 2j ! j=N + 1; 7
6 7
6 7
6 .. 7
6 . 7
A¯ = 6 7
6 7
6 N+n : nj ! j=N + 1; 7
6 7
4 N + n + 1 : [j ! 0=N + n + 2; 5
N + n + 2 : ] ! 0=N + n + 3;
O desejado AMR que computa f ¶ ao A® AcA¯ .
e obtido pela concatena»c~
2
 ¿  ¿
¾
¡Á À Á I@@À
TM MU R
 ¿  ¿
¡ @
ª¡¡
 ¿  ¿
@
Á À Á À
AMR LB LP MIR
¡ ¾ - ¡
Á À Á À¡
¡¡µ
 " ¿ Â" ¿
frg fGOT Og
¡
-
Á À Á À
LB LP
6.2 Formaliza»
c~
ao da sem^
antica dos AMR's
ao vamos mostrar que para todo AM R A a fun»c~a o jAj ¶e uma
Nesta se»c~
fun»c~
ao parcialmente recursiva. Este resultado ¶e uma vers~ao do teorema
132 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos
A id¶
eia ¶e que a repeti»c~
a o de C vai dando os passos da computa»c~a o do
AM R A. C ¶ e obtida pela s¶³ntese de outras fun»c~oes recursivas primitivas
ao informal ¶e dada por C(A; w; i;t) =< A; w0 ; l; t0 >, onde
e sua de¯ni»c~
( (
0 li se xi ¹ w 0 se l :¹ A
w = ji : xi ! yi=li j(w); l = ; t0 =
i + 1 se xi 6
¹w ¹A
1 se l :6
² A - o AM R;
² i - o r¶
o tulo do comando que ser¶a aplicado µa palavra w;
² t - 0 se existe um pr¶
oximo comando a ser executado, 1 em caso
contr¶ario.
6.2.1 Fun»c~
oes b¶
asicas para formaliza»c~
ao
Para que a formaliza»c~
a o dos AMR's seja poss¶³vel precisamos de¯nir as
fun»c~
oes que extraem os constituintes de um AM R. Na pr¶o xima se»c~ao
vamos mostrar que estas fun»c~o es s~ao recursivas primitivas.
Fun»
c~ao 6.1 cmdo : ª¤ £ §¤1 ! ª ¤
8
< i : x i ! yi =li se A = 0 : x 0 ! y0=l0 ; ¢¢; i : x i ! yi =li;
cmdo(A; i) = i + 1 : xi+1 ! yi+1 =li+1 ; ¢¢; k : x k ! yk =lk ;
:
0 caso contr¶ario
ao cmdo(A; l) retorna o comando de r¶o tulo l de um AMR A.
A fun»c~
Para o AMR do exemplo 6.1.1, temos:
cmdo(A;11) = 11 : a2 ! 2a=1
cmdo(A;1111) = 0
Fun»
c~ao 6.2 esq : ª ¤ ! ª ¤
(
xl se s = l : xl ! y l =l 0
esq(s) =
0 em caso contr¶ario
ao esq(s) retorna a cadeia do lado esquerdo de ! de um comando
A fun»c~
s. Para o AMR do exemplo 6.1.1, temos:
esq(cmdo(A; 11)) = esq(11 : a2 ! 2a=1) = a2
esq(cmdo(A; 1111)) = esq(0) = 0
134 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos
De¯ni»
c~ao 6.2.1 De¯nimos a fun»c~
a o C , por
onde
w0 = subst(w; esq(cmdo(A; i));dir(cmdo(A; i)))
l = procom(A;
( w; i)
0 se procom(A; w; l) :¹ A
t0 =
1 em caso contr¶ario
Fun»
c~ao 6.7 ¹: ª ¤2 ! ª ¤
(
1 se x ¶e uma subpalavra de y
¹ (x; y) =
0 se x n~ao ¶e uma subpalavra de y
A fun»c~
a o R retorna o segmento inicial de x que precede y.
Fun»
c~ao 6.8 R : ª ¤2 ! ª ¤
8
>
< u se u ¶e a menor palavra tal que x = uyv
R(x;y) = para alguma palavra v
>
: 0 se y n~a o ¶e uma subpalavra de x
A fun»c~
ao V complementa a fun»c~a o R, ou seja, retorna o segmento
¯nal de x que sucede y.
136 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos
Fun»ao 6.9 V : ª ¤2 ! ª ¤
c~
(
v se x = R(x;y) _ y _ v
V (x; y) =
0 se y n~a o ¶e uma subpalavra de x
R(123121231;23) = 1
R(123; 22) = 0
V (1231231; 31) = 231
8
>
> ENT RADA X1 ; X2 ;
>
>
>
> SAIDA Y1;
>
>
>
> Z1 Ã X1 ;
>
>
>
> Z2 Ã X2 ;
>
>
>
> Z3 Ã compr(Z2 );
>
>
>
> Z4 Ã 0;
>
>
>
> Z4 Ã Z4 + 1;
>
>
< Y1 Ã 0;
P¹ LOOP Z3;
>
>
>
> LOOP Z4 ;
>
>
>
> Z5 Ã inicia(Z1; Z2 );
>
>
>
> Z 6 Ã Z 2;
>
>
>
> Z2 Ã corte(Z6);
>
>
>
> END;
>
>
>
> Z4 Ã sg ¹ (Z5 );
>
>
>
> Y 1 Ã Z 5;
:
END;
P ¹ , P R e PV n~ao possuem comandos GOT O e portanto, pelo teorema
4.3.2, computam fun»c~ o es recursivas primitivas. Deixamos para o leitor
veri¯car que P ¹ , P R e P V , computam as fun»c~oes ¹, R e V , respectiva-
mente. 2
Fun»
c~ao 6.10 parte : ª ¤ 2 £ §¤1 ! ª ¤
8
>
> u se x ¹ w e u ¶e a subpalavra de w
>
>
>
< que ocorre entre a k-¶esima
parte(w ;x; k) = e a k + 1-¶esima ocorr^encias
>
>
>
> disjuntas de x em w
>
:
0 em caso contr¶a rio
Por exemplo, parte(1221212122121;121; 1) = 2122, pois a primeira
e segunda ocorr^encias disjuntas de 121 em 1221212122121 s~ao as subli-
nhadas.
138 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos
f = ¹ ±((esq ± cmdo) £ Ã
¶) !
3
g1 = (_ ±(¶ £ (s ± z ))) ±
3
à !
3
g2 = rseg ± cmdo ±
1 3
2
onde a fun»c ~
ao testerot testa se o r¶otulo do pr¶
oximo comando a ser
executado ocorre ao lado esquerdo de algum comando do AMR. Logo,
quando testerot(A; w0 l) = 1, C r p¶
ara.
à !
3
testerot = sg± ¹ ±((_ ±(procom£ :)) £ ¶) ±
1 2 3 1
2
Demonstra»c~
ao: ()) Basta percorrer o ciclo da ¯gura 6.2, de LB at¶
e
AMR.
(() Como
®r (x1 ; x 2; ¢ ¢ ¢ ; xr ) = x 1 _ $ _ x 2 _ $ ¢ ¢ ¢ _ $x r _ $ = x 1$x 2 $ ¢ ¢ ¢ $x r $
½
< parte(x; $; 0); ¢ ¢ ¢ ; parte(x; $; s ¡ 1) > se x = x1 $x 2$ ¢ ¢ ¢ $x s$
w s(x) =
< 0; 0; ¢ ¢ ¢ ; 0 > caso contr¶
ario
pelo lema 6.2.5, (I ) ¶
e parcial recursiva. 2
' $ ' $
TM ¾ MU R
¡& % & I@ %
¡ @
' $
¡ @ ' $
¡ª @
' $ ' $
AMR MI R
& @I %
¾ -
µ¡& %
LB¡ LP ¡
frg
& % & % ¡
fGOT Og
@
@ ' " $ ' " $¡
@R ¡
LB - LP M
& % & %
6.3 Enumera»
c~ao efetiva dos AMR's
Pela igualdade (I ) no ¯nal da se»c~a o 6.2.2, a fun»c~ao f : Wr ! Ws depende
de A, que ¶ e o c¶
odigo de um particular AMR. Este c¶odigo ¶e uma palavra
do alfabeto § [ fa; bg [ f:; !; =; ; g, onde § ¶e o alfabeto de entrada para
o AMR A.
O objetivo desta se»c~ ao ¶ e de construir uma enumera»c~ao dos AMR's,
via uma fun»c~ ao recursiva primitiva EA : ª ¤ ! ª ¤ , de modo que, se rep-
resentarmos os n¶ umeros naturais no alfabeto ª, possamos nos referir ao
i¡¶esimo AMR EA (i). Assim, o conjunto de todos os AMR's constru¶³dos
no alfabeto ª, EA (0);EA(1); ¢ ¢ ¢ ; EA (i); ¢ ¢¢, computam todas as fun»c~o es
recursivas parciais, '0 ; '1 ; ¢¢ ¢ ; 'i ¢ ¢ ¢.
Esta correspond^ encia dos AMR's, agora enumerados de maneira efe-
tiva, nos fornece recursos para uma discuss~ao rigorosa sobre certos resul-
tados importantes abordados no pr¶o ximo cap¶³tulo, que trata do estudo
abstrado de algoritmos, independente de representa»c~ao concreta.
Com este objetivo precisamos construir algumas fun»c~o es auxiliares.
Fun»
c~
ao 6.11 (N¶
umero de ocorr^
encias disjuntas de x em w)
6.3. Enumera»
c~
ao efetiva dos AMR's 141
De¯nimos oc : §¤ £ §¤ ! §¤ como
(
n se x ocorre n vezes disjuntas em w
oc(w; x) =
0 se x n~
a o ocorre em w
Note que, em f(0; 122121221; 12) =< 1; 2121221; 12 > a cadeia 12 inicia
122121221 assim V (122121221; 12) = 2121221, a reaplica»c~a o sucessiva
de f tem um resultado que se estabiliza, como mostrado abaixo:
e na primeira proje»c~
a o do resultado temos o n¶
umero de ocorr^encias de-
sejado. O leitor deve veri¯car que
à ! à !
3 # 2
oc = ± f ± (z
z £ ¶2 £ compr) ±
1 1 2 1
Na constru»c~
ao da fun»c~ao C convencionamos que os AMR's s~a o pa-
lavras da forma
k
z }| {
0 : x0 ! y0 =l0 ; 1 : x 1 ! y 1=l1 ; ¢ ¢¢ ; 11 ¢ ¢ ¢1 : xk ! y k =lk ;
Os pr¶
oximos resultados levam em conta esta conven»c~a o.
142 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos
(IH ) ÂA = Â 0 ^ H
A
que, claramente, ¶
e recursiva primitiva. Note que, se
y = 0 : x0 ! y0 =l0 ;1 : x1 ! y1 =l 1; ¢ ¢ ¢ ; k : xk ! yk =lk ;
x = 0 e z = 0, temos:
R(y;:) = 0
V (y; ; ) = 1 : x1 ! y1 =l 1; ¢ ¢ ¢ ; k : xk ! y k =lk ;= y 0
portanto
à !
3
H = igual ± ± f # ± (z
z £ ¶ £ z £ oc ± (¶£; )) ± ±
1 3
onde oc(w; ; ) ¶e o n¶
umero de terminadores de comando ;, e portanto o
n¶
umero de comandos. Assim H ¶ e recursiva primitiva. 2
fun»c~
a o ·n;m que converte uma cadeia de s¶³mbolos de um alfabeto §n
em uma cadeia de outro alfabeto §m , de modo que o valor num¶erico
seja o mesmo, ou seja ·n;m (x) = y se e somente se ºn (x) = º m (y).
De¯nimos tamb¶em a extens~ ao ·n;m . Estas fun»c~oes s~a o fundamentais
para a constru»c~ ao EA.
ao da fun»c~
a o EA transforma um n¶
A fun»c~ u mero natural i, representado no al-
fabeto ª = §m em uma palavra EA (i) do mesmo alfabeto que ¶e um
programa AMR. Note que, se i ¶e uma cadeia do alfabeto de entrada
§ = §n e sua transformada pela fun»c~ao ¹·n;m for um programa AM R,
o resultado de EA (i) ¶
e esta transformada; caso contr¶a rio o resultado ¶e o
AMR 0 : 0 ! 0=0;.
Corol¶
ario 6.3.2 Uma fun»c~ ao f : §¤r ! §¤s ¶e parcialmente recursiva
em § se e somente se existe i 2 §¤ , tal que f = ws ± jEA(i)j ± ®r.
¤
a o: E¶ uma conseqÄ
Demonstra»c~ u^encia imediata dos teoremas 6.2.1 e 6.3.2.
2
ou simplesmente por
'0; '1 ; ¢ ¢ ¢ ;' i
quando n~ao houver abmbigÄ uidade. Os n¶umeros naturais 0;1; ¢¢ ¢ ; i; ¢ ¢¢
s~
ao chamados de ¶³ndices dos programas AMR. Temos, ent~ao, o seguinte
resultado imediato.
Corol¶ a o f : §¤r ! §¤s ¶
a rio 6.3.3 Uma fun»c~ e parcialmente recursiva
em § se e somente se existe i 2 §¤ , tal que f = rs 'i.
¤ 2
0 : x0 ! y0 =l0 ;
1 : x1 ! y1 =l1 ;
.. ..
. .
k : xk ! y k =l k ;
m -
Programa
para - jEA(m)j(x)
x
- U
k¡1 Ã !
^ 4
¹
sg ± C #(EA(m);®r (xr ); 0;j )
j=0
4
que evidentemente ¶
e recursiva primitiva. 2
6.4 Conclus~
oes e Refer^
encias
Com os resultados deste cap¶³tulo conclu¶³mos o que designamos como E-
vid^encias para a Tese de Church. Completamos um circuito interessante,
no sentido de que cada modelo de computabilidade apresentado tem ca-
racter¶³sticas que se assemelham com alguns paradigmas da computa»c~a o.
O leitor pode se perguntar o que podemos fazer com a cren»ca de que a
Tese de Church ¶ e v¶
alida. A resposta ¶e bastante simples: o leitor pode
utilizar o conhecimento adquirido nestas notas para o projeto de lin-
guagens de programa»c~ a o, principalmente tendo em vista sua adequa»c~ao
para resolver um problema particular, sabendo que se na de¯ni»c~ao desta
linguagem ele considerou algum mecanismo de programa»c~ao duvidoso
quanto a sua computabilidade ele pode tentar mostrar que poderia si-
mular tais mecanismos em um dos modelos apresentados, ou uma mis-
tura de tais modelos. Esta ¶e uma das vantagens da multiplicidade de
paradigmas.
6.5 Exerc¶³cios
1. Compute o resultado do AMR abaixo aplicado µa palavra 221.
0 : 0 ! c=1;
1 : c1 ! 1ac=1;
2 : c2 ! 2bc=1;
3 : c ! 0=4;
4 : ¿ ¾ ! ¾¿ =4; ¿ 2 fa; bg; ¾ 2 f1; 2g
5 : a ! 1=5;
6 : b ! 2=6;
f im : §¤ !
(
§
(b) ¾ se x = x 0¾; ¾ 2 §
f im(x) =
0 se x = 0
compr : §¤ !
(§
¤
(c) 0 se x = 0
compr(x) =
compr(x0 ) + 1 se x = x0 ¾; ¾ 2 §
_: §¤ £ §¤ ! §¤
(d) _ (x; 0) = x
_ (x; y¾) =_ (x; y)¾
½ : §¤ ! §¤
(e) ½(0) = 0
½(x¾) = ¾½(x)
corte : §¤ !
(
§¤
(f) x0 se x = ¾x0 ; ¾ 2 §
corte(x) =
0 se x = 0
prims : §¤ !
(§
(g) ¾ se x = ¾x 0; ¾ 2 §
prims(x) =
0 se x = 0
segin : §¤ £ §¤ ! §¤
segin(¾ k ¢¢ ¢ ¾0 ; 0) = 0(
(h)
¾k ¢ ¢¢ ¾0 se k < y
segin(¾ k ¢¢ ¢ ¾0 ; y) =
¾k ¢ ¢¢ ¾k¡y+1 se k ¸ y
sef in : §¤ £ §¤ ! §¤
sef in(¾ k ¢ ¢ ¢ ¾0 ; 0) = ¾
(k ¢ ¢ ¢ ¾0
(i)
0 se k < y
sef in(¾ k ¢ ¢ ¢ ¾0 ; y) =
¾ y¡1 ¢ ¢ ¢ ¾0 sek ¸ y
inicia : §¤ £ §(¤ ! §¤
(j) 1 se y = xz, para algum z 2 §¤
inicia(x; y) =
0 caso contr¶
a rio
Algoritmos e suas
Propriedades
Nesta se»c~
ao, discutimos intuitivamente o conceito de algoritmo e a par-
tir de um tratamento informal desta no»c~ao chegaremos a delinear suas
propriedades fundamentais. O leitor deve trazer consigo o entendimento
de algoritmo adquirido de sua experi^encia com programa»c~ao de com-
putadores ou com resolu»c~ao de problemas matem¶aticos, al¶em da tese de
Church.
7.1 Algoritmos
Um algoritmo ¶ e uma descri»c~ao do c¶a lculo ou avalia»c~ao de uma fun»c~a o de
maneira sistem¶ a tica. Tanto o algoritmo de bubble sort para ordena»c~ao
de uma lista de cadeias armazenada na mem¶o ria do computador, como
o algoritmo da divis~ a o que realizamos no papel, com a utiliza»c~a o de
esquemas gr¶a¯cos, possuem esta caracter¶³stica. As principais no»c~oes
associadas a este conceito s~ao enumeradas abaixo.
151
152 Cap¶³tulo 7. Algoritmos e suas Propriedades
naturais, etc.
A no»c~
a o de algoritmo ¶e sutilmente diferente da no»c~a o de programa j¶a
que esta ¶ultima j¶a vem acompanhada de uma linguagem espec¶³¯ca: pro-
grama Pascal, por exemplo. Esta distin»c~ao n~a o ¶e fundamental portanto
utilizamos as duas denomina»c~oes com o mesmo signi¯cado.
A princ¶³pio, ¶
e importante compreender a distin»c~a o entre o algoritmo
e o agente que o computa. Sendo uma fun»c~ao um mapeamento entre
elementos de um dom¶³nio e sendo que o agente computador ¶e deter-
min¶³stico, segue-se naturalmente que o resultado desta computa»c~ao de-
¯ne uma fun»c~ ao parcial de n vari¶a veis. Tendo estabelecido estes fatos,
dizemos que um algoritmo computa uma fun»c~ao parcial.
7.2. Fam¶³lias Abstratas de Algoritmos 153
4. caso contr¶
a rio, i ¶
e ¶³ndice de um algoritmo arbitrariamente escolhi-
do, ¾0 por exemplo.
154 Cap¶³tulo 7. Algoritmos e suas Propriedades
Proje»
c~oes: para cada n ¸ 0 e cada 0 · i · n, pr ni : N n ! N ,
prni (xn ) = xi
que corresponde a caso ± (f; c10 ; c10; h(1) ), onde h (1) ¶e a fun»c~ao vazia de
aridade 1. Nesta fun»c~ao composta h¶a um defeito muito interessante,
que ocorre frequentemente na programa»c~ao pr¶atica. Do ponto de vista
matem¶ atico, se h diverge em todos os pontos, f 0 tamb¶em diverge. En-
tretanto, do ponto de vista algor¶³tmico, f 0 diverge sempre, somente se
todos os seus par^ ametros forem \avaliados" previamente, um esquema
de chamada a subrotinas conhecido como chamada por valor. Alter-
nativamente, a chamada por nome implicaria a avalia»c~a o posterior dos
par^ametros.
Para corrigir a fun»c~a o f 0 podemos utilizar a fun»c~ao universal, que
implementa naturalmente a chamada por nome. Seja i o ¶³ndice de c10 e
j o ¶³ndice de h, ent~
ao:
f 0 = U (2) ± (caso ± (f; c10 ;c1i ; c1j ); pr11 )
Se D ¶
e algor¶³tmica em © ent~
a o a fun»c~ ^ tamb¶
ao D em ¶e algor¶³tmica ©,
onde (
^ 0 se D(x; x) = 0
D(x) =
" se D(x; x) 6=0
^ = U (2) ±(caso ±(D± (pr1 ;pr1 ); c10 ;c10 ; c1j ); pr1 ), onde 'j ¶
pois D e a fun»c~
ao
1 1 1
vazia. Logo (
^ 0 se 'x(x) "
D(x) =
" se 'x(x) #
^ Ent~
Seja w o ¶³ndice de D. a o:
(
^ 0 se 'w (w) "
D(w) =
" se 'w (w) #
para todo i; x1 ; ¢ ¢¢ ; xm ; y1 ; ¢ ¢ ¢ ;y n.
Esta propriedade ¶ e tamb¶em chamada s-m-n ou propriedade do ¶³ndice.
A segunda denomina»c~ ao ¶e devida µas diversas fun»c~oes que calculam ¶³n-
dices e cuja computabilidade dentro da fam¶³lia ¶e conseqÄu^encia direta da
propriedade 5. O pr¶ oximo teorema trata do c¶a lculo do ¶³ndice da fun»c~ao
composta.
O ponto ¯xo de uma fun»c~ ao f ¶e um argumento x tal que 'x = 'f (x) ,
ou seja, x e f (x) s~a o ¶³ndices da mesma fun»c~ao. Como discutimos an-
teriormente, uma fun»c~ ao possui ¶³ndices distintos, portanto f(x) = x ¶e
apenas um caso trivial de ponto ¯xo. O resultado que apresentamos
nesta se»c~
a o, o teorema da recurs~ a o, garante a exist^encia de um ponto
¯xo para qualquer fun»c~ ao total algor¶³tmica em uma fam¶³lia padr~ao de
algoritmos e ainda mostra como este ponto ¯xo pode ser efetivamente
obtido.
O conte¶
udo do teorema da recurs~a o pode ser melhor apreciado no
seguinte argumento informal. Seja f uma fun»c~ao total algor¶³tmica em
uma linguagem de programa»c~a o pseudo-Pascal, cujos programas s~ao in-
dexados de alguma maneira P0 ; P1; ¢ ¢ ¢. Seja Pi o algoritmo que computa
f. Imagine ent~
a o que o seguinte algoritmo seja implement¶a vel nesta lin-
guagem, para um dado natural u:
P(x)
begin
w = Pu (u)
Pw = Constroi(w)
return Pw(x)
end
P~g(u) (x)
begin
w = Pu (u)
Pw = Constroi(w)
return Pw(x)
end
Se Pk ¶
e o algoritmo que computa g~, ent~ao podemos implementar a com-
7.3. Teorema da Recurs~
ao 161
ao f ± ~
posi»c~ g com o seguinte programa:
Pv (x)
begin
y = Pk (x)
return P i(y)
end
Note o que acontece com o programa Pg(v)
~ :
P~g(v )(x)
begin
w = Pv (v) = f ± ~g(v)
Pf ±~g(v ) = C onstroi(f ± ~g (v))
return Pf ±~g(v ) (x)
end
Logo P~g(v) (x) = Pf ±~g(v) (x) para todo x e portanto ~g (v) ¶e um ponto ¯xo
de f.
Deixando de lado a linguagem pseudo-Pascal, seja © uma fam¶³lia
abstrata padr~ a o. Os pontos deste argumento a serem evidenciados s~a o:
i) a exist^encia do algoritmo para ~g em ©; ii) a exist^encia do ponto ¯xo
para qualquer f algor¶³tmica em ©.
Demonstra»c~
ao: Demostraremos para o caso de n = 1. Seja w tal que
(
''u (u) (x) se U (2) (u; u) = 'u (u) #
' w(u; x) = U (2) (U (2) (u; u); x) =
" se U (2) (u; u) = 'u (u) "
Como 'w ¶
e algor¶³tmica em ©, pela propriedade s-m-n
para uma fun»c~ao s total. Logo basta fazer g~ = s ± (w; pr 11), que ¶
e total e
algor¶³tmica em ©. 2
162 Cap¶³tulo 7. Algoritmos e suas Propriedades
A conclus~ a o mais ¶
obvia do teorema da recurs~ao ¶e a exist^encia de
diversos algoritmos que computam a mesma fun»c~ao. Outra conclus~a o
interessante ¶e a exist^
encia de algoritmos sucessivos que computam a
mesma fun»c~ ao pois, seja f = suc, ent~ao ' m = 'suc(m) = 'm+1 para
algum m.
Uma aplica»c~ ao muito importante do teorema da recurs~a o, que torna
muito claro a denomina»c~ a o do teorema, ¶e motivada pelo seguinte exem-
plo. Seja a fun»c~ao
f (x; y) = ' i(x; y + 1) + 1
e seja g(i) o ¶³ndice de f para um dado i. A fun»c~ao g pode ser obtida
como no lema 7.3.1. Ent~ a o:
Ent~
ao pelo teorema da recurs~a o temos que para algum m
Logo
(
U (3)(a; x; y) = 'a (x; y) = pr 21(x; y) se x = y
'm (x; y) =
U (3)(g(m); x; y) = 'g(m) (x; y) se x 6
=y
e portanto
(
x se x = y
'm (x;y) =
'm (x; y + 1) + 1 se x 6
=y
f (x1 ; ¢ ¢ ¢ ;x n; 0) = g(x1 ; ¢ ¢ ¢; x n)
f (x1 ; ¢ ¢ ¢ ;x n; y + 1) = h(x1 ; ¢¢ ¢ ; xn ; y; f (x1 ; ¢ ¢ ¢; xn ; y))
f(x1 ; ¢¢ ¢ ; xn ) = ¹z(g(x1 ;¢ ¢ ¢ ; xn ; z) = 1)
Pf (xn )
begin
cond = 0
y = ¡1
while cond <> 1 do
y =y+1
cond = g(x n; y)
return y
end
Ent~
a o f (x) = M (x; 0). Demonstraremos a exist^encia do algoritmo para
M em ©. Seja ° a fun»c~ a o total tal que
(
(n+1) 0 se g(x n; z) = 1
' °(u) (xn ; z) = (n +1)
'u (x n; z + 1) + 1 se g(x n; z) 6
=1
166 Cap¶³tulo 7. Algoritmos e suas Propriedades
Logo, '(n+1)
°(u) ¶e algor¶³tmica em © (utilizando caso e composi»c~ao de fun-
»c~
oes algor¶³tmicas em ©). Pelo teorema da recurs~ a o, existe um m tal
que
(
0 se g(xn ; z) = 1
'(n+1)
m (xn; z) = (n+1)
'm (xn ; z + 1) + 1 se g(xn ; z) 6
=1
(n +1)
Logo, 'm e a fun»c~
¶ ao M pretendida. 2
Seja a fun»c~
ao ' z computada pelo programa
Pz (x)
begin
C1
..
.
Cn
end
1. substitui»c~
ao das chamadas µa s subrotinas pelos programas das pr¶o -
prias subrotinas, at¶e que n~ao haja mais chamadas;
3. adi»c~
ao do comando cont = 0 logo ap¶os begin , onde cont ¶e uma
vari¶a vel que n~
a o ocorre em Pz
4. substitui»c~
ao de toda ocorr^encia do comando while cond do pelo
comando for var = 1 to max do , onde var ¶e uma vari¶avel que
n~
ao ocorre em Pz ;
5. substitui»c~
ao de toda ocorr^encia do comando return k por
Ci0
if k <> y then return 0 else return 1
Ci0
if cont = max then return 0 else cont = cont + 1
T (z; x; y)
begin
P = Constroi(z)
P 0 = Transf orma(P)
return P 0 (x; 1 ¯2 (y); 2 ¯2 (y))
end
por:
F NK (x)
begin
beta = ¡1
cond = 0
while cond <> 1 do
beta = beta + 1
cond = T (z; x; beta)
return 1 ¯2 (beta)
end
As fun»c~
oes de pareamento geram todos os pares < valor; passos > de
n¶
umero naturais, enquanto o valor da vari¶avel beta percorre os naturais.
Recapitulando a forma normal de Kleene 'z (x) = p(¹y(t(z; x;y) = 1)),
temos:
7.5 Tradu»
c~
ao entre Fam¶
³lias Padr~
ao
Observamos que a de¯ni»c~a o da fun»c~ao s no teorema 7.4.1 acima depende
fortemente da linguagem utilizada para escrever o algoritmo e do agente
computador, por causa da no»c~ao de passo. No entanto, podemos admitir
pela tese de Church que, se existe em alguma das caracteriza»c~o es das
fun»c~
oes comput¶aveis, um algoritmo que compute Pz(x) p¶ ara com sa¶³da
170 Cap¶³tulo 7. Algoritmos e suas Propriedades
'tr©(r) = Ãr
onde 'tr©(r) ¶
e algor¶³tmica em ©.
Demonstra»c~a o: Pela propriedade 3, seja UÃ(2) a fun»c~
a o universal de ari-
(2) (2)
dade 2 de ª, ent~
a o U à (r; x) = Ãr (x). Seja k o ¶³ndice de U à em ©,
(2)
isto ¶e U Ã (r; x) = 'k (r; x). Pela propriedade 5, existe uma fun»c~ ao total
s1;1 algor¶³tmica em ©, tal que 'k (r; x) = 's1; 1 (k;r) (x). Logo, basta fazer
¶Indices de © 0 q
6
tr©
¶Indices de ª 0 q
Demonstra»c~
ao: Seja a fun»c~
a o de¯nida por
8
>
> 0 se existe k < x tal que s(z; k) = s(z; x)
>
>
>
>
<
1 se para todo l < x; s(z; l ) 6
= s(z; x) e
(I) ' g(z) (x; y) =
>
> existe k; x < k e k · y tal que
>
>
>
> s(z; k) = s(z; x)
:
' f(x) (y ) caso co ntr¶
a rio
Utilizando a propriedade s-m-n, podemos demonstrar que g ¶
e total.
Ent~ ao, existe i 2 N tal que
a o, pelo teorema da recurs~
'g(i) (x; y) = 'i (x; y)
Podemos reescrever (I) como
8
>
> 0 se existe k < x tal que s(i; k) = s(i; x)
>
>
>
>
>
<
1 se para todo l < x; s(i; l) 6
= s(i; x) e
(II) 'i (x; y) =
>
> existe k; x < k e k · y tal que
>
>
>
> s(i;k) = s(i; x)
>
:
'f (x) (y) caso contr¶ario
Vamos mostrar que s(i;x) ¶ e injetiva em x. Para cada z 2 N de¯nimos
o conjunto
Az = fwjw < z e s(i; w) = s(i; z)g
E¶ f¶
a cil ver que s(i; x) ¶e injetiva em x se e somente se A z = ; para
todo z 2 N . Suponha que s(i; x) n~ ao ¶e injetiva em x. Ent~
ao existe
j 2 N tal que Aj 6 = ;. Seja m o menor elemento de Aj , ent~ ao m < j,
s(i; m) = s(i; j) e portanto por (II)
(III) 'i (j; y) = 0 para todo y 2 N
Ainda, como m ¶e o menor elemento de A j , para todo l < m, s(i; l) 6
=
s(i; j). Como existe k = j tal que m < k e s(i;m) = s(i; k) = s(i; j),
temos que, por (II)
(IV) ' i(m; j) = 1 = ' s(i;m)(j) = ' s(i;j) (j) = 'i(j; j)
fazendo y = j em (III) temos '(j; j) = 0 o que contraria (IV). Assim,
para todo z 2 N , Az = ; logo s(i; x) injetiva em x. Portanto, por (II)
temos que
'i(x;y) = 's(i;x) (y) = 'f (x) (y)
2
172 Cap¶³tulo 7. Algoritmos e suas Propriedades
'tri©(r) = Ãr
onde 'tri©(r) ¶
e algor¶³tmica em ©.
Demonstra»c~a o: Pelo teorema 7.5.1 existe uma fun»c~ a o tr© total tal que
'tr©(x) = Ãx. Pelo lema 7.5.1, seja i tal que ' trª(x) = 's(i;x) e s(i; x) ¶
e
injetiva em x. Ent~ 1 1
ao, basta de¯nir tri© = s ± (ci ; pr 1), assim
'x = 'en©(x;y)
Ãx = Ãenª(x;y)
(I ) ¢ ¢ ¢' triasc©(x) = Ãx
e al¶em disso
Demonstra»c~
ao: Intuitivamente queremos uma fun»c~a o que traduza cada
programa x de ª para © e ent~
a o introduza comandos sup¶er°uos at¶e que
tenha o tamanho desejado. De¯nimos
que ¶
e claramente recursiva primitiva e satisfaz as (I) e (II ) acima. 2
¶ 0 q q
Indices de ©
6 triasc© ¤ 6
t¤
q q
s
¶ 0 ? ? triascª
Indices de ª
'trb© (x) = Ãx
o es s ¤ e t¤ por
Inicialmente, de¯nimos as fun»c~
(
¤ y se existe y tal que triascª(y) = x
s (x) =
0 caso contr¶ario
(
¤ y se existe y tal que triasc©(y) = x
t (x) =
0 caso contr¶a rio
Dado um ¶³ndice x na fam¶³lia ©, podemos de¯nir a seqÄ
u^
encia
Indices de © s s s s
¶ 0
q
qq
6 ¤ 6 ¤ 6 ¤
s¤ s¤
s s s
t t t
¶ ? ?
Indices de ª
0 I ¤
(t ± s¤ )l
©s
0 A linha pontilhada repre se nta
6 ¤
uma das op» c~
o es:
s
ou
ª a o existe ¶³ndice y em © tal que triasc ª(y) = (t¤ ± s ¤)l
n~
0
Note que, a seqÄ
ue^ncia termina em ª em duas situa»c~ o es:
De¯nimos a fun»c~
ao
(
1 se Ax termina em ª
T erminaEmª(x) =
0 se Ax termina em ©
e a fun»c~
ao
(
triasc©(x) se T erminaEmª(x) = 1
trb©(x) =
s¤ (x) se T erminaEmª(x) = 0
1. se T erminaEmª(x)= 1 ent~
a o 'tr b©(x) = 'triasc©(x) = Ãx
2. se T erminaEmª(x) = 0 ent~
ao 'tr b©(x) = 's¤(x) = Ã triascª(s¤ (x)) =
Ãx
2. trb© ¶
e sobrejetora: seja y um ¶³ndice de ©, ent~
a o existe um ¶³ndice x
de ª tal que trb©(x) = y, pois analisando triascª(y), veri¯camos
que:
7.6 Conclus~
o es e Refer^
encias
As principais propriedade da computa»c~ao forma discutidas neste cap¶³-
tulo. Assim, pretendemos sumarizar e consolidar as caracteriza»c~oes das
fun»c~
o es comput¶aveis vistas nos anteriores. A disposi»c~ao inicial do ma-
terial foi baseada em [Hen77], com a adi»c~a o de exemplos em linguagem
pseudo-Pascal para aumentar o entendimento. Os resultados do teorema
da Recurs~ ao e da Forma Normal podem ser encontrados amplamente
na literatura. O teorema de isomor¯smo de Rogers ¶e mais raro, mas
pode ser encontrado em [MY78]. A import^a ncia deste ¶ultimo teorema
¶e o enorme refor»co µ
a tese de Church, j¶a que, qualquer modelo de com-
puta»c~
ao com as 5 propriedades b¶asicas, mesmo possuindo propriedades
supostamente mais poderosas, ¶e recursivamente isormofo aos modelos j¶a
conhecidos.
7.7 Exerc¶³cios
1. Seja h uma fun»c~
ao total de tr^es vari¶a veis. Sejam as fun»c~o es:
e algor¶³tmica em ©.
¶
17. Seja © uma fam¶³lia padr~ao de algoritmos. Mostre que existe uma
fun»c~
ao f algor¶³tmica em © tal que, se 'm ¶e bijetora, ent~a o 'f (m) =
('m )¡1, para algum m.
180 Cap¶³tulo 7. Algoritmos e suas Propriedades
18. Seja © uma fam¶³lia padr~a o de algoritmos. Mostre que existe uma
fun»c~
a o f algor¶³tmica em © 'f (x) (y) = ' y(x) para todo x e y.
Utilize este resultado para demonstrar que existem m e n naturais
distintos tais que 'n (m) = ' m (n).
Cap¶³tulo 8
Solubilidade de Problemas
e, se x 2 A ent~ao ÂA(x) = 1, se x 6
Isto ¶ 2 A ent~ao ÂA (x) = 0. Por
exemplo, qualquer conjunto ¯nito, ou com complemento ¯nito, ¶e recur-
181
182 Cap¶³tulo 8. Solubilidade de Problemas
sivo, j¶
a que para veri¯car a pertin^encia de um elemento basta percorrer
uma lista ¯nita e responder 1 no primeiro caso ou 0 no segundo caso. O
conjunto N , o conjunto dos pares e dos ¶³mpares s~a o exemplos de con-
juntos recursivos in¯nitos. Um corol¶a rio imediato desta de¯ni»c~ao ¶e que,
se um conjunto ¶e recursivo, ent~a o seu complemento tamb¶em ¶e recursivo.
Um conjunto A ¶ e recursivamente enumer¶a vel se existe uma meneira
efetiva de veri¯car a pertin^encia de um dado elemento a A, mas a n~a o-
pertin^encia n~
ao ¶
e necessariamente veri¯c¶a vel. O enunciado da de¯ni»c~a o
a seguir captura a no»c~a o de procedimento efetivo de obten»c~ao dos ele-
mentos de A atrav¶ es de uma fun»c~a o recursiva parcial.
De¯ni»c~
ao 8.1.2 Um conjunto A ¶ e recursivamente enumer¶ a vel se e so-
mente se existe uma fun»c~
ao parcialmente recursiva f tal que A=img(f).
1. A ¶
e recursivamente enumer¶
avel (de¯ni»c~
ao 8.1.2).
Demonstra»c~
a o:
I tera(m; x)
P'm (x) begin
begin y=0
y = Itera(m; x) while :T : do
return p(y) if t(m;x; y) = 1 then return y
end y = y+1
end
Se A 6
= ;, tomando-se a 2 A, constru¶³mos o seguinte:
P f(x; y)
begin
if t(m;x;y) = 1 then return P 'm (x)
else return a
end
Sendo f a fun»c~
ao computada por P f, analisando o programa acima
veri¯ca-se que, se b 2 img(f ) ent~a o b = a ou b 2 img('m ) = A.
Se b 2 A = img('m ), ent~ ao existe x0 tal que 'm (x0 ) = b, ent~
ao,
para algum y0 , t(m; x0 ; y0 ) = 1, ent~ ao Pf (x0 ; y0 ) = b, ent~
ao
b 2 img(f). Portanto A = img(f).
2.)3. Seja g uma fun»c~ a o recursiva tal que A = img(g). Assim, temos
que g(0); g(1); ¢ ¢ ¢ 2 A. Em geral, haver¶ a i e j, tal que i < j e
g(i) = g(j). Considere o programa abaixo que, dado um natural
t, veri¯ca qual o t-¶esimo natural x tal que g(x) 6 = g(y) para todo
y < x:
Prox(t)
begin
if t = 0 return 0
x=0
while :T: do (*)
if x > Prox(t ¡ 1) then
bool = 1
for i = 0 to Prox(t ¡ 1) do
bool = bool:AN D:(g(i) 6
= g(x))
if bool = 1 return x
x=x+1
end
184 Cap¶³tulo 8. Solubilidade de Problemas
P¶A (x)
begin
y= 0
while :T: do
if f (x; y) = 1 return x
y= y+1
end
1. Se A ¶e recursivo ent~
ao A ¶e recursivamente enumer¶
a vel.
186 Cap¶³tulo 8. Solubilidade de Problemas
P f(x)
begin
while :T: do
if ÂA (x) = 1 return x
end
Obviamente, se f ¶
e fun»c~
a o computada por P f, A = img(f ). 2
2. A ¶e recursivo se e somente se A e A s~
a o recursivamente enu-
mer¶aveis.
Demonstra»c~
ao:
()) Se A ¶e recursivo ent~
ao A ¶e recursivo, logo pelo item 1 ambos
s~
ao recursivamente enumer¶ a veis.
(() Se A e A s~ ao recursivamente enumer¶
a veis ent~
a o existem
fun»c~
o es f e g recursivas tal que:
_ _
ÂA (x) = f(x; y) e ÂA (x) = g(x; y)
y y
P ÂA (x)
begin
y= 0
while :T: do
if f (x; y) = 1 return 1
if g(x; y) = 1 return 0
y= y+1
end
Supondo que tal fun»c~a o recursiva exista, pela tese de Church podemos
construir o seguinte programa:
Parada(x; y)
begin
Px = Constroi(x)
if Px (y) ¸ 0 then return 1
else return 0
end
I nverte(x)
begin
if Parada(x; x) = 1 then
while :T: do
y =y
else return 1
end
¶
Suponha que existe um programa recursivo Econst que computa
a fun»c~
a o f. Considere o seguinte programa e sua transforma»c~a o
pelo teorema s-m-n:
Executa(x; y)
ExecutaT(y)
begin
begin
Px = Constroi(x)
Pt(t)
Px(x)
return 0
return 0
end
end
P arada(x)
begin
i = ObtemI ndice(Executa; x)
¶
return Econst(i)
end
onde Pi ¶e o programa
ExecutaX(y)
begin
Px (x)
return 0
end
P arada(x)
begin
i = ObtemI ndice(Executa; x)
return N aImagem(i; 0)
end
recursivo, j¶
a que 0 est¶a na imagem de ExecutaX se e somente se
Px (x) converge.
¶ y; z) ¶e recursivo, ter¶³amos
supondo que V alorDeEm E(x;
Parada(x)
begin
i = ObtemIndice(Executa; x)
¶
return V alorDeEm E(i;0; 0)
end
recursivo, j¶
a que ExecutaX, com entrada 0, p¶ara com 0 se e so-
mente se Px (x) converge.
Parada(x)
begin
i = ObtemIndice(Executa; x)
return Igual(i; j)
end
O pr¶
o ximo teorema ¶
e bastante ¶util para demonstra»c~o es de insolubi-
lidade de problemas, como um atalho poderoso.
2. existe f1 2 C , ou seja C n~
ao ¶
e vazia;
3. existe f2 6
2 C, ou seja C n~
ao cont¶
em todas as fun»c~
o es recursi-
vas parciais;
e suas transforma»c~
o es pelo teorema s-m-n:
P g(i) conclus~
ao P g(j) conclus~
ao
a o Pt(t) ".
Podemos a¯rmar que, se P g(i) = 0 ou se P g(j ) = 1 ent~
Se Pg(i) = 1 e Pg(j) = 0 ent~
a o:
192 Cap¶³tulo 8. Solubilidade de Problemas
Logo:
8.3 Conclus~
o es e Refer^
encias
Com este cap¶³tulo, fechamos o estudo da tese de Church, concluindo
nosso objetivo de caracterizar o comput¶a vel e exempli¯car o n~a o-com-
8.4. Exerc¶³cios 193
8.4 Exerc¶³cios
1. Mostre que a seguinte fun»c~ao ¶e equivalente ¶a fun»c~a o que computa
o problema da parada.
(
1 se 'x(x) #
g(x) =
0 se 'x(x) "
Sistemas Formais
195
Cap¶³tulo 9
Sistemas Formais
A Inform¶ a tica ¶
e a ci^
encia do arti¯cial por excel^encia e, mais ainda, ¶e a
ci^
encia do formal: n~ ao existe na hist¶oria da humanidade nenhum pro¯s-
sional que tenha se comportado de modo mais formal. Os computadores
seguem ¯elmente regras, e n~ao admitem exce»c~o es; n¶o s temos que especi-
¯car, codi¯car, digitar, depurar e, mesmo assim, o nosso programa n~ao
funciona porque trocamos um `0' (zero) por `O' , ou `a' por `A'. Depois
de semanas buscando erros l¶o gicos, algu¶em de fora, por tr¶a s dos nossos
ombros nos diz: \Claro que n~ ao funciona: voc^ e usou `1' e n~ ao
`l'." , e ent~ ao descobrimos que nosso engano era de natureza apenas
formal. O grande objetivo dos sistemas amig¶a veis ¶e a elimina»c~a o dos
erros formais.
Explicar ou de¯nir formal ¶e uma tarefa dif¶³cil e, se procurarmos um
dicion¶ario, vamos encontrar que:
197
198 Cap¶³tulo 9. Sistemas Formais
notando-se que h¶ a diferen»ca fon¶etica, ainda que n~ao gr¶a ¯ca entre elas:
em (1) a letra \o" ¶e pronunciada aberta e em (2) fechada.
Ent~a o podemos usar (1) e (2) para melhorar o nosso entendimento
de formal. Pois o pr¶ oprio conceito de¯nido em (1) deve se encaixar com
a \forma" (com \o" fechado) de um grupo social.
A matem¶ a tica ¶
e considerada como a mais formal das ci^encias sendo
a linguagem formal utilizada pelas outras, pois todos os resultados s~a o
baseados em regras e apresentados por f¶ormulas. No entanto os for-
malistas s~ ao apenas um grupo dentre os matem¶a ticos, tendo existido
s¶erias controv¶ersias com respeito µa validade do enfoque formal. Na re-
alidade, a maioria dos matem¶aticos desenvolve seus resultados dentro
de um esp¶³rito informal e intuitivo, mais geom¶etrico que alg¶ebrico; e
quando alg¶ ebrico, se analisado de forma mais rigorosa, pouco formal.
De qualquer modo, a mais formal das correntes em matem¶atica faz con-
cess~o es ao informal. No que se segue, vemos que o conceito de formal
que adotamos ¶e extremamente exigente; poder¶³amos dizer que o formal
de que necessitamos ¶e tamb¶ em mec^a nico, completamente dissociado de
qualquer intui»c~ ao ou fatores de natureza cognitiva.
A se»c~a o 9.1 apresenta conceitos b¶asicos sobre sistemas formais em
geral. A se»c~ a o 9.2 apresenta tipos interessantes de sistemas formais,
destacados na literatura, como os sistemas de Produ»c~ao de Post, lingua-
gens formais e linguagem l¶ o gica proposicional.
1. § ¶
e um alfabeto;
2. L ¶
e um conjunto recursivo em §, chamado de linguagem do sis-
tema formal;
As rela»c~
oes r1 e r2 s~
a o bin¶
a rias, e seus pares ordenados possuem uma
lei de forma»c~
ao bem de¯nida.
1. ®n ¶
e ®; e
(a) ou ®j 2 ¡ [ A
(b) ou existem ®j 1 ; ¢ ¢ ¢ ; ®jk , j i 2 f1; ¢ ¢ ¢ ; j ¡ 1g; 1 · i · k tais que
< ®j1 ; ¢ ¢ ¢; ®j k ; ®j >2 r com r 2 R.
portanto a seqÄ
u^encia ¤; ++; +¤;¤+ ¶e uma dedu»c~
a o de ¤+ onde ¡ = ;,
assim ; ` ¤+.
200 Cap¶³tulo 9. Sistemas Formais
6
¾I A µ-
ª ?R T L
Existem v¶
arias considera»c~oes que devem ser feitas com respeito µa s
componentes de um sistema formal.
§ = §1 [ §2 [ ¢ ¢¢ §k
1. § ¶
e um alfabeto composto pela uni~a o de dois subconjuntos disjuntos
N e T , chamados de alfabeto n~a o terminal e terminal, respectiva-
mente, e f i ji > 0g µ N ;
2. L ¶e o conjunto §¤ ;
x0 i1 x1 i2 ¢ ¢ ¢ xn¡1 in xn ! y 0 j1 y 1 j2 ¢ ¢ ¢ yk¡1 jk yk
onde
i1 ; i2 ; ¢ ¢ ¢ ; ik 2 N
j 1 ;j 2 ; ¢¢ ¢ ; j k 2 fi1 ; i2 ; ¢ ¢ ¢ ;in g
x 0; x 1; ¢ ¢ ¢ ;x n; y 0; ¢ ¢ ¢ ; yk 2 (§ ¡ N )¤
x0 i1 x1 i2 ¢ ¢ ¢ xn¡1 in xn ! y 0 j1 y 1 j2 ¢ ¢ ¢ yk¡1 jk yk
e aplic¶
¶ a vel a ® se e somente se
2. Se uma regra
x0 i1
x1 i2 ¢ ¢¢ xn ¡1 in xn ! y0 j1 y1 j2 ¢¢ ¢ y k¡1 jk y k
y0 zj1 y1 zj 2 y 2 ¢ ¢ ¢ yk¡1 zj k yk
L(S) = fx 2 (§ ¡ N )¤ j® )¤S x; ® 2 Ag
§ = f2; ¦; suc;S; ; ; 1 ; 2 g
N = fS; suc; ; g
A = fsucxjx
8
2 (§ ¡ N )¤ g
>
>
>
>
>
> suc 1 ! S 1 ;
>
>
< S; 1 ! 2 1
R =
>
> S 1
2; 2 ! 1 ¦ 2
>
>
>
> S 1 ¦; 2 ! S 1 ; 2 2
>
>
:
De¯ni»
c~ atica G ¶
ao 9.2.3 Uma gram¶ e um sistema formal <§; L; A; R >,
onde
206 Cap¶³tulo 9. Sistemas Formais
1. § ¶
e um alfabeto consistindo de dois subconjuntos disjuntos N e T ,
chamados de alfabeto n~ao terminal e terminal, respectivamente;
2. L ¶e o conjunto §¤ ;
x = x 1®x 2 e y = x1 ¯x 2 e ® ! ¯ 2 R
L(G) = fx 2 (§ ¡ N )¤ jS )¤G xg
.
9.2. Tipos de sistemas formais 207
Tipos de Gram¶
aticas
Uma gram¶ atica G =< §; L; A; R > pode ser classi¯cada, pela forma de
suas regras de produ»c~
ao, em quatro tipos:
Tipo 0 Nenhuma restri»c~ao ¶e imposta na forma das regras de produ»c~a o.
A de¯ni»c~
a o 9.2.3 refere-se a este tipo.
Tipo 1 Se ® ! ¯ 2 R tem-se que j®j · j¯j, onde j®j e j¯j represen-
tam os comprimentos de ® e ¯, respectivamente. Uma restri»c~ao
alternativa ¶e a de que as regras sejam da forma ®1A® 2 ! ®1 ¯®2
com ®1 ; ®2; ¯ 2 §¤ , ¯ 6
= ¤ e A 2 N . Esta restri»c~a o ¶e equivalente µa
anterior e pode ser lida como \A pode ser substitu¶³do por ¯ no con-
texto de ®1 e ®2 ". Por isso, as gram¶aticas do tipo 1 s~a o tamb¶em
chamadas sens¶³veis ao contexto. As gram¶aticas dos exemplos a
seguir s~
a o do tipo 1.
a tica G com N = fSg, T = f0; 1g e
Exemplo 9.2.4 Seja a gram¶
R = fS ! 0S1; S ! 01g
Ent~
ao ¶ acil veri¯car que L(G ) = f0n 1n jn ¸ 1g.
e f¶
a tica G com N = fS; B; Cg e T = fa; b; cg e
Exemplo 9.2.5 Seja a gram¶
8 9
>
> S ! aSBC
1: 5: bB ! bb >
>
>
< >
2: S ! aBC 6: bC ! bc =
R=
>
> 3: CB ! BC 7: cC ! cc >
>
>
: >;
4: aB ! ab
Neste caso n~
ao ¶ ao imediato veri¯car que L(G) = fanbn cn jn ¸ 1g.
e t~
Deixamos como exerc¶³cio para o leitor (um arrazoado completo para este
exemplo encontra-se em [HU79], se»c~ ao 2.2).
Tipo 2 Se ® ! ¯ 2 R tem-se que ® 2 N e ¯ 6 = ¤. Em contraste com
as gram¶a ticas do tipo 1, estas s~a o chamadas \livres do contexto".
A gram¶aticas do exemplo a seguir ¶e do tipo 2.
a tica G com N = fS; A;Bg e T = fa; bg e
Exemplo 9.2.6 Seja a gram¶
8 9
>
> S ! aB
1: 5: A ! bAA >
>
>
< >
=
2: S ! bA 6: B !b
R=
>
> 3: A ! a 7: B ! bS >
>
>
: >
;
4: A ! aS 8: B ! aBB
208 Cap¶³tulo 9. Sistemas Formais
A ! a; a 2 T e A 2 N
A ! aB; a 2 T e A; B 2 N
S~
a o tamb¶
em chamadas gram¶a ticas regulares.
@@R ² ¯ ² ¯fa; bg
± ° ©* ± °
S a - A
a© © ©¡a
© ©²© ¡ª¯
²? ©¯©© © b Fl ²? ¯
b © © fbg
± -j°
±p
B ©¼
± °
Tp°
ª
fag ¸
§ = fa; b; S; A; Bg
N = fS; A; Bg
A = fSg
R = fS ! aA; S ! bB; A ! bB; B ! aA; A ! ag
Linguagens tipo 0
Poder de represe nta» a o : Linguagens comput¶
c~ a veis
Sistema f ormal gerador: Gram¶ a ticas tipo 0
Sistema f ormal re con hecedor: M¶ a quinas de Turing
Linguagens tipo 1
Poder de represe nta» a o: Linguagens sens¶
c~ ³veis ao contexto
Sistema f ormal gerador: Gram¶ a ticas tipo 1
Sistema f ormal re con hecedor: LBA's
Linguagens tipo 2
Poder de representa» a o: Linguagens livres do contexto
c~
Linguagens tipo 3
Pode r de representa» a o: Linguagens regulares
c~
As gram¶
a ticas de tipo 3 s~a o as menos complexas e as linguagens que
elas geram s~
a o chamadas linguagens regulares: seus elementos podem
ser reconhecidos em tempo real por aut^omatos ¯nitos. O estudo dos
210 Cap¶³tulo 9. Sistemas Formais
3. AP ¶
e o conjunto dos seguintes axiomas
Ax1 (® ) (¯ ) ®))
Ax2 ((® ) (¯ ) ± )) ) ((® ) ¯) ) (® ) ±)))
Ax3 ((:® ) :¯) ) (¯ ) ®))
1: (® ) (¯ ) ®)) (Ax1)
2: (® ) ((¯ ) ±) ) ®)) (De 1: por SU BS)
2
As letras ®; ¯; °; ¢ ¢ ¢ n~
a o fazem parte do sistema formal, s~
ao vari¶
aveis sint¶
aticas,
s~
ao utilizadas como auxiliares para a descri»c~ ao do sistema formal. Assim (® ) ¯)
n~
ao ¶
e uma f¶o rmula do sistema formal, mas uma express~ ao representando um conjunto
in¯nito de f¶
o rmulas na linguagem do sistema formal.
212 Cap¶³tulo 9. Sistemas Formais
Na descri»c~
ao da linguagem do S FP usamos letras gregas ®; ¯; °;
etc, como vari¶
a veis sint¶
a ticas. Esta maneira de descrever uma linguagem
possui vantagens quando desejamos ter um conhecimento super¯cial dos
componentes de um sistema formal. No entanto, n~ao poder¶³amos dar
o mesmo tratamento µ a especi¯ca»c~ao do SF P se desejarmos utiliz¶a -lo
efetivamente como um recurso para a solu»c~ao de problemas. O leitor
pode tentar responder se a express~ao abaixo ¶e ou n~a o uma f¶o rmula do
SF P:
(((p 1 ) (p2 ) p3 ) ) (p 1 ) p2 ))
e se bem sucedido, imaginar que di¯culdades teria em uma express~a o di-
gamos com 100 ocorr^ encias de sub-f¶ormulas. Uma maneira diferente se-
ria descrever o conjunto de f¶
ormulas do SF P utilizando uma gram¶atica,
por exemplo:
A ! pI
I ! I0
I ! 1 I ! I1
.. ..
. .
I ! 9 I ! I9
F ! A F ! (F ) F )
F ! :F
As mesmas vari¶ aveis foram utilizados para descrever o conjunto de axi-
omas do SFP . A utiliza»c~ ao de gram¶a ticas para descrever os axiomas
seria bastante complicada, por exemplo o axioma Ax1:(® ) (¯ ) ®))
representa uma f¶ormula no alfabeto do SF P em que as duas ocorr^encias
de ® representam a mesma f¶ ormula, assim a regra de produ»c~ao
Ax1 ! (F ) (F ) F))
Exemplo 9.2.10 Seja o sistema formal < §;L; A;R >, onde
§ = fp; 1; ); :; `; (; ); f;F g
L = Deixamos a especi¯ca»c~ a o para o leitor
A = ff (p)g
As regras de infer^
encia s~
ao as seguintes:
f (x) f (x)
(f 1 ) f (x1) (f 2) F(x)
F (x) F (x);F(y)
(F1 ) F(:x) (F2 ) F ((x)y))
F (x);F(y)
(s 1) `(x)(y)x))
F(x);F(y);F(z )
(s 2) `((x)(y)z)))((x)y))(x)z)))
F(x);F(y)
(s 3) `((:y):x))(x)y))
`(x)y);`x
(s 4) `y
F2 Se ® e ¯ s~
a o f¶ a o (® ) ¯) ¶
o rmulas, ent~ e uma f¶
o rmula.
` O signi¯cado de ` ® ¶
e que ® ¶e um teorema do S FP .
De¯ni» ao 9.2.7 Seja F =< §;L; A;R > um sistema formal, hip um
c~
novo s¶³mbolo e ¡ µ L. Um transdutor T associado a F com entrada ¡
e o sistema formal
¶
< § [ fhipg; L [ fhipg; A [ fhipg; R [ fHIP g >
9.3. Conclus~
oes e Refer^
encias 215
onde HI P ¶
e a regra de infer^
encia:
hip
; ®2¡
®
Assim em qualquer ponto de uma dedu»c~ao podemos introduzir f¶o r-
mulas quaisquer de um subconjunto ¡ de L, este conjunto ¡ ¶e chamado
de base hipot¶etica, e em geral descrevem particulares estado de coisas
que podem ser representados pela linguagem L.
ent~
a o o transdutor associado a P com entrada ¡ tem p 3 como teorema,
pois temos a dedu»c~
a o:
1: hip (Ax4)
2: (p1 ) (p 2 ) p 3)) (De 1: por HIP )
3: p1 (De 1: por HIP )
4: p2 (De 1: por HIP )
5: (p2 ) p3 ) (De 3 e 2 por M P)
6: p3 (De 4 e 5 por M P)
9.3 Conclus~
oes e Refer^
encias
Um sistema formal produz, reconhece ou transforma palavras de um
alfabeto, independentemente do signi¯cado de tais palavras. No entanto,
tais sistemas n~ a o ocorrem de modo arbitr¶ario, salvo na explica»c~a o ou
conceitua»c~ ao de sua natureza. Sistemas formais procuram retratar ou
reproduzir formal e mecanicamente certos estados de coisas ou situa»c~oes.
Eles devem capturar o nosso entendimento de uma parte da realidade e,
precedendo a fomula»c~ ao ou constru»c~ao dos sistemas formais, temos um
entendimento anal¶³tico atrav¶es de um sistema sem^antico. O estudo dos
sistemas sem^ anticos ser¶a feito posteriormente.
A grande maioria do conhecimento humano ¶e registrado atrav¶es de
descri»c~
o es informais e seu entendimento depende de fatores de acultura-
mento e adestramento. O saber ¶e algo de natureza individual e depende
de interpreta»c~ o es adequadas para que de modo efetivo possa ser uti-
lizado.
216 Cap¶³tulo 9. Sistemas Formais
Existem sistemas formais, como as gram¶a ticas, que podem ser uti-
lizados para capturar aspectos estruturais do conhecimento, e com isto
se tornarem ferramentas de uso geral, pois possuem recursos de repre-
senta»c~
a o capazes de capturar parte do signi¯cado sem^a ntico do mesmo.
A generalidade de tais sistemas formais ¶e tamb¶em devido a habilidade
de poderem ser transformados, atrav¶es de procedimentos efetivos, em
geradores, transdutores ou reconhecedores.
Existe uma vasta literatura sobre sistemas formais, na qual recomen-
damos: [Nel68], [HU79] e [BL74], este u¶ltimo, particularmente para sis-
temas de Post. Para a teoria completa, com uma an¶alise profunda de
diversas propriedades de sistemas formais, recomendamos fortemente
[Cur77].
9.4 Exerc¶³cios
1. Seja o sistema de Post P =< N [ T; (N [ T )¤ ;A; R >. Descreva
a linguagem L(P ) para cada um dos casos a seguir.
A = f11g
(a)
R= f1 ! 1 11g
A = f+ =g
(b) R = f 1 + 2 = 3 ! 1 1 + 2 = 3 1 ;
1 + 2 = 3 ! 2 + 1 = 3 g
A = f++g
(c) R = f 1 + 2 + 3 ! 1 a + 2 b+c 3 ;
1 + 2 + 3 ! 1 2 3 g
i: sub(p i) = fpig
ii: sub(:®) = sub(®) [ f:®g
iii: sub((® ) ¯)) = sub(®) [ sub(¯) [ f(® ) ¯)g
Sistemas Formais
Elementares
219
220 Cap¶³tulo 10. Sistemas Formais Elementares
a t¶
ecnica de aritmetiza»c~
ao de sistemas formais.
10.1 De¯ni»
c~
ao dos SFE's
Antes de apresentarmos uma de¯ni»c~a o rigorosa para S FE's motivamos
a intui»c~
ao do leitor atrav¶
es de um exemplo.
Axioma 1 ¡
} ¶e um elemento de S
Axioma 2 ¡
~ ¶e um elemento de S
Axioma 3 ¡
}~ ¶ e um elemento de S
Axioma 4 ¡
~} ¶ e um elemento de S
Axioma 5 ¡
SE x} ¶ e um elemento de S
(onde x ¶e uma seqÄu^encia qualquer)
ENTAO ~ x}~ e¶ um elemento de S
Axioma 6 ¡ SE x~ ¶ e um elemento de S
~
ENTAO x~} ¶e um elemento de S
Axioma 7 ¡ Nenhum elemento pertence a S; a menos que
seja conseqÄu^encia dos axiomas acima
Axioma 1 ¡ S(})
Axioma 2 ¡ S(~)
Axioma 3 ¡ S(}~)
Axioma 4 ¡ S(~})
Axioma 5 ¡ S(x}) ! S (x}~)
Axioma 6 ¡ S(x~) ! S (x~})
Uma seqÄu^
encia X ¶
e dita deriv¶ avel dos axiomas (1) a (6) se
e somente se X puder ser obtida desses seis axiomas por um
n¶
umero ¯nito de aplica»c~
o es das seguintes regras:
R 1 - substitui»c~
ao da vari¶
a vel x por qualquer seqÄ
u^encia de
s¶³mbolos } e ~.
R 2 - de duas seqÄencias X1 e X1 ! X2 , a seqÄ
u^ u^encia X 2 pode
ser derivada.
De¯ni»
c~ao 10.1.1 Um sistema formal elementar E ¶
e um sistema formal
< §E ; L E ; AE ;R >
tal que:
1. §E = PE [ VE [ CE [ f; ; (; ); !g ¶e o alfabeto, onde:
2. L E ¶
e uma linguagem, conjunto de express~
oes formadas a partir do
e de¯nida indutivamente1 em duas
alfabeto §E . Esta linguagem ¶
etapas, da seguinte maneira.
1
Utilizamos esta maneira de de¯nir, ao inv¶es de uma gram¶ a tica, para facilitar a
leitura. A utiliza»c~
a o de um sistema formal neste ponto seria bastante natural.
222 Cap¶³tulo 10. Sistemas Formais Elementares
A linguagem LE ¶
e o conjunto de f¶
ormulas F orm(E ).
3. A µ L E ¶
e o conjunto de axiomas de E .
4. R = fS B;M P g ¶
e o conjunto de regras, onde:
Axioma 1 ¡ N (0)
Axioma 2 ¡ N (x) ! N (x})
Axioma 3 ¡ N (x) ! N (x±)
1: N (0) (Axioma 1)
2: N (x) ! N (x±) (Axioma 3)
3: N (0) ! N (±) (2; SB : 0x)
4: N (±) (M P)
10.2 Fun»
c~oes Aritm¶
eticas
Nesta se»c~
ao, mostramos os sistemas formais elementares sobre o alfabeto
de constantes f±; ¦g para as opera»c~oes aritm¶eticas. A correspond^encia
entre as cadeias de s¶³mbolos e seus valores ¶e dada pela tabela abaixo
(sistema di¶a dico):
0 0 7 ± ±± 14 ¦¦¦ 21 ± ¦ ¦±
1 ± 8 ± ±¦ 15 ± ± ±± 22 ± ¦ ¦¦
2 ¦ 9 ± ¦± 16 ± ± ±¦ 23 ¦ ± ±±
3 ±± 10 ± ¦¦ 17 ± ± ¦± 24 ¦ ± ±¦
4 ±¦ 11 ¦ ±± 18 ± ± ¦¦ . .
5 ¦± 12 ¦ ±¦ 19 ± ¦ ±± . .
6 ¦¦ 13 ¦ ¦± 20 ± ¦ ±¦ . .
e ±;
1. o sucessor de 0 ¶
Fun»
c~
ao Sucessor
Pelo que vimos informalmente acima, o SFE para a fun»c~a o sucessor tem
os seguintes axiomas:
S uc1: suc(0; ±)
S uc2: suc(x±; x¦)
S uc3: suc(x; y) ! suc(x¦;y±)
Vamos mostrar que o sucessor de 4 (±¦) ¶e 5 (¦±), ou seja, que suc(±¦; ¦±)
a vel a partir de fSuc1;S uc2; Suc3g. A dedu»c~ao ¶e iniciada com:
¶e deriv¶
A dedu»c~
ao prossegue com:
3: suc(±¦; ¦±) (4 ; 2 ; M P )
r1 r3
(S uc:3) (Suc:2)
r2
? r4
?
(1 ; SB : ±¦
x ;y )
@ ¡ (3 ; SB : 0 )
@R r
@ MP ¡
x
¡ª 3
¶
Figura 10.1: Arvore de deriva»c~a o para suc(±¦; ¦±)
Fun»
c~ao Soma
A de¯ni»c~
ao recursiva da fun»c~ao soma ¶e dada por:
x+0 = x
x + (y + 1) = (x + y) + 1
t1
(+2)
±¦; ± @ ±¦; ±; ¦¦
(S B : x; u ) @ (S B : x; u;w )
@
t
i @R i
t2 t3 t15
(S uc2) (S uc3)
?7
0) ±) ¦ ¡ 0 ±;¦
¡)
(S B : (SB : (SB : (S B : (S B : x;y )
y y x x)
t8 t9 t5 t t4
i t
(Suc1) ¡
? ? ¡ª 22 ? ? 16
©
¡ © ¡
©
¡ © ¡
MP¡ © MP
© ¡
t
i t11 t
i i
t t18
MP
©¼ 6©
(+1)
?
¡ª 10 ? ?¡ª 17
¡
¡
±¦ ) ±¦ ) ¦± )
(S B : v (S B : x (SB : v
¡
t13
? t
? 12 t20
? t
?¡ª 19
@ @ ¡
@ @ ¡
@ MP @ MP ¡
t14
@R ? @R t
¡ª 21 t22
¦± ) ¡
MP ¡
(S B : w
¡
t18
? t
?
¡ª 23
w;v
alfab¶
etica atrav¶es da substitui»c~ao v;w :
0
O sub-problema 1 ¶e resolvido pela substitui»c~ao y que contamina todos
os demais sub-problemas da lista (b)
8
>
<sub-problema 2: +(±¦; 0; w)
(c) sub-problema 3: suc(w ;v)
>
:
sub-problema 4: suc(v; ¦¦)
Fun»
c~ao Produto
A de¯ni»c~
ao recursiva da fun»c~ao produto ¶e dada por:
x¤ 0 = 0
x ¤ (y + 1) = (x ¤ y) + x
Portanto, os axiomas para o produto s~a o:
¤:1 ¤(x; 0; 0)
¤:2 suc(y; u) ! ¤(x; y; v) ! +(v; x; w) ! ¤(x; u; w)
3´ t
G:1
Q
´ Q
´ Q
´ Q
1 t 5 t 4 t Qs t10 t11
(G:3) (G:8) ´ Q (G:7)
+́
P edro Ana
@ @ (SB : x ) (SB : x ) ¡
@ @ ¡
@ @ MP ¡
@R t2 t6 t
MP
@R ? ?¡ª 12
(SB : P edro;ama;Ana
x;y; z
) @ £
@ £
@ MP £
t7 t8
(G:6)
@R ? £
@ £
@ £
@ £
MP
t9
@R ? £
@ £
@ £
@ MP£
@R t
£° 13
¶
Figura 10.3: Arvore de deriva»c~ao para < SV > (Pedro ama Ana)
Esta deriva»c~
ao ¶
e exibida gra¯camente na ¯gura 10.3.
10.4. Representabilidade formal 231
Intuitivamente, um n¶
umero natural n ¶e representado por uma cadeia
contendo n ocorr^encias de 1's. Um n¶umero par conter¶a , portanto, um
n¶umero par de 1's. Deixamos para o leitor veri¯car por indu»c~a o ¯nita
que de fato P formalmente representa este conjunto.
Estendemos o conceito de representabilidade para fun»c~o es.
1. Dizemos que E1 e E2 s~
a o independentes se e somente se
PE 1 \ PE 2 = ;
2. E1 [ E2 ¶
e o sistema formal elementar sobre C tal que
Pelo corol¶
ario 10.4.1 podemos, sem perda de generalidade, conside-
rar que dois SF E's quaisquer s~ao sempre independentes. A import^a ncia
disso ¶
e evitar complica»c~o es na uni~a o de dois SFE's, decorrentes da in-
encia entre seus axiomas. Por exemplo, seja E1 tal que
terfer^
1. A [ B ¶ avel em C.
e formalmente represent¶
2. A \ B ¶ avel em C.
e formalmente represent¶
Demonstra»c~
ao: Sejam P A e PB tais que PA representa formalmente A e
PB representa formalmente B, sendo os SF E's E1 e E2 independentes.
a o E representa formalmente A [ B.
ent~
a o E representa formalmente A \ B.
ent~ 2
234 Cap¶³tulo 10. Sistemas Formais Elementares
Ps(0; 1)
N (x) ! Ps(x1; x2)
N (x) ! N (y) ! Ps(x;y) ! Ps (x2; y1)
f ± g(x1 ;¢ ¢ ¢ ; xn ) = f (g(x1 ; ¢ ¢ ¢; xn ))
e¶ formalmente represent¶
a vel se f e g forem formalmente represent¶
a veis
em algum alfabeto C.
236 Cap¶³tulo 10. Sistemas Formais Elementares
Demonstra»c~
a o: Sejam Pf e Pg os predicados que representam respecti-
o es f e g em algum S FE E . Ent~
vamente as fun»c~ a o o predicado Pf £g
formalmente representa f £ g no SF E E0 , obtido de E pelo acr¶escimo
do axioma:
Pf # (x1 ; ¢ ¢¢ ; xn ; 0; x1 ; ¢ ¢ ¢; x n)
Ps(y; u) ! Pf # (x1 ;¢ ¢ ¢ ; xn ; y; v1 ; ¢ ¢ ¢; v n) !
! Pf (v1 ; ¢ ¢ ¢; v n; w1 ;¢ ¢ ¢ ; wn) ! Pf # (x1 ;¢ ¢ ¢ ; xn ; u; w1 ; ¢ ¢ ¢ ;wn )
10.6 Aritmetiza»
c~
ao de sistemas formais
Gostar¶³amos de demonstrar que toda fun»c~ao, conjunto ou rela»c~a o for-
malmente represent¶ a vel ¶e recursiva. Mas antes disso, apresentamos uma
t¶
ecnica bastante geral para a obten»c~a o de resultados deste tipo para
qualquer sistema formal.
Existem v¶ a rias t¶
ecnicas para a aritmetiza»c~ao de sistemas formais, a
primeira delas foi desenvolvida pelo pr¶oprio GÄo del e utiliza resultados
oriundos da computabilidade de certas fun»c~o es aritm¶eticas que ainda
n~a o foram apresentados. Esta ¶e a m~ae de todas as t¶ecnicas que uti-
lizamos. Para poder utilizar tal t¶ecnica necessitamos de algumas fun»c~oes
aritm¶ eticas al¶
em das que j¶a foram estudadas.
Fun»
c~oes aritm¶
eticas auxiliares
De¯ni»
c~ao 10.6.1 De¯nimos as seguintes fun»c~
o es:
3. ndiv(x) = n¶
umero de divisores de x
(
1 se x ¶
e primo
4. pr(x) =
0 se x n~ao ¶
e primo
5. pn(x) = o x-¶
esimo n¶
umero primo
Fase de codi¯ca» c~
a o De¯ne a correspond^encia entre o sistema formal
e os n¶
umeros naturais. A fun»c~ao de codi¯ca»c~ao deve ser uma inje»c~a o
permitindo que a decodi¯ca»c~
a o seja poss¶³vel.
(T1 ) Codi¯ca»
c~ao das letras de S
(T2 ) Codi¯ca»
c~ao das palavras de S
(T3 ) Codi¯ca»
c~ encias de palavras S
ao das sequÄ^
(T4 ) Identi¯ca»
c~ odigo das letras de S
ao do c¶
(T5 ) Identi¯ca»
c~ odigo das palavras de S
ao do c¶
10.6. Aritmetiza»
c~ao de sistemas formais 239
(T 6 ) Identi¯ca»
c~ao do c¶ u^encias de palavras de S.
odigo das seqÄ
Fase de codi¯ca»
c~ ao Utilizamos as fun»c~
o es de codi¯ca»c~
ao gns (GÄodel
number de s¶³mbolos), gnp (GÄo del number de palavras) e gnseq
(GÄ
odel number de seqÄu^encias).
8
>
< gns(a) = 1
(T1 ) gns(b) = 3
>
: gns(S) = 5
n
Qm gns(¾i )
(T2 ) gnp(¾0 ¾1 ¢ ¢ ¢¾ m ) = i=0 pn(i)
Por exemplo: gnp(abaS ) = 21 : 33 : 51 : 75
n
Qn
(T3 ) gnseq(®0 ®1 ¢ ¢ ¢ ®n) = i=0 pn(i)gnp(®i)
3 3 5:5
Por exemplo: gnseq(ab;aab;aS a) = 2 2: 3 : 32 :3 : 5 :5 2: 3
Fase de identi¯ca»
c~
ao Utilizamos as fun»c~
oes da de¯ni»c~
ao 10.6.1.
Por exemplo:
simb(9) = 0
pal(9) = pal(2 0:3 2) =
= simb(potp(0; 2 0:3 2 ) ^ simb(potp(1; 2 0:3 2 )) =
= simb(0) ^ simb(2) = 0
seq(9) = seq (20 :3 3) =
= pal(potp(0; 20 :32 ) ^ pal(potp(1; 2 0 :32 )) =
= pal(0) ^ pal(2) = 0
simb(6) = 0
pal(6) = pal(2 1:3 1) =
= simb(potp(0; 2 1:3 1 ) ^ simb(potp(1; 2 1:3 1 )) =
= simb(1) ^ simb(1) = 1
seq(64) = seq (26 ) = pal(potp(0;2 6 )) = pal(6) = 1
(T9 ) Identi¯ca»c~
ao dos c¶ u^encias de palavras de S que
odigos das seqÄ
sejam dedu»c~ alidas em S .
oes v¶
(T 10 ) De¯ne-se T eo(x) = 1 se x ¶e o c¶
odigo de um teorema do sistema
formal e T eo(x) = 0 se x n~
ao ¶ o digo de teorema 2. De um modo
e c¶
geral, temos:
½
1 se existe y tal que Der S(y ) = 1 e x = potp(jyj; y )
T eo(x) =
0 em caso contr¶ario
1. aritmetizar E ;
' $ ' $
TM ¾ MU R
¡& % & I@ %
¡ @
' $
¡ @ ' $
¡ª @
' $ ' $
AMR MI R
& @% µ¡& %
LB LP
¡ ¾ - ¡
& % & % ¡
frg fGOT Og
@
' $ @ ' " $ ' " $¡
@R ¡
S FE ¾ LB - LP
10.7 Conclus~
oes e Refer^
encias
Os Sistemas Formais Elementares s~a o apresentados como mais um mo-
delo de computa»c~ ao. Com isso, inserimos mais um n¶o do grafo de evid^en-
cias para a tese de Church. O conceito de representabilidade ser¶a crucial
no pr¶o ximo cap¶³tulo, para a demosntra»c~ao do Teorema da Incompletude.
O texto fundamental na literatura para este cap¶³tulo ¶e [Smu61]. O texto
[Fit87] apresenta toda a teoria de computabilidade com este modelo. O
programador PROLOG apreciar¶a especialmente esta ¶ultima refer^encia.
10.8 Exerc¶³cios
atica que gere a linguagem LE da de¯ni»c~a o
1. Construa uma gram¶
10.1.1.
O Teorema da
Incompletude de GÄ
odel
:;I ; N; (; )
245
246 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel
1. I (X)
2. I N (X)
3. :I (X)
4. :I N (X)
² a senten»ca ¶
e imprim¶³vel, mas falsa - contradi»c~a o, pois o programa
s¶
o imprime senten»cas verdadeiras;
² a senten»ca ¶
e verdadeira, mas n~a o imprim¶³vel - ¶e a ¶unica possibili-
dade.
s¶³mbolo signi¯cado n¶
umero
: nega»c~a o 1
! se-ent~ao 3
91 existe 5
0 o zero 7
s fun»c~a o sucessor 9
( abre par^entese - separador 11
) fecha par^entese - separador 13
1
O quanti¯cador existencial 9 ¶e utilizado precedendo vari¶a veis em f¶
ormulas como
9xf(x) = 1, e ¶e lido como \existe x tal que f (x) ¶
e igual a 1". Para o entendimento
248 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel
vari¶
avel n¶
umero exemplo
xi i-¶
esimo primo > 13 17; 19; 23; 29 ¢¢ ¢
®i i-¶
esimo primo > 13 ao quadrado 17 2; 192 ; 232 ; 29 2 ; ¢¢ ¢
Pi i-¶
esimo primo > 13 ao cubo 17 3; 193 ; 233 ; 29 3 ; ¢¢ ¢
O n¶
u mero de GÄ
o del de uma express~ao de k s¶³mbolos ¶e o produto dos
k primeiros primos elevados aos n¶umeros de GÄodel de seus constituintes.
Por exemplo:
: ®1
# #
1 172
2
2 1 £ 317
P1 ( s ( x1 ) )
# # # # # #
173 11 9 11 17 13 13
3
217 £ 3 11 £ 59 £ 7 11 £ 1117 £ 1313 £ 17 13
O n¶umero de GÄ o del de uma seqÄu^encia de k express~o es ¶e o produto dos
k primeiros primos elevados aos n¶ u meros de GÄodel de cada express~ao.
2 3
Por exemplo, se n = 21 £3 17 e m = 217 £3 11 £59 £711 £1117 £1313 £1713
ent~
ao o n¶
umero de GÄ odel da sequ^encia :®1 ; P1(s(x1 )) ¶e 2n £ 3m .
Para reconhecer uma express~a o, dado seu n¶umero de GÄodel n, basta
observar certas regras, como:
2. se n > 13 ¶
e ¶³mpar e ¶
e pot^encia de um n¶
umero primo, a express~a o
e uma vari¶
¶ avel;
3. se n ¶
e par, decompondo-se n em fatores primos:
do teorema n~a o ¶e necess¶
a rio um conhecimento mais profundo do quanti¯cador, que
pode ser encontrado em qualquer texto sobre L¶ ogica.
11.2. A Prova Original 249
Outras condi»c~
o es devem ser observadas para que um natural seja
n¶
umero de GÄ odel para uma f¶o rmula. Por exemplo, 30 = 21 £ 31 £ 51 cor-
responde a :::, que n~a o ¶e uma f¶o rmula no sistema formal pretendido.
De qualquer modo, o leitor deve imaginar como construir um programa
que enumere/reconhe»ca f¶ormulas de um sistema formal com os s¶³mbolos
apresentados, segundo esta aritmetiza»c~ao.
Para aritmetizar o conceito de deriv¶avel por Modus Ponens, observe
o exemplo:
f¶
ormula n¶umero
193 3
P 2(x 1) ! P1(x 1) 2 £3 £ 5 £7 £113 £1 317 £ 1711 £1919 £2313
11 17 13
3
P 2(x 1) 219 £ 311 £ 517 £ 713
3
P 1(x 1) 217 £ 311 £ 519 £ 713
f¶
ormula n¶umero
173
P1 (x1 ) 2 £ 311 £ 517 £ 713
s(0) 2 £ 311 £ 5 7 £ 713
9
3
P 1(s(0)) 217 £ 3 £ 59 £ 711 £ 117 £ 1313 £ 1713
11
1. a fun»c~
ao sub(y; 17; y), que calcula o n¶umero de GÄodel da f¶ormula
obtida a partir da f¶ o rmula de n¶umero y, pela substitui»c~ao da
vari¶
avel x 1 por y. Por exemplo:
3 3
sub( 217 £311 £5 19 £7 13 ; 17 ; 2 17 £3 11 £5 19 £ 713 )
# # #
3
P1(x1 ) x1 2 £ 3 £ 5 19 £ 713
17 11
3
e o n¶
¶ o del de P1 (217 £ 311 £ 5 19 £ 7 13 ).
umero de GÄ
¶ rovaPara(y; z) que representa que a seqÄu^encia de
2. o predicado EP
f¶
o rmulas de n¶
umero de GÄo del y ¶e uma dedu»c~ao para a f¶o rmula de
n¶umero de GÄ odel z.
Considere ent~
a o a f¶
ormula:
¶ rovaPara(x2 ; x3 ) ¢ ¢¢ (G 0)
:9x2EP
2. se n~ao existe uma dedu»c~ao para (G) ent~a o (G) ¶e verdadeira, por¶em
n~ao ¶e poss¶³vel deduzir todas as verdades aritm¶eticas dentro do
sistema, j¶a que (G) n~ao ¶e dedut¶³vel.
Se a aritm¶
etica ¶e consistente ent~a o ¶e incompleta.
De¯ni» c~
ao 11.3.1 Um sistema de representa»c~ao abstrato (SRA) Z ¶
e
uma s¶etupla < E ; g;S ; T ; R;P ; © >, onde
E ¶
e um conjunto enumer¶
avel de elementos chamados de express~
oes;
S µE ¶
e um conjunto de express~
o es cujos elementos s~
a o chamados sen-
ten»
c as de Z;
T µS ¶
e um conjunto de senten»c as cujos elementos s~
ao chamados sen-
ten»cas verdadeiras, v¶
alidas ou teoremas de Z;
P µS ¶
e um conjunto de predicados un¶
a rios;
© ¶e uma fun»c~ao de E £ N em E , que atribui a cada express~ ao H e
n¶
umero natural n, a express~ ao ©(H; n), que ser¶ a abreviada por
H(n). A fun»c~
ao © ¶e chamada de fun»c~
a o de representa» c~
a o e tem
a propriedade de que, se H ¶e um predicado ent~a o ©(H; n) ¶e uma
senten»ca.
r
¡ ¡
Hq X
E
¡ S ¡
H (n) r
T
¡ R P ¡
¡ ¡
I@@ ª¡¡
© g
@I
¡ @ r ¡
@n r
¡ N g(X) ? ¡
¡ ¡
¡ ¡
11.3.1 Representa»c~
ao e De¯ni»c~
ao
A fun»c~
ao © ¶
e chamada fun»c~a o de representa»c~ao por associar predicados
e n¶
umeros a senten»cas. Na aritm¶etica, por exemplo, seja o predicado
254 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel
HW = fn 2 N j©(H; n) 2 W g
a contida em W.
A imagem deste conjunto via ©, isto ¶e, ©(H; HW ) est¶
¡ ¡
q
¡
¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢¢
¢¢¢ ¢¢ ¢¢H ¢ ¢¢ ¢ ¢ ¢¢)¢ E ¡
©(H; S P
¡ W ¢¢ ¢¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢W
¢ ¢ ¢ ¢¢ ¢ ¢ ¢ ¢
¢
H ¡
¡ ¡
So MBB ¡ª¡
S © HYH
H
BBM H
H
¡ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢H¢ ¢¢ ¢¢¢ ¡
¡ N B ¢ ¢¢ ¢¢¢ ¢¢¢¢¢¢ ¢¢¢¢ ¢¢¢¢ ¢¢¢¢¢ ¢¢¢¢H ¡
B¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢¢¢ ¢¢W
¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢
¡ ¡
¢ ¢ ¢ ¢¢ ¢ ¢ ¢ ¢¢
¢¢ ¢¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢
¢ ¢ ¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢ ¢ ¢
¡ ¡
¡ ¡
q
E
¡ ¡
¢
¢¢¢¢ ¢¢ ¢¢ T
¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢
H(A) S P
¡ ¢¢¢ H ¡
¡ ¡
So ]JJ ª¡¡
S
©
J] ]JJ
¡¡ N J ¢¢ ¢¢J
¢¢ ¢ ¡¡
¢¢¢ ¢¢ ¢¢¢¢¢ ¢¢¢=¢¢ ¢¢
¡ J ¢¢¢A ¢ ¢ ¢¢ ¢ HT ¡
¡ ¡
D.1 se n 2 A ent~
a o H(n) 2 T e
D.2 se n 6
2 A ent~
a o H(n) 2 R.
De¯ni»
c~ao 11.3.5 Seja Z um SRA e H um predicado de Z.
¡ E ¡
r r
¡ ¡
r r
R
H (n) H (n") S
¡ H (n0 ) ¡
H
T P
¡ ¡
¡ ¡
@I AK 6 ¡
@ A ª¡ ¡
©
I@@
¡ ¢¢̧ KA @ ¡
A
¡ ¢ @ ¡
r @ r
A
Ar
¡ N ¢n" HT n0
n ¡
¡ ¡
A
¡ ¡
R.2 n 6
2 A se e somente se H(n) 2 R;
¡ E ¡
¡ ¡
r r r
S
¡ T
H(n) R H(n 0 ) H ¡
¡ P ¡
¡ ¡
@I OC ¡
@ C ¡ª
©
I@@
¡ KA ¡
A @
@ r
¡ N ¡
A
Ar
¡ 0
n
¡
¡ ¡
n HT = A
¡ ¡
Ax.1 0 = 0
Ax.2 x = y ) x0 = y0
Ax.3 x = y ) y = x
e seus anti-axiomas s~
a o:
Ax.4 00 = 0 00
Ax.5 x = y ) x0 = y0
Ax.6 x = y ) y = x
258 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel
A¶
unica regra de infer^
encia ¶
e
®;® ) ¯
¯
n
z }| {
Assim, neste sistemas, se representarmos 0 ¢ ¢ ¢0 por n. Temos os teore-
0
mas:
0 = 0;1 = 1; 2 = 2 ¢ ¢ ¢ n = n; ¢ ¢ ¢
e os anti-teoremas:
1 = 2; 1 = 2;2 = 3; 3 = 4; 4 = 3; 4 = 5 ¢ ¢¢ n + 1 = n + 2; ¢ ¢ ¢
De¯ni»
c~ao 11.3.7 Seja Z =< E ; S; T ; R; g; © > um SRA. Dizemos que
Z ¶
e:
Consistente Se T \ R 6
= ;;
Completo Se T [ R = S ;
Saturado Se Z ¶
e consistente e completo.
P q q
¡ ¡
q q
R S
H E
¡ T H(h) X (X° )
X ¡
¡ ¡
I@@ 6 ¡ª¡ ¤ -
© ¤g - g
AK@I@ q
¤ -
¡ ¤²h - ¡
Aq
N A
¡ -À-X° ¡
¡ ¡
11.4 Senten»
c as de GÄ
odel e Representabilidade
De¯ni» ao 11.4.1 Seja Z um SRA e X uma express~
c~ a o de Z, cujo
n¶
umero de GÄ
odel ¶e g(X). A express~
ao ©(X; g(X)) ¶e a diagonaliza»c~ao ou
norma de X. Caso X seja um predicado H, ©(H; g(H)) ¶ e uma senten»ca,
chamada de senten»ca diagonal, que denotamos por H(h).
q
W q
¡ ¡
q
X E
¡ ¡
X(X° )
Xn (n)
¡ ¡
I@@ AK ¡ª¡ ¤
¤g
©
AK@I@ q
¤
¤²X°
W ¤ Aq
¡ N ¡
¡ n
¡
¡ ¡
1. W° = (W )°
2. W ¤ = (W) ¤
3. H W = HW
Demonstra»c~
ao:
2. Considere o n¶
umero X° (o n¶
umero de GÄ
odel da express~
a o X).
Ent~
ao:
X° 2 W¤ se e somente se 2 W¤
X° 6
se e somente se ©(X;X° ) 6
2W
se e somente se ©(X;X° ) 2 W
se e somente se X° 2 (W )¤
3. Considere um n¶
umero n qualquer. Ent~
a o:
n 2 HW se e somente se n62 HW
se e somente se ©(H;n) 6
2W
se e somente se ©(H;n) 2 W
se e somente se n 2 HW
2
262 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel
que ¶e um absurdo. 2
1. R¤ = HT
2. R¤ = HR
De¯ni» c~
ao 11.4.3 Seja X uma senten»ca e A um conjunto de n¶ umeros.
Dizemos que X ¶e uma senten»ca de GÄ
o del para A se e somente se X tem
a propriedade: X 2 T se e somente se X° 2 A.
heterosigni¯cante ¶e heterosigni¯cante?
Suponha que sim, ent~ ao ela n~ao satisfaz o seu signi¯cado e portanto
n~ao ¶
e heterosigni¯cante, temos uma contradi»c~a o. Este ¶e um paradoxo
11.4. Senten»
cas de GÄ
o del e Representabilidade 263
¡ ¢ ¢ ¢¢¢ ¡1 (A) E ¡
¢ ¢¢ S ¢
¡ ¢¢¢¢¢¢¢¢ ¢¢¢¢ T ¢¢¢¢¢¢¢¢¢ ¢¢¢¢ g ¢¢¢ ¢¢ ¢¢¢¢
¢¢¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢¢¢¢ ¢¢¢¢¢ ¢¢¢¢¢¢¢ ¢¢ ¡
¡ ¡
¢¢¢¢¢¢ ¢¢ ¢
¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢
º¤ º¤
¤ ¤
¤ ¤
¡ ¤ ¤ ¡
¡ ¤A N
¡
¡ ¡
¢¢ ¢ ¢ ¢ ¢¢ ¢¢ ¢
¢ ¢ ¢ ¢ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢ ¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢ ¢ ¢
¢ ¢¢ ¢¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢¢ ¢
¢
A regi~
a o pontilhada ¶
e o conjunto ¢¢ ¢¢ ¢ ¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢ ¢¢ ¢¢
S
¢ ¢¢ ¢¢ ¢¢ W
¢¢¢ ¢¢¢ ¢¢ ¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢¢ ¢¢¢ ¢¢
¢ ¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢
das poss¶³veis senten»cas de GÄ
o del ¢¢ ¢¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢ ¢¢ ¢¢ ¢ ¢
¢ ¢¢ ¢ ¢ ¢
¢¢ ¢¢
T ¢¢ ¢¢ ¢¢ ¢
¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢
para W. Note que se X ¶ e uma ¢ ¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢ ¢
¢ ¢ ¢
¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢ ¢ E
o del para W, ent~
senten»ca de GÄ ao
X 2 T \ W ou X 2 T \ W
Figura 11.9: Senten»cas de GÄodel para W
¤
Teorema 11.4.2 Seja Z um SRA. O conjunto T n~ ao ¶e represent¶
avel
em Z.
¤
Demonstra»c~a o: Suponha que T ¶ e represent¶
a vel. Ent~
a o existe um pre-
dicado H que o representa em Z. Pelo lema 11.4.3 da diagonaliza»c~ a o,
¤
H(h) ¶e uma senten»ca de GÄo del para T . Desse modo, H(h) 2 T se e
¤
somente se H(h) 2 T (De¯ni»c~ ao 11.3.3), o que ¶e um absurdo. Logo, T
n~
ao ¶
e represent¶a vel. 2
Incompleto
Inconsistente
r
¡ ¡
rR
E
r r
¡ E ¡
¡ T ¡
H
¡ T S H
¡ R S P
P ¡ ¡
¡ ¡
I@@
I@@ ³) g
³)³ g © Pi
© PiP
r
¡ ¡
r
¡ ¡ N ?h
N ?h ¡ ¡
¡ ¡
¡ ¡
¡ ¡
O teorema 11.4.3 ¶
e uma forma preliminar do Teorema da Incomple-
tude de GÄodel. Na verdade o m¶etodo utilizado por GÄo del para provar a
incompletude se resume na prova da representa»c~a o de R ¤.
diag(i) = g(Xi(i))
266 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel
ao W ¤ = diag ¡1 (W° )
1. Se W µ E ent~
2. Se W° ¶
e recursivamente enumer¶ a o W¤ ¶e recursivamente
a rel, ent~
enumer¶
avel;
3. Se W° ¶ ao W¤ ¶
e recursivo, ent~ e recursivo.
Demonstra»c~
a o:
2. , 3: E¶ conseqÄ
u^encia de 1: e de que se f ¶e injetivo, ent~
ao: A ¶ e
recursivo (recursivamente enumer¶ a vel) se e somente se f ¡1 (A) ¶
e
recursivo (recursivamente enumer¶ a vel). 2
(nega»c~
ao do teorema), ter¶ a ambos T e R como conjuntos recursiva-
mente enumer¶ a veis e complementares com respeito a S, portanto ambos
T e R seriam recursivos e portanto Z decid¶³vel. Logo Z ¶e n~
a o saturado,
ou seja, inconsistente ou incompleto. 2
11.6 Conclus~
oes e Refer^
encias
Sem d¶ uvida, o mais conhecido e respeitado dos especialistas em GÄodel ¶e
Smullyan, cuja bibliogra¯a sobre o tema de indecidibilidade ¶e bastante
extensa. Entre seus livros encontram-se textos extremamente profun-
dos como [Smu92] e [Smu93]; e livros l¶udicos, que ilustram o conceito
atrav¶es de enigmas e charadas, tais como [Smu78], [Smu87]. O texto de
Hofstadter [Hof79] cont¶ em discussÄoes sobre auto-refer^encia, comparando
os trabalhos de GÄ odel na matem¶atica, Escher nas artes pl¶asticas e Bach
na m¶usica.
Especula»c~
oes sobre o signi¯cado e as conseqÄu^encias do Teorema da
Incompletude, tanto em matem¶atica como em ¯loso¯a s~ao abundantes.
Algumas destas conseqÄ u^encias s~a o aceitas com restri»c~oes s¶erias, por parte
da comunidade cient¶³¯ca, e o pr¶oprio GÄo del em trabalhos que s¶o foram
publicados ap¶ os sua morte em Janeiro de 1978 [Rod95], discute exaus-
tivamente quest~ o es que variam, desde o conceito de intelig^encia at¶e a
possibilidade (que ele acreditava) da exist^encia de Deus. Dentre as
obras que abordam o legado l¶ogico-¯los¶o¯co de GÄodel recomendamos
fortemente a cole»c~ao [F*86]. O texto [Wan88] cont¶em uma excelente
biogra¯a comentada pelo grande l¶ogico Hao Wang.
Ap^
endice A
Linguagem Pseudo-Pascal
1. atribui»c~
a o: var = expr, onde var ¶e uma vari¶avel e expr ¶e uma
express~ ao de 5 tipos:
269
270 Ap^
endice A. Linguagem Pseudo-Pascal
identa»c~
a o, por exemplo:
x =0
y=0
for k = 1 to 20 do
x = x = x+ y
y = y+1
x =x+1
(
while cond do
3. enquanto: , onde cond ¶e uma express~ao boole-
prg
ana. O trecho de programa prg ¶e iterado at¶e que cond tenha valor
0 (ou falso). O trecho prg a ser iterado pelo enquanto ¶e demarcado
por identa»c~
a o, por exemplo:
x =0
y=0
while y <= 5 do
x = t(x)
y = y+1
x =x+1
8
>
> if cond then
>
< prg1
4. se ent~
ao sen~
a o: , onde cond ¶e uma express~a o
>
> else
>
:
prg2
booleana. Os trechos prg1 e prg2 de programa s~ao demarcados
por identa»c~
a o, quando for necess¶a rio.
N omeDoPrograma(ListaDeArgumentos)
begin
C orpoDoPrograma
end
271
273
274 BIBLIOGRAFIA
[Gal87] Jean H. Gallier. Logic for Computer Science. John Wiley &
Sons, Inc., 1987.