Você está na página 1de 289

Modelos de Computa»c~ao

e
Sistemas Formais

Roberto Lins de Carvalho


Laborat¶orio Nacional de Computa»c~ao Cient¶³¯ca - CNPq

Claudia Maria Garcia Medeiros de Oliveira


Instituto Militar de Engenharia
¶Indice

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

I Evid^encias para a Tese de Church 27

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

3.5 Funcionais especiais : : : : : : : : : : : : : : : : : : : : : 51


3.6 Processamento de cadeias : : : : : : : : : : : : : : : : : : 55
3.7 Rela»c~
a o entre alfabetos : : : : : : : : : : : : : : : : : : : : 64
3.8 Repeti»c~ao : : : : : : : : : : : : : : : : : : : : : : : : : : : 67
3.9 Conclus~ oes e Refer^encias : : : : : : : : : : : : : : : : : : : 70
3.10 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 70

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

5 M¶ aquinas com Registros 101


5.1 M¶ a quinas com Registros - Geral : : : : : : : : : : : : : : 102
5.1.1 Programas para m¶aquinas com registros : : : : : : 103
5.2 M¶ a quinas com in¯nitos registros (MIR) : : : : : : : : : : 108
5.2.1 Macros : : : : : : : : : : : : : : : : : : : : : : : : 109
5.2.2 Interpreta»c~ao de LPM-programas em MIR : : : : : 111
5.3 M¶ aquinas com um s¶o registro (MUR) : : : : : : : : : : : 114
5.4 M¶ a quinas de Turing : : : : : : : : : : : : : : : : : : : : : 117
5.5 Conclus~ oes e Refer^
encias : : : : : : : : : : : : : : : : : : : 121
5.6 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 122

6 Algoritmos de Markov com R¶ otulos 125


6.1 De¯ni»c~
a o da Linguagem : : : : : : : : : : : : : : : : : : : 125
6.2 Formaliza»c~ao da sem^antica dos AMR's : : : : : : : : : : : 131
6.2.1 Fun»c~ o es b¶
asicas para formaliza»c~a o : : : : : : : : : 133
6.2.2 Recursividade primitiva de C : : : : : : : : : : : : 135
6.3 Enumera»c~ ao efetiva dos AMR's : : : : : : : : : : : : : : : 140
6.3.1 Composi»c~ ao de AMR's : : : : : : : : : : : : : : : : 145
¶INDICE iii

6.3.2 Fun»c~ ao Universal em AMR : : : : : : : : : : : : : 147


6.3.3 O predicado T de Kleene : : : : : : : : : : : : : : 148
6.4 Conclus~ o es e Refer^encias : : : : : : : : : : : : : : : : : : : 149
6.5 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 149

7 Algoritmos e suas Propriedades 151


7.1 Algoritmos : : : : : : : : : : : : : : : : : : : : : : : : : : 151
7.2 Fam¶³lias Abstratas de Algoritmos : : : : : : : : : : : : : : 153
7.2.1 Fam¶³lias Padr~ao de Algoritmos : : : : : : : : : : : 154
7.3 Teorema da Recurs~ao : : : : : : : : : : : : : : : : : : : : 160
7.4 Forma Normal de Kleene : : : : : : : : : : : : : : : : : : 166
7.5 Tradu»c~a o entre Fam¶³lias Padr~ao : : : : : : : : : : : : : : : 169
7.6 Conclus~ o es e Refer^encias : : : : : : : : : : : : : : : : : : : 176
7.7 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 176

8 Solubilidade de Problemas 181


8.1 Recursividade de Conjuntos : : : : : : : : : : : : : : : : : 181
8.2 Problemas Insol¶uveis : : : : : : : : : : : : : : : : : : : : : 186
8.3 Conclus~ o es e Refer^encias : : : : : : : : : : : : : : : : : : : 192
8.4 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 193

II Sistemas Formais 195

9 Sistemas Formais 197


9.1 Sistemas Formais - Geral : : : : : : : : : : : : : : : : : : 198
9.2 Tipos de sistemas formais : : : : : : : : : : : : : : : : : : 201
9.2.1 Sistemas de Produ»c~oes de Post : : : : : : : : : : : 202
9.2.2 Linguagens Formais e Gram¶aticas : : : : : : : : : 204
9.2.3 Aritm¶ etica rudimentar : : : : : : : : : : : : : : : : 210
9.2.4 Sistema formal proposicional(SFP ) : : : : : : : : 211
9.2.5 Sistemas formais modi¯cados : : : : : : : : : : : : 214
9.3 Conclus~ o es e Refer^encias : : : : : : : : : : : : : : : : : : : 215
9.4 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 216

10 Sistemas Formais Elementares 219


10.1 De¯ni»c~
ao dos SFE's : : : : : : : : : : : : : : : : : : : : : 220
10.2 Fun»c~
oes Aritm¶eticas : : : : : : : : : : : : : : : : : : : : : 223
iv ¶INDICE

10.3 SFE's e Gram¶ aticas : : : : : : : : : : : : : : : : : : : : : 229


10.4 Representabilidade formal : : : : : : : : : : : : : : : : : : 231
10.4.1 Propriedades alg¶ebricas : : : : : : : : : : : : : : : 232
10.5 SFE e Fun»c~ o es Parcialmente Recursivas : : : : : : : : : : 234
10.6 Aritmetiza»c~a o de sistemas formais : : : : : : : : : : : : : 237
10.7 Conclus~ oes e Refer^encias : : : : : : : : : : : : : : : : : : : 242
10.8 Exerc¶³cios : : : : : : : : : : : : : : : : : : : : : : : : : : : 242

11 O Teorema da Incompletude de GÄ odel 245


11.1 Linhas gerais : : : : : : : : : : : : : : : : : : : : : : : : : 245
11.2 A Prova Original : : : : : : : : : : : : : : : : : : : : : : : 247
11.3 Sistemas Abstratos de Representa»c~a o : : : : : : : : : : : : 251
11.3.1 Representa»c~ao e De¯ni»c~ao : : : : : : : : : : : : : : 253
11.3.2 Completude e Consist^encia : : : : : : : : : : : : : 258
11.4 Senten»cas de GÄ
odel e Representabilidade : : : : : : : : : : 260
11.5 SRA's como Sistemas Formais : : : : : : : : : : : : : : : : 265
11.6 Conclus~oes e Refer^
encias : : : : : : : : : : : : : : : : : : : 268

A Linguagem Pseudo-Pascal 269


Lista de S¶³mbolos

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


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

·n ;m fun»c~ao de convers~ao entre alfabetos 64


·¹n ;m fun»c~ao extens~a o de ·n;m 66
r minimiza»c~ ao de fun»c~a o 67
exp fun»c~ao exponencial 70
! fun»c~ao fatorial 70
sg fun»c~ao sinal 70
sg fun»c~ao sinal oposto 70
_ fun»c~ao ou booleano 70
^ fun»c~ao e booleano 70
) fun»c~ao implica booleano 70
igual fun»c~ao igual 70
< fun»c~ao menor que 70
= fun»c~ao quociente inteiro 70
à comando de atribui»c~a o 74
¯r fun»c~oes de pareamento de GÄodel 93
i ¯r fun»c~oes de pareamento de GÄodel 93
®r fun»c~ao de entrada 102
!s fun»c~ao de sa¶³da 102
¹ fun»c~ao conte¶udo de mem¶o ria 102
concesq fun»c~ao concatena µa esquerda 103
concdir fun»c~ao concatena µa direita 103
cortadir fun»c~ao corta µa direita 103
cortaesq fun»c~ao corta µa esquerda 104
ident fun»c~ao identidade 104
testa fun»c~ao testa conteu¶do nulo 104
jP jM rela»c~
ao computada por P na m¶aquina M 107
cmdo fun»c~ao commando do AMR 133
esq fun»c~ao esquerda de comando do AMR 133
dir fun»c~ao direita de comando do AMR 133
rseg fun»c~ao r¶
otulo de comando do AMR 134
procom fun»c~ao pr¶oximo comando do AMR 134
subst fun»c~ao de substitui»c~a o 134
C fun»c~ao de execu»c~a o de um comando AMR 134
R fun»c~ao segmento inicial 135
V fun»c~ao segmento ¯nal 135
parte fun»c~ao parte 138
oc fun»c~ao n¶umero de ocorr^encias disjuntas 140
EA(i) fun»c~ao de constru»c~ao do i-¶esimo AMR 144
viii Lista de S¶³mbolos

r' i-¶esima fun»c~ ao parcial de Wr em Ws 144


s i
comp fun»c~a o composi»c~ ao 145
en fun»c~a o de enchimento 146
U fun»c~a o universal em AMR 147
T predicado de Kleene 148,168
'(n)
i i-¶esima fun»c~ ao parcial de aridade n 154
suc fun»c~a o sucessor 155
prni fun»c~a o proje»c~ ao 155
cni fun»c~a o constante 155
U (n+1) fun»c~a o universal 155
sn;m fun»c~a o s-n-m 159
¹z minimiza»c~ ao 165
tr© fun»c~a o de tradu»c~ ao 170
tri© fun»c~a o de tradu»c~ ao injetiva 172
en© fun»c~a o de enchimento 172
triasc© fun»c~a o de tradu»c~ ao injetiva ascendente 173
trb© fun»c~a o de tradu»c~ ao bijetiva 174
i
s¶³mbolo n~ a o terminal de Post 202
L(S) linguagem gerada por S 203
R9 quanti¯ca»c~ ao existencial da rela»c~ao R 234
resto fun»c~a o resto 237
div fun»c~a o divis~ a o inteira 237
ndiv fun»c~a o n¶umero de divisores 237
pr fun»c~a o ser primo 237
pn fun»c~a o i-¶esimo primo 237
potp fun»c~a o expoentes dos fatores primos 237
jxj fun»c~a o ordem do maior primo que divide x 237
T conjunto de senten»cas verdadeiras 253
R conjunto de senten»cas falsas 253
HW conjunto representado por H 254
H(h) senten»ca diagonal 260
X° n¶ umero de GÄ odel de X 260
W° n¶ umeros de GÄ o del das express~oes de W 260
W¤ um conjunto de n¶ u meros de GÄo del 260
repr fun»c~a o de representa»c~a o num¶erica 265
diag fun»c~a o de diagonaliza»c~ao num¶erica 265
Pref¶
acio

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

ordena»c~ ao sistem¶ a tica dos conhecimentos sobre a Aritm¶etica nos Ele-


mentos, onde j¶ a se pode observar passagens com demonstra»c~o es formais
de certas regras de c¶ alculo. A preponder^a ncia da Geometria, o apelo
constante ao uso de ¯guras para representa»c~ao geom¶etrica e o desprezo
pela \pr¶ a tica" paralizaram o desenvolvimento da Aritm¶etica e geraram
uma estagna»c~ a o no desenvolvimento das t¶ecnicas de c¶a lculo. O desen-
volvimento de simbolismos ¶ e praticamente o ¶unico avan»co que surge
deste per¶³odo at¶ e o Renascimento.
A hist¶o ria das nota»c~ oes aritm¶eticas passou por per¶³odos distintos, o
per¶³odo ret¶ orico em que os problemas da Aritm¶etica eram resolvidos por
uma seqÄ u^
encia de racioc¶³nios expressos inteiramente por meio de discurso
em linguagem natural (portugu^es, franc^es, etc); o per¶³odo sincopado em
que usavam-se abreviaturas para algumas opera»c~o es e quantidades. Du-
rante a Idade M¶ edia a Aritm¶etica usava uma nota»c~a o sincopada. A
Aritm¶etica simb¶ o lica nasce, pode-se dizer, com Viµete que, em seu livro
\log¶³stica Speciosa", prop~ o e o uso de certas letras para os valores de-
sconhecidos e outras para as constantes ou valores conhecidos.
A cria»c~
a o de um sistema de nota»c~oes adequadas ao c¶a lculo, nasceu da
necessidade de abreviar e simpli¯car a resolu»c~a o de diversos problemas
que surgiam na vida humana, e determinou um grande desenvolvimento
da Aritm¶etica. Apareceram ent~a o as regras ¯xas que permitem calcular
com rapidez e seguran»ca, poupando o esp¶³rito e a imagina»c~ao (Leibniz),
e o resultado ¶e a Mecaniza»c~ ao do C¶a lculo.
Descartes acreditava no emprego sistem¶atico do c¶a lculo alg¶ebrico
como um m¶ etodo poderoso e universal para resolver todos os problemas.
Esta cren»ca, junta-se a de outros e surgem as primeiras id¶eias sobre
m¶aquinas universais, capazes de resolver todos os problemas. Esta era
uma cren»ca de mentes poderosas que deixaram obras respeit¶a veis em
Matem¶ atica e ci^encias em geral.
A preocupa»c~ ao constante em minimizar o esfor»co humano gerou o
desenvolvimento de m¶ a quinas que passaram a substituir o homem na
realiza»c~ao de tarefas, que s~ a o consideradas como atividades inteligentes,
por exemplo: jogar xadrez, demonstrar teoremas, etc. Hoje poder¶³amos
reservar o quali¯cativo inteligente apenas para atividades que parecem
depender fortemente de fatores perceptivos. As tentativas de mecaniza-
»c~ao de atividades desta natureza, como por exemplo a forma»c~a o, identi-
¯ca»c~
a o e manipula»c~ ao de conceitos abstratos, tem apresentado resulta-
Pref¶acio xi

dos pouco satisfat¶ orios. Na verdade n~ao existem argumentos de¯nitivos


em tais quest~ oes. O que existe ¶e uma atitude generalizada em n~ao aceitar
como inteligente nenhuma atividade pass¶³vel de tratamento sistem¶ atico,
ou executada pelo uso de procedimentos efetivos. A quest~ao ¶e, portanto,
saber que atividades gozam desta prerrogativa, ou seja, que atividades
s~
ao comput¶ a veis.
A teoria da computa»c~a o ¶e respons¶avel pela formaliza»c~ao e explica»c~ao
dos conceitos mencionados. Ela precedeu o surgimento dos computa-
dores e seu desenvolvimento ¶e absolutamente independente do estado
corrente da tecnologia. Esta teoria baseia-se na de¯ni»c~a o e constru»c~ao
de m¶a quinas abstratas e no estudo do poder destas m¶a quinas na solu»c~ao
de problemas.
O homem tem, atrav¶es dos tempos, tentado construir m¶etodos efe-
tivos para resolu»c~ ao de problemas. Os problemas podem ser resolvidos
um a um, ou agrupados em classes de forma que, dada a solu»c~ao de
um dos elementos, os demais estar~a o solucionados. A segunda hip¶otese
requer a concep»c~ ao de m¶etodos gerais a que chamamos resolutores.
@@
Especi¯ca»c~
ao
Problema ¡¡ Formal

++ @@ ¡¡
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

e aprendemos outros m¶ etodos para problemas mais complicados e na


maioria dos casos com a mesma cren»ca no acerto dos mesmos. Muitas
vezes os resolutores s~ a o aparelhos mec^a nicos como os ¶abacos, r¶eguas de
c¶alculo ou m¶ aquinas de calcular ou aparelhos eletr^onicos como calcu-
ladoras eletr^ onicas. O uso de tais aparelhos exige um aprendizado de
uma linguagem ou pelo menos a identi¯ca»c~ao de bot~oes ou manivelas
e uma seqÄ u^encia de opera»c~ a o, ou seja, de um algoritmo de uso. De
um modo informal, podemos dizer que, o que chamamos de algoritmo,
¶e nada mais que uma seqÄ u^
encia ¯nita de instru»c~o es escritas ou faladas
de alguma linguagem, normalmente uma l¶³ngua natural, por exemplo o
portugu^es.
Nos anos 20 e 30 houve um grande interesse na no»c~a o de algoritmo,
no sentido de tornar esta no»c~ao intuitiva em um conceito preciso, para
propiciar o esudo de suas propriedades de maneira rigorosa. V¶a rios
matem¶ aticos - na Inglaterra (Alan Turing), nos Estados Unidos (Alonzo
Church, Emile Post), na Alemanha (GÄo del) na Uni~ao Sovi¶etica (Markov)
- desenvolveram de¯ni»c~ oes da no»c~a o de algoritmo atrav¶es o desenvolvi-
mento de certas m¶ a quinas abstratas e de linguagens arti¯ciais. Todas
as propostas feitas para de¯nir algoritmo, at¶e os dias atuais, foram
mostradas equivalentes. O autor de uma dessas linguagens, o ameri-
cano Alonzo Church evidenciou este fato, e isto o levou a formular o que
passou a ser conhecida como a Tese de Church.

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

A Tese de Church n~ a o ¶e um teorema mas sim um resultado epist^emico


cuja aceita»c~ ao ¶e quase universal. O conceito intuitivo de comput¶a vel
¶e identi¯cado com uma certa classe de fun»c~o es aritm¶eticas chamadas
fun»c~
o es recursivas, cuja caracteriza»c~a o ¶e um dos objetivos deste livro.
Cap¶³tulo 1

Introdu»
c~
ao

O livro aborda o tema de computabilidade, o principal aspecto te¶o rico


da computa»c~ a o, atrav¶ es de uma vis~a o de \m¶a quinas", com apelo forte µa
intui»c~a o do programador. Na primeira parte, a tese de Church ¶e eviden-
ciada atrav¶es da constru»c~ao de diversos paradigmas e constata»c~a o de que
estes computam a mesma classe de fun»c~o es. Alguns elementos essenciais
dos modelos de computa»c~ao s~ao demonstrados, incluindo os resultados
mais importantes da teoria das Fun»c~oes Recursivas. Na segunda parte,
apresenta-se a teoria geral dos sistemas formais, com alguns exemplos.
Ap¶ o s a constru»c~ ao da computabilidade atrav¶es dos Sistemas Formais
Elementares, estes s~ a o utilizados para demonstra»c~ao do Teorema da In-
completude de GÄ o del. Desta maneira, este resultado t~ao fundamental
para o pro¯ssional da computa»c~a o em qualquer n¶³vel e t~a o pouco enten-
dido, ¶e altamente motivado pelas suas implica»c~o es na atividade central
da computa»c~ a o que ¶ e a programa»c~a o de computadores.
Teoria das Fun»c~ o es Recursivas e Computabilidade s~ao centrais µa
Ci^encia da Computa»c~ ao. Em geral a apresenta»c~a o deste tema, tanto
em livros textos cl¶ a ssicos como nos cursos normais ¶e feita de maneira
extremamente matem¶ a tica. Isto termina atraindo somente alunos emi-
nentemente te¶ oricos, al¶em de suscitar a d¶uvida \qual a aplica»c~ao desta
teoria?". Do nosso ponto de vista a aplica»c~ao desta teoria ¶e a com-
puta»c~ ao em si e ¶e necess¶a rio que esta teoria esteja subjacente µa atividade
de programa»c~ a o.
Adotamos uma abordagem bastante concreta dos diversos modelos
de computa»c~ ao, comparando-os entre si (reduzindo-os uns aos outros). A

1
2 Cap¶³tulo 1. Introdu»
c~ao

Tese de Church ¶e a principal hip¶o tese de trabalho de todo programador


e portanto ele deve connhec^ e-la intimamente. Al¶em disso, os modelos
de computa»c~ ao escolhidos caracterizam historicamente paradigmas de
computa»c~ ao amplamente utilizados (programa»c~a o imperativa, funcional,
l¶ogica). Mesmo sendo evidentemente te¶o rico, o tratamento do material
¶e feito da maneira mais pr¶ atica poss¶³vel.
Uma das caracter¶³sticas do livro ¶e o tratamento do material de teoria
das fun»c~
oes recursivas junto com o de sistemas formais e a clari¯ca»c~ao do
relacionamento entre estes dois modelos de computa»c~a o. Assim, o teo-
rema da incompletude de GÄ odel pode ser entendido das duas maneiras.
Esta teoria ¶e bastante rasa, no sentido de que s¶o ¶e necess¶a rio para
entend^e-la o m¶³nimo de conhecimento e habilidade com conjuntos (em
particular, n¶umeros naturais e indu»c~a o), al¶em de alguma maturidade no
uso de formalismos, o que um bom programador certamente domina.
Cap¶³tulo 2

No»
c~
oes Preliminares

Neste cap¶³tulo introduzimos algumas no»c~oes matem¶aticas b¶asicas para


o entendimento dos demais cap¶³tulos. A apresenta»c~a o do material ¶e
feita de modo informal, e o leitor deve procurar na literatura citada nas
refer^encias esclarecimentos maiores, quando for necess¶a rio.

2.1 Conjuntos, Fun»


c~
oes e Rela»
c~oes
2.1.1 Conjuntos
Um conjunto ¶ e uma cole»c~ao de objetos distintos, usualmente caracteri-
zado por enumera»c~ a o ou por uma propriedade que seus elementos pos-
suem, gozam, ou satisfazem. Denotamos conjuntos por letras mai¶ usculas
latinas ou gregas, com ou sem¶³ndices, assim A, ¡ e B1 podem ser usados
como nomes de conjuntos. Os objetos que constituem um conjunto A
s~
ao membros ou elementos do conjunto.
Com respeito µ a nota»c~a o, devemos estabelecer que:

1. se a ¶e um elemento de A, dizemos que a pertence a A ou a 2 A;


abreviadamente, se v¶a rios elementos, digamos, a; b e c s~ao elemen-
tos de um conjunto A, podemos dizer a; b; c 2 A;
2. se um conjunto A tem como u¶nicos elementos a;b e c, podemos
a -lo por A = fa; b; cg;
represent¶

3. uma propriedade que certos elementos gozam ¶e representada por


P (x). Se considerarmos valores para x, por exemplo 1, repre-

3
4 Cap¶³tulo 2. No»
c~oes Preliminares

sentamos por P (1) e lemos \P de 1". Assim o conjunto cu-


jos elementos satisfazem uma propriedade P ¶e representado por
A = fx 2 B j P(x)g. Conjuntos especi¯cados desta forma s~a o
lidos como: \A ¶e o conjunto dos elementos x de B tal que P (x)";
4. se os elementos de um conjunto s~ao indexados, por exemplo pelos
umeros naturais de 1 a n, usamos a nota»c~ao A = fa1; a2 ; ¢ ¢¢ ; ang;

se o conjunto de ¶³ndices de A for um outro conjunto, digamos I ,
cujos elementos n~ao foram especi¯cados, dizemos A = faig i2I .
Existem conjuntos que possuem um grande n¶umero de elementos, por
exemplo o conjunto de todos os jornais de todas as cidades do mundo
que foram publicados desde o in¶³cio da imprensa at¶e o dia de hoje.
Note que embora n~ao saibamos o n¶umero de elementos, estes est~a o bem
especi¯cados por uma propriedade de¯nidora, como por exemplo:
pares fx 2 N j¶
e um n¶
umero natural e x ¶e divis¶³vel por 2g
¶³mpares fx 2 N j¶
e um n¶
umero natural e x n~a o ¶e divis¶³vel por 2g
O conjunto que n~ a o tem elementos ¶e chamado de conjunto vazio, e
e¶ denotado por ;. O conjunto vazio ¶e especi¯cado por uma propriedade
que n~ e satisfeita por nenhum elemento. Por exemplo A = fx jx 6
ao ¶ = xg.
De¯ni»
c~
ao 2.1.1
1. Dizemos que A ¶
e um subconjunto de B se e somente se para todo
x, se x 2 A ent~
a o x 2 B e denotamos por A µ B. Neste caso
dizemos tamb¶
em que B ¶e um superconjunto de A, denotado por
B ¶ A.
e igual a B se e somente se A µ B e B µ A e
2. Dizemos que A ¶
denotamos por A = B.
3. Dizemos que A ¶
e um subconjunto pr¶
o prio de B se e somente se A
e um subconjunto de B, mas A n~
¶ a o ¶e igual a B e denotamos por
A ½ B.
Lema 2.1.1 S~
a o v¶
a lidas as seguintes propriedades:
(p1) A µ B e B µ C ) A µ C
(p2) A ½ B e B ½ C ) A ½ C
Demonstra»c~
a o: Deixamos para o leitor. 2
2.1. Conjuntos, Fun»
c~
o es e Rela»
c~oes 5

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^

Note que }(A) ¶ e um conjunto de conjuntos, dizemos que tais con-


juntos s~
a o fam¶³lias de conjuntos.

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

Diferen»ca Sejam A e B conjuntos. A diferen»ca de A e B, denotada


por A ¡ B, ¶
e de¯nida por A ¡ B = f x j x 2 A e x 6
2 Bg.

Complemento Seja A um conjunto. O complemento de A, denotado


¹ ¶
por A, e de¯nido por A¹ = fx jx 6
2 Ag
6 Cap¶³tulo 2. No»
c~oes Preliminares

Em geral, estaremos estudando propriedades de subconjuntos de um


conjunto U ou \conjunto universo". Portanto, nas de¯ni»c~o es acima,
teremos sempre para um conjunto A µ U , A = fx 2 U j P (x)g. No caso
do complemento de A, A¹ = U ¡A. Alguns autores se referem µa diferen»ca
A ¡ B como o complemento de B com rela»c~a o a A.

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).

De¯ni»ao 2.1.4 Seja f : A ! B e g : A ! B. Dizemos que


c~
2.1. Conjuntos, Fun»
c~
o es e Rela»
c~oes 7

ar
X X rf (b)
X X » »:
» »
c r » » » X» X X X - rf(c)
X X »
X zX rf (a)
b r » » »
»

Figura 2.1: Fun»c~ao de A em B

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.

6. f = g se e somente se para todo x 2 dom(f), f(x) = g(x), e al¶


em
disso dom(f) = dom(g).

Exemplo 2.1.1 Exibimos abaixo alguns tipos de fun»c~


o es:

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» ao 2.1.5 Seja f : A ! B uma fun»c~


c~ ao injetiva. A inversa de f ,
denotada por f ¡1 , ¶ a o de B em A de¯nida por f ¡1(x) = y se
e uma fun»c~
e somente se f (y) = x.
8 Cap¶³tulo 2. No»
c~oes Preliminares

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)).

Lema 2.1.3 Sejam as fun»c~ oes f : A ! B e g : B ! C fun»c~


o es injeti-
a o (g ± f)¡1 = f ¡1 ± g ¡1.
vas. Ent~
Demonstra»c~a o: Deixamos para o leitor. 2

De¯ni» c~ao 2.1.7 Seja A µ B um conjunto. Uma fun»c~


a o f : B ! f0; 1g
e a fun»c~
¶ ao caracter¶³stica para A se e somente se
(
1 se x 2 A
para todo x 2 B f (x) =
0 se x 6
2A

Fun»c~
o es caracter¶³sticas de um conjunto A s~
ao, em geral, denotadas por
ÂA.

Exemplo 2.1.2 Se o resto da divis~ a o de x por y for dado por resto(x; y)


ent~
ao a seguinte fun»c~
ao ¶e a fun»c~
ao caracter¶³stica do conjunto dos n¶ u-
meros ¶³mpares:
Â
¶³mpares (x) = resto(x; 2)
e para os pares:
Âpares (x) = 1 ¡ resto(x; 2)

A opera»c~a o de contagem dos elementos de um conjunto A pode ser


descrita pelo seguinte algoritmo informal:

1. Seja A um conjunto. Inicialmente a contagem tem valor 0;

2. Se A n~
a o for vazio, retira-se um elemento de A e aumenta-se o valor
da contagem por 1;

3. Se A for vazio, termine o processo. O valor da contagem ¶e dito ser a


cardinalidade ¯nita do conjunto.

4. Repete-se os passo 2: e 3: come»cando por 2:

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

h : f1;¢ ¢ ¢ ; ng ! A, n 2 N , dizemos que a cardinalidade de A, denotado


por #(A), ¶ e n (¯nita). Se o processo de contagem n~a o termina, dize-
mos que A tem cardinalidade in¯nita. Por exemplo todo subconjunto
in¯nito de N tem cardinalidade in¯nita, que ¶e representada por @ 0 (alef
0). Na realidade, no caso de N , ap¶o s a retirada de n elementos n~a o im-
portanto qu~ ao grande ¶
e n ainda sobrar¶a um conjunto com cardinalidade
@ 0 . Assim N ¶ e um conjunto que tem partes com a mesma cardinalidade.
O conjunto dos pares e o dos ¶³mpares tamb¶em t^em cardinalidade @ 0 e
ambos s~ ao partes de N .

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:

< x 1; x2 >=< y1 ; y2 > se e somente se x1 = y1 e x2 = y2

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:

< x 1; x2 ; ¢ ¢ ¢ ;x n >=< y1 ; y2 ; ¢ ¢¢ ; yn >, x 1 = y1 ; ¢ ¢ ¢ ;x n = yn

Em vez de n-tupla ordenada dizemos tamb¶em n ¡ pla ou em geral pla.


Por raz~
oes de economia e facilidade de escrita e leitura, representamos
as plas de letras indexadas < x1 ;x 2; ¢ ¢ ¢ ; xn > por xn , considerando o
primeiro elemento como possuindo ¶³ndice 1 e o ¶ultimo ind¶³ce n.

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

o conjunto de todos os pares ordenados < x; y > com x 2 A e y 2 B, ou


seja, A £ B = f < x; y > j x 2 A e y 2 Bg.

Se A e B s~ a o conjuntos ent~a o uma rela»c~ao bin¶aria R entre A e B ¶e


um subconjunto do produto cartesiano de A e B, ou seja R µ A £ B.
Quando A = B dizemos que R ¶e uma rela»c~a o em A ou R µ A2 .
A pr¶ oxima ¯gura mostra: (i) os planos coordenados e uma regi~a o
representando uma rela»c~ a o; (ii) o grafo da rela»c~a o bin¶a ria R = f< a; b >
; < a; c >; < b; d >; < a; d >; < c; d >; < d;e >g.

B6
r
¡µ b @
¡ @
¡r @R- r - re
a@ ¡µ d
@ ¡
@R r
¡
c
-
A
(i) (ii)

Do mesmo modo podemos de¯nir rela»c~o es n¡¶a rias em uma fam¶³lia de


conjuntos fAi g1·i·n , como qualquer subconjunto R do produto carte-
siano
n
Y
Ai
i=1

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~

f< a;c > j < a; b >2 R e < b; c >2 S g

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

Re°exiva Se para todo x 2 A < x; x >2 R.

etrica Se para todo x; y 2 A se < x; y >2 R ent~


Sim¶ a o < y; x >2 R.

Transitiva Se para todo x;y; z 2 A se < x;y >2 R e < y; z >2 R


ent~a o < x; z >2 R.

Anti-sim¶ etrica Se para todo x; y 2 A se < x; y >2 R e < y; x >2 R


ent~
a o x = y.

De¯ni»
c~ao 2.1.11 Seja R uma rela»c~ ao em um conjunto A. Dizemos que

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.

² A rela»c~a o R = f< x; y >2 N 2 j ter divisores comunsg n~ a o ¶e uma


rela»c~
a o de equival^encia. Apesar de R ser evidentemente re°exi-
va e sim¶ etrica, R n~ao ¶
e transitiva, por exemplo, < 12; 15 >2 R,
< 15; 25 >2 R por¶ em < 12; 25 >6 2 R.

ao R = f< x; y >2 N 2 j ter os mesmos divisores primosg


² A rela»c~
e uma 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
.

Lema 2.1.4 Seja R uma rela»c~


a o de equival^encia em um conjunto A e
x 2 A. Ent~
ao:

1. Se < x; y >2 R ent~


ao [x]R = [y]R .

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

Figura 2.2: Parti»c~


a o em um conjunto A e f-congru^encia

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

Lema 2.1.5 Se R ¶e uma rela»c~ ao de equival^


encia em A, ent~ a o a fam¶³lia
de classes de equival^ encia de A com respeito a R, f[x]R gx2A , ¶ e uma
parti»c~
a o de A.
Demonstra»c~ a o: E¶ uma conseqÄ
u^encia do lema 2.1.4 e de¯ni»c~
a o 2.1.13.
2

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.

Exemplo 2.1.4 O conjunto N pode ser partido pela rela»c~ a o ´ 3 de¯nida


por x ´ 3 y , resto(x; 3) = resto(y; 3) onde resto(x; y) ¶ e a fun»c~a o que
a o de x por y. E¶ f¶
nos fornece o resto da divis~ a cil notar que ´3 ¶ e uma
rela»c~
a o de congru^
encia com respeito a +.

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

A se e somente se R ¶e re°exiva, anti-sim¶ etrica e transitiva em A. A


rela»c~ e dita ser total se e somente se para todo x; y 2 A,
ao de ordem ¶
< x; y >2 R ou < y; x >2 R. Rela»c~ oes de ordem parcial s~ a o em geral
denotadas por ¹. Se x ¹ y e x 6 = y dizemos que x estritamente
precede y, o que denotamos por x Á y.

Exemplo 2.1.5 As seguintes rela»c~


oes em N s~
ao ordens parciais:

1. · ¶
e a mais conhecida das ordens parciais e ¶
e total.

2. xMy signi¯cando x ¶e um m¶ ultiplo de y. Esta n~


ao ¶e uma ordem
total, por exemplo 3 n~
ao ¶
e m¶
ultiplo de 2 nem vice versa.

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

1. a 2 A ¶e um limite inferior de X se e somente se para todo x 2 X,


a ¹ x.

2. a 2 A e¶ um limite superior de X se e somente se para todo


x 2 X, x ¹ a.

3. a 2 A ¶e o ¶³n¯mo de X se e somente se, para todo x 2 X, a ¹ x


em disso se, y ¶e um limite inferior de X, y ¹ a. Ou seja, a ¶
e al¶ e
o maior dos limites inferiores (¶e¶
unico, se existir).
14 Cap¶³tulo 2. No»
c~oes Preliminares

4. a 2 A ¶e o supremo de X se e somente se, para todo x 2 X, x ¹ a


e al¶ e um limite superior de X, a ¹ y. Ou seja, a ¶
em disso, se y ¶ e
o menor dos limites superiores (¶e¶
unico, se existir).

5. a 2 X ¶e um minimal em X se e somente se para todo x 2 X,


x ¹ a ent~
a o x = a. Na ¯gura 2.3 7; 8 e 9 s~
a o minimais.

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.

7. a 2 X ¶e um maximal em X se e somente se para todo x 2 X,


a ¹ x ent~
a o x = a. Na ¯gura 2.3 10; 11 e 12 s~
ao maximais.

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:

1. Os n¶umeros naturais podem ser gerados a partir do n¶


umero natural
0 via a opera»c~
a o de sucessor.

2. Quando uma propriedade de n¶ umeros acontecendo para um n¶ u-


mero natural acontece para o pr¶o ximo n¶umero natural na gera»c~ao,
ent~
ao a propriedade acontece para todos os n¶ umeros naturais.

A segunda propriedade, chamada de princ¶³pio da indu»c~ao ¯nita, ¶e


t~a o geral que merece uma considera»c~a o especial.

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:

(a) Base da indu»c~


a o: mostrar que 0 satisfaz a asser»c~ao P.
2.2. Indu»
c~ao ¯nita 15

(b) Hip¶otese de indu»c~ao: supor que o n¶umero natural k satisfaz a


asser»c~
ao P , e demonstrar que:

(c) Passo de indu»c~


ao: k + 1 satisfaz a asser»c~ao P

(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.

Exemplo 2.2.2 Seja A = f2; 3g, C o conjunto de concatena»c ~


oes dos
elementos de A e F = ff; gg um conjunto de fun»c~
oes, onde:

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.

No exemplo acima, o conjunto O ¶e indutivo em A. O item 1 ¶e a


cl¶ausula b¶
asica da de¯ni»c~ao, os ¶³tens 2 e 3 s~ao as cl¶a usulas de indu»c~ao e
o item 4 a cl¶
a usula de fechamento. A ¶e o conjunto b¶asico ou inicial e F ¶e
o conjunto de fun»c~o es geradoras. Dizemos tamb¶em que O ¶e de¯nido por
indu»c~
ao a partir de A por F. Observe no pr¶oximo exemplo, a de¯ni»c~a o
indutiva dos n¶ umeros naturais a partir da fun»c~ao sucessor.

Exemplo 2.2.3 O conjunto dos n¶ umeros naturais N ¶e indutivo em A,


onde A = f0g, e a fun»c ~
ao geradora ¶
e a opera»c~
ao de sucessor, que soma
1 a um n¶
umero natural:

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

Os exemplos 2.2.2 e 2.2.3 obedecem ao esquema geral de de¯ni»c~o es


indutivas, apresentado a seguir.

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;

Fecho Indutivo Dizemos que B ¶e de¯nido por indu»c~ a o em A sob F


se e somente se B ¶e a interse»c~
ao de todos os conjuntos indutivos
em A, tamb¶ em chamado \fecho indutivo" de A sob F . Equiva-
lentemente, poder¶³amos dizer: se n~ao obedece µ
as cl¶
ausulas 1. e 2.
acima ent~
ao n~ao ¶e elemento de B, da¶³ o termo fecho.

Observe que o fecho indutivo ¶e o menor conjunto indutivo em A.


Alternativamente, podemos ter uma de¯ni»c~ao mais construtiva do fecho
indutivo de um conjunto, como se segue.

De¯ni» ao 2.2.2 Sejam D e A ½ D conjuntos, e F um conjunto de


c~
oes f : Dk ! D, k > 0. Dizemos que um conjunto B ¶e de¯nido por
fun»c~
indu»c~ uencia B0 ; B1 ; ¢¢ ¢ tal que:
a o em A, se e somente existe uma seqÄ

1. B 0 = A

2. B i+1 = Bi [ ff(a1 ; a2; ¢ ¢ ¢ ; ak )jf 2 F; a1 ; a2; ¢ ¢ ¢ ; ak 2 Bi g


S
3. B = i¸0 Bi

Fica para o leitor a demonstra»c~a o de que as duas de¯ni»c~o es acima se


equivalem.
FreqÄuentemente de¯nimos conjuntos de objetos indutivamente. Nes-
te caso, para demonstrar uma propriedade P a respeito dos elementos
de um conjunto assim de¯nido, deve-se utilizar a indu»c~ a o estrutural. O
esquema de demonstra»c~ao, utilizando esta uma varia»c~ao do princ¶³pio da
indu»c~
a o ¯nita, compreende os seguintes passos:

(a) Base da indu»c~ao: mostrar que os elementos iniciais do conjunto


satisfazem a asser»c~a o P.

(b) Hip¶ ao: supor que elementos quaisquer x1 ; ¢¢ ¢ ; xk sa-


otese de indu»c~
tisfazem a asser»c~
a o P, e demonstrar que:

a o: f(x 1; ¢ ¢ ¢ ; xk ) satisfaz a asser»c~a o P , para toda


(c) Passo de indu»c~
fun»c~
ao geradora f .
18 Cap¶³tulo 2. No»
c~oes Preliminares

(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 .

Exemplo 2.2.4 (Indu» c~ao estrutural) Seja A = fa; bg, C o conjunto


de todas as concatena»c~o es dos elementos de A [ f!; :; (; )g e seja con-
o es F = ff! ; f:g, onde:
junto de fun»c~

f ! : C2 ! C
f !(x; y) = (x ! y)

f: : C ! C
f:(x) = :x

De¯nimos o conjunto O como:

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

umero de s¶³mbolos ).

(a) E¶ v¶
a lido para o conjunto inicial A = fa; bg, pois n~
ao cont^
em ( e ).

(b) supondo x e y satisfazem µ


a propriedade, ent~
a o:

(c1) f! (x; y) = (x ! y) satisfaz µ


a propriedade; e

(c2) f:(x) = :x satisfaz µ


a propriedade.

(d) Ent~
a o todo elemento de O satisfaz µ
a propriedade.
2.3. Alfabetos e Linguagens 19

2.3 Alfabetos e Linguagens


Um alfabeto ¶
e um conjunto, em geral ¯nito, de s¶³mbolos chamados de le-
tras. Damos o nome de letra a todo sinal gr¶a ¯co satisfazendo os seguintes
crit¶erios:

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

2. As letras devem possuir uma estrutura que impossibilite decom-


o es horizontais. Assim, \ jj" n~a o seria uma escolha apropri-
posi»c~
ada, pois ¶ e composta horizontalmente de dois sinais iguais (\j" e
\j"); no entanto, \{" e \=" seriam escolhas adequadas - apesar de
poderem ser decompostas verticalmente.

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.

§1 = f¤; jg e §2 = f2; 4; ¯g satisfazem os crit¶erios 1., 2. e 3. descritos


acima.
Express~o es ou cadeias s~ao seqÄ
u^encias de letras justapostas horizon-
talmente, tendo seus limites claramente identi¯cados por interespa»co
separador com mesma fun»c~a o que o espa»co em branco na escrita con-
vencional. Formalmente, seja § um alfabeto, uma cadeia (express~a o,
string) em § ¶e:

1. ¤, ¶e uma cadeia nula e seu comprimento j¤j = 0, ou

2. uma letra ¾ 2 § e seu comprimento j¾j = 1.

3. Se x ¶e uma cadeia em § e ¾ 2 § uma letra, ent~ao x¾ ¶e uma


cadeia em §. Se o comprimento jxj = n ent~a o o comprimento de
jx¾j = n + 1.

Assim, 24 e 2 ¯ 24 s~ao express~oes no alfabeto §2. No item 3. acima


utilizamos a opera»c~
ao de concatena»c~
ao que se resume em justapor um
s¶³mbolo a uma cadeia. Por exemplo, a concatena»c~a o de 24 com 2 ¶e a
20 Cap¶³tulo 2. No»
c~oes Preliminares

cadeia 2 4 2. Podemos generalizar esta opera»c~a o para a concatena»c~a o


de duas cadeias; assim o comprimento da cadeia resultante ¶e a soma dos
comprimentos das cadeias concatenadas. Por exemplo, 24 concatenada
com 2 ¯ 24 ¶ e 2 4 2 ¯ 24.
Palavras s~a o express~
oes que respeitam determinados crit¶erios expl¶³-
citos para sua forma»c~ ao. Desta forma poder¶³amos explicitar o seguinte
crit¶
erio de forma»c~ao para as palavras em §1 :

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.

Utilizando-se este crit¶erio, concluimos (informalmente) que, ¤ ¤ jj¤ ¶e


uma palavra, e que ¤ ¤ j¤ n~ao ¶e, pois possui menos que duas ocorr^encias
sucessivas de \j".

De¯ni»
c~
ao 2.3.1 (Linguagem) Seja § um alfabeto. Ent~
ao:

1. Seja §0 = f¤g e §i+1 = §i [ fx¾ j x 2 §i e ¾ 2 §g, ent~ ao


¤ S1 i ¤
de¯nimos § = i=0 § . Ou seja, § ¶ e o conjunto de todas as
cadeias em §.

e uma linguagem em § se e somente se L µ §¤ (em geral,


2. L ¶
uma linguagem ¶
e um conjunto de¯nido por uma propriedade).

Exemplo 2.3.1 Dado o alfabeto § = f2; 4; ¯g

L = f2 ; 2 4; 2 ¯; 4g

e uma linguagem em §.

2.4 Objetos ¯nitos e espa»


cos
Um objeto ¶ e ¯nito se sua especi¯ca»c~a o requer apenas uma quantidade
¯nita de informa»c~ a o. Um n¶umero natural ¶e um objeto ¯nito que pode
ser especi¯cado pela sua representa»c~ao ar¶a bica. Nem todo n¶umero real
¶e um objeto ¯nito. Por exemplo, existem n¶umeros reais transcendentes,
cuja especi¯ca»c~
a o poderia ser dada apenas exibindo uma s¶erie in¯nita
2.4. Objetos ¯nitos e espa»
cos 21

de termos3 . Uma n¡tupla de objetos ¯nitos ¶e tamb¶em um objeto ¯nito,


desde que pode ser especi¯cada pela enumera»c~ao ¯nita de suas n compo-
nentes. Uma classe ¯nita de objetos ¯nitos ¶e tamb¶em um objeto ¯nito,
mas uma classe in¯nita de objetos em geral n~ao ¶e um objeto ¯nito. Um
espa»c o ¶e qualquer conjunto X de objetos ¯nitos tal que, dado um objeto
¯nito qualquer, sempre ¶e poss¶³vel veri¯car efetivamente sua pertin^encia
a X. Por exemplo:

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.

Note que a classe de fun»c~o es f : N ! N n~a o ¶e um espa»co pois seus


objetos n~
ao s~
ao em geral ¯nitos. Um dos objetivos deste livro ¶e estudar
que classe de fun»c~
oes possui representa»c~oes ¯nit¶a rias, sendo, portanto
objetos ¯nitos.

2.4.1 Sistemas de Representa»c~


ao
Queremos aqui, obter m¶etodos que tornam conceitos abstratos, tais
como conjuntos, fun»c~oes e rela»c~oes, em objetos com uma representa»c~ao
concreta de natureza simb¶o lica. Um sistema de representa»c~a o ¶e uma
correspond^encia entre objetos simb¶olicos e objetos conceituais. Por e-
xemplo, os sistemas de representa»c~a o num¶ericos fazem corresponder, a
cadeias de s¶³mbolos, n¶
umeros.
O sistema usual de representa»c~ao dos naturais ¶e o decimal. Uti-
lizamos um alfabeto §10 = f 0;1; 2; 3; 4; 5; 6; 7; 8; 9 g, portanto os n¶ume-
ros naturais positivos s~ao cadeias em §10 ¤ . A estas cadeias associamos
um valor atrav¶es de uma fun»c~a o º : §10¤ ¡! N , da seguinte maneira:

² Para todo x 2 §10 ; º(x) = x


P i=k
² Se x = ¾ k ¾k¡1 ¢ ¢¢ ¾ 1¾ 0 ent~ao º(x) = i=0 º(¾i) £ 10i

E claro que os transcendentes conhecidos t^ em uma especi¯ca»c~
ao aparentemente
¯nita, por exemplo ¼, como sendo a raz~ a o entre o dobro do comprimento de qual-
quer circunfer^encia para o seu raio, mas estamos aqui aceitando como um fato que
possamos medir o comprimento de uma circunfer^ encia.
22 Cap¶³tulo 2. No»
c~oes Preliminares

Exemplo 2.4.1 4 º(1024) = 1 £ 103 + 0 £ 102 + 2 £ 101 + 4 £ 100 = 1024

² 1024 ¶e um n¶ umero natural, algo de natureza abstrata ou con-


ceitual, representante da classe de todos os conjuntos contendo
1024 objetos.

² 1024 ¶ e uma cadeia de s¶³mbolos e portanto algo de natureza sim-



o lica.

A diferen»ca entre a representa»c~a o de um n¶


umero, uma cadeia, e seu valor
¯ca mais clara se considerarmos a representa»c~ao Romana, em que os
s¶³mbolos utilizados, ou seja o alfabeto, ¶e o conjunto f I ; V ; X ; C ; L g.
Assim, valor(I V ) = 4 mostra, inclusive, que a fun»c~ao de avalia»c~a o valor
¶e diferente de º.
A contagem dos elementos de um conjunto fornece sua cardinali-
dade e a valoriza»c~a o fornece o valor de uma cadeia. No caso dos sis-
temas de representa»c~ a o com um s¶³mbolo de valor 0 as correspondentes
fun»c~
o es º s~
a o n~
ao injetivas. Isto ¶e devido ao poss¶³vel posicionamento
do 0 µ a esquerda, como nas cadeias f5 ; 05 ; 005 ; ¢¢ ¢ g . Nos sistemas
n¡¶ adicos, cuja de¯ni»c~
ao apresentaremos a seguir, n~ao existe em §n ne-
nhum s¶³mbolo que tenha valor 0, assim a fun»c~ao º n ¶e injetiva. Isto nos
permite tratar as cadeias de tais sistemas como representantes u¶nicas de
seus respectivos valores, e vice-versa.

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:

º n() = 0 a palavra nula tem valor 0


º n(s j ) = j se sj 2 §n = fs1 ;s2 ; s3 ; ¢ ¢¢ ; sn g
P i=k i
º n(¾ k ¾k¡1 ¢ ¢ ¢¾ 1¾ 0) = i=0 º(¾i ) £ n

Exemplo 2.4.2 De¯nimos um sistema 3-¶ a dico de representa»c~


ao. Na-
turalmente, escolhemos §3 = f1; 2; 3g. Logo, W = §¤3 . A fun»c~ a o º3 ¶
e
de¯nida como:

º3 () = 0 a palavra nula tem valor 0


º3 (1) = 1
º3 (2) = 2
º3 (3) = 3
º3 (¾ k ¢ ¢ ¢ ¾0 ) = º3 (¾k ) £ 3k £ ¢ ¢¢ £ ¾0 £ 3 0

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

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.

2. A cadeia vazia 0 corresponde ao 0 dos naturais.

Estas propriedades de um sistema n¡¶a dico, tal como de¯nimos, nos


possibilitar¶
a trabalhar tanto no plano simb¶o lico como no plano con-
ceitual. Para melhor entender estas considera»c~oes apresentamos a ¯gura
abaixo, que mostra tr^es planos:

Plano Real onde est~ao os objetos da realidade efetiva


Plano Conceitual onde formamos os conceitos por abstra»c~ao
Plano Simb¶olico onde representamos os conceitos

No plano conceitual tanto o resultado das abstra»c~oes (no caso a cardina-


lidade) como o valor (interpreta»c~ao) ¶e um ¶unico conceito, por exemplo
24 Cap¶³tulo 2. No»
c~oes Preliminares

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

dos aspectos abordados na se»c~ao 2.4 podem ser encontrados em diversos


textos de fundamentos, principalmente [Sho71] e [BL74].

2.6 Exerc¶³cios
1. Demonstre as propriedades do lema 2.1.1.

2. Prove que uma fun»c~ao f : A ! B ¶e injetiva se somente se, para


toda a fun»c~ao g; h : C ! A, se g ± f = h ± f ent~a o g = h. Prove
que uma fun»c~ a o f : A ! B ¶e sobrejetiva se somente se, para toda
ao g; h : B ! C , se f ± g = f ± h ent~ao g = h.
a fun»c~

3. Demonstre as propriedades do lema 2.1.2.

4. Demonstre o lema 2.1.3.

5. Seja R uma rela»c~ao bin¶a ria em A2 . Seja Rc de¯nida como

Rc = f< x; y >2 A2 j < y; x >2 Rg

Mostre que R 0 = R [Rc [ = ¶e a menor rela»c~ao re°exiva e sim¶etrica


contendo R.

6. Demonstre o lema 2.1.4.

7. Sejam R 1 e R 2 rela»c~oes de equival^encia em A. Mostre que, se


R ± S = S ± R, ent~a o R ± S ¶e a menor rela»c~a o de equival^encia
contendo R e S .

8. Sejam R e S rela»c~oes em A. Prove:

(i) [x](R\S ) = [x]R \ [x]S


(ii) [x](R[S ) = [x]R [ [x]S

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

10. A ¶ e um reticulado com rela»c~a o a R se e somente se < A; R > ¶e uma


ordem parcial e para todo x;y 2 A; fx; yg tem um supremo e um
¶in¯mo em A. (i) Construa duas ordens parciais de 5 elementos uma
das quais ¶e um reticulado e a outra n~a o. (ii) Quantos reticulados
distintos podem ser constru¶³dos de um conjunto de 3 elementos?
(iii) Prove que se A ¶e um reticulado com respeito a R ent~ao A ¶e
um reticulado com respeito a Rc. (iv) D^e um contra-exemplo µa
a¯rma»c~ e um reticulado com respeito a R e B µ A
a o de que se A ¶
ent~ao B ¶e um reticulado com respeito a R. (v) Prove que se A ¶e
um reticulado com respeito a R 1 e B ¶e um reticulado com respeito
a R2 , ent~ao A £ B ¶ e um reticulado com respeito a R tal que
x; u 2 A e y; v 2 B ent~a o << x; y >; < u; v >>2 R se somente se
< x; u >2 R1 e < y; v >2 R2 .

11. Seja h : A ! B um homomor¯smo de E1 em E2 (estruturas


alg¶ebricas. Seja »
= a rela»c~ao de¯nida em A tal que, para todo
x; y 2 A, x = y se somente se h(x) = h(y). Prove que »
» = ¶e uma
rela»c~
ao de congru^
encia em A.

a o existem cadeias x 2 fa; bg¤ tal que xa = bx.


12. Prove que n~
Pn n
13. Prove que i=1 i4 = 30 (n + 1)(2n + 1)(3n 2 + 3n ¡ 1).
Parte I

Evid^
encias para a Tese de
Church

27
Cap¶³tulo 3

Fun»
c~oes Recursivas

No in¶³cio deste s¶eculo, a cren»ca na possibilidade de resolu»c~ao de qualquer


problema matem¶ atico era amplamente aceita, principalmente devido ao
matem¶ atico David Hilbert. Sua ambi»c~a o de mecanizar o tratamento de
problemas matem¶ a ticos contribuiu fortemente para a reformula»c~a o da
matem¶ atica, na dire»c~ ao de sistemas axiom¶aticos, nos moldes da geome-
tria Euclidiana.
Entretanto, em 1931 a publica»c~ao do resultado da incompletude da
aritm¶etica, devido a Kurt GÄodel, estabeleceu a n~a o exist^encia de pro-
cedimentos efetivos para julgar a veracidade ou falsidade de asser»c~oes
(potenciais teoremas) a respeito da teoria dos n¶umeros naturais. Na de-
monstra»c~ ao deste resultado, t~a o fundamental para a matem¶atica, GÄodel
utilizou fun»c~
oes cujo c¶ a lculo ¶e feito atrav¶es de procedimentos ¯nitos, com
passos bem determinados. GÄo del e Jacques Herbrand de¯niram um con-
junto de fun»c~o es, hoje conhecido como conjunto das fun»c~ oes recursivas,
que capturam a no»c~ a o de c¶a lculo ou computa»c~ao ¯nita.
Em 1936, Alonzo Church demonstrou a equival^encia entre o conjunto
de fun»c~oes de¯nido por GÄodel e Herbrand, e uma outra caracteriza»c~ao
de procedimento efetivo devida a Church e Stephen Kleene, o ¸-calculus.
Esta equival^ encia levou Church a conjecturar que a de¯ni»c~ao de proce-
dimento efetivo ¶ e completamente caracterizada pelas fun»c~o es recursivas.
Esta conjectura ¶ e conhecida como tese de Church e at¶e hoje ¶e ampla-
mente aceita.
A classe das fun»c~ oes recursivas pode ser representada por uma gama
bastante variada de formalismos. Neste cap¶³tulo utilizamos uma lin-

29
30 Cap¶³tulo 3. Fun»
c~oes Recursivas

guagem b¶ asica cuja origem pode ser encontrada em [EE70] ou em [BL74].


O material apresentado ¶ e uma teoria mais concreta, ou seja, mais for-
mal e construtiva, na qual as fun»c~oes ser~ao de¯nidas dentro de um plano
simb¶ o lico e de tal modo que os referentes conceituais ¯quem bem deter-
minados.
Quando falamos do sucessor de um n¶umero natural, consideramos
a fun»c~ ao suc : N ! N tal que suc(x) = x + 1 como se o conjunto N
fosse totalmente conhecido e pressupondo um conhecimento anterior do
signi¯cado da opera»c~ ao de somar 1. E ¶ claro que sabemos efetuar tal
opera»c~ a o na representa»c~ a o ar¶abica decimal, mas esta representa»c~ao n~a o
foi nem sequer mencionada na de¯ni»c~a o de suc. Nos pr¶o ximos cap¶³tulos
de¯nimos as fun»c~ o es recursivas via sistemas de representa»c~a o diversi¯-
cados.
Introduzimos uma s¶erie de fun»c~o es que realizam transforma»c~oes no
espa»co W e que servem de base para a constru»c~a o de linguagens, m¶a-
quinas e programas. As fun»c~ oes s~ao apresentadas na seguinte ordem: 1)
fun»c~
o es iniciais, que servem de base para todas as demais; 2) funcionais,
ou seja, fun»c~ o es que geram fun»c~oes a partir de fun»c~oes (composi»c~ao,
combina»c~ a o e expoentiza»c~ ao); 3) A partir de 1) e 2) constru¶³mos fun»c~o es
aritm¶ eticas, fun»c~o es que manipulam tuplas, fun»c~o es para processamento
de cadeias e alguns funcionais de particular interesse computacional. Fi-
nalmente apresentamos o funcional repeti»c~a o, que completa a linguagem
b¶asica (LB). O leitor deve prosseguir como se estivesse aprendendo uma
nova linguagem de programa»c~a o funcional.
A apresenta»c~ ao das fun»c~ oes ¶e feita paralelamente com o uso ¶³cones,
que chamamos de componentes at^omicos e moleculares. Esta linguagem
gr¶a¯ca assemelha-se aos gr¶ a ¯cos conhecidos como circuitos estudadas
em eletricidade.

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:

1. Identidade ¶ : W1 ¡! W1, de¯nida por: ¶(x) = x

2. Zero z : W0 ¡! W1 , de¯nida por: z ( ) = 0

a o ¼ : W1 ¡! W0, de¯nida por: ¼(x) =< >


3. Proje»c~

4. Sucessor s : W1 ¡! W1, de¯nida por: s(x) = x + 1

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 ¢¢¢ ¼ ¢¢¢

Estas componentes usadas isoladamente t^em um poder bastante li-


mitado, as fun»c~
o es que elas realizam atuam apenas sobre uma pequena
sejam su¯cientemente simples de tal modo que seja f¶ a cil imaginar sua poss¶³vel e-
xist^
encia no plano real, e devem ser su¯cientes para se constitu¶³rem de base para
a constru»c~a o de processadores mais complexos que representam a classe completa
das fun»c~
o es recursivas. Assim em todas as de¯ni»c~oes estamos falando da fun»c~ ao
(entidade abstrata) que os processadores reais computam e que s~ao representadas por
uma linguagem. Usamos os mesmos s¶³mbolos para representar tais processadores e
as correspondentes fun»c~o es.
32 Cap¶³tulo 3. Fun»
c~oes Recursivas


W2
AU ¢q q
W1 q
..
Y s .
z6 ¼? Wi
W0 ..
.
Wn

Figura 3.1: O espa»co das representa»c~oes

ao do espa»co W . Na ¯gura 3.1 os espa»cos µa direita da linha inter-


por»c~

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-

z pcomo um agente que cria um registro contendo a palavra nula 0


¯ca»c~
o es dadas pelas de¯ni»c~ oes abstratas. Podemos tamb¶em imaginar

cujo valor ¶e 0. As demais componentes apenas transformam ou destroem

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

Estas componentes moleculares foram obtidas via uma disposi»c~ao


linear em que a sa¶³da de uma componente at^o mica ¶e usada como en-
trada para a pr¶oxima, da esquerda para a direita. Notem que podemos
assim criar registros contendo todos os elementos do espa»co W . Estas
componentes moleculares representam os n¶umeros naturais e podemos
utilizar ¯guras mais simples,

q
qs q¢¢¢ q s q -
n q z
para representar | {z }
n

xemplo ps pcom z pµa direita. Certas estruturas lineares, embora


E¶ claro que certas componentes n~a o podem ser compostas, por e-

poss¶³veis s~
a o redundantes por exemplo

- qs q
q¶ -q

Uma outra maneira de se obter componentes moleculares ¶e por es-


trutura»c~
ao vertical ou em paralelo, por exemplo:

z -q z q
- - qs q
-
-q qs -q qs -q
-
z -
, e

que representam combina»c~o es em paralelo de 2 componentes at^o micas.


Podemos ter combina»c~oes em paralelo de componentes moleculares e
at^
omicas:

z q
-
z q
qs q-

Podemos ter componentes moleculares para representar qualquer


ponto < x1 ;x 2; ¢ ¢ ¢ ; xr > de Wr, por exemplo para r = 3 e tomando
º(xi) = n i, temos que a componente molecular abaixo cria 3 registros
contendo n1 , n2 e n3 .
34 Cap¶³tulo 3. Fun»
c~oes Recursivas

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

Para obtermos fun»c~ oes entre espa»cos quaisquer utilizamos esquemas


de constru»c~ao de fun»c~
oes a partir de fun»c~oes. Em geral, se tivermos uma
classe F de fun»c~oes de¯nidas em um conjunto A 1 e tomando valores em
um conjunto A 2, dizemos que F ¶e uma subclasse da classe A2 A1 , que ¶e a
classe de todas as fun»c~o es de A1 em A2 . Um funcional ¶e qualquer fun»c~a o
que tome como par^ a metros outras fun»c~o es, por exemplo F de (A2 A1 )n
em A2 A 1 . No caso particular que estamos estudando, temos fun»c~oes em
W W assim nossos esquemas de constru»c~a o de fun»c~oes s~a o funcionais de
(W W ) n em W W .

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))

xr - f - f (xr ) - g - g(f(x r))


3.1. Fun»
c~oes Recursivas Primitivas 35

Exemplo 3.1.1 A partir das fun»c ~


oes iniciais podemos obter, pelo uso
da composi»c~
ao:
s ±z = 1
s ± s±z = 2
n
z }| {
s ± s ± ¢ ¢ ¢ ± s ±z
z = n
¼ ±z = < >

Podemos notar que as fun»c~oes criadas continuam a ser fun»c~oes de-


¯nidas e tomando valores nos espa»cos W0 e W1 . Assim, a regi~a o dos
espa»cos multidimensionais na ¯gura 3.1 continua inacess¶³vel.

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~

f £ g(xr ; y t) = < f (xr ) ; g(y t ) >

xr - f - f (xr )
¢¢̧ A
¢ A
xr - AU -
yt
- £ ¢̧
f £ g(xr ; yt )
A ¢
AAU ¢
yt
- g - g(yt )

Todos os pontos de W2 podem agora ser representados, do mesmo


modo que representamos os elementos de W1 , assim < 0; 0 > ¶e represen-
tado por z £ z. Os pontos de W3 tamb¶em podem ser representados, por
e representado por z £ s ± s ± s ± z £ s ± z. Em geral,
exemplo < 0; 3; 1 > ¶
os pontos do espa»co Wk s~ao representados por n1 £ n2 £ ¢ ¢ ¢ £ n k e os n i
por sni ± z. Note que os pontos do espa»co W agora podem ser represen-
tados como r¡tuplas de palavras no alfabeto §, ou como componentes
36 Cap¶³tulo 3. Fun»
c~oes Recursivas

¤¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¡
££
¢£
¢£
¢£
¢£
¢£
¢£
¢£
¢£
¢¢
¤¤
¡¤
¡¡ ¤¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¡
££
¢£
¢¢ ££
¢£
¢£
¢£
¢£
¢£
¢¢
¤¤
¡¤
¡¤
¡¤
¡¡ ¤¤
¡¤
¡¤
¡¤
¡¡
££
¢£
¢£
¢£
¢¢ ££
¢£
¢£
¢£
¢¢
¤¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¡ ¤¤
¡¤
¡¡
££
¢£
¢£
¢£
¢£
¢£
¢¢ ££
¢£
¢¢


Figura 3.2: Abaco

moleculares ou como express~


o es formadas por composi»c~a o e combina»c~a o
das fun»c~
oes iniciais.

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

atrav¶es dos esquemas de composi»c~a o (componentes arranjados em s¶erie)


e combina»c~ao (componentes arranjados em paralelo). Por exemplo con-

º2 (2¦) = 4 e sua componente molecular ¶e z p ps pps p ps pps p


siderando o alfabeto § = f2; ¦g, com º2 (2) = 1 e º2 (¦) = 2 temos que
. De um

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

a componente z pps pps p ps p ps p ps p


a ¯gura 3.2, em que a terceira linha de cima para baixo tem 5 contas µa
esquerda, correspondendo µ .
Se considerarmos uma componente Pf realizando f : W1 ! W1 e
desejarmos reaplicar tal fun»c~ao digamos 5 vezes a uma certa palavra
3.1. Fun»
c~oes Recursivas Primitivas 37

z ppor x pe cada ps ppela componente Pf .


x de W1, podemos realizar a componente correspondente substituindo

z ps ps ps ps ps p =) x - pPf- - P f- - Pf- - Pf- - Pf-

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

q¶ -qPf- - Pf- - Pf- - Pf- - Pf-

A ¯gura a seguir representa uma maneira em que a opera»c~ao de subs-

cular correspondendo a Pf e o componente at^o mico p¶ p


titui»c~
ao pode ser realizada utilizando-se apenas um componente mole-
. A chave em a
est¶a ligada inicialmente na posi»c~ao d. O controle recebe como entrada

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

Podemos representar esta ¯gura de modo mais simples por

q
r
Pf rq
r +q
1¢¢¢ ¢ ¢}¢ r q
| {z

q
6
-
38 Cap¶³tulo 3. Fun»
c~oes Recursivas

onde indicamos o n¶umero de entradas para Pf , digamos r somado com


1 que signi¯ca mais uma entrada para o controle, e

q
r
Pf rq
¢| ¢ ¢ {z ¢ ¢¢}

q
6
-

e¶ para ser entendido como a repeti»c~ao do componente Pf , o n¶umero de


vezes indicado por #.

q
r
Pf rq

Se P f# : Wr+1 ! W1 for a fun»c~ao computada por este componente,


ent~
ao temos:
#
Pf (xr ; 0) = xr
Pf# (xr ; y + 1) = Pf (Pf# (xr ; y))
evidenciando que esta maneira de realizar este tipo de repeti»c~a o de uma
fun»c~
a o coincide com o esquema de recurs~a o primitiva introduzido no
cap¶³tulo 2. Mais tarde voltamos a discutir este t¶opico. Por enquanto
de¯nimos o esquema de obten»c~a o de novas fun»c~o es que ¶e motivado por
esta discuss~a o.

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))

em, que f # ¶e de¯nida por recurs~ao primitiva a partir


Diz-se, tamb¶
de f . Observe que:
f #(x; 0) = x
f #(x; 1) = f (x)
f #(x; 2) = f (f (x))
..
.
A componente molecular para a expoentiza»c~ao de uma fun»c~ao f ¶e re-
presentada pela ¯gura:
3.1. Fun»
c~oes Recursivas Primitivas 39

xr ¢ ¢ ¢ f ¢¢ ¢
-
| {z } - f # (x ; y)
q
- 6
r
y -

A rigor ter¶³amos que dizer tamb¶em que a fun»c~a o expoentiza»c~ ao ¶e a


composi»c~ao da fun»c~ao f consigo mesma, tantas vezes quanto o valor de
y, aplicada a xr. Logo, se f ¶e comput¶a vel, f # tamb¶em ¶e comput¶avel.
Informalmente, as fun»c~o es recursivas primitivas s~a o aquelas obtidas
das fun»c~
oes iniciais e aplica»c~a o dos esquemas de composi»c~ao (±), com-
bina»c~
ao (£) e expoentiza»c~ao (#), o que nos gera uma cole»c~ao muito
grande de fun»c~ oes.

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

2. Seja F um funcional de (W W )n em W W . Dizemos que F ¶e re-


cursivo primitivo se e somente se para toda f 2 dom(F), se f
recursiva primitiva ent~
ao F(f) ¶
e recursiva primitiva.
Seja f = ¶# ± (s ± z £ s ± z ), ent~a o a seguinte seqÄu^encia de fun»c~oes
evidencia que f ¶
e uma fun»c~a o recursiva primitiva:
f1 ¢¢ ¢ z ¢¢ ¢ (inicial)
f2 ¢¢ ¢ s ¢¢ ¢ (inicial)
f3 ¢¢ ¢ s ±z ¢¢ ¢ (f 1 ± f2 )
f4 ¢¢ ¢ s ±z £ s±z ¢¢ ¢ (f 3 £ f3 )
f5 ¢¢ ¢ ¶ ¢¢ ¢ (inicial)
f6 ¢¢ ¢ ¶# ¢¢ ¢ (f 5#)
f7 ¢¢ ¢ (¶) # ± (s ± z £ s ± z) ¢¢ ¢ (f 6 ± f4 )
Chegamos a um ponto em que temos esbo»cada uma linguagem de
programa»c~
ao, de¯nida a seguir.
40 Cap¶³tulo 3. Fun»
c~oes Recursivas

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.

De¯ni» ao 3.2.1 Um programa LB ¡ r ¶


c~ e uma express~
ao que satisfaz a
seguinte de¯ni»c~
a o formal:

< express~a o > ::= < inicial > j


(< express~ ao > ± < express~
a o >) j
(< express~ ao > £ < express~a o >) j
< express~ a o ># j
< inicial > ::= ¶ j ¼ j z j s

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;

5. Se ® ´ (¯ ± °), ¯ 2 WsWr e ° 2 Wt Ws ent~


ao

j®j(xr ) = j¯j(j°j(xr ))
3.3. Fun»
c~oes aritm¶
eticas 41

6. Se ® ´ (¯ £ ° ), ¯ 2 WsW r e ° 2 WtW v ent~


ao

j®j(xr; y v ) =< j¯j(xr ); j°j(xv ) >

7. Se ® ´ ¯ #, ¯ 2 WrWr ent~
ao

j®j(xr; 0) = xr
j®j(xr; y + 1) = j¯j(j®j(xr ;y))

8. As ¶unicas fun»c ~ oes LB ¡ r s~


oes computadas por express~ ao ex-
o es em LB ¡ r que satisfazem 1 a 7 acima.
press~

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:

1. apresentamos cada fun»c~ao f de maneira informal;

2. apresentamos o lema a¯rmando que f ¶e recursiva primitiva, de tal


modo que na demonstra»c~ao do lema surge a implementa»c~ao de f.
A rigor, tal demonstra»c~a o deve constar de duas partes:

(a) prova de que a implementa»c~a o de f concorda com sua de¯ni-


»c~
a o;
(b) seqÄ
u^
encia de fun»c~o es de acordo com a de¯ni»c~a o 3.1.5.

Apenas para as primeiras fun»c~oes seguimos rigorosamente a de-


monstra»c~
a o do lema. Na maioria dos casos apenas exibimos a
implementa»c~ao deixando para o leitor completar os detalhes.

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~

±(x) =< x; x >

r

© ©* W2
¢ ©rq
©±
AU q q
© ..
W1 Y s .
z6 ¼ ? Wi
W0 ..
.
Wn

Lema 3.3.1 ± ¶ e recursiva primitiva.


Demonstra»c~
a o:

1. Temos que ± = (s £ s) # ± (z
z £ z £ ¶), que provamos por indu»c~
ao.

(a) ±(0) = (s £ s)# ± (z


z £ z £ ¶)(0) = s £ s)# (0;0; 0) =< 0; 0 >
(b) Suponha que ±(x) =< x; x >, ent~ ao:
±(x+ 1) = (s £s) ± (zz £ z £ ¶)(x +1) = (s£ s)# (0; 0; x+ 1) =
#

(s £ s) ± (s £ s)# (0;0; x) = (s £ s) ± (s £ s)#(z


z £ z £ ¶)(x) =
(s £ s) ± ±(x) = (s £ s)(x;x) =< x + 1; x + 1 >.

2. A seqÄ encia f1 ; ¢ ¢¢ f 8 abaixo completam a demonstra»c~


u^ a o que ± ¶
e
recursiva primitiva, pela de¯ni»c ~ ao 3.1.5:

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

Utilizamos a seguinte componente para representar ±

r
r ±
r

que corresponde µ
a componente molecular

qs q
q- -
qs q
z - -
- - z q- - ¢| ¢ ¢ {z ¢ ¢¢}
q¶ q- - -
q
- 6
-

Para de¯nirmos as fun»c~oes aritm¶eticas ¶e necess¶ario fazer a an¶alise


dos algoritmos aritm¶
eticos que di¯cilmente s~ao explicitamente utilizados.
Come»camos pela soma.
Somar dois n¶umeros, digamos m e n ¶e incrementar o primeiro (se-
gundo) de 1 tantas vezes quanto ¶e o valor do segundo (primeiro). Isto ¶e
o mesmo que aplicar a fun»c~ao sucessor s ao primeiro (segundo) n¶umero
tantas vezes consecutivas quanto ¶e o valor do segundo (primeiro).
¶ importante observar que a fun»c~a o sucessor ¶e a ¶unica das fun»c~oes
E
iniciais que modi¯ca o valor da representa»c~ao, ou seja se s(x) = y ent~ao
º(y) = º(x) + 1, ou melhor º(s(x)) = º(x) + 1, claro que estamos
considerando uma base ¯xa, ou ainda que o alfabeto de s¶³mbolos ¶e ¯xado.
Assim:
º(y)
z }| {
+(x; y) = s(s(¢ ¢ ¢ (s( x)) ¢ ¢ ¢))
Vemos, portanto, que temos na linguagem funcional uma maneira de
representar isto atrav¶es da expoentiza»c~a o.

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

Lema 3.3.2 + : W2 ! W1 ¶e recursiva primitiva.


Demonstra»c~
a o:

1. Temos que + = s# que provamos por indu»c~


ao.

(a) +(x; 0) = s# (x; 0) = x


(b) Suponha que +(x; y) = s# (x; y) = x + y, ent~
ao:
# #
+(x; y + 1) = s (x;y + 1) = s(s (x; y)) e por hip¶
otese de
indu»c~
a o:
s(s#(x;y)) = s(+(x;y)) = (x + y) + 1

2. A seqÄ encia f1 ; ¢ ¢ ¢f 2 abaixo completam a demonstra»c~


u^ a o que + ¶
e
recursiva primitiva, pela de¯ni»c ~ ao 3.1.5:

f1 ¢¢ ¢ s ¢ ¢ ¢(inicial)
f2 ¢¢ ¢ s# ¢ ¢ ¢(f1 #)

A componente molecular de + ¶e

qs q
- ¢| ¢ ¢ {z ¢ ¢¢} -
q
- 6
-

que representamos por


-
- + -

O leitor deve considerar que esta maneira de representar fun»c~oes a-


ritm¶eticas dispensa o uso de vari¶a veis. Esta observa»c~a o ¶e que torna esta
linguagem funcional, isto ¶e, as fun»c~o es s~a o objetos com representa»c~o es
¯nit¶
a rias t~
ao boas quanto µ as que estamos acostumados a ter para os
n¶umeros naturais. Um dos nossos objetivos principais ¶e evidenciar que,
se uma fun»c~ ao ¶ e calcul¶
avel ou comput¶ avel, ent~ao ela tem uma repre-
senta»c~
a o ¯nit¶
a ria.
Vejamos agora como realizar o produto de naturais, tendo a seguinte
de¯ni»c~ao.
3.3. Fun»
c~oes aritm¶
eticas 45

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

umero x tantas vezes quanto ¶e o valor do segundo n¶umero y. Assim:
£ = +# ¢ ¢ ¢ (E1 )

A representa»c~ a o E1 acima est¶a incorreta. No caso da soma uti-


lizamos a fun»c~ a o s, que necessita apenas de um argumento, ou seja ¶e
uma fun»c~ ao de aridade 1. Portanto, o resultado obtido em cada mo-
mento da seqÄ u^
encia de aplica»c~oes ¶e su¯ciente para continuarmos. No
caso do produto, devemos reiterar a aplica»c~ao da soma que precisa de
dois argumentos. Veja que j¶a na primeira aplica»c~a o ambos os valores
est~ao destru¶³dos, restando apenas o resultado.
A solu»c~
ao do problema da destrui»c~a o de dados j¶a nos ¶e familiar em
computa»c~ a o. Devemos preservar os valores que n~ao possam ser destru-
¶³dos, criando um espa»co para guardar os resultados obtidos. Esta ¶e a
id¶eia de um acumulador. Antes de resolvermos o problema do produto
de dois n¶ umeros naturais, vamos construir um novo dispositivo com-
putacional, utilizando apenas os recursos que temos, ou seja, as fun»c~oes
iniciais e os esquemas de composi»c~ao, combina»c~ao e expoentiza»c~ao.
De¯ni» ao 3.3.4 Seja f : W2 ! W1. De¯nimos a fun»c ~
c~ ao acumulador
de f, denotada por f® , por f® (x; y) =< f (x; y); y >
Exemplo 3.3.1 + ® (x; y) =< +(x; y); y >.
Lema 3.3.3 Seja f : W2 ! W1 . Se f ¶ e recursiva primitiva ent~
ao a
ao acumulador de f : W2 ! W1 , f ® ¶
fun»c~ e recursiva primitiva.
Demonstra»c~ao:
1. Temos que f® = (f £ ¶) ± (¶ £ ±) que provamos a seguir
f ® (x; y) = (f £ ¶) ± (¶ £ ±)(x;y)
= (f £ ¶)(x; y; y)
=< f (x; y); y >
46 Cap¶³tulo 3. Fun»
c~oes Recursivas

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 )

A componente molecular para o funcional acumulador ¶e:

- q¶ q- -
- - - - f - - -
q-
-

-
q- q¶ q- -
- f® - =
- - -

Agora com o aux¶³lio do funcional acumulador, podemos apresentar


a implementa»c~
a o do produto.

Lema 3.3.4 : : W2 ! W1 ¶ e recursiva primitiva.


Demonstra»c~ a o: Temos que : = (¶ £ ¼) ± +® # ± (z
z £ ¶ £ ¶). Deixamos para
o leitor veri¯car esta igualdade e exibir uma dedu»c~ ao para :. 2

A componente molecular para : ¶e:


3.3. Fun»
c~oes aritm¶
eticas 47

q
q¶ q
z - - - -
- - ¢| ¢ ¢- + ®- ¢ ¢ ¢ - -
-
p- q¶ -q -

{z } --
- =
q¶ -q - q
- - 6 - -
-

A pr¶ oxima fun»c~


a o nos d¶a o predecessor de seu argumento. Esta
fun»c~
ao ¶
e utilizada na implementa»c~ao da subtra»c~ao.

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
- - - -

- -
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
- -

p¼ qq ¶ q -
- H - =
-

Prosseguimos apresentando a subtra»c~a o.


a
De¯ni»
c~
ao 3.3.6 De¯nimos a fun»c~
ao : W2 ! W1 como

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 correpondente componente molecular ¶e:

- - 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~

f (x1 ; x2 ;¢ ¢ ¢ ; xr ) =< xi1 ; xi2 ; ¢ ¢ ¢ ; xis >


3.4. Manipula»
c~ao de tuplas 49

onde i1 ; i2; ¢ ¢ ¢ ;is 2 f1; 2; 3;¢ ¢ ¢ ; rg e utilizamos a seguinte nota»c~


a o:
à !
r
(x1 ; x2 ; ¢ ¢¢ ; xr ) =< xi1 ; xi2 ;¢ ¢ ¢ ; xis >
i1 i2 ¢ ¢ ¢ is¡1 is

Exemplo 3.4.1 Apresentamos abaixo alguns casos de fun»c~


a o arranjo.

² 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

Veri¯que que 1 »2 = (s £ ¶)# ± (zz £ ¶ £ ¶). A correspondente com-


ponente molecular ¶e:

- - z - q- - -
- G - - -
q ¶ - q- ¢| ¢ ¢ {z ¢¢ }¢
- - q¶ - q-
- -
q
6
-

onde

- q s -q
- -
q¶ -q
- G - =
-

² ¶r : Wr ! Wr , ¶r(x1; x 2; ¢ ¢ ¢ ; xr) =< x1 ;x 2; ¢ ¢ ¢ ; xr >


à !
r
¶r =
1 2 ¢¢¢ r¡1 r
50 Cap¶³tulo 3. Fun»
c~oes Recursivas

² ¼r : Wr ! Wr¡1, ¼r(x1 ; x2; ¢ ¢ ¢ ; xr ) =< x1 ; x2 ;¢ ¢ ¢ ; xr¡1 >


à !
r
¼r =
1 2 ¢¢¢ r¡1

Lema 3.4.1 As fun»c~ o es arranjo s~ a o fun»c~


o es recursivas primitivas.
Demonstra»c~a o: Inicialmente, podemos observar que a fun»c~ ao arranjo
aplicada a uma r¡tupla x1 ; x2 ;¢ ¢ ¢ ; xr copia os elementos i1 ; i2 ; ¢ ¢ ¢ ;it da
r ¡ tupla, assim vamos inicialmente conseguir fun»c~ o es µkj : Wk ! Wk+1
que copiam o j -¶e simo elemento de uma k ¡ tupla como k + 1-¶esimo
elemento, ou seja:

µjk (x1 ; x2 ; ¢¢ ¢ ; xj ;¢ ¢ ¢ ; xk ) =< x1; x2 ; ¢ ¢ ¢ ; xj ; ¢ ¢ ¢ ;x k ; xj >

Podemos obter a tupla < x1 ; x2 ; ¢ ¢¢ ; xr ; xi1 ;x i2 ; ¢ ¢ ¢ ;x it > a partir da


a o de µkj 's, ou seja:
tupla < x1 ; x2; ¢ ¢ ¢ ; xr >, pela composi»c~

µr+t¡1
it ± ¢ ¢¢ ±µr+1 r
i2 ±µi1 (x1 ; x2 ; ¢ ¢ ¢; xr ) =< x 1; x2 ; ¢ ¢ ¢; x r; xi1 ;x i2 ; ¢ ¢ ¢ ; xit >

agora basta eliminar as r primeiras componentes, assim


à ! r t
r z }| { z }| {
= (¼ £ ¢ ¢ ¢ £ ¼ £ ¶ £ ¢ ¢ ¢ £ ¶) ± µr+t¡1
it ± ¢¢ ¢ ± µr+1 r
i2 ± µi1
i1 ¢ ¢¢ it

oes µkj ¯ca como exerc¶³cio para o leitor.


A s¶³ntese das fun»c~ 2

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 a componente molecular para a fun»c~ao arranjo


à !
3
3 2 2 1 3
3.5. Funcionais especiais 51

3.5 Funcionais especiais


Uma das estruturas de programa»c~ao mais comuns, e que ocorre basi-
camente em todas as linguagens de programa»c~ao mais amig¶a veis, ¶e o
comando if then else. Este dispositivo j¶a faz parte da cultura de qual-
quer programador. Ao ¯nal desta se»c~a o, constru¶³mos o funcional caso
para simul¶a-lo. Inicialmente, apresentamos alguns funcionais auxiliares
na constru»c~
a o principal.
uentemente desejamos aplicar duas fun»c~oes µa mesma r ¡ tupla,
FreqÄ
isto pode ser conseguido atrav¶es do funcional de¯nido abaixo.

Lema 3.5.1 Sejam as fun»c~ oes f : Wr ! Ws e g : Wr ! Wt. Se f e g


s~ a o < f; g >: Wr ! Ws+t , de¯nida por
ao recursivas primitivas ent~

< f; g > (xr ) =< f (xr ); g(xr) >

e¶ recursiva primitiva.
Demonstra»c~ao: E¶ f¶
a cil ver que:
à !
r
< f; g >= (f £ g) ±
1 ¢¢¢ r 1 ¢¢¢r
2

A correspondente componente molecular ¶e:

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.

Lema 3.5.2 Seja f : W2 ! W1 uma fun»c~ ao recursiva primitiva,ent~


ao
a o f : Wr+1 ! Wr , de¯nida por:
a fun»c~
r

f r(xr ; y) =< f(x1 ; y); f(x2 ;y); ¢ ¢ ¢ ; f(x r; y) >


52 Cap¶³tulo 3. Fun»
c~oes Recursivas

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

A correspondente componente molecular ¶e:

-
- f -
1
q1 q= q1 q1 2:rq q
r +1
..
r+ r r+ r+ . r
f r
.
.
.
r
.
r ..
r +1
-
- f -

µ vezes desejamos operar uma fun»c~ao bin¶aria com todos os elemen-


As
tos de duas r ¡ tuplas. O lema abaixo mostra que isto pode ser feito
preservando recurs~
ao primitiva.

Lema 3.5.3 Seja f : W2 ! W1 uma fun»c~ a o recursiva primitiva, ent~


ao
ao fi: Wr+r ! Wr , de¯nida por:
a fun»c~
r

fir(xr ; yr ) =< f (x1 ; y1 ); f(x2 ;y 2 ); ¢¢ ¢ ; f (xr ;y r) >

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

A correspondente componente molecular ¶e:

-
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

Lema 3.5.4 Sejam as fun»c~ oes f : Wr ! W1 e g : Wr ! Ws . Se f e g


s~
ao recursivas primitivas ent~
a o a fun»c~
ao, de¯nida por
(
g(xr) se f(x r) > 0
f ! g(xr ) =
0s se f(x r) = 0

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

A correspondente componente molecular ¶e:

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

Os funcionais de¯nidos at¶e agora preparam a apresenta»c~ao de um


funcional muito ¶util, a que chamamos caso para motivar a associa»c~a o
de seu entendimento com a estrutura de programa»c~a o case presente na
maioria das linguagens de programa»c~ao.

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

Lema 3.5.5 Se f : Wr ! W1 , g1 ; g2 : Ws ! Wt s~ a o recursivas primi-


tivas ent~
ao caso(f;g 1; g 2) ¶
e recursiva primitiva.
Demonstra»c~a o: Seja
(
0 se x > 0
sg(x) =
1 se x = 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

caso(f; g1 ; g2) = +i± ( : £ : ) ± (¶t £ sg £ ¶t £ sg)± (g 1 £ f £ g2 £ f) ± H


t t t

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

A correspondente componenete molecular de caso ¶e:

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

3.6 Processamento de cadeias


Usualmente as linguagens de programa»c~ao oferecem tipos de dados, de
tal modo que as opera»c~o es aritm¶eticas pertencem a um tipo bem deter-
minado, por exemplo I nteger, e as opera»c~oes sobre cadeias pertencem
a um outro tipo, por exemplo String. Entretanto no n¶³vel de m¶aquina
estes tipos se uni¯cam em seqÄu^encias de 0's e 1's. O leitor deve ter em
mente esta distin»c~ ao para compreender o que se segue.
As fun»c~
oes a seguir manipulam cadeias. E ¶ importante observar que
todas as fun»c~oes aritm¶eticas vistas at¶e agora, foram implementadas sem
um sistema de representa»c~a o ¯xado. Apenas a de¯ni»c~a o da fun»c~a o inicial
s cont¶em o pressuposto de que o sistema ¶e n¡¶adico 2 e º(s(x)) = º(x)+1.
Veri¯que que para qualquer opera»c~ao aritm¶etica ¯, º (¯(x; y)) = º(x) ¯
º(y), ou seja, º ¶e um isomor¯smo entre os planos simb¶olico e conceitual.
N¶o s queremos que todas as demais opera»c~oes sobre cadeias gozem desta
propriedade. Para tanto devemos ¯xar o n¶ umero de letras do alfabeto
§ do sistema de representa»c~a o.
Como visto no cap¶³tulo 2 dado um alfabeto §, uma cadeia em § ¶e:

(1) 0, ¶e uma cadeia nula e seu comprimento ¶e 0, ou

(2) uma letra ¾ 2 § e seu comprimento ¶e 1.


2
Num sistema decimal s n~ a o seria uma fun»c~
a o, pois s(x) = y; s(x) = 0y; s(x) = 00y
e assim por diante, satisfazem º(s(x)) = º(x) +1. Ter¶³amos que adicionar a condi»c~ ao
de que y ¶e o menor poss¶³vel.
56 Cap¶³tulo 3. Fun»
c~oes Recursivas

(3) Se x ¶e uma cadeia em § e ¾ 2 §, ent~ao x¾ ¶e uma cadeia em §. Se


o comprimento de x ¶e n ent~ao o comprimento de x¾ ¶e n + 1.

(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

Contando da esquerda para a direita, a partir de 0, a cadeia x de ordem


k ¶e tal que º(x) = k. Ent~
ao a fun»c~ao s(x) poder¶a ser computada, tanto
pegando a cadeia seguinte a x, quanto pegando o elemento de ordem
º(x) + 1 na lista. Daqui por diante vamos ¯xar n como o n¶umero de
letras do alfabeto §.

De¯ni»
c~
ao 3.6.1 (cadeia inicial e s¶³mbolo ¯nal)

1. De¯nimos inic : §¤ ! §¤ como:


(
x0 se x = x0 ¾; ¾ 2 §
inic(x) =
0 se x = 0

2. De¯nimos fim : §¤ ! § como:


(
¾ se x = x 0¾; ¾ 2 §
fim(x) =
0 se x = 0

Por exemplo: inic(1223) = 122, f im(1223) = 3.

Lema 3.6.1 inic : §¤ ! §¤ e fim : §¤ ! § s~


a o fun»c~
o es recursivas
primitivas.
Demonstra»c~a o:

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)) ± ±

A correspondente componente molecular ¶


e:

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

Por exemplo: compr(1221) = 4.

Lema 3.6.2 compr : §¤ ! §¤ ¶e uma fun»c~ a o recursiva primitiva.


Demonstra»c~
a o: Se compr(x) = k ent~ ao k ¶e o n¶ umero de s¶³mbolos de §
em x, ou seja x = ¾k¡1¾ k¡2 ¢ ¢ ¢ ¾1 ¾0 . A id¶eia intuitiva para computar
compr(x) ¶
e a seguinte:

(a) Criamos dois registros r1 e r2 que conter~


ao 0 e x, respectivamente.

r1 0 r2 ¾k¡1 ¾ k¡2 ¢ ¢ ¢ ¾1 ¾0

(b) Para cada retirada µ


a direita do registro r2 de um s¶³mbolo adiciona-
mos 1 ao registro r1

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

Deixamos para o leitor veri¯car que


à !
2
g = ((+ ± (¶ £ sg)) £ inic) ±
1 2 2
3.6. Processamento de cadeias 59

satisfaz a de¯ni»c~
ao de g. A componente molecular para g ¶e:

1- - q¶ q
- - -
- +- -
- - - sg - - -
- g- = 2- -
- -
- - - inic -
2

Notando que º(x) ¸ compr(x), utilizamos º(x) como limite superior do



umero de vezes que g ser¶
a aplicado, logo temos que
à !
2
compr(x) = ±g # ± (z
z £ ±)(x)
1

cuja correspondente componente molecular ¶


e:

q
- - - g -
z - - -
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.

Lema 3.6.3 A fun»c~ ao _ ¶e recursiva primitiva.


Demonstra»c~ao: A fun»c~
ao _ depende do alfabeto, ou seja para cada n
existe uma fun»c~
ao _n, no entanto consideramos que n ¶e ¯xado e veri-
¯camos que:
_ (x; y) = x:n compr(y) + y
60 Cap¶³tulo 3. Fun»
c~oes Recursivas

e portanto
à !
2
_= + ± ((: ± (¶ £ exp ± (n £ compr))) £ ¶) ±
1 2 2

bastando demonstrar que a exponencia»c~ a o da aritm¶etica ¶


e recursiva pri-
mitiva (ver a lista de exerc¶³cios ao ¯nal do cap¶³tulo) 2

A correspondente componente molecular ¶e:

- - 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)

Por exemplo: ½(12112) = 21121.

Lema 3.6.4 A fun»c~ a o ½ : §¤ ! §¤ ¶ e recursiva primitiva.


Demonstra»c~
a o: Utilizamos uma fun»c~ ao auxiliar f : §¤ £ §¤ ! §¤ £ §¤
tal que
f (x; 0) =< x; 0 >
f (x; y¾) =< x¾; y > ¾ 2 §
ent~
ao à !
2
f = ((_ ±(¶ £ fim)) £ inic) ±
1 2 2
3.6. Processamento de cadeias 61

com componente molecular

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

Lema 3.6.6 prims : §¤ ! § ¶e uma fun»c~


a o recursiva primitiva.
a o: prims = fim ± ½.
Demonstra»c~ 2

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

- 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

Por exemplo: sef in(abcdef; 2) = ef .

Lema 3.6.8 sefin : §¤ £ §¤ ! §¤ ¶e uma fun»c~


a o recursiva primitiva.
Demonstra»c~
ao: Podemos veri¯car que
à !
2
sef in = ± g # ± (z
z £ ¶ £ ¶)
2

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

Por exemplo: inicia(abcdef; ab) = 1 e inicia(abcdef; abd) = 0.

Lema 3.6.9 inicia : §¤ £ §¤ ! §¤ ¶e uma fun»c~


a o recursiva primitiva.
Demonstra»c~
ao: Podemos veri¯car que
à !
2
inicia = igual ± (¶ £ segin ± (¶ £ compr)) ±
1 2 1
64 Cap¶³tulo 3. Fun»
c~oes Recursivas

pois

inicia(x; y) = igual ± (¶ £ segin ± (¶ £ compr))(x; y; x)


= igual(x; segin(y; compr(x)))

A correspondente componente molecular ¶


e:

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~

·n;m (x) = y se e somente se º n(x) = º m (y)

Por exemplo, para n = 5 e m = 2 temos · 5;2 (1) = 1, ·5;2 (2) = 2,


·5;2(3) = 11, ·5;2 (4) = 12; para n = 2 e m = 5 temos · 2;5 (1) = 1,
·2;5(2) = 2, ·2;5 (11) = 3.
3.7. Rela»
c~ao entre alfabetos 65

Como conseqÄu^encia, o valor de uma palavra em um alfabeto §n


quando representado em um outro alfabeto m ¶e exatamente a fun»c~ao
·n ;m , ou seja

·n ;m (¾k ¾ k¡1 ¢ ¢ ¢ ¾1 ¾0 ) = ºm (¾ k ¾k¡1 ¢ ¢¢ ¾1 ¾ 0)

Quando de¯nimos a fun»c~ao de valoriza»c~ao º, consideramos as opera-


c»~
o es + e produto : como fun»c~o es abstratas, e o valor era representado em
nota»c~
a o decimal, agora devemos considerar estas opera»c~o es como sendo
realizadas em um alfabeto qualquer, assim usamos a nota»c~ao + m ; :m para
representar soma e produto no sistema de numera»c~a o com m s¶³mbolos.
Por exemplo:

+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

Exemplo 3.7.1 · 3;5 (1332) = 2 + 5 3 :5 3 + 5 3 :5 (3)25 +5 1 :5 (3) 35

3 :5 3 = (3)25 = 14
3 :5 (3)25 = 3 :5 14 = 52
1 :5 (3)35 = 1 :5 52 = 52

Logo, ·3;5(1332) = 2 +5 14 + 5 52 +5 52 = 225. O leitor pode veri¯car que


·3;5 (225) = 1332
66 Cap¶³tulo 3. Fun»
c~oes Recursivas

Lema 3.7.1 ·n ;m : §¤n ! §¤m ¶


e recursiva primitiva.
Demonstra»c~
a o: Supondo m > n, sem perda de generalidade, temos que
P
·n;m (¾) = ¾ para todo ¾ 2 §n , logo · n;m (¾ k ¢ ¢ ¢ ¾0 ) = m kj=0 ¾ j : nj .
Seja f de¯nida por

f (x; 0) = < x; 0 >


f (x; ¾y) = < x : n + ¾; y >

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

Para permitir que a fun»c~


ao ·n;m esteja de¯nida para qualquer cadeia
¤ ¤
em §n ou em §m , de¯nimos sua extens~ao como a seguir.

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 )¤

Para simpli¯car a nota»c~ ao, suponha m > n e assim §m = §. Para


mostrar que ·¹ n;m ¶
e recursiva primitiva temos necessidade de provar que
(
1 se x 2 §¤
f (x) =
0 se x 2 (§ ¡ §n )¤
à !
2
¶e recursiva primitiva. Da¶³, temos ¹·n;m = caso(f; z ;· n;m ) ± .
1 1
Para provar que f ¶ e recursiva primitiva precisamos mostrar que as
fun»c~
o es que testam pertin^encia a certos conjuntos s~a o fun»c~oes recursivas
primitivas.
3.8. Repeti»
c~ao 67

Lema 3.7.2 Seja § um alfabeto, ent~


ao:
1. § (fun»c~
ao caracter¶³stica de §) ¶
e recursiva primitiva;

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

Seja g = (: ± (¶ £ §n ) £ ¶) ± f , ent~


ao

g(x;¾y) = (: ± (¶ £ §n ) £ ¶)(x; ¾; y) =< x : § n (¾); y >

Deixamos a de¯ni»c~ ao de §¤ , a partir da expoentiza»c ~


ao de g, como
exerc¶³cio para o leitor. 2

Agora podemos concluir nossas discuss~oes sobre ¹·n;m .

Lema 3.7.3 ¹ ·n;m : § ! § ¶


e uma fun»c~
a o recursiva primitiva.
Demonstra»c~
ao: Vimos que se
(
1 se x 2 §¤
f (x) =
0 se x 2 (§ ¡ §n )¤
à !
2
¶ a o ·¹ n;m = caso(f;zz; ·n;m ) ±
e recursiva primitiva, ent~ ¶e re-
1 1
cursiva primitiva. Como f ¶
e exatamente § ¤, o lema est¶
a demonstrado.
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

vamos considerar uma modi¯ca»c~ao no mecanismo de substitui»c~ao de tal


modo que o controle passa a chave para a posi»c~a o a apenas quando re-
cebe 1 e passa para a posi»c~
a o b quando recebe qualquer outra entrada.
Note que agora o controle n~a o computa o valor da entrada pois ap¶o s
a primeira execu»c~
a o da fun»c~
ao f a ¶ultima componente de f (xr+1 ) ¶e a
pr¶
o xima entrada.
De¯ni» c~ao 3.8.1 (Repeti»c~ a o f : Wr+1 ! Wr+1 a
ao) Seja a fun»c~
repeti»c~
a o de f (tamb¶em chamada minimiza»c~ a o), f r : Wr+1 ! Wr ,
e a fun»c~
¶ ao de¯nida por:
8
> 0 # 0
< x r sss para algum k ¸ 0; f (xr; y; k) =< xr ; 1 >
f r(x r; y) = =< x00r ; 1 >
e, para todo l < k; f # (xr ; y; l) 6
>
:
inde¯nido se n~ao existe tal k ¸ 0
aq
-
6
r- q
¡¡µ -q P - ?-
6 b

¾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;

5. Se ® ´ (¯ ± ° ), ¯ 2 WsW r e ° 2 WtW s ent~


ao

j®j(x r) = j¯j(j°j(xr))

6. Se ® ´ (¯ £ ° ), ¯ 2 WsW r e ° 2 WtW v ent~


ao
j®j(xr; y v ) =< j¯j(xr ); j°j(xv ) >
70 Cap¶³tulo 3. Fun»
c~oes Recursivas

7. Se ® ´ ¯# , ¯ 2 Wr Wr ent~
ao

j®j(xr ; 0) = xr
j®j(xr ; y + 1) = j¯j(j®j(x r; y))

8. Se ® ´ ¯r , ¯ 2 Wr+1 Wr+1 ent~


ao
8
> 0 # 0
< xr se para algum k ¸ 0;j¯ j(xr ; y; k) =< xr; 1 >
j®j(xr ;y) = r =< x00r ; 1 >
e para todo l < k;j¯j# (x ; y; l) 6
>
: inde¯nido, se n~
ao existe tal k ¸ 0

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.

3. Seja f : W 2 ! W e g; h : W ! W . Mostre que

(f £ ¶) ± (¶ £ g £ h) = ((f ± (¶ £ g)) £ ¶) ± (¶ £ ¶ £ h)

4. Seja f : W ! W . Mostre que

± ± f = (f £ f ) ± ±

5. Seja f : W m ! W n. Mostre que, para todo x 0

f(x 1; ¢ ¢ ¢ ; xm ) = (¼ £ ¶| £ ¢{z
¢ ¢ £ }¶) ± (¶ £ f)(x0 ; x1 ;¢ ¢ ¢ ; xm )
n

6. Utilizando os resultados 2 e 3 acima, mostre que

(¶ £ ±) ± (¶ £ h) = (¶ £ h £ h) ± (¶ £ ±)
72 Cap¶³tulo 3. Fun»
c~oes Recursivas

7. Fa»ca as componentes moleculares dos exerc¶³cios 1; 2; 3 e 4 acima.


8. Identi¯que duas propriedades originais relativas µa s fun»c~o es vistas
at¶e agora e aos esquemas ± e £. Demonstre cada propriedade e
fa»ca as respectivas componentes moleculares.
9. Seja f; g : W ! W. Construa uma fun»c~ao h tal que

(f £ g) # = (f # £ g # ) ± h

Demonstre por indu»c~


ao a equival^encia e construa as correspon-
dentes componentes moleculares.
10. Identi¯que duas propriedades originais relativas µa s fun»c~o es vistas
e agora e aos esquemas ±, £ e #. Demonstre cada propriedade
at¶
e fa»ca as respectivas componentes moleculares.

11. Veri¯que a igualdade do lema 3.3.4 e exiba uma dedu»c~ao para a


fun»c~
a o :.

a
12. Veri¯que a igualdade do lema 3.3.6 e exiba uma dedu»c~ao para a
fun»c~
ao .

o es µkj do lema 3.4.1.


13. Sintetize as fun»c~
14. Veri¯que que
à !
2
g = ((+ ± (¶ £ sg)) £ inic) ±
1 2 2

ao da fun»c~ao g : W2 ! W2 de¯nida por


satisfaz a de¯ni»c~
(
< x + 1; inic(y) > se y 6
=0
g(x;y) =
< x; y > se y = 0

15. Sejam c0; ¢ ¢ ¢ ; ck¡1 e a1 ;¢ ¢ ¢ ; ak constantes dadas. Mostre que a


fun»c~
a o seguinte fun»c~a o ¶e primitiva recursiva.

f(n) = cn; se 0 · n < k


f(n) = a1:f (n ¡ 1) + a2 :f(n ¡ 2 + ¢ ¢ ¢ + ak :f (n ¡ k) se n ¸ k

16. Complete a demonstra»c~ao do lema 3.7.3


Cap¶³tulo 4

Linguagem de
Programa»
c~ao Minimal

Neste cap¶³tulo introduzimos uma linguagem de programa»c~ao minimal,


a que denominamos LPM, que se assemelha ao Fortran mais primitivo,
a primeira linguagem de programa»c~ao imperativa depois das chamadas
linguagens de m¶ a quina.
O principal objetivo da apresenta»c~a o desta linguagem aqui ¶e demons-
trar que as linguagens de programa»c~a o imperativas possuem, na sua
ess^encia, todos os elementos necess¶arios a um modelo de computa»c~a o.
Atrav¶ es da familiaridade com este tipo de linguagem de programa»c~a o,
o leitor observar¶ a que qualquer programa Pascal, C ou Fortran (para
mencionar as mais utilizadas na pr¶atica) pode ser escrito em LPM.
Uma das caracter¶³sticas de LPM ¶e o recurso do desvio, ou GOTO.
Demonstramos que a linguagem suprimida deste recurso ¶e computa-
cionalmente equivalente ¶a LB do cap¶³tulo 3 suprimida do funcional
repeti»c~
ao (r). Ainda, demonstramos que LPM completa ¶e equivalente
a LB.

4.1 A linguagem LPM


Sintaticamente, LPM ¶ e uma linguagem muito simples. Utilizamos a
forma Backus-Naur (BNF) para apresent¶a-la rigorosamente, entremeada
de explica»c~
o es mais informais. LPM disp~o e de tr^es tipos de comando de

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

Assim X1; ABm;XY 273 s~ao nomes permitidos, mas 1X ou ¡X n~a o


s~a o. Esta de¯ni»c~ao formal deve ser complementada com a informa»c~a o
de que na atribui»c~ ao < nome >Ã< nome > +1 a cadeia que substitui
< nome > µ a esquerda da seta deve ser a mesma que a que substitui
< nome > a direita da seta, assim o comando de atribui»c~ao X Ã Y + 1
n~ao seria permitido.
Os comandos podem ser rotulados, o que possibilita modi¯carmos a
execu»c~a o atrav¶
es do uso de um outro comando de desvio incondicional,
ou seja de comandos da forma GOT O L, onde L ¶e um r¶otulo. Os r¶o tulos
s~a o de¯nidos sintaticamente como < nome >, ou seja:
< r¶
otulo > ::= < nome >
Um programa na linguagem LPM ¶e de¯nido por:
< programa io > ::= < io > < programa >
< io > ::= < entrada >; < saida >;
< entrada > ::= ENT RADAj
ENT RADA < lista de nomes >
< saida > ::= SAIDAj
SAIDA < lista de nomes >
< lista de nomes > ::= < nome > j
< nome >; < lista de nomes >
< programa > ::= < comando rotulado > j
< loop >< programa >< end > j
< programa >< programa >
4.1. A linguagem LPM 75

< comando rotul ado > ::= < comando >; j


< r¶
otulo >< comando >;
< comando > ::= ao > j
< atribui»c ~
GOT O < r¶ o tulo >
< loop > ::= LOOP < nome >; j
< r¶
otulo > LOOP < nome >;
< end > ::= END; j < r¶ otulo > END;
Um < programa io > ¶e o que, informalmente, chamamos de um
programa em LPM. Eles sempre se iniciam com uma declara»c~ ao das
vari¶
a veis de entrada e sa¶³da, seguida por um corpo de programa.

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;

Para fazermos refer^encia a um programa em LPM utilizamos letras


P com ou sem ¶³ndices. Assim escrevemos
EN T RADA X1 ; X2; ¢ ¢ ¢ ; Xs;
SAI DA Y 1 ;Y 2; ¢ ¢ ¢ ; Yt ;
P1 (Programa n~ao especi¯cado)

Se, no corpo de um programa P, ocorrem vari¶aveis a que queremos


fazer refer^ encia escrevemos P(U1 ; U2 ; ¢ ¢¢ ; Ut ), onde U 1 ;U 2 ;¢ ¢ ¢ ; Ut s~a o as
vari¶a veis referenciadas. Estas representa»c~oes s~ao importantes quando
queremos provar propriedades de programas de modo geral. Dizemos
por exemplo: \Sejam P 1 e P 1 programas em LPM ¢¢ ¢".
A declara»c~ao de entrada e sa¶³da tem como ¯nalidade explicitar que
as vari¶a veis declaradas como de entrada s~a o instanciadas por valores no
in¶³cio da execu»c~ao do programa, e que as vari¶aveis de sa¶³da v~a o fornecer
os valores que interessam serem conhecidos, caso o programa termine sua
76 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

a o. Programas escritos em LPM computam fun»c~o es f : W ! W .


execu»c~
A declara»c~a o de entrada e sa¶³da de um programa em LPM particulariza
os subespa»cos de W que s~ ao os dom¶³nios de partida e chegada. Assim,
se o programa come»ca com as declara»c~o es:

EN T RADA X1; X2; ¢ ¢¢ ; Xn;


SAIDA Y 1;Y 2;¢ ¢ ¢ ; Y m;

devemos interpretar isto como indica»c~a o de que o programa computa


a o de Wn em Wm .
uma fun»c~
Podemos ter para um mesmo corpo P de programa em LPM um
n¶umero in¯nito de programas em LPM, j¶a que podemos ter um n¶ umero
in¯nito de declara»c~
o es de entrada e sa¶³da. Por exemplo o corpo de
programa 8
>
< Y1 Ã X1;
P Y2 Ã Y1 ;
>
:
Y2 Ã Y 2 + 1;
Pode ser utilizado por programas como:
8 8
>
> EN T RADA X1 ; >
> EN T RADA X1;
>
< S AI DA >
< S AIDA
Y1 ; Y1 ; Y2 ;
P1 P2
>
> >
>
>
: >
:
P P

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:

R1 O valor inicial de toda vari¶a vel ¶e 0.

R2 Os comandos s~
a o executados na ordem que aparecem.

R3 Os comandos de atribui»c~a o devem ser interpretados da seguinte


maneira:

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.

Neste ponto o leitor pode se perguntar como inicializar as vari¶a veis


de entrada de um programa LPM, se as vari¶a veis de entrada n~a o podem
ocorrer como lado esquerdo de comandos de atribui»c~a o. Veja que n~ao dis-
cutimos onde est~ ao os endere»cos indicados pelas vari¶a veis. Na realidade
discutir isto seria ¯xar uma interpreta»c~ao para os comandos ENTRADA
e SAIDA. De um ponto de vista geral, todos os formalismos discutidos
aqui s~ao de¯nidos considerando os espa»cos Wi de i ¡ tuplas de cadeias
de s¶³mbolos de um certo alfabeto ¯xado §. Podemos imaginar que
cada ponto deste espa»co ¶e uma con¯gura»c~a o poss¶³vel dos cont¶eudos de
uma seqÄ u^encia in¯nita de registros R1 ; R2 ; ¢¢ ¢ ; Rr ; ¢¢ ¢, e que as vari¶a veis
X1 ; X2 ;¢ ¢ ¢ ; Xr declaradas como de entrada s~a o os nomes que associamos
a estes registros no programa. Digamos que P inicia pelo comando de
declara»c~ao
EN T RADA X1 ; X2 ;¢ ¢ ¢ ; Xr

ent~a o uma poss¶³vel interpreta»c~ao ou realiza»c~ao deste comando de de-


clara»c~
a o seria a de associar a ele uma opera»c~a o de carga dos registros
R 1; R2 ; ¢ ¢ ¢ ;R r com palavras x1 ; x2 ; ¢¢ ¢ ; xr do espa»co W , ou seja, que
uma das con¯gura»c~ o es poss¶³veis do espa»co W foi associada aos r registros
de entrada.
78 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

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 ¢¢ ¢

Figura 4.1: Associa»c~a o de con¯gura»c~oes a registros

Na ¯gura 4.1, apresentamos uma imagem desta interpreta»c~ao1 . Re-


presentamos apenas as vari¶ aveis de entrada X1 ; X2 ;¢ ¢ ¢ ; Xr associadas
µas primeiras r componentes da tupla
m¡r
z }| {
< x1 ; x2 ; ¢¢ ¢ ; xr ; 0; ¢ ¢ ¢ ;0 >

Estamos supondo que o programa P possui no m¶aximo m vari¶aveis.


µ demais vari¶
As aveis do programa P (n~ao representadas na ¯gura), se-
riam associadas a palavra ¤, que por simplicidade escrevemos 0 que ¶e
o seu valor. Durante a execu»c~a o do programa outras associa»c~o es s~a o
eventualmente feitas atrav¶es de comandos de atribui»c~ao µa s demais m ¡ r
vari¶
aveis.
Quando na declara»c~ a o de entrada e sa¶³da a lista de vari¶aveis da
declara»c~ao EN T RADA for vazia, isto signi¯ca que o dom¶³nio de partida
¶e W0 , a mesma considera»c~
a o vale para o comando de declara»c~ao S AIDA
com respeito ao dom¶³nio de chegada.

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

um LOOP, incluindo o correspondente END, ¶e chamado de escopo


do LOOP.

R6 Quando um comando LOOP ¶e encontrado, o valor da vari¶avel do


LOOP indica o n¶
umero de vezes que o grupo de comandos no
escopo do LOOP deve ser executado e este n¶umero de vezes ¶e
mantido mesmo que o valor da vari¶a vel do LOOP seja modi¯cado
por um comando de atribui»c~ao no escopo do LOOP.
O bloco LOOP ¡ EN D abaixo
LOOP U;
com 1

..
.
com k
EN D;
continua»c~
ao ou ¯m

pode ser interpretado intuitivamente pela ¯gura em forma de °uxo-


grama
NOV A Ã U;

» 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.

R8 O comando GOTO transfere a execu»c~


ao para o comando com r¶o tulo
referenciado no comando GOTO.

R9 Existem duas condi»c~oes em que um programa p¶


a ra:

1. depois da execu»c~ao do u¶ltimo comando do programa;


80 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

2. ou pela execu»c~
a o de um comando GOTO com um r¶otulo que
n~
a o ocorre no programa.

Exemplo 4.2.1 Programa que computa a fun»c~


ao f(x) = 2:x:

EN T RADA X;
SAI DA Y;
Y Ã X;
LOOP X;
Y Ã Y + 1;
EN D;

Podemos analisar este programa da seguinte maneira:

² 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

² Se µa vari¶avel de entrada X associamos um valor x1 ; x1 > 0, ent~ ao


o primeiro comando do corpo Y Ã X, associa a Y o valor
que est¶a associado a X (por R3.2), portanto antes do bloco do
LOOP ¡ EN D o valor associado a Y ser¶ a x1 , os comandos do
bloco LOOP ¡ EN D ser~ ao executados um n¶ umero de vezes igual
ao valor de x 1, cada vez o valor associado a Y aumenta de 1, as-
sim ap¶ o s a execu»c~
a o do bloco o valor associado a Y ser¶a igual ao
valor de x1 aumentado de x1 , ou seja 2 vezes o valor de x1 .

Fica um alerta ao leitor que programas mais complicados s~ao di¯-


cilmente analis¶
aveis, no entanto apresentamos apenas programas muito
simples.

4.3 Computabilidade de fun»


c~
o es
Nesta se»c~
a o vamos introduzir formalmente o signi¯cado da senten»ca \P
computa a fun»c~ ao f". Fixamos uma interpreta»c~ao para as m vari¶aveis
do programa P como sendo os conte¶udos de m registros de uma certa
4.3. Computabilidade de fun»
c~oes 81

m¶a quina abstrata2 de tal forma que os primeiros r registros correspon-


dem µ as vari¶
aveis declaradas pelo comando de atribui»c~ao de entrada.
Os s registros que se seguem aos r registros iniciais correspondem µas
s vari¶
a veis do comando de declara»c~ao de sa¶³da. Os demais registros
correspondem µ as demais vari¶a veis ocorrendo em P .

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

Dizemos que P computa a fun»c~ a o f : Wr ! Ws se e somente se para


umeros naturais x1 ; x2 ; ¢¢ ¢ ; xr associados a X1 ; X2 ;¢ ¢ ¢ ; Xr temos
todos n¶
que:

1. O programa P p¶ara com os valores y1 ; y2 ; ¢¢ ¢ ; ys associados respec-


tivamente µ a veis Y1 ;Y 2; ¢ ¢ ¢ ; Ys se
as vari¶

< x 1; x2 ; ¢ ¢ ¢; x r >2 dom(f); e


< y 1; y 2; ¢ ¢ ¢ ;y s >= f (x1 ; x2 ; ¢ ¢¢ ; xr )

2. O programa n~ a ra se < x1 ; x2 ; ¢ ¢ ¢; xr >6


ao p¶ 2 dom(f).

Se nenhuma refer^encia foi feita ao nome da fun»c~


ao f dizemos que o
programa P computa a fun»c~ao jPj.

Intuitivamente, a declara»c~a o EN T RADA X1; ¢ ¢ ¢ ; Xr carrega uma


r ¡ tupla x r =< x1 ; ¢ ¢ ¢ ;x r > de entrada nos r primeiros registros de
uma m¶ aquina abstrata. assim ¶e como se esta declara»c~ao realizasse a
ao recursiva primitiva ®r : Wr ! Wm
fun»c~

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

Figura 4.2: Fun»c~o es de entrada e sa¶³da

De maneira semelhante a declara»c~a o S AIDA Y1 ; ¢ ¢ ¢ ; Ys fornece uma


s ¡ tupla de sa¶³da a partir dos s registros seguintes aos r primeiros
registros de entrada. Esta declara»c~a o realiza a fun»c~ao ¯s : Wm ! Ws

r s m¡(r+s)
z }| { z }| { z }| {
¯s = ( ¼ £ ¼ £ ¢¢ ¢ £ ¼ £ ¶ £ ¶ £ ¢ ¢¢ £ ¶ £ ¼ £ ¼ £ ¢¢ ¢ £ ¼)

Assim, se consideramos o programa


8
>
< EN T RADA X1 ; X2 ; ¢ ¢¢ ; Xr ;
P S AIDA Y1 ; Y2 ; ¢¢ ¢ ; Ys ;
>
: F

com corpo F , temos jP j = ¯s ± jF j ± ®r , representado pela ¯gura 4.2.

4.3.1 oes LP M ¡ fGOTOg¡comput¶


Fun»c~ aveis
Nesta se»c~ ao discutimos a classe de fun»c~o es computadas pelos progra-
mas de¯nidos em LPM sem o comando GOTO. A caracteriza»c~a o destas
o es LP M ¡ fGOT Og¡comput¶a veis, curiosamente, coincide com a
fun»c~
caracteriza»c~a o das fun»c~
oes recursivas primitivas do cap¶³tulo 3.
A seguir, de¯nimos esta classe de fun»c~oes e constru¶³mos lemas in-
termedi¶ a rios que facilitam a demonstra»c~ao do teorema sugerido pela
a¯rma»c~ ao acima.
4.3. Computabilidade de fun»
c~oes 83

De¯ni» ao 4.3.2 Seja f : Ws ! Wt uma fun»c~


c~ a o, dizemos que f ¶
e LPM-
comput¶a vel, se existe um programa Pf que computa f . Se o programa P
que computa f n~ ao cont¶
e m ocorr^
e ncias de comandos GOT O L dizemos
e LPM ¡ fGOT Og¡comput¶
que f ¶ avel.
a a
Lema 4.3.1 As fun»c ~ ao LP M ¡fGOT Og¡com-
oes +, 1, , sg e sg s~
put¶
a veis.
Demonstra»c~
ao: Os programas a seguir computam tais fun»c~
o es.

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 ¶

4. sg; sg : W1 ! W1, de¯nidas por


( (
1 se x > 0 0 se x > 0
sg(x) = sg(x) =
0 se x = 0 1 se x = 0
EN TRADA X1;
ENT RADA X1 ;
SAI DA Y1 ;
SAI DA Y1 ;
Z1 Ã 0;
Z1 Ã 0;
Z1 Ã Z1 + 1;
LOOP X1 ;
LO OP X 1 ;
Z1 Ã 1;
Z1 Ã 0;
END;
EN D; 2
Y1 Ã Z1
Y1 Ã Z1
4.3.2 Extens~
oes da linguagem LPM
A linguagem LPM ¶ e pouco adequada para computar fun»c~oes mais com-
plexas do que as que vimos at¶e o momento, a raz~a o desta escassez de
recursos ¶
e proposital tendo em vista podermos realizar estudos de modo
mais conveniente. Faz parte destes estudos mostrar que certos tipos de
comandos permitidos em outras linguagens de programa»c~ao podem ser
emulados na linguagem LPM. A seguir apresentamos alguns de novos
tipos de comando que podm ser utilizados em programas LPM exten-
dido.
A1 Comandos da forma < nome >Ã n, onde n ¶e um n¶
umero natural.
Qualquer comando desta forma, por exemplo U Ã n pode ser
emulado em LPM pelos comandos:
U Ã 0;
8
>
<
U Ã U + 1;
n ..
> .
:
U Ã U + 1;
3
A quest~a o da substitui»c~
a o adequada de vari¶
aveis ¶e discutida posteriormente, den-
tro de um contexto mais amplo. No momento basta que o leitor note que sem a
modi¯ca»c~a o das vari¶
aveis haveria con°ito entre as que ocorriam no programa antes e
ap¶os a substitui»c~
ao do comando abreviado e o corpo do comando que o realiza.
4.3. Computabilidade de fun»
c~oes 85

A2 Comandos da forma < nome >Ã < nome > +n, onde n ¶e um

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;

A3 Toda vez que sabemos que uma fun»c~a o f : W r ! Ws ¶e LPM-com-


put¶
avel, digamos por um programa
8
>
< EN T RADA X1; X2 ; ¢ ¢ ¢; Xr ;
Pf S AI DA Y1 ; Y2 ; ¢¢ ¢ ; Ys ;
>
:
F

os permitiremos o uso dos comandos
à !
s
U1 Ã ± f(V 1; ¢ ¢ ¢ ; Vr )
1
à !
s
U2 Ã ± f(V 1; ¢ ¢ ¢ ; Vr )
2
..
. Ã !
s
Us à ± f (V1 ; ¢¢ ¢ ; Vr )
s
à !
s
onde e um arranjo, como de¯nido no cap¶³tulo 3, ou sim-

1
plesmente
< U1 ; U2 ; ¢ ¢¢ ; U s >Ã f (V 1; ¢ ¢ ¢ ; Vr)
a veis U1 ; U2 ; ¢ ¢¢ ; U r; V1 ; V2 ; ¢ ¢ ¢; V s sejam vari¶a veis
desde que as vari¶
n~
ao ocorrendo no programa considerado.
A4 Programas da forma
IF < nome1 >·< nome2 > T HEN ;
< programa1 >
ELSE ;
< programa2 >
END;
86 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

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.

4.3.3 Computabilidade em LP M ¡ fGOTOg


Finalmente, vamos mostrar que toda fun»c~a o f : W ! W , f ¶e recursiva
primitiva se e somente se f ¶e LPM ¡ fGOT Og¡comput¶avel. Em li-
nhas gerais, a estrat¶
egia da demonstra»c~ao ¶e exibir programas LPM que
computem as fun»c~ o es iniciais e programas que computem os funcionais
b¶asicos de LB.
Lema 4.3.2 As fun»c~ ao LPM ¡ fGOT Og-com-
o es iniciais ¶; ¼; z e s s~
put¶aveis.
Demonstra»c~a o: Basta exibir programas em LPM que computam tais
fun»c~
o es. Assim:
8
>
< EN T RADA X1;
P rograma LPM para ¶ S AI DA Y 1;
>
: Y 1 Ã X1;
4.3. Computabilidade de fun»
c~oes 87
8
>
< EN T RADA X1;
P rograma LPM para ¼ S AIDA ;
>
: Y 1 Ã 0;
8
>
< EN T RADA;
P rograma LP M para z SAIDA Y 1;
>
: Y 1 Ã 0;
8
>
> EN T RADA X1;
>
< S AI DA Y 1;
P rograma LP M para s
>
> Y 1 Ã X1;
>
:
Y 1 Ã Y 1 + 1;
2

Teorema 4.3.1 Toda fun»c~ a o f : Wr ! Ws recursiva primitiva ¶e LP M ¡


fGOT Og comput¶ avel.
Demonstra»c~ ao: Pelo lema 4.3.2 todas as fun»c~a o iniciais s~
ao LP M ¡
fGOT Og comput¶ a veis, bastando observar que nenhum programa utiliza a
instru»c~
a o GOT O. Agora devemos mostrar que os esquemas de gera»c~ ao
composi»c~ ao, combina»c~ao e expoentiza»c~ao podem ser realizados por pro-
gramas LP M ¡ fGOT Og.

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

e obter a partir dos programas Pf e P g


que computa g. A id¶eia ¶
um programa Pg ±f . Para isto precisamos inicialmente modi¯car
88 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

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

X1 ; X2 ;¢ ¢ ¢ ; Xr; Xr+1 ;¢ ¢ ¢ ; Xr+s; Xr+s+1 ; ¢¢ ¢ ; Xm


(I I ) Renomear os r¶ otulos de P f de tal modo que l1 ; ¢¢ ¢ ; lk sejam os
unicos r¶
¶ o tulos de comando ocorrendo no programa modi¯cado. Se
o programa original n~ ao tiver comandos GOT O os ¶ unicos r¶ o tulos
0
ocorrem a esquerda de comandos. Seja P f o programa obtido.
8
>
< EN TRADA X1 ; X2 ; ¢¢ ¢ ; Xr ;
0
P f SAI DA Xr+1 ; Xr+2 ; ¢ ¢ ¢; Xr+s;
>
: F0

aveis do segundo programa, ou seja de P g ,


(I I I) Renomear as vari¶
de tal modo que nele ocorra apenas as vari¶a veis

Xm+1; Xm+2 ; ¢ ¢ ¢; Xm+s ; Xm+s+1 ; ¢ ¢ ¢; Xm+s+t; Xm+s+t+1 ; ¢ ¢ ¢ ; Xl

(I V ) Renomear os r¶otulos de Pg de tal modo que l k+1 ; ¢¢ ¢ ; lj sejam


os ¶unicos r¶
otulos de comando ocorrendo no programa modi¯cado.
Seja P 0g o programa obtido.
8
>
< EN T RADA Xm+1 ; Xm+2; ¢ ¢ ¢ ; Xm+s;
P 0g SAIDA Xm+s+1 ; Xm+s+2 ; ¢ ¢ ¢ ;Xm+s+t ;
>
: G0

(V ) O programa P g±f ¶e o programa desejado.


8
>
> EN TRADA X 1 ; X 2 ; ¢ ¢ ¢ ; Xr ;
>
> SAI DA X m+s+1 ; X m+s+2 ; ¢ ¢ ¢ ; Xm+s+t ;
>
>
>
> F0
>
>
< X m+1 Ã Xr+1
Pg±f X m+2 Ã Xr+2
>
>
>
> ..
>
> .
>
>
>
> Xm+s à Xr+s
:
G0
4.3. Computabilidade de fun»
c~oes 89

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

seja o programa LPM que computa f. Deixamos para o leitor


veri¯car que o programa abaixo computa f #:
8
>
> ENT RADA X1 ; X2 ; ¢ ¢ ¢ ; X r ; Xr+1 ;
>
> SAI DA Y1 ; Y 2 ; ¢ ¢ ¢ ; Y r ;
>
>
>
> Z1 Ã X1 ;
>
>
>
> Z2 Ã X2 ;
>
>
>
> ..
>
> .
>
>
>
> Zr à Xr ;
<
P f# LOO P Xr+1 ;
>
> F0
>
>
>
>
>
> Z1 Ã Y1 ;
>
>
>
> Z2 Ã Y2 ;
>
>
>
> ..
>
> .
>
>
>
> Zr à Yr ;
:
END;

onde Xr +1 ; Z1 ; Z2 ; ¢ ¢¢ ; Z r s~ aveis novas, F 0 ¶


a o vari¶ e obtido de F
trocando-se todas as ocorr^encias de Xi por Z i. 2

Teorema 4.3.2 Toda fun»c~ a o LP M ¡ fGOTOg comput¶ a vel ¶


e recursiva
primitiva.
Demonstra»c~ ao: Como j¶ a foi discutido, podemos sem perda de generali-
dade considerar apenas o corpo F de um programa LPM e refor»car que,
sendo as fun»c~ ao jP j : Wr ! Ws
o es ®r e ¯s recursivas primitivas, a fun»c~
a recursiva primitiva desde que jF j o seja.
ser¶
Assim, basta provarmos que se n~ a o exitem ocorr^
encias de GOT O em
F a fun»c~
a o jF j ser¶
a recursiva primitiva. A demonstra»c~ ao ¶e por indu»c~
ao
90 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

na estrutura de F . Sejam V1 ; ¢ ¢ ¢ ;V m as vari¶


aveis ocorrendo em F . Pela
de¯ni»c~
a o de programas em LPM, um programa pode ser

1. Um comando de atribui»c~
ao. Neste caso podemos ter:

(a) F = Vi à 0, para algum i; 1 · i · m, e portanto a fun»c~


ao
computada ser¶
a:
i¡1 m¡i
z }| { z }| {
jF j = ¶ £ ¢ ¢¢ £ ¶ £z
z ±¼ £¶£¢¢¢£¶

(b) F = Vi à Vj , para algum i e algum j tais que 1 · i; j · m,


e portanto a fun»c~
a o computada ser¶
a:
à !
m
jF j =
1 ¢ ¢ ¢ i ¡ 1 j i + 1 ¢ ¢ ¢ j ¢ ¢¢ m

(c) F = V i à Vi + 1 para algum i; 1 · i · m, e portanto a


fun»c~
a o computada ser¶
a:
i¡1 m¡i
z }| { z }| {
jF j = ¶ £ ¢ ¢ ¢ £ ¶ £s £ ¶ £ ¢ ¢ ¢ £ ¶

2. Um bloco F = LOOP Vi ; P1 EN D;. Por hip¶ o tese de indu»c~


ao a
a o jP1 j ¶
fun»c~ e recursiva primitiva, ent~
ao
à !
m
jF j = jP1 j# ±
1¢¢¢m i

3. Um programa composto de programas consecutivos F = P1 P 2 .


Por hip¶o tese de indu»c~ ao, P 1 e P1 computam fun»c~
o es recursivas
primitivas jP1 j e jP 2j, respectivamente. Ent~
ao

jF j = jP2 j ± jP1 j

e portanto recursiva primitiva. 2

Para completar a caracteriza»c~a o da equival^encia entre as fun»c~o es


computadas pelos programas em LPM e as fun»c~o es parcialmente recur-
sivas, resta considerarmos programas em LPM com GOT O's e fun»c~o es
com o esquema de repeti»c~ao r.
4.3. Computabilidade de fun»
c~oes 91

Lema 4.3.3 Toda fun»c~ ao f : Wr ! Ws recursiva ¶ e LPM-comput¶ a vel.


Demonstra»c~ ao: Note que se os programas cont^ em GOTO 0 s ent~
ao pode-
mos preservar a constru»c~ ao feita no teorema 4.3.1, a menos das modi-
¯ca»c~
o es nos r¶
o tulos, que ¯ca sendo:

(I I 0 ) Renomear os r¶ otulos de Pf de tal modo que l1 ; ¢ ¢ ¢; l k sejam os


u¶nicos r¶otulos a esquerda de comandos ocorrendo no programa
modi¯cado. Todo comando da forma GOT O l deve ser modi¯-
cado pela troca de l pelo novo r¶o tulo se for um r¶
o tulo de comando,
e por lk+1 se n~ao for um r¶
otulo de comando ocorrendo no programa
original.

(I V 0 ) Renomear os r¶ o tulos de P g de tal modo que lk+2 ; ¢ ¢ ¢; l j+1 sejam


os ¶
unicos r¶
o tulos de comando ocorrendo no programa modi¯cado.
Todo comando da forma GOT O l deve ser modi¯cado pela troca
de l pelo novo r¶o tulo.

(V 0 ) O programa para a composi»c~


ao ¶e:
8
>
> E NT RADA X1 ; X2 ; ¢ ¢ ¢ ; X r ;
>
> SAI DA X m+s+1 ; X m+s+2 ; ¢ ¢ ¢ ; Xm+s+t;
>
>
>
> F0
>
>
< lk+1 Xm+1 Ã X r+1
P g±f Xm+2 Ã X r+2
>
>
>
> ..
>
> .
>
>
>
> X m+s à X r+s
:
G0

Deixamos para o leitor o programa para a combina»c~


ao e expoen-
tiza»c~
ao.

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

Seja F 0 o corpo do programa obtido de F pela substitui»c~ao das


encias de Xi por Ui para i = 1; ¢ ¢ ¢; r + 1 e todo comando
ocorr^
GOT O l, onde l n~ao ¶
e r¶
o tulo de comando por GOT O L2 , onde L2
92 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

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 ;

Deixamos para o leitor escrever o programa em LPM para 6


=. 2

Na demonstra»c~ a o do lema 4.3.3, necessitamos do uso do GOT O para


um r¶
o tulo anterior. Note que a ocorr^encia de um GOTO para um r¶otulo
posterior pode ser substitu¶³da por um programa equivalente.
Z Ã 0;
GOT O L; LOOP Z
P P
L P0 END;
P0
Por outro lado, o GOT O para um r¶otulo anterior n~a o pode ser assim
simulado.

4.4 Estrutura de Dados


As Linguagens de Programa»c~ao que s~ao usadas na vida pr¶atica incluem
certas facilidades para o programador, com rela»c~a o µa maneira de es-
truturar dados (vetores, matrizes, etc), que ainda n~ao foram discutidas
neste cap¶³tulo. Para podermos estender LPM com tais facilidades, in-
troduzimos as fun»c~
o es ¯ de GÄo del, que transformam tuplas em n¶umeros
naturais, tamb¶ em chamadas de fun»c~o es de pareamento.
4.4. Estrutura de Dados 93

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:

< x; y > ¯(x; y)


x+ y = 0 < 0; 0 > 0
x+ y = 1 < 0; 1 > 1
< 1; 0 > 2
x+ y = 2 < 0; 2 > 3
< 1; 1 > 4
< 2; 0 > 5
x+ y = 3 < 0; 3 > 6
< 1; 2 > 7
< 2; 1 > 8
< 3; 0 > 9
x+ y = 4 < 0; 4 > 10
..
.

A ¯gura 4.3 ilustra a ordem do pareamento. As fun»c~oes 1 ¯2 e 2¯2 rea-


lizam a opera»c~ao inversa. O leitor j¶a pode perceber como estas fun»c~oes
ser~ao utilizadas para implementar vetores.
As seguintes fun»c~
oes ¯r em linearizam r-tuplas.

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

Figura 4.3: Pareamento das fun»c~oes ¯ de GÄodel

2. Para todo i; 1 · i · r de¯nimos as fun»c~


o es inversas i¯r , tais que
¯ (¯ (x
i r r 1 2; x ; ¢ ¢ ¢ ; xr )) = xi .
Observe que:
¯r(x1 ;¢ ¢ ¢ ; xr ) = x se e somente se
¯(¯r¡1(x 1 ;¢ ¢ ¢ ; xr¡1);x r) = x se e somente se
1¯ 2(x) = ¯r¡1 (x 1; ¢ ¢ ¢ ; xr¡1) e
2¯ 2(x) = xr

Da¶³, podemos conlcuir que, para cada r; r ¸ 2:


r¡j
z }| {
j ¯r(x) = 2 ¯2( 1¯ 2(¢¢ ¢ (1 ¯2 (x) ¢¢ ¢) j > 1
r¡1
z }| {
1 ¯r (x) = 1 ¯2(¢ ¢¢ (1 ¯2 (x) ¢ ¢¢)

Exemplo 4.4.1 Para r = 4 e observando que ¯(2; 5) = 30 temos


4¯4 (30) = 2 ¯2 (30) = 5
3¯4 (30) = 2 ¯2 (1 ¯2 (30)) = 2 ¯2(2) = 0
2¯4 (30) = 2 ¯2 (1 ¯2 (1 ¯2(30))) = 2 ¯2(1) = 1
1¯4 (30) = ¯ ( ¯ ( ¯
2 2 1 2 1 2 1 2 ( ¯ (30)))) = 2 ¯2(0) = 0
4.4. Estrutura de Dados 95

Temos que
¯4 (0; 1;0; 5) = ¯(¯(¯(0; 1); 0); 5)
= ¯(¯(1; 0); 5)
= ¯(2; 5)
= 30

Lema 4.4.1 As fun»c~oes ¯ : W2 ! W , 1 ¯2 : W ! W e 2 ¯2 : W ! W


ao LP M ¡ fGOT Og¡comput¶
s~ aveis.
Demonstra»c~
ao: O programa abaixo computa a fun»c~
a o ¯.
8
> ENT RADA X1; X2;
>
> SAI DA Y 1;
>
>
>
< Z1 Ã X1 + X2;
P¯ Z2 Ã Z1 + 1;
>
> Z3 Ã Z1:Z2;
>
>
>
> Z4 Ã Z3=2;
:
Y 1 Ã Z4 + X1;
Seja P o corpo de programa
8
> U Ã 0;
>
>
>
> LO OP X;
>
> V Ã 0;
>
>
>
> LO OP X;
>
>
>
> Z Ã6 = (X; ¯(U; V ));
>
>
< LOOP Z;
P V Ã V + 1;
>
> E ND;
>
>
>
> EN D;
>
>
>
> LO OP Z;
>
>
>
> U Ã U + 1;
>
>
>
: EN D;
EN D;

onde, o valor de entrada X ¶e usado como limite superior no LOOP


pois ¯(x; y) ¸ x e ¯(x; y) ¸ y. Ent~
a o, os programas abaixo computam
as fun»c~
oes 1¯2 e 2 ¯2 .
EN TRADA X; ENT RADA X;
SAI DA X1 ; SAIDA X 2 ;
P P
X1 Ã U ; X2 Ã V ;

Conclu¶³mos que as fun»c~oes ¯; 1¯ 2 e 2 ¯2 s~ao LPM ¡ fGOT Og com-


put¶
aveis e portanto recursivas primitivas.
96 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal

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)

A id¶eia para implementar uma vari¶a vel indexada, ou vetor, de r


posi»c~oes ¶
e manter em uma vari¶a vel simples o valor da fun»c~a o ¯r aplicada
µa r-tupla correspondente.
Assim, se X ¶e o vetor, as opera»c~oes introduzidas s~a o implementadas
da seguinte maneira.

1. Para inicializar o vetor com 0 nas r posi»c~o es, no comando de


ao, basta atribuir 0 a X, j¶a que ¯r (0;¢ ¢ ¢ ; 0) = 0.
declara»c~

2. Para atribuir X(i) Ã x 0i, sendo < x 1 ;¢ ¢ ¢ ; xi; ¢ ¢ ¢ ; xr > µa r-tupla


corrente, basta reservar o valor de ¯ r¡i (xr ; ¢¢ ¢ ; xi+1), e o valor de
ao, calcula-se ¯i(x 1; ¢ ¢ ¢ ; xi¡1 ; x0i) e a partir
¯i¡1(x1 ; ¢¢ ¢ ; xi¡1). Ent~
da¶³ recalcular o valor de ¯r(x1 ;¢ ¢ ¢ ; x0i; ¢ ¢ ¢ ; xr) a partir do primeiro
valor reservado, utilizando as fun»c~oes 1¯ 2 e 2¯2 . Por exemplo,
suponha r = 5 e a qu¶³ntupla < 1; 2; 3; 4; 5 >. Para fazer X(2) à 7,
reserva-se R Ã ¯3 (5;4; 3) e T Ã ¯ 1(1). No pr¶oximo passo:

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)

3. Para atribuir U Ã X(i), sendo < x1 ; ¢ ¢ ¢ ;x i; ¢ ¢ ¢; x r > a r-tupla


corrente, basta calcular i¯ r(x 1; ¢ ¢ ¢ ; xi; ¢ ¢ ¢ ;x r).

4. Para atribuir X(i) à Y (j ) utilizam-se os programas constru¶³dos


para os outros tipos de atribui»c~a o.

Lema 4.4.2 Todo programa em LPM ¡ fGOT Og + fV ARI N DEXg


pode ser escrito como um programa em LPM ¡ fGOT Og.
4.4. Estrutura de Dados 97

Demonstra»c~
ao:

1. Substitua todo comando de declara»c~


ao V ARI N DEX X : n, por
X Ã 0;
DI M X Ã n;

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;

3. Substitua todo comando U Ã X(Z); por:


I F Z · DI M X T HE N;

a
T Ã X;
N Ã DI M X Z;
LOOP N;
T Ã 1 ¯2 (T);
END;
U Ã 2 ¯ 2 (T );
E LSE U Ã 0;

4. Deixamos o programa LP M ¡fGOT Og que emula comandos como


X(Z) à Y (V ) como exec¶³cio para o leitor. 2

Existem certas estruturas de informa»c~ao e opera»c~o es realizadas sobre


elas que podemos dar o nome geral de Listas e tratamento de Listas,
respectivamente.
98 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal
' $ ' $
LB LP M
¡ ¾ - ¡
& % & %
frg fGOT Og

' " $ ' " $

LB - LP M

& % & %

Figura 4.4: Evid^encias para a Tese de Church I

Listas
Extender LPM para permitir comandos dos tipos

AT OM < nome >; (Comando de declara»c~ao)


LI ST A < nome >; (Comando de declara»c~ao)
< nome >Ã cons(< nome >; < lista >); (Comando de atribui»c~ao)
< nome >Ã car(< lista >); (Comando de atribui»c~ao)
< lista >Ã cdr(< lista >); (Comando de atribui»c~ao)

e¶ mais complicado, por¶em n~


ao existe nenhuma di¯culdade te¶orica. Os
comandos cons, car e cdr, da linguagem LISP, s~ao tais que se X ¶e um
¶atomo e Y uma lista cons(X; Y ) ¶e a lista (X; Y ), car(X; Y ) = X e
cdr(X; Y ) = Y .

Lema 4.4.3 Todo programa em LP M ¡ fGOT Og [ fATOM; LIS TAg


pode ser escrito como um programa em LPM ¡ fGOT Og.
Demonstra»c~a o: Deixamos para o leitor. 2

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:

(a) : : W2 ! W1 ; :(x;y) = x:y, multiplica»c~a o


(b) exp : W2 ! W1; exp(x; y) = xy , potencia»c~ao
(c) = : W2 ! W1 ; =(x; y) = x=y, divis~a o
(
1 se x = y
(d) eq : W2 ! W1 ; eq (x; y) =
0 se x 6
=y
(
spex(x; 0) = x
(e) spex : W2 ! W1; spex(x; y) =
spex(x; y + 1) = 2 spex(x;y)

2. Construa o programa LPM para f £ g a partir dos programas para


f e g.

3. Construa o programa LPM para a combina»c~ao e expoentiza»c~ao da


linguagem LB.

4. Construa o programa LPM para 6


=

5. Construa o programa LPM ¡ fGOT Og que emula comandos do


tipo X(Z ) Ã Y (V ).

6. Demonstre o lema 4.4.3.


100 Cap¶³tulo 4. Linguagem de Programa»
c~ao Minimal
Cap¶³tulo 5


aquinas com Registros

As linguagens LB e LPM , apresentadas nos cap¶³tulos 1 e 2, respec-


tivamente, foram de¯nidas de modo a serem independentes da repre-
senta»c~ao de dados. A manipula»c~ao de palavras ¶e realizada em um n¶³vel
n~a o acess¶³vel ao usu¶
a rio. Poder¶³amos dizer que LB e LP s~ao lingua-
gens de alto n¶³vel. Neste cap¶³tulo estudamos algumas linguagens para
as quais a representa»c~ ao de dados ¶e de import^a ncia fundamental.
Cada ponto de um subespa»co Wn de W ¶e uma n¡tupla que pode
ser interpretada como os poss¶³veis conte¶udos de um conjunto ordenado
de n registros.

r
z }| {
< x1 ; x2 ; ¢ ¢ ¢; x n >
£± 6 BM
£ B
£
£
Wn BB
£ B
£ B
x1 x2 ¢ ¢¢ xn

Figura 5.1: Registros e conte¶


udos

Para modi¯car os conte¶udos temos fun»c~oes de Wn em Wn . No


entanto, o mais interessante e mais parecido com as m¶aquinas reais
e considerar as associa»c~o es entre Wn e registros como con¯gura»c~oes

de mem¶ o ria. O modelo de computa»c~ao apresentado neste cap¶³tulo ¶e
baseado neste tipo de associa»c~ao.

101
102 Cap¶³tulo 5. M¶
aquinas com Registros

Inicialmente, apresentamos as de¯ni»c~oes gerais de m¶aquinas com re-


gistros e programas para este tipo de m¶a quinas. Nas se»c~o es seguintes,
particularizamos estas de¯ni»c~oes para diferentes tipos de m¶a quinas. A
se»c~
ao 5.2 apresenta m¶ aquinas com in¯nitos registros - MIR - e o teo-
rema de redu»c~ a o de LPM a MIR. A se»c~ao 5.3 apresenta m¶aquinas com
um ¶ unico registro - MUR - e o teorema de redu»c~ao de MIR a MUR.
Finalmente, a se»c~ ao 5.4 apresenta uma vers~a o para m¶a quinas de Turing
- TM - e o teorema de redu»c~ ao de MUR a TM.

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:

² § = §n , para algum n ¸ 1, chamado de alfabeto de entrada;

² R¶
e um conjunto enumer¶
a vel de objetos chamados de registros;

² M ¶e um conjunto de fun»c~o es ¹ : R ! §¤, chamadas de con-


¯gura»c~
oes de mem¶ oria. Se r 2 R ¶ e um registro e ¹ 2 M ¶ e
uma con¯gura»c~ ao de mem¶ ao ¹(r) 2 §¤ ¶
oria, ent~ e chamado de
¹-conte¶udo de r.

² 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.

Exemplo 5.1.1 Seja M a m¶


a quina com registros

§ = 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:

f1 (¹) = ¹ 0 sss ¹ 0(r0) = 1 _ ¹(r0 ) e ¹ 0 (r1) = ¹(r1 )


f2 (¹) = ¹ 0 sss ¹ 0(r0) = ¹(r0 ) e ¹0 (r1 ) = ¹(r1 ) _ 2

ou seja, f1 modi¯ca o conte¶udo do registro r0 concatenando 1 µa esquerda


do conte¶udo anterior e f2 modi¯ca o conte¶ udo do registro r1 concate-
nando 2 µ a direita do conte¶
udo anterior. As fun»c~
o es de entrada e sa¶³da
s~
ao:
® : W2 ! M; def inida por ®2 (x0 ; x1 ) = f< r0 ; x0 >; < r1; x 1 >g
! : M ! W2 ; def inida por !2 (f< r0 ;z0 >; < r1 ; z1 >g) =< z0; z1 >

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.

5.1.1 Programas para m¶


aquinas com registros
A seguir, de¯nimos as no»c~oes de programa e computa»c~ao para m¶a qui-
nas com registros. Para tais de¯ni»c~oes consideramos como primitivas as
seguintes fun»c~
oes:

1. concesq : R £ § ! MM , tal que para todo < r; ¾ >, concesq(r; ¾)


ao de M em M, de¯nida por
e uma fun»c~

concesq (r; ¾)(¹) = ¹0 se e somente se ¹ 0 (r) = ¾ _ ¹(r)

2. concdir : R £ § ! MM, tal que para todo < r; ¾ >, concdir(r; ¾)


ao de M em M, de¯nida por
e uma fun»c~

concdir(r; ¾)(¹) = ¹ 0 se e somente se ¹ 0(r) = ¹(r) _ ¾

3. cortadir : R£§ ! MM , tal que para todo < r; ¾ >, cortadir(r; ¾)


e uma fun»c~
¶ ao de M em M, de¯nida por

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~

cortaesq (r;¾)(¹) = ¹0 se e somente se


(
x se ¹(r) = ¾ _ x
¹0 (r) =
" se ¹(r) 6
=¾ _x

5. ident : R ! M M, tal que para todo r, ident(r) ¶e uma fun»c~a o de


M em M, de¯nida por

ident(r)(¹) = ¹

6. testa : R ! MM , tal que para todo r, testa(r) ¶e uma fun»c~a o de


M em M, de¯nida por
(
¹ se ¹(r) = 0
testa(r)(¹) =
" se ¹(r) 6
=0

A linguagem dos programs de uma m¶aquina com registros ¶e uma


seqÄ
uencia»c~
ao das fun»c~
oes acima. Elas transformam as con¯gura»c~o es
dos registros atrav¶
es da concatena»c~ao e corte de s¶³mbolos das cadeias,
conte¶
udos dos registros.

De¯ni» ao 5.1.2 Seja M =< §;R; M; I; ®; ! > uma m¶


c~ aquina com re-
gistros e L um conjunto n~ao vazio e ¯nito de s¶³mbolos, chamados de

o tulos. Ent~
ao um programa para M e¶ uma tripla P =< T; I ;F >,
onde:

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

Embora o texto T de um programa P seja um conjunto, ¶e usual a-


present¶
a -lo como uma seqÄu^encia de elementos < l;f; l 0 > de T . Somente
consideramos programas com apenas um r¶otulo inicial, ou seja I ¶e um
conjunto unit¶ ario. O conjunto de r¶otulos ¯nais F ¶e tal que se l 2 F ,
ent~ a o existe nenhuma tripla < l; f; l0 > em T .
ao n~
5.1. M¶
a quinas com Registros - Geral 105

¶ ³

µ ´
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

Figura 5.2: Grafo do programa

Exemplo 5.1.2 Seja a m¶


aquina M tal que

§ = f1; 2g; R = fr1 ; r2g; M = §¤fr1 ;r2 g;


I = fcortaesq(r1 ; 1); cortaesq(r1 ; 2);
cortadir(r2 ; 1); cortadir(r2 ; 2);
testa(r1);testa(r2 )g;
®(x; y) = f< r1 ; x >; < r2; y >g
!(f< r1; x >; < r2 ; y >g) =< x; y > :

Considere o programa para M abaixo:

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:

1. l 2 I e f< r1; x1 >; ¢ ¢ ¢ ; < rm ; xm >g = ®(x1 ; ¢ ¢ ¢ ;x m ), ou seja


se l ¶
e um r¶o tulo inicial e < x1 ; ¢¢ ¢ ; xm > ¶e uma entrada para a
m¶a quina M , ou
0 0
2. existe um estado poss¶³vel < l0 ; < x1 ; ¢ ¢ ¢; x m >> e < l 0 ; f; l >2 T
0 0
tal que f< r1 ; x1 >; ¢¢ ¢ ; < rm ;x m >g 2 dom(f) e f< r1; x 1 >
0 0
; ¢ ¢ ¢; < rm ; xm >g = f(f< r1 ; x1 >; ¢ ¢ ¢ ;< rm ; xm >g). Dizemos,
0 0
tamb¶ em, que o estado < l 0 ;< x1 ; ¢ ¢ ¢; xm >> ¶e um antecessor de
< l; < x 1; ¢ ¢ ¢ ; xm >>.

Exemplo 5.1.3 Considerando o programa do exemplo 5.1.2 e dada a


entrada < 112; 211 >, temos que os seguintes s~
a o estados poss¶³veis:

q0 = < 1; < 112; 211 >> q4 = < 1; < 2; 2 >>


q1 = < 3; < 12; 211 >> q5 = < 4; < 0; 2 >>
q2 = < 1; < 12; 21 >> q6 = < 1; < 0; 0 >>
q3 = < 3; < 2; 21 >> q7 = < 2; < 0; 0 >>
q8 = < 5; < 0; 0 >>
Podemos ver que q0 ¶ e um estado inicial, q8 ¶e ¯nal. Deixamos para o
leitor veri¯car que todos os estados s~ao estados poss¶³ves para a m¶a quina
e programa dados.

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

Figura 5.3: Programa P

2. para todo 0 · i < k, qi ¶


e um antecessor de qi+1, e
0 0
3. qk =< l0 ; x0 r >; y s = !(f< r1 ; x1 >;¢ ¢ ¢ ; < rr ; xr >g) e qk ¶
e um
estado ¯nal.

Dizemos, tamb¶em que xr ¶e a entrada da computa»c~


a o e que ys ¶e a sa¶³da
da computa»c~
ao.

Seja P um programa dado pelo grafo da ¯gura 5.3. Podemos observar


que < 12; 22 > ¶e uma computa»c~a o de M com entrada 12 e sa¶³da 22, pois
temos a seqÄ u^
encia < 1; 12 >; < 2; 122 >; < 1; 22 >; < 4; 22 > de estados
poss¶³veis. < 12; 11 > tamb¶em ¶e uma computa»c~a o, com entrada 12 e sa¶³da
11, pois temos a seqÄ u^
encia < 1; 12 >; < 2; 112 >; < 1; 11 >; < 4; 11 > de
estados poss¶³veis. O conjunto de todas as computa»c~o es ¶e portanto uma
rela»c~
ao.

De¯ni»c~ao 5.1.5 Seja P =< T; I; F > um programa para a m¶


aquina
com registros M =< §; R; M; I; ®; ! >.

1. O conjunto de todas as computa»c~


oes de P em M ¶ e chamado de
rela»c~ a denotada por jPjM .
a o computada por P em M e ser¶

e determin¶³stico se e somente se, para todo l, se < l; f 1; l 0 >2 T


2. P ¶
e < l;f 2; l 00 >2 T ent~
a o dom(f 1) \ dom(f2 ) = ;.
108 Cap¶³tulo 5. M¶
aquinas com Registros

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.

Nas pr¶ oximas se»c~


o es consideramos apenas programas determin¶³sti-
cos. Al¶
em disso, dado um programa P =< T; I ; F > usamos as seguintes
conven»c~
o es:

1. Chamamos de comando qualquer tripla < l; f; l0 > 2 T.


2. Se os comando < l; f1 ; l1 >; < l; f 2; l2 >; ¢ ¢ ¢; < l;f k ; lk > possuem
otulo da esquerda, escrevemos l f 1 l1 ; f2 l 2 ;¢ ¢ ¢ ; fk lk
o mesmo r¶

3. Representamos programas como seqÄu^encia de comandos, e assim


omitimos todo r¶otulo que indica o comando seguinte. Por exemplo,
a seqÄ
u^encia da direita ¶e um resultado desta conven»c~a o:
1 f1 2
1 f1 2; f3 5
1 f3 5
2 f2 4
2 f2 4
3 f3
3 f3 4
4 f4 5
4 f4 5

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

®r (x 1 ; ¢ ¢ ¢ ; xr ) = f< r0 ; 0 >; < r 1; x1 >; ¢ ¢ ¢ ; < r r ; x r >; < rr+ 1; 0 >; ¢ ¢ ¢g


!s(f< r0 ; y0 >; < r1 ; y1 >; ¢¢; < r s; ys >; < rs+1 ; ys+1 >; ¢¢g) =< y1; ¢¢; ys >
5.2. M¶
a quinas com in¯nitos registros (MIR) 109

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:

1. o uso de macros n~ao pode ser recursivo;

2. se uma macro A ¶e referenciada com r¶o tulo l de um programa P,


mude cada r¶
otulo i de A para l:i;

3. se uma macro A ¶e referenciada com r¶o tulo l de um programa ou


macro, ent~ao uma transfer^encia para l ¶e interpretada como uma
transfer^
encia para o primeiro comando de A;

4. a de¯ni»c~
ao de uma macro pode conter par^a metros que variam com
o nome do registro.

De¯nimos as seguintes macros para as MIR:


limpe(rk ) modi¯ca o conte¶
udo do registro rk para 0

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

mova(rk; r j ) Copia o conte¶


udo do registro rj para o registro rk ,
destruindo o conte¶udo do registro r j.

Macro Expans~
ao
l mova(rk; r j ) l0 l limpe(rk )
l:1 conc(r k; rj ) l0

De agora em diante, escrevemos

l cortaesq(rk ; ¾) l:¾; ¾ 2 §
l:¾ concdir(rk ; ¾) l; ¾ 2 §

respectivamente, no lugar das seqÄu^encias:

l cortaesq (rk ; ¾1 ) l:¾1 l:¾ 1 concdir(rk ; ¾1 ) l


l cortaesq (rk ; ¾2 ) l:¾2 l:¾ 2 concdir(rk ; ¾2 ) l
.. ..
. .
l cortaesq (rk ; ¾n)l:¾ n l:¾ n concdir(rk ; ¾n ) l

copie(rk ; rj ) O mesmo que o mova(rk ; rj ), preservando o conte¶


udo
do registro rj .

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

a quina M =< §; R; M; I; ®1 ; !3 >, o programa


Exemplo 5.2.1 Na m¶

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.

conv1 Se existem n ocorr^encias de vari¶a veis em um programa escrito em


LPM, ent~ a o estas vari¶a veis s~ao X1 ; X2 ;¢ ¢ ¢ ; Xn ¢ ¢ ¢ (1). Se existem
r vari¶a veis de entrada, ent~a o estas vari¶aveis s~ao as r primeiras da
lista (1) acima, ou seja X1 ; X2 ;¢ ¢ ¢ ; Xr; e se existem s vari¶aveis de
sa¶³da elas s~ ao as pr¶o ximas s vari¶a veis. As demais vari¶aveis, isto
e, as que ocorrem no corpo de programa P 0 , s~ao as k ¡ (r + s)

restantes vari¶ a veis.

conv2 Todos os comandos do programa t^em r¶o tulos. O primeiro co-


mando tem r¶o tulo 1, o segundo r¶otulo 2, e assim sucessivamente.

O leitor pode notar que estas conven»c~o es n~a o modi¯cam as pos-


sibilidades computacionais, ou seja, dado qualquer programa ¶e sem-
pre poss¶³vel reescrev^
e-lo respeitando a conven»c~ao enunciada, de modo
a preservar a fun»c~
ao computada pelo programa original.

Exemplo 5.2.2 Considere os seguinte programas em LPM. (A) com-


puta Z = X ¡ Y , (B) foi obtido de (A) trocando as vari¶ a veis X por
X1 , Y por X2 , Z por X3 e as vari¶ a vel U de programa por X4 e (C ) foi
obtido de (B) pela introdu»c~
a o de r¶
otulos.
112 Cap¶³tulo 5. M¶
aquinas com Registros

(A) (B) (C)

E NT RADA X; Y ; EN TRADA X 1 ; X 2 ; ENT RADA X1 ; X2 ;


SAI DA Z; SAI DA X3 ; SAIDA X 3 ;
Z Ã X; X3 Ã X1; 1 X 3 Ã X1 ;
LOOP Y ; LO OP X 2 ; 2 LOOP X 2 ;
U Ã 0; X 4 Ã 0; 3 X 4 Ã 0;
LOOP Z; LO OP X 3 ; 4 LOOP X3 ;
Z Ã U; X 3 Ã X4 ; 5 X3 Ã X4 ;
U Ã U + 1; X 4 Ã X4 + 1; 6 X4 Ã X4 + 1;
END; E ND; 7 E ND;
E ND; EN D; 8 E ND;

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~

2. O estado inicial do programa MIR resultante ¶e < 1; ®(x1 ; ¢ ¢ ¢ ;x r) >

3. Substitua l Xk à 0 por l limpe(rk );

4. Substitua l Xk à Xk + 1 por l concdir(rk ; 1);

5. Substitua l Xk à Xj por:

l copie(rk ; rj ) se k 6
=j
l limpe(r0 ) se k = j

6. Para o comando l LOOP Xk , encontre o correspondente l0 EN D e


substitua por l 0 EN D l. Se m = maxfi j X i ocorre no programag
ent~
ao substitua o comando l LOOP Xk por

l copie(rm+1 ;rk )
l:1 testa(rm+1 ) l 0 + 1; cortaesq(rm ;1) l + 1

7. Substitua l 0 EN D l por l0 limpe(r0 ) l:1


5.2. M¶
a quinas com in¯nitos registros (MIR) 113

8. Seja m o maior r¶o tulo do programa; substitua o comando l GOT O l 0


por l limpe(r0 ) l 0 se l 0 · m ou por l limpe(r0) m + 1 se l 0 > m.
9. Seja m o maior r¶
otulo do programa resultante. Adicione a seguinte
seqÄ
u^
encia ao ¯nal do programa:
m+1 copie(r1 ; rr+1 )
m+2 copie(r2 ; rr+2 )
..
.
m+s copie(rs; rr+s)
m + s + 1 fim
A¶ ultima regra de tradu»c~ao prepara as sa¶³das. O programa LPM tem
suas sa¶³das nas vari¶ aveis Xr+1 ; ¢ ¢ ¢ ; Xr+s, que correspondem aos registros
rr+1 ;¢ ¢ ¢ ; rr+s no programa MIR. Como a fun»c~a o de sa¶³da da m¶aquina
MIR ¶e !s(< r0; y0 >; < r1 ; y1 >; ¢ ¢¢ ; < rs ;y s >; ¢ ¢ ¢) =< y1 ; ¢ ¢ ¢ ; ys >,
temos que transferir os conte¶udos dos registros rr+1 ;¢ ¢ ¢ ; rr+s para os
registros r1 ; ¢¢ ¢ ; rs, respectivamente.
Exemplo 5.2.3 Aplicando estas regras de tradu»c~
a o, o programa do e-
xemplo 5.2.2 ¶
e transformado em:

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.

De¯ni» ao 5.3.1 Uma MUR M =< §; R; M; I; ®r; !s > ¶


c~ e uma m¶
a qui-
na com registros, onde:

§ = §n ; n > 0;
R = fr1g
M = §¤R
I = fcortaesq(r1 ; ¾); concdir(r1; ¾); testa(r1 )g; ¾ 2 §

Seja §0 = § [ f$g e W 0 = §0 ¤ . As fun»c~


oes de entrada, ®r : Wr ! W 0 ,
0
e sa¶³da, ws : W ! Ws , s~
a o de¯nidas por

®r (x1 ; ¢¢ ¢ ; xr ) =< r1 ; x1 $x2 $ ¢8¢ ¢ $xr $ >; e


>
< < y 1; y 2; ¢ ¢ ¢ ; ys > se t ¸ s
!s(< r1 ;y 1 $y2 $ ¢ ¢ ¢ $y t$ >) = < y 1; y 2; ¢ ¢ ¢ ; yt ;0; ¢ ¢¢ ; 0 > se t < s
>
: | {z }
t¡s

A extens~
a o do alfabeto § com o s¶³mbolo novo $ nos permite simular
um n¶
umero in¯nito de registros.

Exemplo 5.3.1 f : §¤2 £ §¤2 ! §¤2 £ §¤2 , f(x1 ; x2 ) =< x 2; x1 >, ¶


e
computada, em uma MUR M =< §; R; M; I; ®2 ;!2 >, pelo programa:

1 cortaesq(1;$) 3;cortaesq(1;1) 2:1; cortaesq(1; 2) 2:2


2:1 concdir(1; 1) 1
2:2 concdir(1; 2) 1
3 concdir(1; $)
4 fim

Lema 5.3.1 Sejam a m¶ a quina MIR < §; R; M; I; ®r ; !s > e a m¶


aquina
MUR < § [ f$g;R 0 ;M0 ; I 0 ;®0r ; !0s > uma MUR. Se P ¶e um programa
MIR em § e m ¶e maior que o maior ¶³ndice de registro referenciado em
a o existe um programa MUR P 0 em §0 tal que:
P, ent~

jP jM (0; x1 ; ¢¢ ¢ ; xm ; 0;¢ ¢ ¢ ; 0) =< y 0 ;y 1 ;¢ ¢ ¢ ; ym ; 0; ¢ ¢ ¢ ; 0 >


5.3. M¶
a quinas com um s¶
o registro (MUR) 115

se e somente se jP 0 jM 0 ($x1 $ ¢ ¢ ¢ $xm $) = y0 $y1 $ ¢ ¢ ¢ $ym $

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

Fica faltando apresentar a de¯ni»c ~


ao de rodareg$ e rodareg em MUR.
O deslocamento de um conte¶ udo ¶
e efetuado pelas seguintes macros:
roda1() transforma x0 $x 1 $ ¢ ¢ ¢ $xm $ em x1 $x1 $ ¢ ¢ ¢ $xm $x0

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

O leitor deve se convencer, pela an¶


alise das transforma»c~
oes e macros,
que o programa obtido para a MUR computa a mesma fun»c~ a o do pro-
grama inicial para MIR. 2

Teorema 5.3.1 Toda fun»c~ a o f : Wr ! Ws computada por um pro-


grama em uma M IR, M =< §; R; M; I;®r ; !s > ¶ e computada por um
programa em uma MUR, M 0 =< § [ f$g; R0 ;M 0; I 0 ; ®0r; !0s >.
Demonstra»c~a o: Seja P o programa na m¶ aquina MIR M que computa f .
Seja m = 1 + maxfp; r; sg, onde p ¶ e o maior registro referenciado por
P. Seja P 0 o programa obtido pela utiliza»c~
a o da tabela do lema 5.3.1, e
00 0
seja P obtido de P pelo acr¶ escimo dos comandos

l1 concdir(r1 ; $)
l2 concdir(r1 ; $)
l3 concdir(r1 ; $)
.. ..
. .
l m¡r+1 concdir(r1 ; $)
l m¡r+2 rodareg $(m)

adicionados ao come»co do programa, onde l1 ; ¢ ¢¢ lm¡r+2 s~


a o r¶
otulos no-
vos. Todos os comandos fim s~ a o substitu¶³dos por rodareg $(m + 1) l,
5.4. M¶
a quinas de Turing 117

onde l ¶e um novo r¶
o tulo, e os comandos

l cortaesq(r1 ; $) l0 ; testa(r1) l; cortaesq(r1 ; ¾) l ¾ 2 §


l0 fim
0
adicionados ao ¯m do programa. l 1 passa a ser o r¶ otulo inicial e l passa
a ser o r¶
o tulo ¯nal. Ent~ a o f (x1 ; x2 ; ¢ ¢¢ ; xr ) =< y 1; y 2; ¢ ¢ ¢ ;y s > se e
somente se jPjM (0;x 1; x2 ; ¢ ¢ ¢ ;x r; 0;¢ ¢ ¢ ; 0) =< y 0 ;y 1 ;¢ ¢ ¢ ; ys; y s+1 ; ¢ ¢¢ >,
para algum y 0; y s+1 ; ¢ ¢¢, se e somente se

jP 0jM 0 ($x 1$x2 $ ¢ ¢ ¢$xr $$ ¢ ¢ ¢ $) = y 0$y1 $y 2$ ¢ ¢¢ $ys$ys+1$ ¢ ¢¢ $ym $

se e somente se

jP 00 jM 0 (x1 $x2$ ¢ ¢¢ $xr $) = y1 $y 2$ ¢ ¢¢ $ys$ys+1 $ ¢ ¢¢ $ym $

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

Figura 5.4: Modelo original da M¶a quina de Turing

um s¶³mbolo ¶ e alterado, e apenas os observados s~ a o alterados. Al¶ em de


mudar s¶³mbolos, as opera»c~ oes devem mudar o foco da observa»c~ a o, e ¶
e
razo¶a vel que esta mudan»ca deva ser feita para s¶³mbolos localizados a uma
ancia ¯xa dos anteriores. [¢ ¢ ¢]. Algumas destas opera»c~
dist^ o es implicam
mudan»cas de estado mental do compuador(a) e portanto determinam
qual ser¶ a pr¶
oxima a»c~ao.
Tradicionalmente, esta m¶aquina ¶e constitu¶³da de uma unidade de
controle (estados mentais) com uma cabe»ca para ler, escrever e se movi-
mentar ao longo de uma ¯ta in¯nita (papel quadriculado).
Formalmente, uma M¶ aquina de Turing (TM) ¶e um conjunto de qu¶³n-
tuplas < q; ¾; ¾ ; M ;q >, onde q e q0 s~ao estados do controle, ¾ e ¾0 s~a o
0 0

letras de um alfabeto § e M 2 fE; D; Ig, onde E; D e I , representam


movimentos da cabe»ca de leitura e escrita para a esquerda, direita e
im¶ovel, respectivamente. A qu¶³ntupla < q; ¾; ¾ 0; M ;q 0 > signi¯ca que se
o controle est¶ a no estado q lendo ¾, substitui ¾ por ¾0 , vai para o estado
q0 e realiza o movimento M . N¶o s representamos M¶aquinas de Turing
como uma m¶ aquina com registros.
Uma TM pode ser gra¯camente representada pela ¯gura 5.5. Os dois
registros simulam uma ¯ta in¯nita da seguinte maneira:

² 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

Figura 5.5: M¶aquina de Turing

² Movimento da ¯ta para a direita (esquerda) feito pela cabe»ca de


leitura do controle ¶e simulado pelo deslocamento do s¶³mbolo da
¯ta para a esquerda (direita).

² O ¯m da ¯ta ¶e considerado o u¶ltimo s¶³mbolo que ocorre ¶a direita


da ¯ta, o in¶³cio ¶
e o primeiro s¶³mbolo que ocorre µa esquerda.

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:

concesq(r2 ; ¿ ) ± cortaesq(r2 ; ¾) substitui µ


a esquerda de r2 , ¾ por ¿
concdir(r1 ; ¿ ) ± cortadir(r 1; ¾) substitui µ
a direita de r 1, ¾ por ¿
concesq(r2 ; ¾) ± cortadir(r 1; ¾) movimenta a leitora para a esquerda
concdir(r1 ; ¾) ± cortaesq(r 2; ¾) movimenta a leitora para a direita
concesq(r2 ; ¾) ± testa(r1 ) coloca ¾ no in¶³cio da ¯ta
cortaesq(r2 ; ¾) ± testa(r 1) corta ¾ do in¶³cio da ¯ta
concdir(r1 ; ¾) ± testa(r 2) coloca ¾ no ¯m da ¯ta
cortadir(r 1; ¾) ± testa(r2 ) corta ¾ no ¯m da ¯ta
testa(r1 ) testa se o reg istro r 1 est¶
a limpo
testa(r2 ) testa se o reg istro r 2 est¶
a limpo

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

Note que o primeiro registro ¶e inicializado com a palavra vazia e o


segundo registro recebe a entrada < x1 ; x2 ; ¢ ¢ ¢; xr > codi¯cada como
uma palavra do alfabeto estendido com $, que serve de separador. Na
120 Cap¶³tulo 5. M¶
aquinas com Registros

sa¶³da, apenas o registro da direita ¶e decodi¯cado e apenas as primeiras


s posi»c~oes entre $ interessam.
Devemos notar que as instru»c~oes de¯nidas para uma TM s~a o in-
divis¶³veis. Por exemplo, concesq(r2; ¿ ) criaria uma c¶elula na ¯ta e
cortaesq(r2 ; ¾) eliminaria uma c¶elula na ¯ta se fossem usadas isolada-
mente. Portanto, para mantermos a seqÄ u^encia de c¶elulas na ¯ta temos
concesq (r2; ¿ ) ± cortaesq(r2 ; ¾). Para simpli¯car nosso estudo, usamos
as seguintes denomina»c~ oes para as intru»c~o es:

l concdir(r1 ; ¾) ± cortaesq(r2 ; ¾) l 0 ; ¾ 2 § l movedir l0


l concesq (r2 ;¾) ± cortadir(r1 ; ¾) l 0 ; ¾ 2 § l moveesq l0
l concesq (r2 ;¿ ) ± cortaesq(r2; ¾) l0 ; ¾; ¿ 2 § l subst(r2 ; ¾; ¿ ) l 0
l concdir(r1 ; ¿ ) ± cortadir(r1 ; ¾) l0 ; ¾; ¿ 2 § l subst(r1 ; ¾; ¿ ) l 0

Exemplo 5.4.1 O programa abaixo em §3 = f1;2; 3g computa a fun»c~


ao
sucessor s em uma TM com fun»c~
a o de entrada ®1 e de sa¶³da !1:

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

O exemplo acima evidencia que no n¶³vel de m¶aquina a fun»c~ao suces-


sor ¶e uma mera manipula»c~ ao de cadeias de s¶³mbolos e o alfabeto deve
ser ¯xado na de¯ni»c~ ao da m¶
a quina. O leitor deve rever a discuss~ao do
cap¶³tulo 3 neste ponto.
Toda fun»c~ao f : Wr ! Ws computada por um programa em uma
m¶aquina M IR, M =< §; R;M; I; ®r; !s > ¶e computada por um pro-
grama em uma m¶ a quina MUR, M 0 =< § [ f$g; R 0; M0 ; I 0; ®0r ; !s0 >.

Teorema 5.4.1 Qualquer que seja o programa P em uma m¶ aquina


MUR, M =< § [ f$g; R; M; I; ®r; !s >, existe um programa P 0 em
uma TM, M 0 =< § [ f$g; R0 ; M0 ; I 0; ®0r ; !s0 >, tal que jPj M (x) = y se
e somente se jP 0 jM 0 (0; x) =< 0; y >.
Demonstra»c~
a o: Os r¶ o tulos iniciais e terminais de P 0 s~
a o os mesmos de
P. Cada comando em P ¶ e simulado em P 0 atrav¶ es das transforma»c~
o es
5.5. Conclus~
oes e Refer^
encias 121

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

Corol¶a rio 5.4.1 Toda fun»c~


a o parcialmente recursiva em § ¶
e computa-
da por uma TM em § [ f$g. 2

' $ ' $

TM ¾ MU R

& % & @I %
@
@ ' $
@
' $ ' $
MIR

µ¡& %
LB LPM
¡ ¾ - ¡
& % & % ¡
frg fGOT Og

' " $ ' " $¡


¡
LB - LPM

& % & %

Figura 5.6: Evid^encias para a Tese de Church III

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

grande de registros ou posi»c~


o es de mem¶oria endere»c¶a veis. Vimos pelo
ao LPM ¡comput¶avel ¶e M I R¡comput¶a vel,
teorema 5.2.1 que toda fun»c~
e pelo teorema 5.3.1, que toda fun»c~ao MI R¡comput¶avel ¶e M UR¡com-
put¶a vel. Finalmente pelo teorema 5.4.1 mostramos que toda fun»c~a o
M IR¡comput¶ e T M ¡comput¶avel. Assim nossas evid^encias para a
avel ¶
Tese de Church ¯cam refor»cadas.
A apresenta»c~
ao do material foi bastante inspirada pelos textos [BL74]
e [ER64]. O modelo da M¶ aquina de Turing pode ser encontrado em
in¶umeros textos, tanto de Estruturas Discretas, como [PY73]; quanto
de computabiblidade, como [Hen77], [Dav83]; quanto de teorias dos
aut^omatas, como [Nel68].

5.6 Exerc¶³cios
1. Mostre que o comando LOOP pode ser implementado
em LP M ¡ fLOOPg + fIF g.

2. Mostre que o comando LOOP pode ser implementado em


LPM ¡ fLOOP;GOT Og + fW HI LEg onde W HILE ¶e:

W HILE X 6
= Y;
P
END;

3. Construa programas determin¶³sticos para uma m¶aquina de um re-


gistro em §2 com

I = fcortaesq (r1; 1); cortaesq(r1 ; 2); cortadir(r1 ; 1);


cortadir(r1 ; 2); testa(r1)g

que compute as fun»c~


o es:

(a) f (x) = 0 sss x = ½(x) onde ½(¾1 ¢ ¢¢ ¾ k ) = ¾ k ¢ ¢¢ ¾1 ¶e o reverso


da cadeia)
(b) f (x) = 0 sss compr(x) ¶e par (compr ¶e o comprimento da
cadeia)

Desenhe os grafos correspondentes.

4. Exiba programas MIR que computem:


5.6. Exerc¶³cios 123

(a) adi»c~
ao em §2 ;
(b) multiplica»c~
ao em §1 ;
(c) ½ em §2 ;

5. Modi¯que o teorema 5.2.1 para valer quando §2 = f1;2g e para


§3 = f1;2; 3g. Indique como proceder para §n.

6. Exiba programas MUR que computem:

(a) ± (x) =< x; x > em §3 ;


(b) adi»c~
ao em §1 ;
(c) ½ em §2 ;

7. Exiba TMs que computem:

(a) ± (x) =< x; x > em §3 ;


(b) adi»c~
ao em §1 ;
(c) ½ em §2 ;
124 Cap¶³tulo 5. M¶
aquinas com Registros
Cap¶³tulo 6

Algoritmos de Markov com



otulos

As linguagens LB e LPM modi¯cam os valores associados a uma vari¶avel


de modo indireto e independente do alfabeto §. Tal fato as tornam
inadequadas para a manipula»c~ao direta de palavras. A fun»c~a o inicial de
sucessor (ou atribui»c~ao de um valor a uma vari¶avel incrementando-a)
opera de maneira completamente idealizada, sobre uma palavra em um
alfabeto qualquer.
As linguagens associadas µa s maquinas abstratas MIR, MUR e TM
modi¯cam os conte¶ udos dos registros de modo direto, no entanto sup~oem
para sua de¯ni»c~
a o certas fun»c~o es primitivas (concesq , concdir, cortaesq,
cortadir, testa e ident) que foram de¯nidas informalmente, portanto
tamb¶em operam de uma forma apenas idealizada.
Neste cap¶³tulo estudamos a linguagem dos Algoritmos de Markov
com r¶otulos (AMR) que al¶em de ser adequada para a manipula»c~ao direta
de palavras, tem a vantagem de possuir um funcionamento diretamente
formaliz¶avel.

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

ao do AMR, w 2 (§ [ fa; bg) ¤. O AMR ¶e, por sua vez,


durante a execu»c~
uma palavra em (§ [ fa; bg [ f:; !; =;; g)¤ .
De¯ni» c~
ao 6.1.1 Seja § um alfabeto, a e b s¶³mbolos quaisquer n~
a o ocor-
rendo em § [ f:; !; =;; g.
1. De¯nimos os alfabetos:
© = § [ fa; bg
ª = © [ f:;!; =; ;g
ao ditos auxiliares e :; !; =;; n~
Os s¶³mbolos a e b s~ ao ocorrem em
§ [ fa; bg.
2. Um Algoritmo de Markov com r¶ otulos com alfabeto de entrada §,
ou simplesmente um AMR em § ¶ e uma seqÄ
u^encia de N ; N > 0
oes da forma l : x ! y=l 0 , chamados de comandos, onde
express~

² 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.

Al¶em disso para todo i; 1 · i · N , o i-¶


esimo comando tem r¶
otulo
i ¡ 1.
Como ¶ e usual nas linguagens de programa»c~ao, os comandos da se-
qÄu^encia s~
ao separados por ;. Apesar dos dados n~a o fazerem parte da
de¯ni»c~ao de um AMR (n~ ao existem vari¶aveis ou registros), a id¶eia ¶e
aplicar um AM R a uma cadeia de §¤ . Uma cadeia de entrada ¶e transfor-
mada pela aplica»c~ao do AM R e a sa¶³da ¶e a cadeia modi¯cada. De¯nimos
a seguir, o resultado da execu»c~a o de um comando.
De¯ni»ao 6.1.2 Seja um AM R A e l : xl ! yl =l0 um comando de A.
c~
a o jl : xl ! y l =l 0 j : ©¤ ! ©¤ com valores dados por:
De¯nimos a fun»c~
8
>
< subst(w; xl ; yl ) se xl ¹ w
jl : xl ! yl =l 0j(w ) =
>
: w se xl 6
¹w
6.1. De¯ni»
c~ao da Linguagem 127

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.

Exemplo 6.1.1 A seqÄ u^encia de comandos abaixo ¶e um AMR no alfa-


beto §2 e s¶³mbolo auxiliar a:

0 : 0 ! a=1; 1 : a1 ! 1a=1; 2 : a2 ! 2a=1; 3 : a ! 2=5;

Seja w 2 §¤2 . O comando de r¶ otulo 0 signi¯ca: substitua a primeira


ocorr^
encia da palavra nula em w por a, ou seja, coloque o marcador
a no in¶³cio da palavra w e passe a executar o comando de r¶ otulo 1.
O comando de r¶ o tulo 1 signi¯ca: substitua a primeira ocorr^ encia da
palavra a1 em w por 1a e volte para executar o comando de r¶ o tulo 1.

Embora um AMR seja uma cadeia de comandos, por uma quest~ao de


clareza, n¶
o s representamos seus comandos em forma vertical e dentro de
um par de colchetes, assim o AM R do exemplo 6.1.1 ser¶a representado
por
2 3
0 : 0 ! a=1;
6 7
6 1 : a1 ! 1a=1; 7
6 7
4 2 : a2 ! 2a=1; 5
3 : a ! 2=5;

Informalmente, a aplica»c~a o de um AM R A a uma cadeia de entrada


w e¶ realizada da seguinte maneira:

1. inicialmente, aplica-se o comando 0 : x 0 ! y 0=l0 µa entrada w;

2. ap¶ ao de qualquer comando de A i : xi ! yi=li a uma


os a aplica»c~
palavra w , se xi ¹ w0 o pr¶oximo comando a ser executado ser¶a
0

o comandos de r¶ otulo li. Em caso contr¶a rio o comando de r¶o tulo


a aplicado µa cadeia w0 ;
i + 1 ser¶

3. o AM R p¶ ara quando o r¶otulo que indica o pr¶oximo comando a ser


aplicado n~ao ocorre como r¶otulo de comando do AM R.
128 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

De¯ni»ao 6.1.3 Seja A o AM R


c~
2 3
0 : x0 ! y0 =l0 ;
6 1 : x ! y =l ; 7
6 1 1 1 7
6 7
6 7
6 .. 7
6 7
6 . . 7
6 . 7
4 . 5
k : xk ! y k =l k ;

De¯nimos A(i) por


8 2 3
>
> i: xi ! yi=li ;
>
> 6 7
>
> 6 i + 1 : xi+1 ! yi+1 =li+1 ; 7
>
> 6 7
>
< 6 .. .. 7 se 0 · i · k
A(i) = 4 . . 5
>
>
>
> k: xk ! y k =l k ;
>
>
>
>
>
:
; se i > k

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;

De¯ni»ao 6.1.4 Seja A o AM R


c~
2 3
0 : x0 ! y0 =l0 ;
6 1 : x ! y =l ; 7
6 1 1 1 7
6 7
6 7
6 .. 7
6 7
6 . 7
6 .. 7
4 . 5
k : xk ! y k =l k ;

e w 2 ©¤ uma cadeia.
6.1. De¯ni»
c~ao da Linguagem 129

1. Denotamos por jA(i)j(w) o resultado da aplica»c~


ao de A(i) a w,
de¯nido por
8
>
> jA(li )j(ji : xi ! yi=lij(w)) se 0 · i · k
>
>
>
< e xi ¹ w
jA(i)j(w) = jA(i + 1)j(ji : xi ! yi=lij(w)) se 0 · i · k
>
>
>
> e xi 6
¹w
>
:
w se i > k

ao computada por A, denotada por jAj, ¶


2. A fun»c~ e de¯nida por

jAj(w) = jA(0)j(w)

O funcionamento do AMR do exemplo 6.1.1, para a entrada 1121 ¶e


explicado abaixo:

1: 1121 ¢ ¢ ¢palavra de entrada


2: a1121 ¢ ¢ ¢ j0 : 0 ! a=1j(1121)
3: 1a121 ¢ ¢ ¢ j1 : a1 ! 1a=1j(a1121)
4: 11a21 ¢ ¢ ¢ j1 : a1 ! 1a=1j(1a121)
5: 112a1 ¢ ¢ ¢ j2 : a2 ! 2a=1j(11a21)
6: 1121a ¢ ¢ ¢ j1 : a1 ! 1a=1j(112a1)
7: 11212 ¢ ¢ ¢ j3 : a ! 2=5j(11211a)

De¯ni» ao 6.1.5 Seja f : ©¤ ! ©¤. Dizemos que f ¶e AMR-comput¶


c~ a-
vel se e somente se existe um AMR A tal que, se w 2 dom(f ) ent~ ao
f (w) = y se e somente se jAj(w ) = y e se w 6
2 dom(f ) o AM R A n~
ao
ara para a entrada w, ou seja jAj ".

Para que um AMR A compute uma fun»c~ao f : Wr ! Ws ser~ao


oes ®r : Wr ! W1 de entrada e ws : W1 ! Ws de
utilizadas as fun»c~
sa¶³da. Para os AMR's, estas fun»c~o es s~ao de¯nidas por:

®r(x1 ; x2 ;¢ ¢ ¢ ; xr ) = x 1$x2 $ ¢ ¢ ¢ $xr $; onde $ 6



8
>
< < x1 ; x2; ¢ ¢ ¢ ; xs > se x = x 1$x2 $ ¢ ¢ ¢ $xr $; onde $ 6

ws(x) =
>
: < 0; 0; ¢ ¢ ¢ ; 0 > caso contr¶a rio
130 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

Teorema 6.1.1 Toda fun»c~ ao f : W ! W T M ¡comput¶ a vel ¶


e AMR-
comput¶ avel.
Demonstra»c~ a o: Seja P o programa em TM que computa f. Vamos
demonstrar o teorema construindo um AM R que simula o programa
P. Um programa em T M atua sobre dois registros, que simulamos
pela amplia»c~ a o do alfabeto §n utilizado por P pela introdu»c~ ao das le-
tras [; ]; j. Queremos que [¾i1 ¢ ¢ ¢ ¾ij j¾ ij+1 ¢¢ ¢ ¾im ] no AMR corresponda
a con¯gura»c~
µ a o TM ¹ = f< r1 ;¾ i1 ¢ ¢ ¢ ¾ij >; < r2 ; ¾ij+1 ¢ ¢¢ ¾ im >g. Seja
o AMR A® que coloca a palavra de entrada w no registro da direita.
2 3
0: 0 ! j]=1;
6 1: ]1 ! 1]=1; 7
6 7
6 7
6 2: ]2 ! 2]=1; 7
A® = 6
6 ..
7
7
6 . 7
6 7
6 7
4 n: ]n ! n]=1; 5
n + 1 : 0 ! [=n + 2;

¶ 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

Seja Ac a seqÄ u^encia de comandos AMR obtida. Agora precisamos


preparar as sa¶³das. Na TM, o conte¶udo de r2 ¶
e a sa¶³da, logo precisamos
6.2. Formaliza»
c~ao da sem^antica dos AMR's 131

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

Agora podemos extender nosso ciclo de evid^encias para a tese de


Church (¯gura 6.1) com a demonstra»c~ao de que AMR computam as
fun»c~
oes TM-comput¶
a veis.

 ¿  ¿
¾

¡Á À Á I@@À
TM MU R

 ¿  ¿
¡ @
ª¡¡
 ¿  ¿
@

Á À Á À
AMR LB LP MIR
¡ ¾ - ¡
Á À Á À¡
¡¡µ
 " ¿ Â" ¿
frg fGOT Og

¡
-
Á À Á À
LB LP

Figura 6.1: Evid^encias para a Tese de Church VI

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

da forma normal de Kleene [Kle52], visto com mais detalhe no cap¶³tulo


7, adaptado para a linguagem de AMRs. Para tal vamos de¯nir uma
fun»c~
a o recursiva primitiva C tal que
à !
4
jAj = ± Cr ± (A £ ¶ £ z £ z )
2

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 C executa um passo da computa»c~a o de A. Os


Intuitivamente a fun»c~
par^
ametros de C s~ao:

² A - o AM R;

² w - a palavra ao qual o comando de r¶o tulo i de A ser¶a aplicado;

² 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.

Assim C r(A; w; i; t) tem o valor < A; w0 ;l; 1 > se na execu»c~ao de


algum comando l :6 ¹ A, ou seja l n~a o ¶e r¶o tulo de algum comando do
AM R A. Se n~ a o existir um comando que gere 1 como ¶ultimo argumento
a computa»c~ ao de A diverge.
A fun»c~ ao C ¶e obtida via uma s¶³ntese de fun»c~o es, que extraem de
um AM R dado, seus elementos constituintes, isto ¶e comandos; e dos
comandos seus elementos constituintes: r¶otulo do comando, r¶o tulo de
o ximo comando, lado esquerdo de ! e lado direito de !. De¯nimos
pr¶
formalmente fun»c~ oes que aplicadas a um AM R extraem tais constitu-
intes e posteriormente mostrar que todas estas fun»c~o es incluindo ¹, j¶a
utilizada para de¯nir a fun»c~ a o que computa um comando de AM R, s~a o
fun»c~
o es recursivas primitivas.
6.2. Formaliza»
c~ao da sem^antica dos AMR's 133

Um AM R ¶ e uma seqÄu^encia de comandos da forma l : xl ! yl =l 0 e a


representa»c~
ao 2 3
0 : x0 ! y0 =l0;
6 7
6 1 : x1 ! y1 =l1; 7
6 7
6 .. 7
4 . 5
n : xn ! ln =l n;
foi utilizada apenas por conveni^encia did¶atica. Nesta se»c~ao consideramos
a forma linear de representa»c~a o
A = 0 : x0 ! y0 =l0 ;1 : x1 ! y1 =l 1; ¢ ¢ ¢ ; n : xn ! ln =l n
e que os r¶otulos s~
a o representados no alfabeto §1 . O AMR do exemplo
6.1.1 ¶
e representado pela palavra:
A = 0 :! a=1; 1 : a1 ! 1a=1; 11 : a2 ! 2a=1; 111 : a ! 2=11111;

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

Fun»ao 6.3 dir : ª ¤ ! ª ¤


c~
(
y l se s = l : xl ! yl =l0
dir(s) =
0 em caso contr¶a rio
a o dir(s) retorna a cadeia do lado direito de ! de um comando
A fun»c~
s. Para o AMR do exemplo 6.1.1, temos:

dir(cmdo(A; 11)) = dir(11 : a2 ! 2a=1) = 2a


dir(cmdo(A; 1111)) = esq(0) = 0

Fun»ao 6.4 rseg : ª ¤ ! §¤1


c~
(
l0 se s = l : x l ! yl =l 0 ;
rseg(s) =
0 em caso contr¶a rio
A fun»c~
a o dir(s) retorna o r¶
otulo do pr¶o ximo comando a ser executado
a partir de um comando s. Para o AMR do exemplo 6.1.1, temos:

rseg(cmdo(A;11)) = dir(11 : a2 ! 2a=1) = 1

Fun»ao 6.5 procom : ª¤ 3 ! §¤1


c~
(
rseg(cmdo(A; l)) se esq(cmdo(A; l)) ¹ w
procom(A; w; l) =
l 1 em caso contr¶ario
A fun»c~
a o procon(A;w ;l) retorna o r¶o tulo do pr¶o ximo comando a ser
executado em um AMR A, quando o comando de r¶otulo l atua sobre
uma cadeia w . Para o AMR do exemplo 6.1.1, temos:

procom(A;1a21;11) = 1; pois esq (cmdo(A; 11)) = a2 ¹ 1a21

Fun»ao 6.6 subst : ª ¤ 3 ! ª ¤


c~
(
w0 yw00 se w0 ¶e a menor palavra tal que w = w 0xw00
subst(w; x;y)=
w se x 6
¹w
A fun»c~
ao subst(w; x; y) retorna o resultado da substitui»c~a o da primeira
ocorr^
encia de x por y na cadeia w. Para o AMR do exemplo 6.1.1,
temos:
subst(121212212;212; 32) = 13212212
Agora podemos de¯nir C em termos destas fun»c~o es.
6.2. Formaliza»
c~ao da sem^antica dos AMR's 135

De¯ni»
c~ao 6.2.1 De¯nimos a fun»c~
a o C , por

C(A; w; i; t) =< A;w 0; l; t0 >

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

Para o AMR do exemplo 6.1.1 temos:

C(A; 12a1; 1;0) = < A; 121a; 1; 0 >


C(A; 121a; 1;0) = < A; 121a; 2; 0 >
C(A; 121a; 2;0) = < A; 121a; 3; 0 >
C(A; 121a; 3;0) = < A; 1212; 5; 1 >

6.2.2 Recursividade primitiva de C


Para mostrarmos que C ¶e uma fun»c~ao recursiva primitiva, basta mostrar
que subst; esq; cmdo; dir e procom s~a o fun»c~o es recursivas primitivas. To-
oes dependem da fun»c~a o ¹, que ¶e de¯nida formalmente a
das estas fun»c~
seguir, juntamente com duas outras fun»c~oes R e V , que ser~ao tamb¶em
necess¶
a rias.

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

Como exemplos de aplica»c~oes das fun»c~oes de¯nidas acima, temos:

R(123121231;23) = 1
R(123; 22) = 0
V (1231231; 31) = 231

Lema 6.2.1 As fun»c~ o es ¹; R e V s~a o recursivas primitivas.


Demonstra»c~ a o: Vimos no cap¶³tulo 3 que compr, inicia, prims e sef in
s~
a o fun»c~
o es recursivas primitivas, portanto pelo teorema 4.3.1, existem
programas em LP M ¡ fGOT Og que as computam. Utilizando os pro-
gramas LP M ¡ fGOTOg, P compr, P inicia , P prims e Psef in, de¯nimos os
programas:
8 8
>
> ENT RADA X1; X2; >
> ENT RADA X 1; X2;
>
> >
>
>
> SAIDA Y1 ; >
> SAIDA Y1 ;
>
> >
>
>
> Z1 Ã X2; >
> Z1 Ã X2;
>
> >
>
>
> Z2 Ã X1; >
> Z2 Ã X1;
>
> >
>
>
> Z3 Ã compr(Z2 ); >
> Z3 Ã compr(Z2);
>
> >
>
>
> Z4 Ã 0; >
> Z4 Ã 0;
>
> >
>
>
> Z4 Ã Z4 + 1; >
> Z7 Ã compr(Z1);
>
> >
>
>
> Y1 Ã 0; >
> Z4 Ã Z4 + 1;
>
> >
>
>
> LOOP Z3 ; >
> Y1 Ã 0;
>
> >
>
< LOOP Z4 ; < LOOP Z3 ;
PR Z5 Ã inicia(Z1 ; Z2 ); PV LOOP Z4 ;
>
> >
>
>
> Z 6 Ã Z 2; >
> Z5 Ã inicia(Z1 ; Z2 );
>
> >
>
>
> Z2 Ã corte(Z6); >
> Z 6 Ã Z 2;
>
> >
>
>
> Z7 Ã prims(Z6 ); >
> Z2 Ã corte(Z6);
>
> >
>
>
> END; >
> END;
>
> >
>
>
> Z4 Ã sg(Z
¹ 5 ); >
> Z4 Ã sg(Z
¹ 5);
>
> >
>
>
> Z8 Ã Y1 ; >
> Z8 Ã sg(Z5);
>
> >
>
>
> LOOP Z4 ; >
> LOOP Z8;
>
> >
>
>
> Y1 Ã_ (Z8 ; Z7 ); >
> Y1 Ã sef in(Z6 ; Z7);
>
> >
>
>
> END; >
> END;
: :
END; END;
6.2. Formaliza»
c~ao da sem^antica dos AMR's 137

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

Para demonstrar que a fun»c~ao C ¶e recursiva primitiva, precisamos


demonstrar que cmdo, esq , dir, rseg, procom e subst s~ao recursivas
primitivas. Utilizamos a fun»c~ao auxiliar parte(w; x; k) que retorna o
peda»co da cadeia w que ocorre entre a k-¶esima e a k+1-¶esima ocorr^encias
disjuntas de x. Esta fun»c~ao servir¶a para fazer uma esp¶ecie de parsing
do AMR.

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

Lema 6.2.2 A fun»c~ a o parte ¶


e recursiva primitiva.
Demonstra»c~
a o: O leitor pode veri¯car que:
à !
2
parte = R ± ((V £ ¶) ± )#
1 2 2
2

Lema 6.2.3 As fun»c~ o es cmdo, esq, dir, rseg, subst e procom s~


ao re-
cursivas primitivas.
Demonstra»c~ a o: Procedemos exibindo os programas em termos das fun-
»c~
oes que j¶ a demonstramos serem recursivas primitivas (lemas 6.2.1,
6.2.2 e fun»c~
o es do cap¶³tulo 3). Assim:

cmdo = parte ± (¶£; £compr)


esq = R ± ((V ± (¶£ :))£ !)
dir = R ± ((V ± (¶£ !)) £ =)
rseg = V ± (¶ £ =) Ã !
3
subst = (_ ±(_ ±(R £ ¶) £ V )) ±
1 2 3 1 2
à !
3
procom = caso(f; g1 ;g 2) ± ; onde
1 3 2 1 2 3

f = ¹ ±((esq ± cmdo) £ Ã
¶) !
3
g1 = (_ ±(¶ £ (s ± z ))) ±
3
à !
3
g2 = rseg ± cmdo ±
1 3
2

Lema 6.2.4 A fun»c~ ao C ¶e recursiva primitiva.


Demonstra»c~ a o: Exibimos o programa LB para C , em termos das fun»c~
o es
que j¶
a demonstramos serem recursivas primitivas (lema 6.2.3 e fun»c~ o es
do cap¶³tulo 3) e a partir da de¯ni»c~
ao 6.2.1 de C. Assim:

C = (¶ £ (subst ± (¶ £ esq ± cmdo £ dir ± cmdo)) £ procom £ testerot)


à !
4
±
1 2 1 3 1 3 1 2 3 1 2 3
6.2. Formaliza»
c~ao da sem^antica dos AMR's 139

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

Lema 6.2.5 Toda fun»c~ ao f : ©¤ ! ©¤ computada por um AMR A ¶ e


uma fun»c~
ao recursiva parcial.
ao: E¶ uma conseqÄ
Demonstra»c~ u^
encia do lema 6.2.4 e do fato que
à !
3
jAj(w ) = ± Cr ± (¶ £ ¶ £ z £ z )(A; w)
2
2

Para generalizar o resultado 6.2.5 para fun»c~oes de qualquer aridade,


f : Wr ! Ws , onde W = §¤ precisamos preparar entradas e sa¶³das
atrav¶ o es ®r : §¤r ! (§ [ f$g)¤ e ws : (§ [ f$g)¤ ! (§¤) s, j¶a
es das fun»c~
de¯nidas. A partir da¶³, temos o teorema ¯nal desta se»c~a o, que completa
o ciclo de evid^
encias para a tese de Church.

Teorema 6.2.1 Uma fun»c~ ao f : Wr ! Ws ¶e parcialmente recursiva se


e somente se existe um AMR A tal que:
à !
3
(I ) f (xr ) = !s ± ± C r ± (¶ £ ®r £ z £ z )(A; xr )
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

Assim completamos nossas evid^encias para a Tese de Church, como


mostra a ¯gura 6.2.
140 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

' $ ' $

TM ¾ MU R

¡& % & I@ %
¡ @
' $
¡ @ ' $
¡ª @
' $ ' $
AMR MI R

& @I %
¾ -
µ¡& %
LB¡ LP ¡
frg
& % & % ¡
fGOT Og
@
@ ' " $ ' " $¡
@R ¡
LB - LP M

& % & %

Figura 6.2: Evid^encias para a Tese de Church

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

Por exemplo: oc(ac; macaco) = 2.

Lema 6.3.1 oc : §¤ £ §¤ ! §¤ ¶e uma fun»c~ a o recursiva primitiva.


Demonstra»c~
ao: Considere a seguinte fun»c~
ao:
(
< z + 1; V (w; x); x > se x ¹ w
f(z; w; x) =
< z; 0; x > se x 6
¹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:

f(0; 122121221; 12) =< 1; 2121221; 12 >


f(f (0;122121221;12)) = f (1; 2121221;12) =< 2; 1221; 12 >
f(f (f (0; 122121221; 12))) = f (2; 1221; 12) =< 3; 21; 12 >
f(f (f (f(0; 122121221; 12)))) = f (3; 21; 12) =< 3; 0; 12 >
f(f (f (f(f(0; 122121221; 12))))) = f (3; 0; 12) =< 3; 0; 12 >

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

Lema 6.3.2 A fun»c ~ ao caracter¶³stica do conjunto S µ ª¤ de AMR's, de-


¯nido por S = fl : x ! y=l0 jl; l 0 2 §1¤ ; x; y 2 ©¤ g, ¶
e recursiva primitiva.
Demonstra»c~
a o: Utilizando as fun»c~ o es R; V , da se»c~a o 6.2.2, e a fun»c~
ao
oc, de¯nida acima, temos que
ÂS (w) = §1 ¤ (R(w; :)) ^ §1 ¤ (V (w; =))^
©¤ (R(V (w; :); !)) ^ © ¤(R(V (w; !); =))^
igual(oc(w; :); 1) ^ igual(oc(w; ; ); 1) ^
igual(oc(w; !); 1) ^ igual(oc(w; =); 1)

Como, pelo lema 3.7.2, §1 ¤ e ©¤ s~


ao recursivas primitivas e, pelo lema
e recursiva primitiva, temos que ÂS ¶
6.3.1, oc ¶ e recursiva primitiva. 2

Lema 6.3.3 Seja A _ a = fw _ ajw 2 Ag e seja A+ = A¤ ¡ f¤g.


Se § ¶ e um alfabeto, a 6 2 § e a fun»c~ ao caracter¶³stica de A µ §¤ ¶e
+ +
recursiva primitiva, ent~
ao a fun»c~
ao caracter¶³stica de (A _ a) = (Aa)
e recursiva primitiva.

Demonstra»c~a o: Deixamos para o leitor. 2

Corol¶ ario 6.3.1 Seja A0 = (§1 ¤ : ©1¤ ! ©1 ¤=§1¤ ; )+ . A fun»c~


a o carac-
ter¶³stica de A0 ¶e recursiva primitiva.
Demonstra»c~ a o: Temos que A0 = (S _; )+ . 2

O corol¶ a rio 6.3.1 mostra apenas que a fun»c~a o caracter¶³stica do con-


junto de concatena»c~ oes de comandos de AMR ¶e recursiva primitiva. No
entanto, uma destas seqÄ u^
encias ¶e um AMR, apenas quando os r¶o tulos
de seus comandos s~ a o ordenados, iniciando por 0. Assim, a fun»c~a o ca-
racter¶³stica de programas em AMR ¶e:

(IH ) ÂA = Â 0 ^ H
A

onde H ¶e de¯nida por


(
1 se o r¶
o tulo do i¡¶esimo comando de w ¶e i
H(w) =
0 caso contr¶a rio

Lema 6.3.4 A fun»c~ ao H ¶ e recursiva primitiva.


Demonstra»c~
a o: Seja f a fun»c~
a o de¯nida por

f (x; y; z) =< x + igual(R(y; :); z); V (y; ;); z + 1) >


6.3. Enumera»
c~
ao efetiva dos AMR's 143

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

e portanto f(0; y;0) =< 0 + igual(0;0); y 0 ;1 >=< 1; y 0; 1 >. Temos que


f i(0; y; 0) =< i; y (i) ; i >, onde y(i) = i : xi ! yi=li; ¢ ¢ ¢ ; k : xk ! yk =lk ;,
desde que, at¶ e o comando i, a condi»c~ ao convencionada a respeito dos

otulos de comando seja satisfeita. Mas se y n~ ao satisfaz µ a condi»c~
a o ao
¯nal da reaplica»c~ ao da f temos

f k+1 (0; y; 0) =< j; y (i); k + 1 >; onde j < k + 1

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

umero de comandos. Assim H ¶ e recursiva primitiva. 2

Teorema 6.3.1 O conjunto A de AMR's ¶ e recursivo primitivo.


ao: E¶ imediata a partir do lema 6.3.4 e a igualdade (IH ). 2
Demonstra»c~

A seguir de¯nimos a fun»c~ao EA que enumera os AMR's. Vimos que


um AMR ¶e uma cadeia de s¶³mbolos do alfabeto ª de¯nido como

ª = § [ fa; bg [ f:;!; =;; g

onde § ¶e o conjunto de entrada. Com dissemos no in¶³cio desta se»c~a o, o


que se pretende ¶
e que o conjunto de fun»c~o es parcialmente recursivas seja
uma fam¶³lia indexada por n¶ umeros naturais representados no mesmo
alfabeto § de entrada. Assim, a fun»c~ao a ser constru¶³da gera o i¡¶esimo
AMR. Na realidade podemos ¯xar o alfabeto ª = § [ fa; bg [ f:; !; ; g
como um certo §m , onde m ¶e o n¶umero total de s¶³mbolos em ª. Neste
momento, convidamos o leitor a rever a se»c~a o 3.7, onde de¯nimos a
144 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

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~

De¯ni» ao 6.3.1 Sejam § = §n e ª = § [ fa;bg [ f:; !; ; g = §m


c~
alfabetos, tais que a; b 6 a o EA : ª ¤ ! ª¤ , do
2 §. De¯nimos a fun»c~
seguinte modo
(
¹ n;m(i)
· se i 2 §¤ e ¹·n;m(i) 2 A
EA(i) =
0 : 0 ! 0=0; em caso contr¶ a rio

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;.

Teorema 6.3.2 EA ¶ e uma fun»c~


ao recursiva primitiva.
Demonstra»c~ ¶
a o: E uma conseqÄ u^
encia do fato que ·n ;m ¶
e uma fun»c~
ao
recursiva primitiva. Veja lema 3.7.1 no cap¶³tulo 3. 2

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

De¯ni» ao 6.3.2 Sejam r; s; i 2 N . De¯nimos a i¡¶


c~ esima fun»c~
ao com-
putada por um AMR por:
r' : W r ! Ws
s i
r' = ws ± jEA(i)j ± ®r
s i
2

Quando consideramos apenas fun»c~oes de W1 em W1 temos a enu-


mera»c~ o es computadas pelos AMR's EA(0); EA (1); ¢ ¢ ¢ ; EA (i)
a o das fun»c~
que denotamos por

' AMR 0 ; 'A MR 1 ; ¢ ¢ ¢ ;' AMR i


6.3. Enumera»
c~
ao efetiva dos AMR's 145

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

6.3.1 Composi»c~ao de AMR's


A seguir, mostramos que existe uma fun»c~a o recursiva primitiva que
em, a partir de dois AMR's, o AMR composi»c~ao. comp : ª¤ ! ª¤ ¶e
obt¶
de¯nida tal que, para quaisquer dois AMR's A1 e A2
jcomp(A1 ; A2 )j(w) = jA2 j ± jA1 j(w)
A fun»c~
a o comp ¶
e obtida atrav¶es da composi»c~ao de transforma»c~oes
dos AMR's A1 e A2 . E ¶ f¶acil ver que devemos modi¯car os r¶otulos de
AMR A1, de modo que os r¶otulos de transfer^encia que n~ao ocorrem como
o tulos de comando de A1 passem a ser iguais ao n¶umero de comandos

de A1 (lembrar que o r¶otulo inicial ¶e 0). Os r¶o tulos do AMR A2 devem
ser todos modi¯cados por adi»c~a o de um valor igual a esse mesmo n¶umero
de comandos. A composi»c~ao dos AMR's A1 e A2 ¶e o AMR obtido pela
concatena»c~a o das cadeias modi¯cadas. Se Á 1 e Á 2 s~a o as fun»c~oes que
modi¯cam A1 e A2 respectivamente ent~ao
comp(A1 ; A2 ) = Á1 (A1 ) _ Á(A2 )
e portanto
comp =_ ±(Á 1 £ Á2 )
Assim, para mostrar que a fun»c~a o comp ¶e recursiva primitiva, basta
mostrar que as fun»c~oes Á1 e Á2 s~a o recursivas primitivas. Pela discuss~ao
anterior, vemos que o n¶ umero de comandos de A1 ¶e fundamental para
a constru»c~
a o das fun»c~
o es Á 1 e Á 2. A fun»c~a o ncom que aplicada a um
AMR nos forne»ca o seu n¶ umero de comandos, ¶e ncom(A) = oc(A; ; ).

Teorema 6.3.3 A fun»c~ a o comp ¶ e recursiva primitiva.


Demonstra»c~ao: A demonstra»c~a o de que Á1 e Á2 s~
a o fun»c~
o es recursivas
primitivas ¯ca como exerc¶³cio para o leitor. 2
146 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

A exist^encia de uma fun»c~ao recursiva primitiva que realiza a com-


posi»c~
ao de fun»c~
o es ¶
e um resultado fundamental da teoria da computa»c~ao.
At¶e a demonstra»c~ a o deste resultado, sab¶³amos apenas intuitivamente
que n¶o s, enquanto agentes inteligentes, ser¶³amos capazes de realizar tal
tarefa. Agora sabemos que existe um programa, por exemplo escrito
em LP¡GOTO, que realiza as opera»c~oes necess¶a rias para obter, a par-
tir dos programas que computam fun»c~oes, o programa que computa sua
composi»c~ a o.
A partir da composi»c~ a o, demonstramos que toda fun»c~a o parcial re-
cursiva possui um n¶ umero in¯nito de ¶³ndices. Intuitivamente, sabemos
que um programa pode ser escrito de muitas maneiras diferentes, e
mesmo assim computar a mesma fun»c~ao. Como o ¶³ndice i de uma fun»c~a o
'i ¶
e dado pela enumera»c~ ao do AMR EA (i) que a computa, para garantir
a in¯nidade de ¶³ndices basta tomar EA(i) e adicionar comandos in¶ocuos.

Teorema 6.3.4 Existe uma fun»c~ a o recursiva primitiva e injetiva en,


tal que para todo x;y 2 W, 'en(x;y) = 'x.
Demonstra»c~a o: A id¶eia intuitiva ¶e a de concatenar y comandos in¶ o cuos
ao programa em AMR de ¶³ndice x. Assim se EA(x) ¶e o AM R

0 : x0 ! y0 =l0 ;
1 : x1 ! y1 =l1 ;
.. ..
. .
k : xk ! y k =l k ;

o AMR EA (en(x; y)) ¶


e o AM R
8
>
> 0: 0 ! 0=1;
>
>
>
> 1: 0 ! 0=2;
>
>
>
> .. ..
>
> . .
>
>
<
y: 0 ! 0=y + 1;
EA(x)
>
> y+1 : x0 ! y0 =l0 ;
>
>
>
> y+2 : x1 ! y1 =l1 ;
>
>
>
> .. ..
>
> . .
>
>
:
y + k + 1 : xk ! y k =l k ;
6.3. Enumera»
c~
ao efetiva dos AMR's 147

Seja m 0 o ¶³ndice do programa


8
>
> 0: 0 ! 0=1;
>
>
< 1: 0 ! 0=2;
EA(m 0 ) .. ..
>
> . .
>
>
:
y : 0 ! 0=y + 1;
Ent~a o o programa constru¶³do por concatena»c~ ao ¶
e a composi»c~
a o dos pro-
gramas de ¶³ndices m 0 e x, portanto basta tomar en(x; y) = comp(m 0 ; x),
pois ent~ao
'en(x;y) = 'comp(m 0 ;x) = 'x
Notando que m 0 = ·¡1 (0 : 0 ! =1; ¢ ¢ ¢ y : 0 ! =y + 1;), por constru»c~
ao
en ¶e uma fun»c~
a o injetiva. 2
Corol¶
a rio 6.3.4 Toda fun»c~a o parcial recursiva f : W r ! Ws possui
uma in¯nidade de ¶³ndices (progamas em AMR) tais que f = 'i .
ao: E¶ uma conseqÄ
Demonstra»c~ u^
encia direta do teorema 6.3.4 2

6.3.2 Fun»c~ao Universal em AMR


Vimos anteriormente que, dados os alfabetos §; ª e m 2 §¤, a fun»c~ao EA
aplicada a m gera o AMR EA(m), e dados r; s; m 2 §¤ temos a fun»c~ao
r' = ws ± jEA(m)j ± ®r
s m
Se considerarmos apenas o caso em que r;s = 1 temos o seguinte resul-
tado.
Teorema 6.3.5 Sejam os alfabetos § e ª. Ent~ a o existe uma fun»c~
ao
U : §¤2 ! §¤ tal que para todo m 2 §¤ e todo x 2 §¤
U (m; x) = 'm (x)
à !
3
ao: Seja U =
Demonstra»c~ ± C r(EA £ ¶ £ h £ h). Ent~
ao
2
à !
3
U (m;x) = ± C r(EA £ ¶ £ h £ h)(m; x) =
2
à !
3
= ± C r(EA(m); x;0; 0) =
2
= jEA j(x) = 'm (x)
2
148 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

A fun»c~ao U ¶e chamada de fun» ao universal. Tendo em vista que U


c~
e¶ uma fun»c~ ao parcialmente recursiva, existe um programa PU em AMR
que computa tal fun»c~ a o. Pelo estudo que realizamos sobre a equival^encia
entre os diversos modelos de computa»c~ao, podemos ver que esta fun»c~a o
pode ser representada como um programa em LP, em MIR, em MUR ou
TM e portanto podemos imaginar uma realiza»c~a o f¶³sica da mesma que
chamamos de M¶ aquina universal.
Na realidade, se aceitarmos a tese de Church, esta m¶aquina universal
¶e capaz de computar qualquer fun»c~a o f : §¤ ! §¤, desde que f seja
comput¶ avel. A entrada m ¶ e ¶³ndice de um programa que, atrav¶es da
a o EA , ¶
fun»c~ e transformado no programa que recebe como entrada x e
fornece o valor de sa¶³da jEA (m)j(x).

m -
Programa
para - jEA(m)j(x)
x
- U

Figura 6.3: M¶a quina universal

6.3.3 O predicado T de Kleene


De¯nimos o predicado T (m; x;k) que diz que o AMR EA(m) p¶ara em
exatamente k comandos executados quando a entrada ¶e x.

De¯ni» ao 6.3.3 Dados os alfabetos © = §[f$; a; bg e r 2 N de¯nimos


c~
ao TrAMR chamado de predicado T ou fun»c~
a fun»c~ ao T de Kleene, por
8
>
> 1 se o AMR EA(m) p¶ ara com entrada
>
<
® (x ) exatamente ap¶
o s a execu»c~
ao de
T rAMR (m; xr ; k) = r r
>
> k comandos
>
:
0 em caso contr¶ario
2

Teorema 6.3.6 Para cada r T rAMR ¶e uma fun»c~


ao recursiva primitiva.
a o: TrAMR ¶
Demonstra»c~ e a fun»c~
ao
à !
4
TrAMR (m;x r; k) = ± C # (EA(m); ®r(x r); 0; k)^
4
6.4. Conclus~
oes e Refer^
encias 149

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;

2. Construa AMR's que computem as seguintes fun»c~oes:


inic : §¤ !
(
§¤
(a) x 0 se x = x0 ¾; ¾ 2 §
inic(x) =
0 se x = 0
150 Cap¶³tulo 6. Algoritmos de Markov com R¶
otulos

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

3. Dentro do esquema de enumera»c~ao dos AMR's apresentado, mostre


como pode ser obtido o ¶³ndice da fun»c~a o 'i ± 'j .
Cap¶³tulo 7

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.

1. Conjunto de instru»c~oes de tamanho ¯nito: um algoritmo deve ser


descrito em uma linguagem de maneira ¯nit¶a ria. A partir de um
alfabeto enumer¶
avel, um algoritmo deve ser uma cadeia ¯nita sobre
este alfabeto.

2. Dom¶³nio do algoritmo: s~a o os dados, conjuntos de objetos opera-


dos por um algoritmo, por exemplo cadeias de s¶³mbolos, n¶ umeros

151
152 Cap¶³tulo 7. Algoritmos e suas Propriedades

naturais, etc.

3. Agente computador: a computa»c~ ao da descri»c~a o resulta em uma


seqÄ
u^encia bem de¯nida de opera»c~oes ou passos, que dependem
de um agente associado ao algoritmo. Este agente deve ser de-
termin¶³stico, ou seja, reage µa s instru»c~o es do algoritmo sempre da
mesma maneira. Para cada entrada, o algoritmo deve sempre ter o
mesmo comportamento toda vez que aplicado: se p¶a ra, ter¶a sem-
pre a mesma sa¶³da; se n~a o p¶ara, sempre diverge.

4. Facilidades para executar, guardar e recuperar passos: a no»c~ao de


mem¶ o ria surge como recurso do agente. O limite para o tamanho
da mem¶ o ria, e conseqÄ
uentemente para o tamanho das entradas e do
algoritmo em si, ¶ e uma quest~ao a ser considerada para cada agente
computador. Entretanto, j¶a que este limite pode ser ampliado
inde¯nidamente, desconsideramos sua exist^encia.

5. Capacidade do agente: com um conjunto limitado de abilidades o


agente deve ser capaz de computar qualquer algoritmo.

6. O ¯nal da computa»c~ ao: uma vez cumpridas as instru»c~o es, o agente



a ra com os resultados devidos, a partir de argumentos de entrada
do dom¶³nio. Isto n~a o signi¯ca que o algoritmo tenha que ter ¯m
para qualquer entrada. No caso da divis~ao, pode-se continuar in-
de¯nidamente caso o dividendo n~ao seja divis¶³vel pelo divisor.

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

7.2 Fam¶³lias Abstratas de Algoritmos


Usualmente, algoritmos s~a o classi¯cados de acordo com seus dom¶³nios,
linguagens e agentes. Nos cap¶³tulos 3, 4, 5 e 6 estudamos as classes de al-
goritmos LB; LPM; M IR; M UR; T M e AM R e vimos que as classes das
fun»c~
oes (parcialmente) comput¶a veis por estas classes s~ao coincidentes,
apesar de possu¶³rem dom¶³nios, linguagens e agentes bastante distintos.
Naturalmente, existem propriedades comuns a estes formalismos que
causam esta coincid^ encia.
Vimos tamb¶ em que que todas as fun»c~o es parcialmente recursivas
s~ao computadas em cada uma destas classe. Portanto, pela tese de
Church, para cada fun»c~ao comput¶a vel h¶a um algoritmo que a computa
dentro de cada uma destas classes. As propriedades que determinam esta
caracter¶³stica de uma classe de algoritmos s~a o analisadas nesta se»c~ao.
Por quest~ o es de economia e clareza, ao inv¶es dos formalismos j¶a a-
presentados, utilizamos uma linguagem pseudo-Pascal para descrever os
algoritmos que desenvolvemos daqui por diante. A de¯ni»c~a o da sintaxe
desta linguagem encontra-se no Ap^endice A.

¶Indice Chamamos de fam¶³lia de algoritmos a um conjunto enumer¶avel


em que cada algoritmo est¶a associado a um n¶umero natural, o ¶³ndice ou

umero de GÄ odel, e a uma fun»c~a o parcial de aridade n.
Seja a fam¶³lia de algoritmos descritos em uma linguagem L com
alfabeto ¯nito §. E ¶ importante que se possa, dado um algoritmo desta
fam¶³lia, obter seu ¶³ndice e, dado um n¶umero natural, obter o algoritmo
com este ¶³ndice. N~ ao ¶e necess¶ario que cada algoritmo possua apenas
um ¶³ndice, mas todo n¶ u mero natural ¶e ¶³ndice de alguma algoritmo. O
esquema de enumera»c~ ao mais intuitivo, neste caso, ¶e:

1. ordenam-se todas as cadeias de §¤ por tamanho e, dentro do


mesmo tamanho, alfabeticamente (ordem lexicogr¶a ¯ca);

esima cadeia ¾ assim obtida, veri¯ca-se se ¾ pertence a L;


2. para a i-¶

3. em caso positivo, i ¶e ¶³ndice do algoritmo ¾;

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

Para um alfabeto in¯nito enumer¶a vel o esquema de enumera»c~a o teria


de ser mais so¯sticado, como por exemplo a enumera»c~ao de GÄodel,
baseada em n¶ umeros primos. No caso de linguagens de programa»c~ao, a
restri»c~ ao do alfabeto ¯nito sempre se aplica.
Logo, dizemos que Pi ¶ e o algoritmo de ¶³ndice i que computa a fun»c~a o
(n) ¶ intuitivo que uma
'i . Omitimos a aridade n quando irrelevante. E
fun»c~ a o possua ¶³ndices distintos, j¶a que podemos imaginar algoritmos
distintos computando a mesma fun»c~a o.
O conceito de fam¶³lia abstrata de algoritmos apresentado ¶e amplo
demais. A associa»c~ a o de cada algoritmo a uma fun»c~a o parcial ¶e por de-
mais permissiva. Por exemplo, podemos ter um conjunto enumer¶a vel de
algoritmos, todos associados µ a mesma fun»c~ao constante sendo, portanto,
computacionalmente muito pobre. Obviamente, n~ao estamos interessa-
dos em fam¶³lias t~ a o triviais. No entanto, a enumerabilidade do conceito
j¶a implica um resultado restritivo muito importante: a exist^encia de
fun»c~ o es totais n~
ao algor¶³tmicas.

Teorema 7.2.1 Qualquer que seja a fam¶³lia de algoritmos ©, existem


fun»c~o es totais n~ao algor¶³tmicas em ©. Em outras palavras, nenhuma
fam¶³lia de algoritmos cont¶ em todas as fun»c~
oes totais.
Demonstra»c~ a o: A prova deste teorema ¶e por diagonaliza»c~
ao, uma t¶e cnica
que consiste em especi¯car uma fun»c~ ao que n~ao pode ser algor¶³tmica por
n~a o poder possuir um ¶³ndice. Seja a seguinte fun»c~ a o total:
(
'x(x) + 1 se 'x(x) #
g(x) =
0 se 'x(x) "

Supondo que o ¶³ndice de g ¶


e i ent~
a o, como g ¶
e total, g(i) = 'i(i) =
'i(i) + 1 - contradi»c~
a o. 2

7.2.1 Fam¶³lias Padr~


ao de Algoritmos
Chamamos de Fam¶³lias Padr~ ao de Algoritmos µas fam¶³lias abstratas que
possuam 5 propriedades b¶ a sicas que de¯nimos a seguir. Esta caracte-
riza»c~
ao ¶
e ilustrada por elementos fundamentais das linguagens de pro-
grama»c~a o. A primeira propriedade diz respeito ao conjunto m¶³nimo de
comandos que uma linguagem de programa»c~ao deve oferecer.
7.2. Fam¶³lias Abstratas de Algoritmos 155

Propriedade 1 A fam¶³lia cont¶em algoritmos que computam as fun-


»c~
o es iniciais.

Sucessor: suc : N ! N , suc(x) = x + 1

Constantes: para cada n ¸ 0 e cada i 2 N , cni : N n ! N , cni (xn ) = i

Proje»
c~oes: para cada n ¸ 0 e cada 0 · i · n, pr ni : N n ! N ,
prni (xn ) = xi

Vemos que as fun»c~ o es iniciais ¶ e ¼ do cap¶³tulo 3 s~a o casos particulares


de proje»c~ o es: pr11 e pr10 , respectivamente. A fun»c~ao z ¶e a constante c00.
A segunda propriedade diz respeito µa capacidade de uma linguagem
de programa»c~ a o de implementar chamadas a subrotinas. Esta carac-
ter¶³stica ¶e dada por algoritmos que computam a composi»c~ao de outros
algoritmos. As fam¶³lias padr~ao cont¶em algoritmos que computam uni-
formemente o ¶³ndice da fun»c~ao composi»c~ao, como mostra o teorema
7.2.4. A propriedade 2 apenas introduz aquele resultado mais forte.

Propriedade 2 A fam¶³lia de algoritmos ¶e fechada por composi»c~ao, ou


(n) (n)
seja, se os algoritmos que computam h(m) , g1 , ¢ ¢ ¢, gm pertencem µa
fam¶³lia ent~a o o algoritmo que computa h±(g1 ;¢ ¢ ¢ ; gm ) pertence µa fam¶³lia.
Com as fun»c~ o es iniciais e composi»c~a o j¶a vimos que os n¶umeros na-
turais podem ser obtidos, pois n nada mais ¶e do que a fun»c~ao constante
suc ± ¢¢ ¢ ± suc ±cn0 .
| {z }
n v ez es
A terceira propriedade diz respeito µa exist^encia de um algoritmo
que compute todos os outros algoritmos, ou seja, computa a fun»c~ ao
universal. A exist^
encia de tal algoritmo coincide com a caracter¶³stica de
uma linguagem de programa»c~ao de implementar interpretadores para
a pr¶
opria linguagem. Tamb¶em chamada Propriedade da Enumera»c~ a o,
esta propriedade depende do esquema de indexa»c~ao da fam¶³lia, pois o
algoritmo da fun»c~a o universal, dado o ¶³ndice de um algoritmo e suas
entradas, ir¶
a constru¶³-lo e execut¶a-lo com as entradas dadas.

Propriedade 3 A fam¶³lia cont¶em, para todo natural n, o algoritmo


ao universal U (n +1) , tal que
que computa a fun»c~
(n )
U (n+1)(i;x n) = 'i (xn )
156 Cap¶³tulo 7. Algoritmos e suas Propriedades

Apesar de dependente do esquema de indexa»c~ao, a Propriedade da


Enumera»c~ao se aplica quando existe um algoritmo que leva de um es-
quema de indexa»c~ a o a outro (ver exerc¶³cio 6).
As fam¶³lias que obedecem µa s propriedades 1, 2 e 3 devem incluir
algoritmos parciais, como mostra o pr¶o ximo teorema. A exist^encia de
um algoritmo parcial ¶ ea¶unica conclus~ao poss¶³vel pelo o argumento da
diagonaliza»c~
a o.

Teorema 7.2.2 Se © ¶ e uma fam¶³lia abstrata com as propriedades 1, 2


e 3 ent~a o alguns membros de © computam fun»c~ oes parciais.
Demonstra»c~ a o: Pelas propriedade 1 e 3, pr11 (proje»c~
a o), suc (sucessor)
eU (2) (universal) s~ao algor¶³tmicas em ©. Pela propriedade 2,

f = suc ± (U (2) ± (pr 11; pr11 ))

e algor¶³tmica em ©. Supondo que f = 'w (¶³ndice de f ¶


¶ e w), temos que:

'w (w) = f (w) = suc((U (2) (pr11 (w); pr11 (w)))


= suc(U (2) (w; w))
= 'x(w) + 1

Logo ' w(w) = 'w(w) + 1 - contradi»c~


ao - portanto 'w n~
a o pode estar
de¯nida em w, logo n~
ao ¶
e total. 2

Como corol¶ a rio, tem-se que © inclui o algoritmo que computa a


fun»c~
a o vazia h (inde¯nida em todos os pontos). Basta pegar uma fun»c~a o
f inde¯nida em a e fazer h(xn ) = f (a).
A quarta propriedade diz respeito aos comandos do tipo caso das
linguagens de programa»c~ a o: if-then-else, case, switch, etc. Este coman-
dos s~a o capazes de escolher o pr¶oximo passo da computa»c~ao baseados
em condi»c~ oes sobre os valores dos argumentos.

Propriedade 4 A fam¶³lia de algoritmos cont¶em o algoritmo que com-


puta a fun»c~
ao de sele»c~
ao:
(
s se x = y
caso(x; y; s; t) =
t se x 6
=y
7.2. Fam¶³lias Abstratas de Algoritmos 157

A propriedade 4 em conjunto com a 1 e a 2 implica a exist^encia de


algoritmos para outras fun»c~o es de sele»c~ao muito ¶uteis, tais como:
(
0 se x = 0
f (x) =
1 se x 6
=0

que corresponde a caso ± (pr11 ; c10 ; c10 ;c11 ). Ou ainda:


(
0 se f (x) = 0
f 0(x) =
" se f (x) 6
=0

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 )

f 0 (x) = U (2) (caso(f (x);0; i;j ); x)


O pr¶oximo teorema ¶e de import^ancia fundamental para computa»c~a o,
pois diz respeito µa possibilidade de determinar a priori se um algoritmo
ir¶
a convergir para um dado conjunto de entradas. A n~a o exist^encia de
um algoritmo para a chamada fun»c~ ao dom¶³nio ¶e um resultado restritivo
com implica»c~o es pr¶
aticas muito amplas tais como a impossibilidade da
constru»c~
a o de um veri¯cador (debugger) geral de programas.
Teorema 7.2.3 Se © ¶ e uma fam¶³lia abstrata de algoritmos que satisfaz
a s propriedades 1 a 4 ent~
µ ao © n~a o cont¶em algoritmo que compute a
fun»c~
ao dom¶³nio:
( (n)
(n +1) 1 se 'i (xn ) #
D (i; xn ) = (n)
0 se 'i (xn ) "
158 Cap¶³tulo 7. Algoritmos e suas Propriedades

Demonstra»c~a o: A prova ser¶


a feita para n = 1, por diagonaliza»c~
a o. Para
o caso geral, basta construir os algoritmos de codi¯ca»c~a o de entradas,
baseados, por exemplo, nas fun»c~o es ¯ de GÄ
odel. Seja, para todo i e x
(
1 se 'i(x) #
D(i; x) =
0 se 'i(x) "

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) #

^ ) = ' w(w) diverge se e somente se converge - contradi»c~


Logo D(w a o.
Conclu¶³mos que D n~
a o pode ser algor¶³tmica em ©. 2
A quinta propriedade refere-se µa constru»c~ao de programas que cons-
troem e transformam outros programas. Esta caracter¶³stica das lingua-
gens de programa»c~
ao ¶
e utilizada principalmente em compiladores. Seja
um programa pseudo-Pascal a 2 vari¶a veis:
P(x; y)
begin
return x + y
end
Este programa pode ser algoritmicamente transformado e outros pro-
gramas pela ¯xa»c~
ao do valor de y:
P 0 (x) P 00 (x) P n0 (x)
begin begin begin
¢¢¢
return x + 0 return x + 1 return x + n
end end end
7.2. Fam¶³lias Abstratas de Algoritmos 159

basta que o algoritmo de transforma»c~ao proceda da esquerda para a


direita, substituindo as ocorr^encias de y pelo valor dado para y. N~ao
e dif¶³cil imaginar, para este exemplo, um algoritmo que, dado o ¶³ndice

do algoritmo de P na fam¶³lia e o valor para y, calcula os ¶³ndices dos
algoritmos P n 0. A propriedade 5 diz respeito µa exist^encia, dentro de
uma fam¶³lia ©, de tais algoritmos, generalizando para qualquer n¶umero
de entradas.

Propriedade 5 Para cada m e n, a fam¶³lia de algoritmos cont¶em um


algoritmo que computa a fun»c~ao total s n;m , tal que:
(n+m) (n)
'i (x1 ; ¢ ¢ ¢ ;x m ;y 1; ¢ ¢ ¢ ; yn ) = 'sn;m (i;x1 ;¢¢¢;xm) (y1 ; ¢¢ ¢ ; yn )

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.

Teorema 7.2.4 Seja © uma fam¶³lia algoritmos com as propriedades


1,2,3 e 5. Se 'x1 e 'x2 s~a o algor¶³tmicas em ©, ent~
a o existe uma fun»c~
ao
h total e algor¶³tmica em © tal que,

'h(x1 ;x2 ) = 'x1 ± ' x2

Demonstra»c~ao: Novamente demonstramos para n = 1. A generaliza»c~


ao
e deixada para o leitor. Seja

g(x1 ;x 2; y) = 'x1 (' x2 (y))


= U (2) (x1 ; U (2) (x2 ; y))

Logo g ¶e algor¶³tmica em ©. Seja w seu ¶³ndice. Pela propriedade s-m-n,


existe sn;m , algor¶³tmica em ©, tal que

' s1;1 (w;x1 ;x2 )(y) = g(x1 ; x2 ; y) = 'x1 ('x2 (y))

Seja h(x1; x 2) = s1;1 ± (c2w ; pr 21; pr22 )(x1 ; x2 ). Logo h ¶


e algor¶³tmica em ©.
2
160 Cap¶³tulo 7. Algoritmos e suas Propriedades

7.3 Teorema da Recurs~


ao

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

J¶a que o programa P ¶ e obtido uniformente para cada u, n~ao ¶e dif¶³cil


imaginar uma fun»c~ ao total que compute seu ¶³ndice em fun»c~a o de u. Seja
~g esta fun»c~
ao, logo:

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 ©.

Lema 7.3.1 Seja © uma fam¶³lia abstrata padr~ a o e n um inteiro posi-


tivo. Ent~
a o existe uma fun»c~
ao ~g total, algor¶³tmica em ©, tal que para
todo natural u:
(
'' u(u)(xn ) se 'u(u) #
(1) '~g(u) (x n) =
" se 'u(u) "

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

'w (u; x) = 's(w;u) (x)

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

Teorema 7.3.1 (Recurs~ ao) Seja © uma fam¶³lia abstrata de algorit-


mos, seja f uma fun»c~ ao total algor¶³tmica em © e n um inteiro positivo.
(n) (n)
Ent~
a o, existe um n¶ umero natural m, tal que 'm = 'f (m).
Demonstra»c~ a o: Seja g~ a fun»c~ ao f ± ~g ¶
a o do lema 7.3.1. Ent~ e algor¶³tmica
em ©, pelo teorema 7.2.4. Seja 'v = f ± g~ e seja m = g~(v). Ent~ ao,
(
' 'v(v) (x n) se ' v (v) #
'm (xn ) = '~g(v ) (xn ) =
" se ' v (v) "

Como 'v ¶e total (f e¶ total por hip¶


otese e g~ ¶ e total pelo lema anterior),
ent~
ao
'm = '~g(v ) = '' v(v ) = 'f (~g(v )) = 'f (m)
2

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:

'g(i) (x; y) = 'i(x; y + 1) + 1

Seja a um dos ¶³ndices da fun»c~a o pr21 . Ent~a o a fun»c~a o


(
x se x = y
f 0 (x; y) =
' g(i) (x; y) se x 6
=y

e¶ algor¶³tmica em © pois f 0 (x; y) = U (3)(caso(x; y; a; g(i)); x; y) e, por-


tanto, seja r(i) seu ¶³ndice (novamente, a fun»c~ao r pode ser obtida como
no lema 7.3.1)

'r(i) (x; y) = U (3) (caso(x; y; a; g(i)); x; y)


7.3. Teorema da Recurs~
ao 163

Ent~
ao pelo teorema da recurs~a o temos que para algum m

'r (m) (x; y) = 'm (x;y) = U (3) (caso(x; y; a;g(m)); x; y)

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

Este ¶e um exemplo de minimiza»c~ao. Podemos extrapolar e garantir


pelo teorema da recurs~ao que uma fam¶³lia abstrata de algoritmos com
propriedades 1 a 5 ¶
e fechada por recurs~ao primitiva e minimiza»c~a o.
Sejam g : N n ! N e h : N n+2 ! N , dizemos que f : N n+1 ! N ¶e
de¯nida por recurs~ao primitiva se os valores de f s~ao obtidos por

f (x1 ; ¢ ¢ ¢ ;x n; 0) = g(x1 ; ¢ ¢ ¢; x n)
f (x1 ; ¢ ¢ ¢ ;x n; y + 1) = h(x1 ; ¢¢ ¢ ; xn ; y; f (x1 ; ¢ ¢ ¢; xn ; y))

As de¯ni»c~oes de recurs~ao primitiva encontradas na literatura s~ao vari-


adas (ver exponencia»c~ ao no cap¶³tulo 3), no entanto a id¶eia da itera»c~ao
e sempre a mesma. Com as outras propriedades da fam¶³lia padr~ao ¶e

poss¶³vel demonstrar que, se a fam¶³lia ¶e fechada por um tipo de recurs~ao
primitiva, ent~a o tamb¶em ¶e fechada pelo outro tipo. A mesma observa»c~ao
tamb¶em ¶ e v¶
alida para a minimiza»c~ao mais adiante.
Por exemplo, utilizando a linguagem pseudo-Pascal, para computar
a fun»c~
a o mult(x; y) = x:y a partir de h(x; y;z) = x + z e de g(x) = 0,
temos:
mult(x; y)
begin
if y = 0 then return g(x)
else return h(x; y ¡ 1; mult(x; y ¡ 1))
end
ao f (x; y) = h(x; y ¡ 1; h(x; y ¡ 2; ¢ ¢ ¢ ; h(x; 0; g(x)) ¢ ¢ ¢)), ou seja,
Ent~
a computa»c~ao de f ¶e a computa»c~ao de h, y vezes, come»cando por
164 Cap¶³tulo 7. Algoritmos e suas Propriedades

< x;0; g(x) >. Equivalentemente:


mult0 (x;y)
begin
w = g(x)
z =0
while z < y do
w = h(x; z; w)
z =z+1
return w
end
a o pseudo-Pascal comput¶a veis ent~ao mult e mult0
Portanto, se g e h s~
tamb¶em s~
a o.
a o de algoritmos. Se g (n) e
Teorema 7.3.2 Seja © uma fam¶³lia padr~
h(n +2) s~
ao algor¶³tmicas em © ent~
ao
f (xn ; 0) = g(xn )
f (xn ; y + 1) = h(xn; y; f(xn; y))
e¶ algor¶³tmica em © (© ¶e fechada por recurs~ao primitiva).
Demonstra»c~ a o: Suponha a fun»c~
ao R tal que
(
w se z = y
R(xn ;y; z;w ) =
R(xn ; y; z + 1;h(xn ; z; w)) se z < y

Ent~a o f(x n; y) = R(xn ;y; 0; g(xn )). Demonstramos ent~ ao a exist^


encia
do algoritmo para R em ©. Seja ° a fun»c~ a o total algor¶³tmica em © tal
que
(
(n+3) w se z = y
'°(u) (xn ;y; z;w ) = (n+3)
'u (xn ;y; z + 1; h(xn ; z; w)) se z 6
=y
(n+3)
Logo, '°(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
(
w se z = y
'(n+3)
m (xn ;y; z;w ) = (n+3)
' m (xn ;y; z + 1; h(xn ; z; w)) se z 6
=y
(n +3)
Logo, 'm e a fun»c~
¶ ao R pretendida. 2
7.3. Teorema da Recurs~
ao 165

A constru»c~a o de R ¶ e similar a mult0 , onde z come»ca com 0 at¶e chegue


ao valor de y.
Seja a fun»c~ao g : N n+1 ! N . Ent~ao, dizemos que f : N n ! N ¶e
de¯nida por minimiza»c~ao de g se o valor de f (x1 ; ¢ ¢¢ ; xn ) ¶e o menor z
tal que g(x1 ; ¢¢ ¢ ; xn ; z) = 1, ou seja

f(x1 ; ¢¢ ¢ ; xn ) = ¹z(g(x1 ;¢ ¢ ¢ ; xn ; z) = 1)

Similarmente a recurs~a o primitiva, as de¯ni»c~o es de minimiza»c~ao encon-


tradas na literatura s~
ao variadas (ver minimiza»c~ao no cap¶³tulo 3).
Na linguagem pseudo-Pascal ter¶³amos o seguinte programa para f,
a partir do programa para g:

Pf (xn )
begin
cond = 0
y = ¡1
while cond <> 1 do
y =y+1
cond = g(x n; y)
return y
end

Teorema 7.3.3 Seja © uma fam¶³lia padr~ ao de algoritmos. Se a fun»c~


ao
total g (n+1) e algor¶³tmica em © ent~
¶ ao

f (xn ) = ¹z(g(xn ;z) = 1)

e¶ algor¶³tmica em © (© ¶e fechada por minimiza»c~


ao).
Demonstra»c~ ao: Suponha a fun»c~
a o M tal que
(
0 se g(x; z) = 1
M (x;z) =
M (x; z + 1) + 1 se g(x; z) 6
=1

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

Finalmente estamos prontos para enunciar um teorema fundamental


a respeito de fam¶³lias padr~
ao de algoritmos, que se segue imediatamente
da propriedade 1 e 2 e dos teoremas 7.3.2 e 7.3.3.

Teorema 7.3.4 Se © ¶ e uma fam¶³lia padr~ ao de algoritmos ent~


a o todas
as fun»c~
o es parcialmente recursivas s~
a o algor¶³tmicas em ©. 2

7.4 Forma Normal de Kleene


Conforme j¶ a discutido e evidenciado, dada uma fun»c~ao f , existem in-
¯nitos algoritmos que a computam. A forma Normal de Kleene ¶e um
formato ¯xo para a constru»c~ ao de um algoritmo para f.
Fa»camos um paralelo com programa»c~a o estruturada na linguagem
Pascal. Dado um programa Pascal com r¶otulos e com comandos goto,
muitas vezes disfar»cado em exit ou break, sabemos que ¶e poss¶³vel eliminar
estes desvios atrav¶es da utiliza»c~ao dos v¶arios tipos de comandos while .
Esta ¶e a base da programa»c~ a o estruturada.
Da mesma maneira, o teorema da forma normal de Kleene a¯rma
que, para toda fun»c~ a o parcial recursiva, existem fun»c~oes primitivas re-
cursivas p e t tais que

'z (x) = p(¹y(t(z; x; y) = 1))

Em termos de pseudo-Pascal, o teorema a¯rma que qualquer pro-


grama P pode ser transformado em um programa P 0 , tal que P 0 possui
exatamente um comando while e tal que a fun»c~ao computada por P e
por P 0 seja a mesma. Vejamos como pode ser feita esta transforma»c~a o.
7.4. Forma Normal de Kleene 167

Seja a fun»c~
ao ' z computada pelo programa

Pz (x)
begin
C1
..
.
Cn
end

Desejamos contar quantos passos, ou seja, quantos comandos s~a o exe-


cutados para que a comput»c~ao de Pz (x) seja completada. Para isso,
utilizamos as seguintes transforma»c~oes:

1. substitui»c~
ao das chamadas µa s subrotinas pelos programas das pr¶o -
prias subrotinas, at¶e que n~ao haja mais chamadas;

ao de Pz(x) na cabe»ca do programa, por Pz0 (x; y; max),


2. substitui»c~
onde y e max s~ ao uma vari¶aveis que n~ao ocorrem em Pz ;

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

At¶e aqui temos o seguinte programa:

Pz0 (x; y; max)


begin
C10
¢¢¢
Cn0
end
168 Cap¶³tulo 7. Algoritmos e suas Propriedades

a o de todo comando Ci0 pelo trecho


6. substitui»c~

Ci0
if cont = max then return 0 else cont = cont + 1

a o, o programa Pz0 (x; y; max) resultante


Ent~

Pz0 (x; y; max)


begin
cont = 0
C10
if cont = max then return 0 else cont = cont + 1
¢¢¢
Cn0
if cont = max then return 0 else cont = cont + 1
end

executa, no m¶ aximo, max comandos. Al¶em disso, Pz0 ¶e primitivo recur-


sivo, j¶
a que n~
ao cont¶
em while . De¯nimos o seguinte programa T :

T (z; x; y)
begin
P = Constroi(z)
P 0 = Transf orma(P)
return P 0 (x; 1 ¯2 (y); 2 ¯2 (y))
end

onde C onstroi(z) retorna o programa de ¶³ndice z e T ransforma(P ) re-


torna o programa P transformado de acordo com os ¶³tens acima. As
fun»c~
o es de pareamento 1 ¯2(beta) e 2 ¯2 (beta), s~a o como de¯nidas no
cap¶³tulo 4.
T (z; x;y) retorna 1 se Pz0 (x; 1¯ 2(y); 2 ¯2 (y)) retorna 1, se Pz (x) re-
torna 1¯2 (y) em menos que 2 ¯2(y) passos. Este programa T (z; x; y)
calcula o tempo, em n¶ umero de passos, que o programa Pz (x) leva para
calcular seu valor de retorno. Podemos veri¯car que T tamb¶em ¶e recur-
siva primitiva.
Finalmente, a forma normal de Kleene para o programa Pz ¶e dada
7.5. Tradu»
c~ao entre Fam¶³lias Padr~
ao 169

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

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:

1. o programa FNK computa a fun»c~a o 'z ;

2. o programa T computa a fun»c~a o t;

3. o programa para 1¯ 2 computa a fun»c~a o p.

Teorema 7.4.1 (forma normal de Kleene) Para todo z 2 N exis-


tem fun»c~
o es recursivas p e t tal que 'z (x) = p(¹y(t(z; x; y) = 1))
Demonstra»c~ ao: Suponha a fun»c~ a o s tal que
(
1 se Pz (x)p¶ara com sa¶³da y em menos que wpassos
s(z; x; y; w) =
0 caso contr¶ario

Pela tese de Church, s ¶


e recursiva. Sejam p = 1 ¯2 e q = 2 ¯2 , sabida-
mente recursivas. De¯nindo-se t(z; x; y) = s(z; x; p(y);q (y)), ent~
ao o
teorema est¶
a provado. 2

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

y em menos que w passos, ent~ao s ¶e recursiva. Como j¶a demonstramos


no cap¶³tulo 6, o predicado T , tempo AM R, ¶e um tal algoritmo.
Nesta se»c~
a o refor»camos este ponto, de modo que a tese de Church n~a o
mais precise ser invocada para justi¯car o uso de algoritmos j¶a especi-
¯cados em outra linguagem. Desde que uma fun»c~a o Ãi seja algor¶³tmica
em uma fam¶³lia padr~ a o ª, demonstramos que existe uma fun»c~a o total
algor¶³tmica em outra fam¶³lia padr~a o © que calcula o ¶³ndice j do algo-
ritmo de Ãi em ©. Quanto µ a nota»c~ao, utilizamos ' para fun»c~oes em © e
à para fun»c~o es em ª.

Teorema 7.5.1 (Teorema da tradu» c~


ao) Sejam © e ª duas fam¶³lias
padr~
ao de algoritmos. Ent~ao existe uma fun»c~
a o total tr tal que para todo
r 2 N e Ãr algor¶³tmica em ª

'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

tr© = s1;1 ± (c1k ; pr11 )

¶Indices de © 0 q
6
tr©
¶Indices de ª 0 q

Figura 7.1: Tradu»c~a o de ª para ©

Lema 7.5.1 Seja © uma fam¶³lia padr~ a o de algoritmos e f uma fun»c~


ao
total algor¶³tmica em ©. Seja a fun»c~a o s = s1;1 da propriedade s-m-n.
Ent~a o existe um n¶umero natural i tal que, para todo x 2 N , s(i; x) ¶ e
injetiva em x e
'f (x) = 's(i;x)
7.5. Tradu»
c~ao entre Fam¶³lias Padr~
ao 171

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

O pr¶o ximo teorema refor»ca o resultado contido no teorema 7.5.1 da


tradu»c~
ao, exigindo que a fun»c~ao que calcula o ¶³ndice, de uma fam¶³lia
padr~
ao para outra, seja injetora e portanto invers¶³vel.

Teorema 7.5.2 (Teorema forte da tradu»c~ ao) Sejam © e ª duas fam¶³-


lias padr~
a o de algoritmos. Ent~
a o existe uma fun»c~
ao total tri© injetiva
tal que para todo r 2 N e Ãr algor¶³tmica em ª

'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

'tr© (x) = 's(i;x) = 'tri©(x) = Ãx

Vimos no estudo dos AMR's que existe um procedimento efetivo, na


realidade uma fun»c~
ao primitiva recursiva, en que transforma um AMR
0 0
A em outro AMR A com ¶³ndice maior e tal que jAj = jA j. Esta fun»c~a o
¶e muito importante, de um ponto de vista t¶ecnico. O resultado a seguir
mostra que toda fam¶³lia abstrata padr~ao cont¶em uma tal fun»c~a o.

Teorema 7.5.3 Seja © uma fam¶³lia padr~ ao de algoritmos. Ent~


a o existe
a o injetiva total en© tal que para todo x; y 2 N
uma fun»c~

'x = 'en©(x;y)

Demonstra»c~a o: Seja ª uma fam¶³lia padr~ao AM R. Pelo teorema 6.3.4


existe enª recursiva primitiva tal que para todo x;y 2 N

Ãx = Ãenª(x;y)

Pelo teorema forte da tradu»c~


a o, existem tri© e triª injetivas tal que

'tri©(x) = Ãx e Ãtriª(x) = 'x


7.5. Tradu»
c~ao entre Fam¶³lias Padr~
ao 173

De¯na en©(x; y) = tri© ± (enª ± (triª ± pr21 ; pr22 ))(x; y)

'en©(x;y) = 'tr i© (enª(triª(x);y))


= Ãenª(tr iª(x);y)
= Ãtr iª(x)
= 'x
2

Para demonstrar o resultado ¯nal da se»c~ao, precisamos de dois re-


sultados preliminares, que expandem o teorema forte da tradu»c~ao, ga-
rantindo a exist^encia de fun»c~o es de tradu»c~a o crescentes

Lema 7.5.2 Sejam © e ª fam¶³lias padr~ ao de algoritmos. Ent~


ao existe
ao recursiva triasc© tal que para todo x 2 N
uma fun»c~ N

(I ) ¢ ¢ ¢' triasc©(x) = Ãx

e al¶em disso

(II ) ¢ ¢ ¢ 0 < triasc©(x) < triasc©(x + 1)

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

triasc©(0)=en©(tr©(0); ¹y (>(en©(tr©(0); y); tr©(0)) = 1))

triasc©(x + 1)=en©(tr©(x + 1); ¹y(>(en©(tr©(x + 1); y); triasc©(x)) = 1))

que ¶
e claramente recursiva primitiva e satisfaz as (I) e (II ) acima. 2

Lema 7.5.3 Sejam © e ª fam¶³lias padr~ o es de algoritmos. Ent~


ao para
todo x 2 N
N triasc©(x) > x e triascª(x) > x.
Demonstra»c~
ao: Deixamos para o leitor. 2

Finalmente, apresentamos o teorema do Isomor¯smo, que garante


um mapeamento bijetivo entre algoritmos de fam¶³lias padr~o es, o que
signi¯ca uma equival^
encia completa entre estes tipos de fam¶³lias de al-
goritmos.
174 Cap¶³tulo 7. Algoritmos e suas Propriedades

¶ 0 q q
Indices de ©
6 triasc© ¤ 6

q q
s
¶ 0 ? ? triascª
Indices de ª

Figura 7.2: Fun»c~oes s¤ e t¤

Teorema 7.5.4 (Teorema do isomor¯smo de Rogers) Sejam © e ª


fam¶³lias padr~
ao de algoritmos. Ent~ao existe uma fun»c~
ao bijetiva e re-
cursiva trb© tal que para todo x 2 N

'trb© (x) = Ãx

Demonstra»c~ a o: Para demonstrar o teorema, vamos construir uma fun-


»c~
ao de tradu»c~
a o dos ¶³ndices de © para ª, que seja:

1. injetora, ou seja, a partir de ¶³ndices i e j distintos em ©, a


tradu»c~
ao obtem ¶³ndices distintos em ª;

2. sobrejetora, ou seja, todos os ¶³ndices em ª s~


a o resultados da tra-
du»c~
ao de algum ¶³ndice em ©.

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

Ax = fx;s ¤(x); t¤ ± s¤ (x); s¤ ± t¤ ± s¤ (x) ¢ ¢¢g

e, sendo s¤ e t¤ estritamente decrescentes, esta seqÄ


u^encia tem as seguin-
tes caracter¶³sticas importantes: possui, no m¶
aximo, x + 1 elementos e o
ultimo valor ¶
¶ e sempre 0, ou seja, para algum l 2 N :

1. a seqÄencia termina em ª, e neste caso (t¤ ± s ¤)l (x) = 0, ou


u^

2. a seqÄencia termina em ©, e neste caso s ¤ ± (t¤ ± s¤ )l (x) = 0.


u^
7.5. Tradu»
c~ao entre Fam¶³lias Padr~
ao 175

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

u^encia de s¤ 's e t¤ 's


Figura 7.3: SeqÄ

©s
0 A linha pontilhada repre se nta

6 ¤
uma das op» c~
o es:

t triascª(0) = (t¤ ± s ¤)l

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:

1. triasc©(0) = s¤ ± (t¤ ± s¤ )l¡1 (x), ou

ao existe um ¶³ndice y de ª tal que triasc©(y) = s¤ ±(t¤ ±s¤ )l¡1(x).


2. n~

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

Vamos provar que trb© ¶e a fun»c~


ao de tradu»c~
ao desejada. Seja x um
¶³ndice de ª:

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

Em ambos os casos 'trb©(x) = Ãx . Vamos provar que trb© ¶


e bijetiva.

e injetiva: sejam x; y 2 N tal que trb©(x) = trb©(y). Ent~


1. trb© ¶ ao
T erminaEmª(x) = T erminaEmª(y).
176 Cap¶³tulo 7. Algoritmos e suas Propriedades

(a) Se T erminaEmª(x) = 1 ent~ a o triasc©(x) = triasc©(y)


logo, pelo lema 7.5.2, x = y.
a o s¤ (x) = s¤ (y) logo, pelo lema
(b) Se T erminaEmª(x) = 0 ent~
7.5.2, x = y.

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:

(a) se T erminaEmª(triascª(y)) = 1 ent~ ao x = t¤ (y) j¶


a que,
neste caso, y = triasc©(x) = trb©(x);
(b) se T erminaEmª(triascª(y)) = 0 ent~ ao x = triascª(y) j¶
a
que, neste caso, y = s¤ (triascª(y)) = trb©(x); 2

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:

f 1 = h ± (c23 ; pr21 ;pr21 )


f 2 = c15 ± (h ± (c30 ; c31 ;c32 ))
f 3 = h ± (pr33 ; h ± (c30; pr31 ; pr32 ); c32)

Escreva o valor de f1 , f 2 e f3 em termos dos valores de h.


7.7. Exerc¶³cios 177

2. Seja h uma fun»c~


a o total de tr^es vari¶aveis. Sejam as fun»c~oes:
f 1(x; y) = h(y; 1; x)
f 2(x; y; z) = h(h(z; z;2); 0; z)
f 3(w; x; y; z) = h(x; h(x; y; z); h(w ;x; y)
Escreva as de¯ni»c~oes de f1 , f2 e f3 em termos de h e de outras
fun»c~
oes da propriedade 1.
3. Sejam as fun»c~
oes g1 , g 2 e h abaixo:
(
x=3 se 3 divide x
g1 (x) =
" caso contr¶ario
(
x=5 se 5 divide x
g2 (x) =
" caso contr¶ario
8
>
< 15:x:y se x e y s~ao pares
h(x; y) = x+y se x ou y s~ao ¶³mpares mas n~ao ambos
>
: " se x e y s~ao ¶³mpares
Descreva os valores de f = h ± (g1 ; g2 ).

4. Mostre que a fun»c~a o f abaixo n~ao ¶e algor¶³tmica em qualquer


fam¶³lia de algoritmos.
(
0 se ' x(x) = 1
f (x) =
1 caso contr¶ario

5. Mostre que as fun»c~oes f e g abaixo n~a o s~a o algor¶³tmicas em qual-


quer fam¶³lia de algoritmos com as propriedades 1 e 2.
(
5 se ' x(x) = 3
f (x) =
1 caso contr¶ario
(
1 se 'x(y) = z
g(x;y; z) =
0 caso contr¶ario

6. Seja uma © uma fam¶³lia de algoritmos com as propriedades 1, 2 e


3. Seja ©0 a fam¶³lia obtida de © pela reindexa»c~ao atrav¶es de uma
ao total f (Ai passa a ser Af (i)). Mostre que ©0 obedece µas
fun»c~
propriedades 1, 2 e 3.
178 Cap¶³tulo 7. Algoritmos e suas Propriedades

7. Seja © uma fam¶³lia de algoritmos com as propriedades 1, 2 e 3. Seja


r algor¶³tmica em ©. Mostre que a seguinte fun»c~ao f ¶e algor¶³tmica
em ©.
f (x) = 'r(x) (x) + 1

8. Seja © uma fam¶³lia de algoritmos com as propriedades 1, 2 e 4.


Mostre que as seguintes fun»c~o es s~ao algor¶³tmicas em ©.
(
4 ¡ x se x · 4
f1 (x) =
0 caso contr¶a rio
8
>
> 0
se x =y =0
>
<
1 se x =0 e y> 0
f 2(x; y) =
>
> 2 se x >0 e y= 1
>
:
3 se x >0 e y6
=1
(
0 se x = 3 e y = 0 ou x = 5 e y > 0
f 3(x; y) =
1 caso contr¶ario

9. Seja © uma fam¶³lia de algoritmos com as propriedades 1, 2, 3 e 4.


Sabendo-se que '17 (x) # se e somente se x ¶e par e '241(x) # se e
somente se x ¶
e ¶³mpar:

(a) Descreva os valores de

g = caso ± (pr32 ; pr 33; '17 ± pr31 ; '241 ± pr31 )

(b) Mostre que a seguinte fun»c~ao ¶e algor¶³tmica em ©.


(
' 17 (x) se y = z
h(x;y; z) =
' 241 (x) se y 6
=z

10. Seja © uma fam¶³lia de algoritmos com a propriedade 5 mas n~a o


necessariamente com a propriedade 1. Mostre que para todo na-
tural w existe uma fun»c~ao r algor¶³tmica em ©, tal que para todo
xey
'r(x) (y) = 'w (x; y)

11. Seja © uma fam¶³lia padr~a o de algoritmos. Demonstre em cada um


dos ¶³tens abaixo a exist^
encia da fun»c~a o r total e algor¶³tmica em ©.
7.7. Exerc¶³cios 179

(a) ' r(x) (y; z) = 'x(z; y)


(b) ' r(x) (y; z) = 'x(y; z + 1) + 1
(
1 se y = x
(c) ' r(x) (y) =
0 se y 6
=x
(
'x1 (y) se y = x1
(d) ' r(x1 ;x2 ) (y) =
'x2 (y) se y 6
= x1
(
0 se y = z
(e) ' r(x) (y; z) =
'x(y; z + 1) + 1 se y 6
=z

12. Seja © uma fam¶³lia padr~ao de algoritmos. Mostre que existe um


umero natural m tal que, para todo y, ' m (y) = m 2 ¶e algor¶³tmica

em ©.

13. Seja © uma fam¶³lia padr~ao de algoritmos. Mostre que existe um



umero natural m tal que, para todo y, 'm (y) = h(m; y) ¶e al-
gor¶³tmica em ©, onde h ¶e algor¶³tmica em ©.

14. Seja © uma fam¶³lia padr~ao de algoritmos. Mostre que existe um


n¶umero natural m tal que, para todo y, 'm (y) = 'm+1 ('m+1 (y))
e algor¶³tmica em ©.

15. Seja © uma fam¶³lia padr~ao de algoritmos. Mostre que existe um



umero natural m tal que, para todo y,
(
1 se y = m
'm (y) =
0 se y 6
=m

e algor¶³tmica em ©.

16. Seja © uma fam¶³lia padr~ao de algoritmos. Mostre que existe um


n¶umero natural m tal que, para todo y, U 2 ('m (y); z) = 'm (y; z)
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

Dado um conjunto A e um elemento a, a quest~ao (a 2 A?) ¶e o chamado


problema da decis~ao do conjunto A. Neste cap¶³tulo discutimos a solu-
bilidade de alguns problemas deste tipo.
Fundamentalmente, caracterizamos a utiliza»c~ao de programas para
gerar conjuntos, apresentando de¯ni»c~o es alternativas para conjuntos re-
cursivamente enumer¶ aveis. Discutimos tamb¶em um importante grupo
de conjuntos que n~a o podem ser gerados por programas, ou equivalen-
temente, n~ao ¶
e poss¶³vel determinar seus elementos.
Vale a pena ressaltar que, para construir programas em uma fam¶³lia
padr~ao de algoritmos, utilizamos como principais ferramentas a tese de
Church e as propriedades b¶asicas dos algoritmos vistas no cap¶³tulo 7.

8.1 Recursividade de Conjuntos


Intuitivamente, um conjunto A ¶e recursivo quando existe uma maneira
efetiva de veri¯car, dado um elemento, sua pertin^encia, ou n~ao, a A, ou
seja, uma maneira de reconhecer seus elementos e os elementos de A. A
de¯ni»c~
a o a seguir formaliza este conceito, via Tese de Church, atrav¶es
da exist^encia de uma fun»c~ao caracter¶³stica recursiva para A.

De¯ni» c~ao 8.1.1 Um conjunto ¶ e recursivo se e somente se possui uma


fun»c~
ao caracter¶³stica recursiva.

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).

A id¶eia ¶e que f lista os elementos de A, possivelmente com repeti»c~o es.


O teorema 8.1.1 apresenta de¯ni»c~o es equivalentes para a no»c~a o de re-
cursivamente enumer¶ a vel, impondo diferentes condi»c~o es µa fun»c~ao f.

Teorema 8.1.1 Seja A µN


N . As seguintes proposi»c~
oes s~
a o equivalentes:

1. A ¶
e recursivamente enumer¶
avel (de¯ni»c~
ao 8.1.2).

2. A = ; ou existe uma fun»c~


a o f recursiva (total) tal que A = img(f).

3. A ¶e ¯nito ou existe uma fun»c~


a o f recursiva (total) e injetora tal
que A = img(f).

4. Existe uma fun»c~


ao f parcialmente recursiva tal que A = dom(f ).
W
ao f recursiva (total) tal que ÂA (x) = y f(x; y),
5. Existe uma fun»c~
onde
(
_ 1 se f (x; y) 6
= 0 para algum y
f (x; y) =
y
0 caso contr¶ario

Demonstra»c~
a o:

1.)2. Seja A = img('m ), com 'm parcialmente recursiva. Pelo teo-


rema 7.4.1 da forma normal, 'm (x) = p(¹y(t(m; x; y) = 1), com p
e t fun»c~
o es recursivas. Ent~
ao P'm abaixo computa a fun»c~
a o 'm .
8.1. Recursividade de Conjuntos 183

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

O programa P rox ser¶


a utilizado para construir um programa com
a mesma imagem de g por¶ em sem repeti»c~
oes:
P f(x)
begin
y = Prox(x)
return g(y)
end
A fun»c ~
ao f computada pelo programa Pf ¶e injetora. Ainda, se
a imagem de g ¶ e in¯nita, ent~ao f ¶e recursiva (veri¯que o la»co
(*)). Seja, por exemplo, a fun»c~
a o g(x) = 2:(x=2) + 1 e o conjunto
A = img(g). Observando os valores de g e de f temos:
g(0) = 1 Prox(0) = 0 f (0) = 1
g(1) = 1 Prox(1) = 2
g(2) = 3 Prox(2) = 4 f (1) = 3
g(3) = 3 Prox(3) = 6
g(4) = 5 Prox(4) = 8 f (2) = 5
g(5) = 5 Prox(5) = 10
g(6) = 7 Prox(6) = 12 f (3) = 7
g(7) = 7 Prox(7) = 14
¢¢¢ ¢ ¢¢ ¢¢¢
Logo, f (x) = 2:x + 1, A = img(g) = img(f ), e f ¶e bijetora.
a o ÂA ¶
3.)4. Seja A ¯nito, ent~ e recursiva. Observando o programa
abaixo:
P f(x)
begin
while :T: do
if ÂA (x) = 1 return k
end
vemos que P f(x) converge se e somente se x 2 A logo, temos que,
A = dom(f). Se A ¶ e in¯nito e A = img(g), com g recursiva e
injetora, temos o seguinte programa:
P f(x)
begin
return g ¡1 (x)
end
8.1. Recursividade de Conjuntos 185

pois, x 2 A se e somente se g ¡1 (x) ¶


e de¯nida. Logo, se f ¶
e fun»c~
ao
computada por P f, A = dom(f).

4.)5. Seja A = dom(' m ), com 'm parcialmente recursiva. Logo pelo


teorema da forma normal, 'm (x) = p(¹y(t(m; x; y) = 1)), com p
e t fun»c~ o es recursivas. Para obter a fun»c~ a o caracter¶³stica de A,
basta construir uma fun»c~ a o que veri¯ca se 'm p¶ a ra para um dado
x, ou seja, se t(m; x; y) = 1 para algum y. Logo, pela propriedade
s-m-n, sendo t a fun»c~ ao 'k , basta construir a fun»c~
ao que veri¯ca se
W
' f (k;m) (x;y) = 1 para algum y. Assim ÂA (x) = y 'f (k;m) (x; y).
W
5.)1. Seja ÂA (x) = y f (x; y) com f recursiva. Considere a fun»c~
ao
(
x se x 2 A
¶A (x) =
" se x 6
2A

Ent~ ao A = img(¶A ). Basta construir ¶A parcialmente recursiva


utilizando f:

P¶A (x)
begin
y= 0
while :T: do
if f (x; y) = 1 return x
y= y+1
end

O teorema 8.1.2 relaciona o conceito de conjunto recursivo ao con-


ceito de recursivamente enumer¶avel. Intuitivamente, o segundo conceito
e mais abrangente, como mostra o item 1. O item 2 formaliza a no»c~ao

de que, se os elementos de um conjunto A e de seu complemento A
s~
ao list¶
aveis por fun»c~
oes recursivas parciais ent~a o a pertin^encia ou n~ao-
pertin^encia a A ¶
e efetivamente veri¯c¶a vel.

Teorema 8.1.2 Seja A µN


N.

1. Se A ¶e recursivo ent~
ao A ¶e recursivamente enumer¶
a vel.
186 Cap¶³tulo 8. Solubilidade de Problemas

Demonstra»c~ao: Seja ÂA a fun»c~


a o caracter¶³stica recursiva de A.
Logo, basta fazer:

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

Logo a fun»c~ e computada por P ÂA :


ao caracter¶³stica recursiva de A ¶

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

a que para algum y 2 N , f (x; y) = 1 ou g(x; y) = 1.


j¶ 2

8.2 Problemas Insol¶


uveis
O problema de determinar se um dado elemento a qualquer pertence a
um conjunto A ¶e chamado problema de decis~
a o para o conjunto A. Se
8.2. Problemas Insol¶
uveis 187

existe um procedimento efetivo que resolva o problema de decis~a o de um


conjunto A ent~ ao o conjunto ¶e dito decid¶³vel e o problema ¶e dito sol¶uvel.
Indecid¶³vel e insol¶
uvel, respectivamente, denotam a n~ao exist^encia de tal
procedimento. Pela tese de Church, pode-se concluir que o conjunto ¶e
decid¶³vel se e somente se ¶e recursivo.

O Problema da Parada: Dado um ¶³ndice x e uma entrada y o pro-


blema da parada consiste em determinar se 'x(y) p¶a ra.
(
1 se 'x(y) #
f (x; y) =
0 se 'x(y) "

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

Considere o programa Inverte que diverge quando 'x(x) converge e


converge quando 'x (x) diverge:

I nverte(x)
begin
if Parada(x; x) = 1 then
while :T: do
y =y
else return 1
end

Se a fun»c~ao computada por P arada ¶e recursiva ent~ao a fun»c~a o com-


putada por I nverte ¶e parcialmente recursiva. Seja xi ¶e seu¶³ndice. Ent~ao
I nverte(xi) diverge se 'xi (xi) converge - contradi»c~ao - e Inverte(xi ) con-
verge se 'xi(xi) diverge - contradi»c~ao. Portanto P arada n~ao pode ser
recursiva.
188 Cap¶³tulo 8. Solubilidade de Problemas

A principal t¶ecnica para determinar que um problema ¶e insol¶uvel ¶e


a sua redu»c~
a o ao problema da parada. A id¶eia ¶e argumentar que, se tal
problema fosse sol¶ uvel o problema da parada tamb¶em seria.
Para demonstrar alguns destes resultados, procedemos da seguinte
maneira, utilizando a propriedade s-m-n. Seja ' k (x; y) a fun»c~ao com-
putada por um programa P (x; y). Ent~ao existe s1;1 recursiva, tal que
'k (x;y) = 's1;1 (k;x) (y). Chamamos o programa que computa s1;1(k; x)
de ObtemI ndice(P; x), ou seja, ObtemIndice(P;t) calcula o ¶³ndice do
programa resultante da substitui»c~ao das ocorr^encias de x em P por t.
A seguir apresentamos alguns problemas insol¶uveis interessantes e
demonstramos a insolubilidade reduzindo-os ao problema da parada.

1. O problema de saber, dado um ¶³ndice x, se a fun»c~ao 'x ¶e constante.


(
1 se 'x e¶ constante
f (x) =
0 se 'x n~ao e¶ constante


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

O programa ExecutaT retorna 0 se Pt (t) converge e diverge se


Pt (t) diverge, portanto ¶e constante se e somente se Pt(t) converge.
Observando que:
(
1 se 'x (x) #
g(x) =
0 se 'x (x) "

e¶ equivalente ao problema da parada (vide exerc¶³cio 1), a partir de



Executa e de Econst poder¶³amos construir o seguinte programa
8.2. Problemas Insol¶
uveis 189

recursivo para o problema da parada:

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

Analisando o programa Parada, temos que Parada(x) = 1 se


ExecutaX ¶e constante se e somente se Px(x) converge. Por outro
lado, temos que P arada(x) = 0 se ExecutaX n~a o ¶e constante se
e somente se Px(x) diverge.

2. O problema de saber, para qualquer x e y, se y est¶a na imagem da


fun»c~
ao 'x .
Utilizando os programas constru¶³dos para o problema do item 1, e
supondo que N aI magem(x;y) ¶e recursivo, ter¶³amos

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.

3. O problema de saber, para qualquer x, y e z, se 'x(y) = z.


Utilizando os programas constru¶³dos para o problema do item 1, e
190 Cap¶³tulo 8. Solubilidade de Problemas

¶ 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.

4. O problema de saber, para qualquer x e y, se 'x = 'y .


Utilizamos os programas constru¶³dos para o problema do item 1.
ao c10 e supomos que o programa I gual(x; y)
Seja j o ¶³ndice da fun»c~
seja recursivo. Ent~ ao ter¶³amos

Parada(x)
begin
i = ObtemIndice(Executa; x)
return Igual(i; j)
end

a que ExecutaX computa a mesma fun»c~a o que c10 se e


recursivo, j¶
somente se ¶e constante e igual a 0 se e somente se Px(x) converge.

O pr¶
o ximo teorema ¶
e bastante ¶util para demonstra»c~o es de insolubi-
lidade de problemas, como um atalho poderoso.

Teorema 8.2.1 (Rice) Seja C uma cole»c~ ao de fun»c~


o es recursivas par-
ciais de aridade 1. Ent~ao fxj'x 2 C g possui uma fun»c~ a o caracter¶³stica
recursiva se e somente se C ¶
e vazia ou cont¶
em todas as fun»c~o es recursivas
parciais.
Demonstra»c~a o:

(() g = c10 ou g = c11 s~


ao as fun»c~
o es caracter¶³sticas, respectivamente.

()) Supomos que:

1. g ¶ a o caracter¶³stica de fxj'x 2 Cg e Pg o programa


e a fun»c~
que a computa;
8.2. Problemas Insol¶
uveis 191

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;

Sejam P f1 e P f2 os programas que computam f1 e f2 respectiva-


mente. Considerando os programas

ExecutaF 1(x; y) ExecutaF2(x; y)


begin begin
Px = Constroi(x) Px = Constroi(x)
Px(x) Px(x)
return Pf 1(y) return Pf 2(y)
end end

e suas transforma»c~
o es pelo teorema s-m-n:

ExecutaT F 1(x) ExecutaTF 2(x)


begin begin
Pt(t) Pt(t)
return Pf 1(x) return Pf 2(x)
end end

observa-se que, se Pt (t) converge, ent~a o ExecutaT F 1 = Pf1 e


ExecutaT F 2 = Pf2 . Portanto, no caso de P t(t) convergir o ¶³ndice
de ExecutaT F 1 pertence a fxj'x 2 C g e o ¶³ndice de ExecutaT F 2
n~ao pertence a fxj'x 2 Cg. Seja i o o ¶³ndice de ExecutaT F 1 e j
o ¶³ndice de ExecutaT F2. Ent~a o podemos concluir que, sendo h a
fun»c~
ao vazia:

P g(i) conclus~
ao P g(j) conclus~
ao

0 Pt (t) " 0 Pt (t) # ou h 6


2C

1 Pt(t) # ou h 2 C 1 Pt (t) "

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

P g(i) Pg(j) conclus~


ao

1 0 (Pt(t) # ou h 2 C ) e (Pt (t) # ou h 6


2 C)

Logo:

² se h 2 C conclu¶³mos que Pt (t) #


² se h 6
2 C conclu¶³mos que Pt (t) #

Da¶³, se Pg(i) = 1 e P g(j ) = 0, conclu¶³mos que Pt(t) #.


Baseado nesta observa»c~
a o poder¶³amos construir o seguinte pro-
grama recursivo para o problema da parada:
P arada(x)
begin
i = ObtemI ndice(ExecutaF1; x)
j = ObtemIndice(ExecutaF 2; x)
if Pg(i) = 0 then return 0
else if Pg(j) = 1 then return 0
else return 1
end
Em suma, o programa acima retorna 1 se 'x(x) converge (P g(i) 6
=
0 e P g(j) 6
= 1) e retorna 0 se 'x(x) diverge. 2

Para ilustrar o poder do teorema de Rice, considere o problema de


decis~ ao do conjunto de fun»c~ oes C = f' xjdom('x) ¶e in¯nitog, ou seja, se
fxj'x 2 Cg possui uma fun»c~ao caracter¶³stica recursiva. O argumento
¶e: como C n~ ao ¶
e vazio (algumas fun»c~o es possuem dom¶³nio in¯nito) nem
cont¶em todas as fun»c~oes recursivas parciais (algumas fun»c~oes possuem
dom¶³nio ¯nito), ent~ ao, pelo teorema de Rice, ent~a o fxj'x 2 Cg n~a o
possui uma fun»c~ ao caracter¶³stica recursiva, logo C ¶e indecid¶³vel.
Os resultados anteriores poderiam ter sido demonstrados trivial-
mente pelo uso do teorema de Rice.

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

put¶avel. Recomendamos os textos [Rog67] e [BL74] para expandir o que


foi visto.

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) "

2. Mostre que o problema de saber, para qualquer x, se 'x tem im-


agem in¯nita, ¶e insol¶uvel.
3. Mostre que o problema de saber, para um y0 ¯xo e qualquer x, se
y 0 est¶
a na imagem de 'x, ¶e insol¶
uvel.
4. Discuta o problema de saber, para qualquer y e um x0 ¯xo, se y
est¶
a na imagem de 'x0 . Em que casos este problema ¶e sol¶
uvel?
5. Utilizando o teorema de Rice, demonstre os conjuntos A da tabela
a seguir s~
a o indecid¶³veis.
Conjunto A
fxj'x (x) #g
fxjDx = ;g onde Dx = fyj' x (y ) #g
fxjimg(' x ) = ;g
fxjDx ¶e ¯nitog onde Dx = fyj'x (y) #g
fxjimg(' x ) ¶e ¯nitag
fxj'x ¶e totalg
fxjimg(' x ) = N g
fxjx 0 2 D x g onde Dx = fyj' x (y) #g
fxjx 0 2 img (' x )g
fxjDx ¶e recursivog onde Dx = fyj'x (y) #g
fxj'x = 'x 0 g, com ' x0 total
fxj'x = 'x 0 g, com ' x0 n~ ao total
fxj'x = 'x 0 g, com ' x0 = ;
fxj'x = 'x 0 g, com ' x0 6 =;
fxj'x ¶e bijetorag
fxj'x ¶e primitiva recursivag
fxj'x (y ) = 'x 0 (y); para algum yg, com ' x 0 total
f(x; y )j' x = ' yg
194 Cap¶³tulo 8. Solubilidade de Problemas
Parte II

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:

(0) Formal - do latim formale - relativo a forma.

(1) Forma - do latim forma - Con¯gura»c~a o exterior dos corpos; dis-


posi»c~
a o das partes de um corpo, apar^encia; feitio de um objeto;
modelo; norma.

(2) Forma - do latim forma - molde dentro do qual ou sobre o qual se


forma qualquer coisa que toma o feitio desse molde.

Depois desta consulta, descobrimos que \formal" ¶e de¯nido atrav¶es


de \forma" e o problema ¶e saber qual a nossa escolha-se (1) ou (2),

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.

9.1 Sistemas Formais - Geral


A pr¶
oxima de¯ni»c~
a o especi¯ca os elementos constituintes de um sistema
formal qualquer. O leitor deve rever o material apresentado na se»c~a o 2.3
antes de prosseguir.

De¯ni» ao 9.1.1 Um sistema formal F ¶


c~ e uma tupla < §; L;A; R >,
onde:

1. § ¶
e um alfabeto;

2. L ¶
e um conjunto recursivo em §, chamado de linguagem do sis-
tema formal;

3. A ¶e um subconjunto recursivo de L, chamado de Axiomas;


9.1. Sistemas Formais - Geral 199

4. R ¶e um conjunto recursivo de rela»c~


o es em L.

Exemplo 9.1.1 Seja um sistema formal, onde o alfabeto, as palavras,


os axiomas e as rela»c~
oes estejam de¯nidas abaixo:

§ = f+; ¤g; L = f§¤ g; A = f+; ¤g; R = fr1; r2 g; onde :


r1 = f< x+;x¤ > jx 2 §¤ g
r2 = ff< x + ¤; x ¤ + > jx 2 §¤ g [
f< x + ¤¤; x ¤ ++ > jx 2 §¤ g [
f< x¤; x + + > jx 2 §¤gg

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.

De¯ni»c~ao 9.1.2 Seja F =< §; L;A; R > um sistema formal e seja o


conjunto ¡ µ L. Uma dedu»c~a o ou deriva»c~ao de ® a partir de ¡ em F ¶
e
uma seqÄ encia ®1 ; ®2 ;¢ ¢ ¢ ; ®n de palavras de L, tal que:
u^

1. ®n ¶
e ®; e

2. para todo j; 1 · j < n,

(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.

Se existir uma dedu»c~ ao de ® a partir de ¡ dizemos que ® ¶


e dedut¶³vel,
a vel, a partir de ¡ em F . Isto ¶
ou deriv¶ e denotado por ¡` F ®.

Exemplo 9.1.2 No sistema formal do exemplo 9.1.1 uma dedu»c~


a o de
¤+ ¶
e:
+ (2 A)
¤ (< +; ¤ >2 r1 )
++ (< ¤; ++ >2 r2 )
+¤ (< ++; +¤ >2 r1 )
¤+ (< +¤; ¤+ >2 r2 )

portanto a seqÄ
u^encia ¤; ++; +¤;¤+ ¶e uma dedu»c~
a o de ¤+ onde ¡ = ;,
assim ; ` ¤+.
200 Cap¶³tulo 9. Sistemas Formais

No caso em que ¡ = ;, dizemos que ® ¶e um teorema em F . O


conjunto de teoremas de um sistema formal F ¶e denotado por TF , ou
simplesmente por T , quando ¶e claro a que sistema formal pertencem
os teoremas. O conjunto de teoremas de um sistema formal inclui os
axiomas, ou seja, todo axioma ¶e um teorema. Em geral, o conjunto de
teoremas ¶e maior o conjunto de axiomas, mas ¶e claro que as regras de
um sistema formal podem n~ao ser aplic¶a veis, e neste caso o conjunto
de teoremas ¶e composto apenas dos axiomas. O conjunto de teoremas
pode ser igual µa linguagem, e neste caso dizemos que o sistema formal ¶e
inconsistente1 . A ¯gura 9.1 mostra a rela»c~ao entre axiomas, teoremas e
linguagem.

6
¾I A µ-
ª ?R T L

Figura 9.1: Deriva»c~ao de Teoremas.

Existem v¶
arias considera»c~oes que devem ser feitas com respeito µa s
componentes de um sistema formal.

§ ¡ Os alfabetos dos sistemas formais podem conter v¶arios tipos de le-


tras, assim em geral devem ser especi¯cados tais tipos de modo n~a o
amb¶³guo. Os tipos de letras correspondem a modos de construir
as palavras da linguagem L. Assim na de¯ni»c~a o de § podemos ter

§ = §1 [ §2 [ ¢ ¢¢ §k

Por exemplo nos dialetos formaliz¶a veis oriundos de simpli¯ca»c~o es


das linguagens naturais temos letras para representar as diversas
categorias gramaticais. E ¶ frequente incluirem-se no alfabeto letras
que s~ao auxiliares (vari¶
aveis sint¶aticas) para representar subclasses
da linguagem L.
L ¡ A de¯ni»c~
ao da linguagem pode necessitar de um outro sistema for-
mal, ou nota»c~
oes informais para sua especi¯ca»c~ao detalhada. Note
1
Existem v¶
a rias concep»c~
o es da no»c~
ao de inconsist^
encia. Esta, em particular, ¶
e
chamada de inconsist^encia absoluta [HL65]
9.2. Tipos de sistemas formais 201

que, n~ao basta que a linguagem seja um conjunto recursivo. Na


pr¶
atica, as opera»c~oes que s~a o utilizadas para os crit¶erios de cons-
tru»c~
ao dos componentes da linguagem devem ser de baixa com-
plexidade.

A ¡ Existem v¶ arias maneiras de especi¯carem-se os axiomas de um


sistema formal. Se o conjunto for ¯nito basta uma simples enu-
mera»c~
ao, no caso de um conjunto in¯nito podemos utilizar um
outro sistema formal para sua especi¯ca»c~ao. E ¶ frequente na lite-
ratura a utiliza»c~
ao de axiomas esquemas que s~a o bastante dif¶³ceis
de serem efetivos nas aplica»c~o es computacionais.

R ¡ A de¯ni»c~a o das regras de infer^encia ¶e a parte mais complicada de


um sistema formal. As regras de infer^encia devem ser rela»c~oes
recursivas de¯nidas na linguagem L. Podem ser bastante com-
plexas, tanto na de¯ni»c~ao quanto na utiliza»c~a o em uma dedu»c~a o.
Nos exemplos que apresentamos, discutimos a complexidade de
tais regras.
Na especi¯ca»c~
a o de regras de infer^encia escreveremos
®1; ®2 ; ¢ ¢¢ ; ®l
; ou ®1 ; ®2; ¢ ¢ ¢ ; ®l ! ¯
¯
signi¯cando que < ®1; ®2 ; ¢ ¢ ¢; ®l ; ¯ >2 R.
As observa»c~ oes acima devem ser levadas em conta se desejamos ter
um sistema formal que possa ser efetivamente utilizado. O desenvolvi-
mento de crit¶ erios para a escolha de um sistema formal entre alternativas
de formaliza»c~ ao ¶e uma necessidade pouco estudada. Devemos acres-
centar que os sistemas formais foram inventados com o objetivo de se
mecanizar a solu»c~ a o de problemas, principalmente na matem¶atica tradi-
cional, e que o agente executante das dedu»c~oes era inicialmente imagi-
nado como um ser humano treinado como matem¶atico. Hoje devemos
dirigir os esfor»cos na constru»c~ao de sistemas formais cujos agentes s~ao de
outra natureza e muitas vezes uma m¶aquina ou sistema de programa»c~a o.

9.2 Tipos de sistemas formais


Existem tr^es tipos b¶
a sicos de sistemas formais: geradores, reconhece-
dores e transdutores. Os geradores s~a o sistemas formais cujo objetivo
202 Cap¶³tulo 9. Sistemas Formais

e¶ produzir cadeias, somente a partir dos axiomas. Os reconhecedores


admitem outras cadeias como entradas e veri¯cam se tais cadeias s~a o
adequadas, sem produzir cadeias de sa¶³da. Por ¯m, os transdutores
transformam cadeias de entrada em cadeias de sa¶³da.
A seguir, apresentamos algumas varia»c~oes dos tipos b¶asicos. Para
cada tipo, apresentamos a de¯ni»c~a o de seus elementos constituintese de
seu conceito de dedu»c~
ao, com as correspondentes peculiaridades.

9.2.1 Sistemas de Produ»c~


oes de Post
De¯ni» c~ a o de Post (SP P) S ¶
ao 9.2.1 Um sistema de produ»c~ e um sis-
tema formal < §; L; A; R >, onde

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 §¤ ;

3. A ¶e um sub-conjunto de §¤, chamado de conjunto de palavras de


partida;

4. R ¶e um conjunto de rela»c~ a rias em L, que s~


o es bin¶ ao chamadas de
regras de produ»c~
a o; cada regra ¶e da forma

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 )¤

De¯ni» c~ao 9.2.2 Seja S =< §; L; A; R > um S PP e ® 2 L uma


palavra.

1. Dizemos que uma regra

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

® = x0 zi1 x1 zi2 ¢ ¢ ¢ xn¡1 zin xn


9.2. Tipos de sistemas formais 203

onde zi1 ; zi2 ; ¢ ¢¢ ; zin 2 §¤ e, para todo 1 · t;s · n, se it = is


ent~
a o zit = zis .

2. Se uma regra

x0 i1
x1 i2 ¢ ¢¢ xn ¡1 in xn ! y0 j1 y1 j2 ¢¢ ¢ y k¡1 jk y k

a vel a uma palavra ® = x 0 zi1 x1 zi2 ¢ ¢ ¢ xn¡1 zin xn ent~


e¶ aplic¶ ao o
resultado da aplica»c~
ao ¶
e a palavra

y0 zj1 y1 zj 2 y 2 ¢ ¢ ¢ yk¡1 zj k yk

Intuitivamente, as caixas im capturam as sub-palavras zim de ®,


quando a regra ¶
e aplicada, e reproduzem as palavras capturadas por
estas caixas na cadeia do lado direito da regra.

3. Dizemos ® )S ¯ se ¯ foi obtida a partir da palavra ® pela aplica-


ao de uma regra r 2 R.
»c ~

4. Dizemos que ¯ ¶ avel em S a partir de ®, o


e dedut¶³vel ou deriv¶
¤
que denotamos por ® )S ¯, se e somente se ¯ = ® ou existem
¯ 1; ¯2 ; ¢ ¢ ¢ ;¯ l tais que ¯l = ¯ e para todo i; 1 · i < l ¯i )S ¯ i+1 .

5. A linguagem gerada por S ¶


e de¯nida por

L(S) = fx 2 (§ ¡ N )¤ j® )¤S x; ® 2 Ag

A linguagem gerada por S ¶e o conjunto de cadeias sem s¶³mbolos


n~ a o em S .
ao terminais que podem ser geradas por deriva»c~

Exemplo 9.2.1 A regra aa 1 b 2 a ! a 2 ba 1 aplicada a aaabbaa co-


loca ab na caixa numerada com 1 e a na caixa numerada por 2 e gera a
palavra aabaab. Note que outra solu»c~a o seria colocar a na caixa 1 e ba
na caixa 2 e o resultado neste caso seria ababaa.
204 Cap¶³tulo 9. Sistemas Formais

Exemplo 9.2.2 Seja S o SPP no qual

§ = 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
>
>
:

A seguir exibimos algumas deriva»c~


o es em S:
Axioma Gera»c~ ao Axioma Gera»c~ ao
suc suc ) S; suc¦ suc¦ ) S¦;
S; ) 2 S ¦; ) S; 2
S; 2 ) 22
suc2 suc2 ) S 2; suc22 suc22 ) S22;
S 2; ) ¦ S 22; ) 2¦

Podemos interpretar este S PP como gerando a partir de um axioma


sucn, onde n ¶e a representa»c~ adica de um natural no alfabeto f2; ¦g,
a o di¶
a representa»c~
ao n + 1.

As regras de infer^ encia de um SP P podem ser bastante complexas.


As opera»c~ oes b¶a sicas s~
ao de concatena»c~ao, casamento de padr~o es e subs-
titui»c~a o. Tais opera»c~ oes n~
a o fazem parte do sistema formal e s~a o de
dif¶³cil execu»c~
a o, mesmo quando o agente ¶e um ser humano bem treinado.
O leitor familiarizado com os processos de an¶a lise sint¶atica para a cons-
tru»c~a o de compiladores podem apreciar tais di¯culdades. A complexi-
dade da linguagem L ¶e um fator preponderante tanto para o uso do
casamento de padr~ o es como para a constru»c~a o das regras de infer^encia.
O leitor interessado pode consultar [BO93] que trata dos chamados sis-
temas de reescrita.

9.2.2 Linguagens Formais e Gram¶


a ticas
O aprendizado de uma l¶³ngua qualquer involve o estudo da estrutura
das senten»cas. A grosso modo, esta estrutura ¶e chamada de gram¶atica
9.2. Tipos de sistemas formais 205

para a l¶³ngua, e sua apresenta»c~a o usual ¶e como um conjunto de crit¶erios


chamados de regras gramaticais que de¯nem a corretude das senten»cas.
A rigor, gram¶ a ticas s~
a o sistemas formais geradores de linguagens, por-
tanto devemos esperar que uma gram¶atica construa a l¶³ngua.
Considere a seguinte senten»ca do portugu^es:

O menino louco pintava o lindo quadro.

Podemos dizer que a senten»ca ¶e constitu¶³da de sujeito - \O menino


louco" - e predicado - \pintava lindos quadros". Estes elementos podem
ser mais analisados. O predicado ¶e constitu¶³do de verbo - \pintava" - e
objeto - \lindos quadros". As regras utilizadas na an¶a lise sint¶atica da
senten»ca acima podem ser formalizadas como se segue:

< sentenca >!< sujeito >< predicado >


< sujeito >!< sintagma nominal >
< predicado >!< verbo >< sintagma nominal >
< sintagma nominal >!< artigo >< substantivo >< adjetivo >
< sintagma nominal >!< artigo >< adjetivo >< substantivo >
< verbo >! pintava
< artigo >! o
< substantivo >! menino
< substantivo >! quadro
< adjetivo >! louco
< adjetivo >! lindo

Estas regras indicam que os elementos µa esquerda da seta podem ser


transformados nos elementos µa direita da seta. Os s¶³mbolos < s > in-
dicam categorias gramaticais gen¶ericas e os demais s¶³mbolos s~a o palavras
do portugu^ es.
As regras podem estabelecer que a senten»ca dada ¶e gramaticalmente
correta, bastando constatar que esta ger¶avel a partir daquelas. Al¶em
disso, estas regras podem ser utilizadas para construir outras senten»cas
corretas do portugu^es como \O menino lindo pintava o quadro louco".
A de¯ni»c~ao seguinte torna precisa a no»c~a o de gram¶a tica como um
sistema formal.

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 §¤ ;

3. A ¶ a rio fSg, sendo S 2 N , S ¶


e o conjunto unit¶ e o s¶³mbolo de
partida;

4. R ¶e um conjunto de rela»c~ a rias em L, chamadas de regras


oes bin¶
de produ»c~
ao.

De¯ni» ao 9.2.4 Seja G =< §; L; A; R > uma gram¶


c~ atica, x; y 2 L.
Dizemos que:

a vel em G a partir de x, o que ¶e denotado


1. y ¶e diretamente deriv¶
por x )G y, se e somente se

x = x 1®x 2 e y = x1 ¯x 2 e ® ! ¯ 2 R

2. y ¶ a vel em G a partir de x, o que ¶e denotado por x )¤G y,


e deriv¶
se e somente se y = x ou existem ¯1 ; ¯2 ; ¢¢ ¢ ; ¯l tais que ¯l = y e
para todo i; 1 · i < l ¯i )G ¯i+1 .

3. A linguagem gerada por G ¶e de¯nida por:

L(G) = fx 2 (§ ¡ N )¤ jS )¤G xg

A linguagem formal gerada por G ¶ e o conjunto de teoremas de G


contendo apenas s¶³mbolos terminais de G.

Uma gram¶ atica pode ser considerada como SP P, cujas regras de


ao da forma ® ! ¯ s~
produ»c~ a o representadas como 1 ® 2 ! 1 ¯ 2 .

Exemplo 9.2.3 Seja a gram¶ a tica G com N = fSg, T = fa; b;cg e


regras R = fS ! aSa; S ! bSb;S ! cg. Ent~ao ¶
e f¶
acil veri¯car que

L(G ) = fc;aca;aacaa; bcb; bacab; bbcbb; ¢ ¢ ¢g

.
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 linguagem L(G) consiste das cadeias em T ¤ ¡ f¤g com mesmo n¶


umero
de s¶³mbolos a e b.

A gram¶ a tica do exemplo 9.2.4 tamb¶em ¶e do tipo 2. Naturalmente as


gram¶a ticas do tipo 3 s~ a o do tipo 2, 1 e 0; as do tipo 2 s~ao tamb¶em 1 e
0 e as do tipo 1 s~ a o tamb¶ em 0.

Tipo 3 Toda regra de produ»c~a o ¶e de uma das formas abaixo:

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.

a tica G com N = fS; A; Bg e T = f0; 1g e


Exemplo 9.2.7 Seja a gram¶
8 9
>
> S ! 0A
1: 6: B ! 1B >
>
>
> >
>
> S ! 1B
< 2: 7: B!1 >
=
R= 3: A ! 0A 8: B!0
>
> >
>
>
> 4: A ! 0S 9: S!0 >
>
>
: >
;
5: A ! 1B

@@R ² ¯ ² ¯fa; bg
± ° ©* ± °
S a - A
a© © ©¡a
© ©²© ¡ª¯
²? ©¯©© © b Fl ²? ¯
b © © fbg
± -j°
±p
B ©¼
± °
Tp°
ª
fag ¸

Figura 9.2: Aut^o mato ¯nito

Existe uma caracteriza»c~a o sint¶a tica do poder gerativo e representa-


cional com respeito ao tipo de linguagem gerada, e uma correspond^encia
efetiva entre tais gram¶a ticas e certos sistemas formais conhecidos como
reconhecedores. Os reconhecedores s~a o sistemas de valida»c~ ao: n~ao pro-
duzem sa¶³das. Em geral, admitem certos estados iniciais e quando param
¶e veri¯cado em que estado ¯nal se encontram. Em geral possuem ape-
nas dois estados ¯nais aceita»c~
ao e rejei»c~ao. No entanto, existem sistemas
que possuem um n¶ umero ilimitado de estados ¯nais.
9.2. Tipos de sistemas formais 209

Exemplo 9.2.8 A gram¶


a tica tipo 3 com

§ = fa; b; S; A; Bg
N = fS; A; Bg
A = fSg
R = fS ! aA; S ! bB; A ! bB; B ! aA; A ! ag

tem como reconhecedor o aut^ o mato ¯nito da ¯gura 9.2. O estado S ¶ eo


estado inicial e o estado F ¶
e o estado ¯nal. Dada uma palavra, digamos
ababa esta ¶e lida da esquerda para a direita, s¶³mbolo a s¶³mbolo. Quando
l^
e a a m¶a quina vai para o estado A, l^e b vai para o estado B, l^ e a vai
para o estado A, l^e b vai para B e ¯nalmente l^ e a e termina no estado
A. T ¶e uma armadilha.

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~

Sistema f ormal gerador: Gram¶ a ticas tipo 2


Sistema f ormal rec onhe cedor: PDA's

Linguagens tipo 3
Pode r de representa» a o: Linguagens regulares
c~

Sistema f ormal gerador: Gram¶ a ticas tipo 3


Sistema f ormal rec onhe cedor: FA's

Figura 9.3: Hierarquia de Chomsky

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

aut^omatos ¯nitos n~a o ser¶


a feito neste livro, mas eles surgem naturalmen-
te a partir das regras de infer^encia das gram¶a ticas tipo 3. A organiza»c~a o
das linguagens atrav¶ es desta caracteriza»c~a o sint¶atica ¶e a chamada Hie-
rarquia de Chomsky, que apresentamos esquematicamente pela ¯gura
9.3.

9.2.3 Aritm¶etica rudimentar


De¯ni»
c~
ao 9.2.5 De¯nimos o sistema formal da aritm¶
etica rudimentar
como
R =< §R; L R ;AR ; RR >
onde
e o alfabeto f0;0 ;=g;
1. §R ¶
2. L R ¶
e a linguagem constitu¶³da de f¶
ormulas, de¯nidas como
(a) 0 ¶e um termo;
(b) Se x e¶ um termo, ent~ao x0 ¶e um termo;
(c) Se x e y s~
a o termos, ent~
ao x = y ¶e uma f¶
ormula;
3. AR ¶e o conjunto f0 = 0g;
0 0
4. RR ¶ e o conjunto fx = y ! x = y g; escrevemos tamb¶em esta
unica regra de infer^
¶ encia na forma
x =y
0 0
x =y
¶ f¶
E a cil ver que os u¶nicos teoremas de R s~
a o as f¶
o rmulas
0 = 0; 00 = 00 ; 000 = 000 ;0 000 = 0000 ;¢ ¢ ¢
O sistema R ¶
e bastante simples e a ¶unica opera»c~ao extra-sistema
formal ¶ ao de 0 µ
e de a¯xa»c~ a direita de suas palavras. Os termos da
linguagem LR podem ser de¯nidos por uma gram¶a tica regular com regras
T !0
T ! 0V
V !0
V !0 V
o rmulas pela regra S ! T = T .
e as f¶
9.2. Tipos de sistemas formais 211

9.2.4 Sistema formal proposicional(SF P )


De¯ni»c~ao 9.2.6 O sistema formal proposicional < §P ; LP ; AP ; RP >
e de¯nido da seguinte maneira 2 :

e o alfabeto fp iji ¸ 1g [ f);:; (; )g;


1. §P ¶

2. L P ] E¶ uma linguagem consistindo de f¶


o rmulas, de¯nidas pelos
crit¶erios

(a) para todo i, p i ¶


e uma f¶
ormula;
(b) se ® ¶e uma f¶ a o :® ¶e uma f¶
o rmula ent~ o rmula;
(c) se ® e ¯ s~
ao f¶ ao (® ) ¯) ¶
o rmulas ent~ e uma f¶
o rmula;
(d) as u
¶ nicas f¶
o rmulas s~
a o as express~
oes satisfazendo os crit¶
erios
1; 2 e 3 acima;

3. AP ¶
e o conjunto dos seguintes axiomas

Ax1 (® ) (¯ ) ®))
Ax2 ((® ) (¯ ) ± )) ) ((® ) ¯) ) (® ) ±)))
Ax3 ((:® ) :¯) ) (¯ ) ®))

4. R P ¶e o conjunto de duas regras de infer^


encia
®; (® ) ¯) ®
MP : e S UBS : ¯
¯ ®±

onde ®¯± signi¯ca a substitui»c ~


ao de todas as ocorr^
encias de uma
vari¶
a vel sint¶
atica ± em ® por ¯, que pode ser uma express~ao com-
posta representando f¶ ormulas do sistema formal.

Exemplo 9.2.9 Exemplos de dedu»c~


o es:
d1 Dedu»c~ao do teorema (® ) ((¯ ) ±) ) ®))

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

d2 Dedu»c ~ao do teorema ® ) ®


1: ((® ) (¯ ) ±)) ) ((® ) ¯ ) ) (® ) ±))) (Ax2)
2: ((® ) (¯ ) ®)) ) ((® ) ¯) ) (® ) ®))) (De 1: por SU BS)
3: (® ) (¯ ) ®) (Ax1)
4: ((® ) ¯) ) (® ) ®))) (De 2: e 3 por M P)
5: ((® ) (¯ ) ®)) ) (® ) ®))) (De 4 por SU BS)
6: (® ) ®) (De 3 e 5 por M P )

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))

n~ao seria adequada, pois tornaria a f¶ormula p1 ) (p 2 ) p 3 )) em uma


inst^
a ncia v¶
alida de axioma, o que n~a o ¶e o caso pelo nosso entendimento
9.2. Tipos de sistemas formais 213

informal do uso das vari¶a vels sint¶aticas. Convidamos o leitor a tentar


de¯nir o conjunto de axiomas do SF P de modo a satisfazer µa de¯ni»c~ao
informal original. Talvez o leitor n~ao tenha di¯culdades em identi¯car
a express~
ao

((p1 ) p2 ) ) ((p3 ) (p 1 ) p 2 )) ) (p 1 ) p 2 )))

como uma inst^ ancia do axioma (® ) (¯ ) ®)), mas poder¶a imaginar


uma cadeia bastante mais complexa na linguagem do SF P e as di¯cul-
dades para identi¯c¶ a -la como sendo uma inst^a ncia de um dos axiomas
do S FP .
A discuss~
a o acima pode ser agravada com respeito µa maneira como
foram apresentadas as regras de infer^encia e µa sua aplica»c~ao efetiva na
dedu»c~
a o de um teorema. Uma maneira de resolver tais problemas ¶e
construir um sistema formal mais abrangente.

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

Os teoremas deste sistema formal s~


ao de tr^
es tipos:
214 Cap¶³tulo 9. Sistemas Formais

fi Se ® representa uma letra proposicional, ent~ a o ®1 representa uma


letra proposicional, assim as letras proposicionais ser~
ao represen-
tadas por p; p1; p11; p111; ¢ ¢ ¢.
F1 Se ® representa uma letra proposicional, ent~
ao ® ¶e uma f¶
o rmula.
F2 Se ® ¶
e uma f¶ ao :® ¶
ormula ent~ e uma f¶
o rmula.

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 .

Vemos, assim, que este sistema formal (devidamente interpretado) ¶


e
um sistema formal mais amplo que SF P, e inclui aquele.

9.2.5 Sistemas formais modi¯cados


Todos os exemplos de sistemas formais apresentados t^em por objetivo
a gera»c~
ao de teoremas, tais sistemas formais s~ao ditos serem geradores,
estes sistemas n~ ao recebem entradas, os axiomas s~a o partes integrantes
dos sistemas formais.
Podemos imaginar sistemas que possuem partes ¯xas, como na de-
¯ni»c~
ao de sistemas formais, por¶em s~ao modi¯cados pela introdu»c~ao de
novos axiomas que s~ a o hip¶
oteses referentes a um certo estado de coisas
ou condi»c~o es de contorno. Assim dado um sistema formal
< §; L; A; R >
e um conjunto de palavras ¡ µ L podemos obter um novo sistema formal
< §; L; A [ ¡; R >
os teoremas de tais sistemas formais s~a o obtidos por dedu»c~ao que partem
do conjunto ampliado de axiomas A [ ¡. Sistemas deste tipo s~a o ditos
transdutores. Note que, dado um sistema formal com uma linguagem in-
¯nita L, podemos ter uma in¯nidade de sistemas formais pelo acr¶escimo
de in¯nitos diferentes ¡'s.

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.

Exemplo 9.2.11 Seja o sistema proposicional P e seja

¡ = f(p 1 ) (p2 ) p3 )); p1 ; p2 g

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

2. Construa um sistema de produ»c~a o de Post P com 3 s¶³mbolos ter-


minais que:

(a) dada uma cadeia qualquer, produza a cadeia reversa (como


por exemplo abc )¤P cba);
(b) L(P) = fap b2p g, p ¸ 0.

3. Mostre que para o SP P do exemplo 9.2.2 sucn )¤ n + 1.

4. De¯na o SP P similar ao do exemplo 9.2.2 para o alfabeto f2;¦;~g.


9.4. Exerc¶³cios 217

5. Determine a linguagem gerada pela gram¶atica do exemplo 9.2.7.

6. Seja o sistema formal proposicional F =< §;L; A;R > de¯nido


na se»c~
ao 9.2.4.

(a) Mostre que em qualquer f¶ormula ® de L o n¶umero de '(' ¶e


igual ao n¶
umero de ')'.
ao sub : L ! 2L que associa a cada f¶ormula ® o con-
(b) A fun»c~
junto sub(®) de subf¶o rmulas de ® ¶e de¯nida por:

i: sub(p i) = fpig
ii: sub(:®) = sub(®) [ f:®g
iii: sub((® ) ¯)) = sub(®) [ sub(¯) [ f(® ) ¯)g

Prove que, se uma f¶o rmula tem n conectivos () ou :), ent~ao


sub(®) tem no m¶aximo 2n + 1 f¶ormulas.
218 Cap¶³tulo 9. Sistemas Formais
Cap¶³tulo 10

Sistemas Formais
Elementares

Os sistemas formais elementares (SFE's) foram criados por Smullyan


[Smu61] em 1961, como parte de sua tese de doutorado sobre a teo-
ria dos sistemas formais. Estes sistemas formais s~ao importantes para
dar uma fundamenta»c~ ao µas linguagens de programa»c~ao em l¶ogica (PRO-
LOG) independentemente da l¶ogica cl¶a ssica tradicional.
No cap¶³tulo 9 vimos que os sistemas formais possuem regras de
infer^encia cuja aplicabilidade depende de opera»c~o es n~a o inclu¶³das na
de¯ni»c~a o destes sistemas. Por exemplo, no sistema formal proposi-
cional os axiomas cont^em meta-vari¶a veis ®; ¯;¢ ¢ ¢, etc. que devem ser
uniformemente substitu¶³das por f¶ormulas no alfabeto de letras proposi-
cionais p1 ; p2 ; ¢ ¢¢ e o conectivo l¶ogico ). Tal opera»c~a o de substitui»c~ao
e bastante complexa, principalmente porque a de¯ni»c~ao de f¶ormula ¶e

feita atrav¶ es de um outro sistema formal. A aplica»c~ao da regra de in-
fer^encia de Modus Ponens depende da determina»c~ao do antecedente a
ser eliminado de uma f¶ormula, outra opera»c~a o complicada. Nos SFE's
substitui»c~a o e Modus Ponens s~a o regras de infer^encia de aplicabilidade
imediata, da¶³ a denomina»c~a o Elementar.
Ap¶o s a de¯ni»c~ ao de SFE e da exempli¯ca»c~a o de sua aplica»c~ao, trata-
mos do conceito de representabilidade formal, delineando algumas pro-
priedades alg¶ ebricas importantes. Na se»c~ao 10.5 mostramos que as
fun»c~oes parcialmente recursivas s~ao represent¶a veis, incluindo SFE's no
ciclo de evid^ encias para a tese de Church. Na se»c~a o 10.6 apresentamos

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.

Exemplo 10.1.1 (Smullyan [Smu61])


Seja C o alfabeto consistindo dos s¶³mbolos } e ~. O conjunto S de
todas as seqÄ
u^encias em C em que n~ ao existam ocorr^encias consecutivas
de } ou ~ pode ser de¯nido pelos seguintes axiomas :

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

Vamos converter o sistema informal acima em um sistema formal.


As frases do tipo \x ¶e um elemento de S " s~ a o substitu¶³das por x 2 S
ou S (x) (l^e-se S cont¶ em x); as frases do tipo \se (: : :) ent~ao (: : :)" s~
ao
substitu¶³das por \(: : :) ! (: : :)". Temos ent~
ao :

Axioma 1 ¡ S(})
Axioma 2 ¡ S(~)
Axioma 3 ¡ S(}~)
Axioma 4 ¡ S(~})
Axioma 5 ¡ S(x}) ! S (x}~)
Axioma 6 ¡ S(x~) ! S (x~})

Em vez do Axioma 7, damos uma de¯ni»c~


a o precisa de deriv¶a vel:
10.1. De¯ni»
c~
ao dos SFE's 221

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

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.

Podemos agora de¯nir nosso conjunto S como um conjunto de todas


u^encias X (em } e ~) de modo que S(X) seja deriv¶
as seqÄ avel dos axio-
mas de (1) a (6), usando-se R 1 e R2 . Neste sistema n¶ o s dizemos que o
s¶³mbolo S representa o conjunto de todas as seqÄ
u^encias com ocorr^encias
alternadas de } e ~.

Temos acima um exemplo de sistema formal elementar. Os s¶³mbolos


} e ~ s~
a o chamados de constantes; x ¶e chamado de vari¶avel. O s¶³mbolo
! ¶e chamado de acarreta e a letra S ¶e um exemplo de predicado (os
predicados s~ao usados para representar conjuntos e rela»c~o es).

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:

(a) P E = fP1k 1 ; P2k2 ; ¢ ¢¢ ; Pnkn g ¶e o conjunto de s¶³mbolos predica-


tivos ou predicados, cada um associado a um natural ki > 0,
chamado aridade do predicado;
(b) VE = fx1 ; x2 ;¢ ¢ ¢g ¶e o conjunto de vari¶
aveis;
(c) CE = fc1; c2 ;: : : ; cng, ¶
e o conjunto de constantes.

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) O conjunto T rm(E ) de termos ¶


e de¯nido indutivamente por:
avel v 2 VE e uma constante
i. a cadeia vazia 0, uma vari¶
c 2 CE s~
a o termos;
e um termo, v 2 VE e c 2 CE ent~
ii. se t ¶ ao vt e ct s~
ao
termos;
iii. somente ¶e um termo os elementos obtidos por 2(a)i e
2(a)ii acima.
(b) O conjunto Form(E) das f¶o rmulas ¶
e de¯nido indutivamente
por:
i. se P k 2 P E ¶ e um predicado e t1 ;¢ ¢ ¢ ; tk 2 Trm(E) s~ ao
termos, ent~ ao P(t1 ; ¢ ¢¢ ; tk ) ¶
e uma f¶
o rmula (f¶
o rmula at^
o-
mica);
ii. se F ¶e uma f¶ormula at^ omica e f2 ¶e uma f¶ o rmula ent~ao e
F ! f2 ¶ e uma f¶ ormula;
iii. somente ¶ e uma f¶ ormula os elementos obtidos por 2(b)i e
2(b)ii acima.

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:

SB ¶e a regra de substitui»c~ ao de uma vari¶ a vel por um termo sem


vari¶aveis, uniformemente, em uma f¶ o rmula. A m¶ ultipla subs-
a o de x1 por t1 , x2 por t2 , ¢ ¢ ¢ xn por tn ¶e denotada por:
titui»c~
t1; t2 ; ¢¢ ¢ ; tn
x1 ; x2 ; ¢ ¢¢ ; xn

MP e¶ a regra de Modus Ponens, que a partir de uma f¶ormula


at^ ormula F ! ®, gera a f¶
o mica F e de uma f¶ ormula ®.

No sistema do exemplo 10.1.1, S ¶e um predicado, x ¶e uma vari¶a vel,


}¶ e uma constante, x} ¶e um termo, S(x}~) ¶e uma f¶ormula at^omica e
S(x}) ! S (x}~) ¶ e uma f¶ ormula.
A no»c~
ao de dedu»c~
a o em um SFE ¶e a mesma da de¯ni»c~a o 9.1.2, para
sistemas formais em geral.
10.2. Fun»
c~
oes Aritm¶
eticas 223

Exemplo 10.1.2 Dado o SFE com os seguintes axiomas:

Axioma 1 ¡ N (0)
Axioma 2 ¡ N (x) ! N (x})
Axioma 3 ¡ N (x) ! N (x±)

Temos a seguinte dedu»c~


ao de N (±):

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 ± ¦ ±¦ . .

Podemos observar na tabela acima, que o sucessor de um n¶


u mero ¶e
calculado da seguinte maneira:

e ±;
1. o sucessor de 0 ¶

2. se a representa»c~ u mero termina por ± basta mudar este


ao de um n¶
u¶ ltimo ± por ¦;

ao de um n¶umero termina por ¦ devemos mud¶a-lo


3. se a representa»c~
por ± e determinar o sucessor do n¶umero representado pela cadeia
que antecede o ¦.
224 Cap¶³tulo 10. Sistemas Formais Elementares

Por exemplo, para calcular o sucessor de ¦¦ devemos usar a regra 3,


a o termina com ¦. O resultado ¶e obtido substituindo
pois sua representa»c~
ultimo ¦ por ± e determinando o sucessor da cadeia que antecede ¦.
o ¶
Aplicando-se novamente a regra 3, substitu¶³mos ¦ por ± e determinamos
o sucessor de 0 que pela regra 1 ¶e ±. Assim, o sucessor de ¦¦ ¶e ± ± ±.

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¶

1: suc(x;y) ! suc(x¦; y±) (Suc3)


±;¦
2: suc(±; ¦) ! suc(±¦;¦±) (1 ; SB : x;y )

onde o passo 1 ¶e o axioma S uc3 e o 2 ¶e o resultado da substitui»c~a o de


x por ± e de y por ¦. Para continuarmos, temos que deduzir suc(±; ¦).
Esta dedu»c~
ao ¶
e obtida diretamente do axioma S uc2 pela substitui»c~a o de
x por 0:
3: suc(x±; x¦) (S uc2)
4: suc(±; ¦) (3 ; S B : 0x )

A dedu»c~
ao prossegue com:

3: suc(±¦; ¦±) (4 ; 2 ; M P )

que ¶e o nosso goal na dedu»c~


ao principal.
A ¯gura 10.1 mostra, em forma gr¶a¯ca (¶arvore invertida), a dedu»c~a o
realizada. As folhas desta ¶
arvore, nodos 1 e 3 s~ao justi¯cadas por repre-
sentarem os axiomas Suc3 e S uc2, respectivamente. Note que os ramos
descendentes convergentes correspondem µa aplica»c~a o da regra MP, e os
demais ramos correspondem µa regra SB.
10.2. Fun»
c~
oes Aritm¶
eticas 225

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

Os axiomas do SFE para a soma s~a o os axiomas do sucessor acrescidos


de:

+1: +(x; 0; x) (representa (i))


+2: suc(y; u) ! +(x; y ; v) ! suc(v; w) ! +(x; u; w) (representa (ii))

a o abaixo mostra que +(±¦; ¦; ¦¦), isto ¶e 4 (±¦)+2 (¦) = 6 (¦¦).


A deriva»c~

1: suc(y; u) ! +(x; y; v) ! suc(v; w) ! +(x; u; w) (+2)


±¦;¦;¦¦
2: suc(y; ¦) ! +(±¦; y; v) ! suc(v ; ¦¦) ! +(±¦; ¦; ¦¦) (1; SB : x;u;w )
3: suc(x±; x¦) (Suc2)
4: suc(±; ¦) (3; SB : 0x )
5: suc(±; ¦) ! +(±¦; ±; v) ! suc(v; ¦¦) ! +(±¦; ¦; ¦¦) (2; SB : ±y )
6: +(±¦; ±; v ) ! suc(v ; ¦¦) ! +(±¦; ¦; ¦¦) (4; 5; M P )
7: suc(y; ±) ! +(±¦; y; v) ! suc(v ; w) ! +(±¦; ±; w) (1; SB : ±¦;±
x;u
)
8: suc(0; ±) (Suc1)
9: suc(0; ±) ! +(±¦; 0; v) ! suc(v; w) ! +(±¦; ±; w) (7; SB : 0y )
10: +(±¦; 0; v ) ! suc(v ; w) ! +(±¦; ±; w) (8; 9; M P )
11: +(x; 0; x) (+1)
12: +(±¦; 0; ±¦) (11; SB : ±¦x
)
13: +(±¦; 0; ±¦) ! suc(±¦; w) ! +(±¦; ± ; w) (10; SB : ±¦v
)
14: suc(±¦; w) ! +(±¦; ±; w) (12; 13; M P )
15: suc(x; y) ! suc(x¦; y±) (Suc3)
16: suc(±; ¦) ! suc(±¦; ¦±) (15; SB : ±;¦
x;y
)
226 Cap¶³tulo 10. Sistemas Formais Elementares

17: suc(±¦; ¦±) (4; 16; M P )


18: suc(±¦; ¦±) ! +(±¦; ±; ¦±) (14; SB : ¦±w
)
19: +(±¦; ±; ¦±) (17; 18; M P )
20: +(±¦; ±; ¦±) ! suc(¦±; ¦¦) ! +(±¦; ¦; ¦¦) (6; SB : ¦±
v )
21: suc(¦±; ¦¦) ! +(±¦; ¦; ¦¦) (19; 20; M P )
22: suc(¦±; ¦¦) (3; SB : ¦x )
23: +(±¦; ¦; ¦¦) (22; 21; M P )

A ¯gura 10.2 representa a deriva»c~a o apresentada. Observe que dos


nodos 1 e 3 emergem dois ramos produzindo quatro inst^a ncias diferentes
de f¶
ormulas. Os nodos circunscritos s~a o nodos de espera, ou seja, o ramo
descendente a que pertencem recebe informa»c~o es de outros ramos para
prosseguirem atrav¶es de instancia»c~o es adequadas (uso de SB) utilizadas
como premissas da regra MP.
Analisamos detalhadamente a deriva»c~ao +(±¦; ¦;¦¦), para demons-
trar a din^
a mica da escolha das regras e dos axiomas a serem utilizados
a cada passo. Inicialmente
1 suc(y ; u) ! +(x; y; v ) ! suc(v; w) ! +(x; u; w) (+2)
±¦;¦;¦¦
2 suc(y ; ¦) ! +(±¦; y ; v) ! suc(v; ¦¦) ! +(±¦; ¦; ¦¦) (1; SB : x;u;w )

Temos agora 3 subproblemas:


suc(y; ¦)
sub-problema 1:
sub-problema 2:
+(±¦; y;v)
suc(v; ¦¦)
sub-problema 3:
Existem v¶arios crit¶erios para a escolha do sub-problema que devemos
atacar primeiro. Um deles ¶e come»car pelo mais µa esquerda, outro ¶e
come»car pelo que tem o menor n¶ umero de vari¶aveis. Na f¶ormula 2, o
primeiro satisfaz ambos crit¶erios.
3: suc(x±; x¦) (Suc2)
0
4: suc(±; ¦) (3; SB : x
)
A f¶
ormula 4 nos d¶a uma indica»c~a o do valor de y em 2, assim o pr¶o ximo
passo da dedu»c~ e substituir em 2, x por ±:
a o principal ¶
5: suc(±; ¦) ! +(±¦; ±; v) ! suc(v; ¦¦) ! +(±¦; ¦; ¦¦) (2; SB : ±y )
6: +(±¦; ±; v) ! suc(v ; ¦¦) ! +(±¦; ¦; ¦¦) (4; 5; MP )
Note que a lista de sub-problemas inicial foi modi¯cada pela substitui»c~a o
±.Agora, temos a nova lista modi¯cada
y
(
sub-problema 2: +(±¦; ±; v)
(a)
sub-problema 3: suc(v;¦¦)
10.2. Fun»
c~
oes Aritm¶
eticas 227

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

¶ rvore de deriva»c~ao para +(±¦; ¦; ¦¦)


Figura 10.2: A

Os sub-problemas resultantes t^em o mesmo n¶umero de vari¶a veis.


Podemos escolher o primeiro, ou seja, o sub-problema 2 modi¯cado:
+(±¦; ±; v):

1 suc(y; u) ! +(x; y; v) ! suc(v; w) ! +(x; u; w) (+2)


±¦;±
7 suc(y; ±) ! +(±¦; y; v) ! suc(v ; w) ! +(±¦; ±; w) (1; SB : x;u
)

Assim, temos novos sub-problemas

sub-problema 1': suc(y;±)


sub-problema 2': +(±¦; y; v)
sub-problema 3': suc(v; w)

para o problema +(±¦; ±;w ) que difere do sub-problema 2 apenas pelo


nome da vari¶
a vel. Esta diferen»ca desaparece se realizarmos uma variante
228 Cap¶³tulo 10. Sistemas Formais Elementares

w;v
alfab¶
etica atrav¶es da substitui»c~ao v;w :

sub-problema 1": suc(y; ±)


sub-problema 2": +(±¦;y; w)
sub-problema 3": suc(w; v)

Assim a lista de sub-problemas (a) pode ser substitu¶³da pela lista:


8
>
> sub-problema 1: suc(y; ±)
>
<
sub-problema 2: +(±¦; y; w)
(b)
>
> sub-problema 3: suc(w ;v)
>
:
sub-problema 4: suc(v; ¦¦)

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; ¦¦)

O sub-problema 2 tamb¶ em ¶e imediato a partir do axioma +1, pela subs-


titui»c~ ±¦
a o w . A lista resultante ¶e:
(
sub-problema 3: suc(±¦; v)
(d)
sub-problema 4: suc(v; ¦¦)

Para o sub-problema 3 tem-se a dedu»c~ao:

15: suc(x; y) ! suc(x¦; y ±) (Suc3)


±;¦
16: suc(±; ¦) ! suc(±¦; ¦±) (15; SB : x;y
)

com sub-problema suc(±; ¦). Como anteriormente, substitu¶³mos a lista


(d) pela lista:
(
sub-problema 1: suc(±; ¦)
(e)
sub-problema 2: suc(¦±; ¦¦)

Os sub-problemas (1) e (2) s~a o obtidos a partir do axioma Suc2 pelas


o es 0x e ¦x , respectivamente. Assim, todos os sub-problemas
substitui»c~
foram resolvidos.
10.3. SFE's e Gram¶
aticas 229

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)

10.3 SFE's e Gram¶


aticas
Gram¶ aticas formais foram introduzidas na se»c~ao 9.2.2, onde vimos que
as gram¶ aticas s~
a o geradores. Muito embora o uso das gram¶aticas seja
extremamente difundido, ¶e extremamente dif¶³cil construir analisadores
sint¶
aticos para as linguagens que elas geram, principalmente para as
linguagens livres do contexto em diante. Recentemente PROLOG tem
sido usado para representar gram¶aticas. SFE's podem ser utilizados de
modo similar.
Exemplo 10.3.1 Seja a gram¶
atica:
< SN > ¡! < NP >
< SN > ¡! < Det >< Subst >
< SV > ¡! < SN >< V erb >< SN >
< Subst > ¡! homem j mul her
< V erb > ¡! ama
< NP > ¡! Ana j P edro
< Det > ¡! o ja
que representa um pequeno fragmento do Portugu^es. Podemos formar
a partir desta gram¶
a tica um SFE:
G:1 < NP > (x) !< SN > (x)
G:2 < Det > (x) !< Subst > (y) !< SN > (x y )
G:3 < SN > (x) !< V erb > (y) !< SN > (z) !< SV > (x y z)
G:4 < Subst > (homem)
G:5 < Subst > (mulher)
G:6 < V erb > (ama)
G:7 < NP > (Ana)
G:8 < NP > (P edro)
G:9 < Det > (o)
G:10 < Det > (a)
230 Cap¶³tulo 10. Sistemas Formais Elementares

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)

Neste SFE podemos deduzir < S V > (P edro ama Ana):

1: < SN > (x) !<V erb> (y) !< SN > (z) !


< SV > (x y z) (G:3)
2: < SN > (P edro) !< V erb > (ama) !
< SN > (Ana) !<SV > (Pedro ama Ana) (1; SB : P edro;ama;Ana
x;y;z
)
3: < NP > (x) !< SN > (x) (G:1)
4: < NP > (P edro) !< SN > (P edro) (3; SB : P edro
x )
5: < NP > (P edro) (G:8)
6: < SN > (P edro) (5; 4; M P)
7: < V erb > (ama) !< SN > (Ana) !
< SV > (P edro ama Ana) (6; 2; M P)
8: < V erb > (ama) (G:6)
9: < SN > (Ana) !<SV > (Pedro ama Ana) (8; 7; M P)
10: < NP > (Ana) !<SN > (Ana) (3; SB : Anax )
11: < NP > (Ana) (G:7)
12: < SN > (Ana) (11; 1 0; M P)
13: < SV > (P edro ama Ana) (12; 9 ; M P)

Esta deriva»c~
ao ¶
e exibida gra¯camente na ¯gura 10.3.
10.4. Representabilidade formal 231

10.4 Representabilidade formal


O conceito de representabilidade de um conjunto ou rela»c~ao est¶a ligado
a exist^
µ encia de um sistema formal capaz de gerar refer^encias aos seus
elementos. Este mesmo conceito j¶a est¶a impl¶³cito quando apresentamos
gram¶a ticas no cap¶³tulo 9, onde a refer^encia aos elementos ¶e a pr¶o pria
linguagem gerada. Vejamos as de¯ni»c~o es que determinam este conceito
para os sistemas formais elementares.

De¯ni» c~ao 10.4.1 Seja E =< §; L; A; R > um S FE, P 2 P E µ § um


predicado de aridade n > 0 e um conjunto W µ C¤ n , onde C µ § ¶
e o
alfabeto de constantes de E .

1. Dizemos que P representa formalmente W em E se e somente se


para todo < a1; a2 ;¢ ¢ ¢ ; an >2 C ¤n

< a1; a2 ; ¢¢ ¢ ; an >2 W se e somente se `E P (a1; a2 ;¢ ¢ ¢ ; an)

2. Dizemos que W ¶e formalmente represent¶a vel em C se e somente


se, para algum P 2 P E , P representa formalmente W .

3. Dizemos que W ¶ e solucion¶avel em C se e somente se W e C¤ n ¡ W


s~
a o formalmente represent¶a veis em C .

4. Dizemos que E representa formalmente W em C¤ se e somente se


existe um predicado P 2 PE tal que P representa formalmente W .

Em suma, uma rela»c~a o W ¶e representada formalmente por um pre-


dicado P em um SFE se e somente se, a partir dos axiomas do SFE, ¶e
poss¶³vel derivar P (a1 ; a2 ; ¢ ¢ ¢; an ), para toda n-tupla < a1 ; a2; ¢ ¢ ¢ ; an >
de W .

Exemplo 10.4.1 O conjunto dos n¶ umeros pares ¶


e formalmente repre-
a vel em f1g. Podemos considerar um S FE com P E = fP g e os
sent¶
seguintes axiomas:
P (11)
P (x) ! P (x11)
232 Cap¶³tulo 10. Sistemas Formais Elementares

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.

De¯ni» ao 10.4.2 Seja C um conjunto de constantes e f : C ¤n ! C¤ m .


c~
Dizemos que a fun»c~ a o f ¶e formalmente represent¶ avel em C se e somente
ao f (x1 ; ¢ ¢ ¢; x n) =< y1 ;¢ ¢ ¢ ; ym > for formalmente represent¶
se a rela»c~ a-
vel em C , o que representamos por Pf (x 1; ¢ ¢ ¢ ; xn ;y 1 ;¢ ¢ ¢ ; ym ).

10.4.1 Propriedades alg¶


ebricas
Examinamos como as opera»c~ o es sobre conjuntos e rela»c~oes se comportam
com respeito µ
a representabilidade formal.

De¯ni» ao 10.4.3 Sejam E1 e E2 sistemas formais elementares sobre


c~
um alfabeto C comum.

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

AE 1 [E 2 = AE1 [ AE2 e PE 1 [E2 = P E1 [ P E2

3. Dizemos que E1 e E2 s~a o equivalentes, denotado por E1 ´ E2 , se e


somente se E1 e E2 representam os mesmos conjuntos e rela»c~ oes.

Tendo em vista que o suprimento de s¶³mbolos predicativos ¶e in¯nito,


podemos sempre renomear os s¶³mbolos predicativos de um SFE E1 para
a-lo independente de outro SFE E2. Portanto, temos o seguinte
torn¶
corol¶
ario.

Corol¶ ario 10.4.1 Sejam E1 e E2 sistemas formais elementares sobre


um alfabeto comum C. Ent~ a o existem SF E's independentes E 0 1 e E0 2
0 0
tais que E 1 ´ E1 e E 2 ´ E2 .
10.4. Representabilidade formal 233

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^

AE1 = fP (a); P(x) ! P(xa)g

e seja E2 , tal que

AE2 = fP (b); P(x) ! P(xb)g

Ent~ao, E1 representa formalmente o conjunto de cadeias aa ¢ ¢ ¢a e E2


representa formalmente o conjunto de cadeias bb ¢ ¢ ¢b. Pela uni~a o E1 [ E2
queremos representar formalmente conjuntos de cadeias aa ¢ ¢¢ a e bb ¢ ¢ ¢ b.
Como E1 e E2 n~ a o s~
ao independentes, obtemos pela uni~ao, cadeias mis-
turadas. Fazendo o renomeamento de P 2 P E2 para Q, temos

AE1 [E 2 = fP (a); P (x) ! P (xa); Q(b); Q(x) ! P (xb)g

Para representar o conjunto da uni~a o e da interce»c~a o das cadeias adi-


cionamos mais um axioma, como mostra o lema a seguir.

Lema 10.4.1 Sejam A e B conjuntos formalmente represent¶


a veis em
C . Ent~
ao

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.

1. Seja o SF E E obtido de E1 [ E2 pelo acr¶escimo dos axiomas

PA (x) ! PA[B (x) e PB (x) ! PA[B (x)

a o E representa formalmente A [ B.
ent~

2. Seja o SF E E obtido de E1 [ E2 pelo acr¶escimo do axioma

PA (x) ! PB (x) ! PA\B (x)

a o E representa formalmente A \ B.
ent~ 2
234 Cap¶³tulo 10. Sistemas Formais Elementares

A pr¶ oxima opera»c~


ao sobre conjuntos n~ao foi de¯nida no cap¶³tulo de
no»c~
o es preliminares. Ela obt¶em uma proje»c~ao de uma rela»c~a o R, dos
n ¡ 1 primeiros elementos das n-tuplas de R.

De¯ni» ao 10.4.4 Seja C um conjunto de constantes e R µ C ¤n +1 uma


c~
rela»c~ a o existencial de R, denotada por R9 µ C¤n ¶
a o. A quanti¯ca»c~ e
de¯nida por:
R9 = f< x1 ; ¢¢ ¢ ; xn >2 C¤ n+1 j para algum y < x1 ; ¢¢ ¢ ; xn ; y >2 Rg

Lema 10.4.2 Seja C um conjunto de constantes e R µ C¤ n+1 uma re-


la»c~
a o. Se R ¶e formalmente represent¶a vel em C, ent~
ao R9 ¶
e formalmente
represent¶ avel em C.
Demonstra»c~ a o: Seja PR o predicado de um SF E E tal que P R representa
formalmente R. Acrescentando a E o novo predicado PR9 e o axioma
PR(x1 ; x2; ¢ ¢ ¢ ; xn ;y) ! PR 9 (x1 ; x2 ; ¢ ¢ ¢; x n)

obtemos o S FE E 0, tal que PR 9 representa formalmente R. 2

10.5 SFE e Fun»


c~
o es Parcialmente Recursivas
Nesta se»c~ a o, mostramos que todas as fun»c~o es recursivas parciais s~a o
formalmente represent¶ a veis. Assim, inclu¶³mos os sistemas formais ele-
mentares dentro do ciclo de evid^encias para a tese de Church. Para
tal, utilizamos o modelo de fun»c~oes recursivas do cap¶³tulo 3, com as
fun»c~o es iniciais e os funcionais de composi»c~ao, combina»c~ao, expoen-
tiza»c~
a o e repeti»c~
ao.
Lema 10.5.1 (fun» c~ o es ¶ : N ! N , z : N 0 ! N ,
o es iniciais) As fun»c~
¼ : N ! N 0 e s : N ! N s~ a o formalmente represent¶ aveis.
Demonstra»c~a o: Fazemos a prova para f1; 2g µ C. Os n¶ umeros naturais
s~
a o formalmente representados pelo predicado N , com os axiomas
N (0)
N (1)
N (2)
N (x) ! N (y) ! N (xy)
onde 0 ¶e a cadeia vazia. As fun»c~
oes iniciais s~
ao obtidas pela adi»c~
a o de
axiomas.
10.5. SFE e Fun»
c~
o es Parcialmente Recursivas 235

1. Para ¶ temos o axioma N (x) ! P¶ (x; x).

2. Para z temos simplesmente o axioma Pz (0).

3. Para ¼ temos o axioma N (x) ! P¼ (x).

4. Para s temos os seguintes axiomas

Ps(0; 1)
N (x) ! Ps(x1; x2)
N (x) ! N (y) ! Ps(x;y) ! Ps (x2; y1)

Lema 10.5.2 (composi» ao) Sejam f : N s ! N m e g : N n ! N s. A


c~
ao f ± g de f com g, f ± g : N n ! N m , de¯nida por
composi»c~

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.
Demonstra»c~
ao: Sejam Pf e Pg os predicados que representam respecti-
o es f e g em algum SF E E . Ent~
vamente as fun»c~ ao o predicado Pf ±g
formalmente representa f ± g no SF E E 0 , obtido de E pelo acr¶
escimo do
axioma:
Pg (x1 ; ¢ ¢ ¢ ;x n; y 1; ¢ ¢ ¢ ;y s) ! Pf (y 1; ¢ ¢ ¢ ;y s; z1 ; ¢ ¢¢ ; zm )
! Pf ±g (x1 ; ¢ ¢ ¢ ;x n; z1 ; ¢ ¢¢ ; zm )
2

Por exemplo, para representar a fun»c~ao s ± z temos o axioma

Pz (x) ! Ps(x; y) ! Ps±z (y)

Lema 10.5.3 (combina» ao) Sejam f : N n ! N r e g : N m ! N s.


c~
a o f £ g de f com g, f £ g : N n+m ! N r+s, de¯nida por
A combina»c~

f £ g(x1; ¢ ¢ ¢ ; xn ; y1 ¢ ¢ ¢ ym ) =< f (x 1; ¢ ¢ ¢ ; xn);g(y 1; ¢ ¢ ¢ ; ym ) >

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; z1 ; ¢ ¢ ¢; zr ) ! Pg (y1 ; ¢ ¢ ¢ ; ym ; w1 ; ¢ ¢ ¢ ;ws ) !


Pf £g (x1 ; ¢ ¢ ¢; xn ; y1 ; ¢ ¢ ¢; y m ;z 1; ¢ ¢ ¢ ; zr; w1 ;¢ ¢ ¢ ; ws)

Por exemplo, para representar a fun»c~a o s temos o axioma

Ps(x; y) ! P¶(z; w) ! Ps£¶(x; z; y; w)

Lema 10.5.4 (expoentiza» c~ a o f : N n ! N n, ent~


ao) Seja a fun»c~ ao a
# n+1 n
fun»c~
ao f : N ! N , de¯nida por expoentiza»c~
a o por

f # (x1 ; ¢ ¢¢ ; xn ; 0) = < x1; ¢ ¢ ¢ ; xn >


f (x1 ; ¢ ¢¢ ; xn ; y + 1) = f (f # (x1 ; ¢ ¢ ¢; x n; y))
#

e¶ formalmente represent¶ a vel se a fun»c~


a o f for formalmente represent¶
a-
vel.
Demonstra»c~ a o: Seja Pf o predicado que representa a fun»c~ao f em algum
SF E E . Ent~ a o o predicado Pf # formalmente representa f # no SFE
E 0, obtido de E pelo acr¶escimo dos axiomas:

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 )

Por exemplo, a soma de¯nida na se»c~a o 10.2 ¶e de¯nida pela expoen-


tiza»c~
a o do sucessor:

+1: Ps# (x; 0; x)


+2: s(y;u) ! Ps# (x; y; v) ! s(v;w) ! Ps# (x; u; w)
10.6. Aritmetiza»
c~ao de sistemas formais 237

Lema 10.5.5 (repeti» c~ ao f : N n+1 ! N n+1 , ent~


ao) Seja a fun»c~ ao a
ao f r : N n+1 ! N n de¯nida por repeti»c~
fun»c~ a o de f por
8
>
> x01 ¢ ¢ ¢ x0n se e somente se, para algum k ¸ 0;
>
> # 0 0
>
< f (x1 ; ¢ ¢¢ ; xn ; y; k) =< x1 ¢ ¢ ¢ xn ; 1 >
f r (x1 ; ¢ ¢ ¢ ;x n; y) = e para todo l < k;
>
>
>
>
>
= < x001 ¢ ¢ ¢ x00 ; 1 >
f # (x1 ; ¢ ¢¢ ; xn ; y; l) 6
:
ao existe tal k ¸ 0
inde¯nido se n~

e¶ formalmente represent¶ avel se a fun»c~


ao f ¶
e formalmente represent¶
avel.
Demonstra»c~ao: Seja Pf o predicado que representa a fun»c~a o f em algum
S FE E . Ent~a o o predicado Pf r formalmente representa f r no SF E E 0
obtido de E pelo acr¶escimo dos axiomas do lema 10.5.4 e do axioma:

Pf # (x1 ;¢ ¢ ¢ ; xn ; y; x01 ¢ ¢ ¢ x0n; 1) ! Pf r (x1 ; ¢ ¢ ¢ ;x n; y; x01 ¢ ¢ ¢ x0n )

Teorema 10.5.1 Toda fun»c~ a o recursiva f : N n ! N ¶ e formalmente


represent¶
a vel.
Demonstra»c~ ao: E¶ uma conseqÄ
u^encia dos lemas 10.5.1 a 10.5.5. 2

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

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:

1. resto(x;y) = resto da divis~


a o de x por y
238 Cap¶³tulo 10. Sistemas Formais Elementares
(
1 se x ¶
e divisor de y
2. div(x; y) =
0 se x n~ao ¶
e divisor de y

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

6. potp(i; x) = expoente do i-¶esimo n¶


umero primo na decomposi»c~
ao
de x em fatores primos

7. jxj = ordem do maior primo que divide x

Lema 10.6.1 As fun»c~ oes da de¯ni»c~


a o 10.6.1 s~
ao recursivas primitivas.
Demonstra»c~
a o: Deixamos para o leitor. 2

Dado um sistema formal S =< §;L; A;R >, a aritmetiza»c~a o de S ¶e o


processo de constru»c~
a o de fun»c~oes aritm¶eticas que realizem as a»c~o es que
o agente humano executa quando realiza dedu»c~oes. Podemos descrever
as tarefas executadas por este agente da seguinte maneira.

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Ä^

Fase de identi¯ca» c~ao A identi¯ca»c~ao de letras, palavras e seqÄu^encias


de palavras ¶e feita pela de¯ni»c~ao de predicados, ou fun»c~o es booleanas,
que t^
em como argumentos n¶umeros naturais e que decidem se um de-
terminado n¶umero ¶ e um s¶³mbolo, palavra ou seqÄu^encia de palavras.

(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Ä

Exemplo 10.6.1 Seja o sistema formal S 0 =< §; L; A; R >, de¯nido


por
§ = fa; b; Sg
P = §¤
A = fS g
R = ff< ®S ¯; ®¯ > j®; ¯ 2 §¤g;
f< ®S¯; ®bS b¯ > j®; ¯ 2 §¤ g;
f< ®S¯; ®aS a¯ > j®; ¯ 2 §¤gg

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.

(T4 ) simb(x) = igual(x; 1) _ igual(x;3) _ igual(x; 5). Ou seja, x


a o de um s¶³mbolo se x 2 f1;3; 5g.
e a codi¯ca»c~

V jxj
(T5 ) pal(x) = i=0 simb(potp(i; x)). Ou seja, x ¶e a codi¯ca»c~
a o de
uma palavra se todos os expoentes de x s~a o codi¯ca»c~oes de
s¶³mbolos.
Vjxj
(T5 ) seq(x) = i=0 pal(potp(i;x)). Ou seja, x ¶ e a codi¯ca»c~a o de
uma seqÄu^encia se todos os expoentes de x s~
a o codi¯ca»c~
o es de
palavras.
240 Cap¶³tulo 10. Sistemas Formais Elementares

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

Fase ¯nal De¯ne predicados como fun»c~oes booleanas para identi¯car


dedu»c~
oes.
(T7 ) Identi¯ca»
c~ odigos dos axiomas de S
ao dos c¶

(T8 ) Identi¯ca» c~ odigos das conclus~oes em S por regras de in-


ao dos c¶
fer^encia.

(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¶

(T10) Identi¯ca» odigos dos teoremas de S.


c~ao dos c¶

Exemplo 10.6.2 Para o sistema formal S 0 do exemplo 10.6.1:

(T7 ) Neste caso s¶


o temos o axioma S, assim
axi(x) = igual(x; gnp(S)) = igual(x; 2 5)

(T8 ) Temos 3 regras de infer^encia:


r1. f< ®S ¯; ®¯ > j®; ¯ 2 §¤ g - Utilizamos a fun»c~ a o R1 . Se ° ¶ e
obtido de ± pelo uso desta regra ent~ a o ± = ®0®1 ¢ ¢ ¢®k S ®k+1 ¢ ¢ ¢ ®m
e ° = ®0 ®1 ¢ ¢ ¢ ®k ®k+1 ¢¢ ¢ ®m . Logo, se x = gnp(± ) e y = gnp(°)
ent~
ao R1 (x; y) = 1 se e somente se
Qk g ns(® i ) 5 Qm g ns(®i )
x = gnp(±) = ( i=0 pn(i) ):(pn(k + 1) ):( i= k+1 pn(i) )
Qm gns(®i )
y = gnp(°) = i=0 pn(i)
10.6. Aritmetiza»
c~ao de sistemas formais 241

De modo semelhante poder¶³amos de¯nir fun»c~


o es R2 e R3 para as
outras duas regras.

(T 9 ) De¯ne-se DerS (y) = 1 se e somente se y = gnseq(®0; ¢ ¢ ¢ ; ®m ) e


®0 ; ¢ ¢ ¢ ;®m ¶e uma deriva»c~
a o de ®m em S . Para o sistema formal
S 0 temos
Vjyj
DerS0 (y) = seq(y) ^ i=0 ( axi(potp(i; y))_
Wi¡1
j=0 (R 1 (potp(j; y);potp(i;y))_
R 2(potp(j; y); potp(i; y))_
R 3(potp(j; y); potp(i; y))))

que corresponde exatamente ao conceito de deriva»c~


a o no sistema
formal S .

(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

onde x = potp(jyj;y) garante que o ¶ ultimo expoente da fatora»c~


ao
de y ¶ e x, portanto x ¶
e a codi¯ca»c~
ao do ¶
ultimo elemento da deriva-
»c ~
ao.

O leitor mais atento j¶a percebeu que acabamos de construir as ferra-


mentas para demonstrar que toda fun»c~ao formalmente represent¶a vel em
um sistema formal elementar E ¶e parcialmente recursiva. O argumento
para tal resultado consiste em:

1. aritmetizar E ;

2. concluir que para toda f¶ormula at^o mica ®, se gnp(®) = x e ` E ®


ent~
a o T eo(x) = 1.
2
Nos sistemas mais interessantes T eo(x) pode n~
ao ser total, ou seja, pode divergir
se x n~
a o ¶e c¶
o digo de teorema.
242 Cap¶³tulo 10. Sistemas Formais Elementares

' $ ' $

TM ¾ MU R

¡& % & I@ %
¡ @
' $
¡ @ ' $
¡ª @
' $ ' $
AMR MI R

& @% µ¡& %
LB LP
¡ ¾ - ¡
& % & % ¡
frg fGOT Og
@
' $ @ ' " $ ' " $¡
@R ¡
S FE ¾ LB - LP

& % & % & %

Figura 10.4: Evid^encias para a Tese de Church

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.

2. Veri¯que ¤(¦; ¦; ±¦) e explique a dedu»c~ao atrav¶es de sub-problemas.

3. Escreva, em forma algor¶³tmica, a estrat¶egia que pode ser inferida


das dedu»c~
o es feitas.

4. Quais seriam os axiomas para a diferen»ca ¡?


10.8. Exerc¶³cios 243

5. Quais seriam os axiomas para o quociente?

6. Mostre que o predicado P no exemplo 10.4.1 formalmente repre-


senta o conjunto dos pares no alfabeto C = f1g.

7. Mostre que o conjunto do pares ¶e solucion¶avel.

8. Mostre que + ¶e formalmente represent¶avel em f1;2; 3g.

9. Mostre que ¤ ¶e formalmente represent¶avel em f1;2; 3g.


244 Cap¶³tulo 10. Sistemas Formais Elementares
Cap¶³tulo 11

O Teorema da
Incompletude de GÄ
odel

No cap¶³tulo 10 constru¶³mos algumas fun»c~oes aritm¶eticas axiomatica-


mente. Que tal, ent~ a o, construir um sistema formal que represente a
totalidade da aritm¶etica, de modo que a demonstra»c~ao de qualquer teo-
rema matem¶ a tico possa ser feita mecanicamente?
Esta ambi»c~ ao motivou diversas tentativas, principalmente no in¶³cio
do s¶
eculo, dentro do chamado programa de formaliza»c~a o da matem¶a tica,
de Hilbert. At¶e que, em 1931, GÄo del demonstrou a impossibilidade da a-
xiomatiza»c~
a o da aritm¶ etica. A demonstra»c~a o de GÄo del ¶e sumariamente
apresentada na se»c~ ao 11.2. Da se»c~a o 11.3 em diante, apresentamos o
teorema da incompletude de GÄodel, na sua vers~a o mais abstrata e geral,
devida a Smullyan.

11.1 Linhas gerais


O problema a seguir, proveniente de [Smu92], expressa a id¶eia geral do
teorema de GÄ
o del.

Um enigma GÄ odeliano (Smullyan) Seja um programa que imprime


cadeias com os seguintes s¶³mbolos

:;I ; N; (; )

245
246 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

Uma cadeia X ¶e imprim¶³vel se o programa pode imprimi-la. Supomos


que o programa imprimir¶ a , mais cedo ou mais tarde, todas as cadeias
imprim¶³veis. A norma de uma cadeia X ¶e a cadeia X(X). Uma senten»ca
¶e uma cadeia de uma das quatro formas abaixo:

1. I (X)

2. I N (X)

3. :I (X)

4. :I N (X)

onde X ¶ e uma cadeia.


Informalmente I representa imprim¶³vel, N representa a norma
de, : representa n~ ao. Assim, I(X) ¶e verdadeiro se e somente se X ¶e
imprim¶³vel, :I (X) ¶ e verdadeiro se e somente se X n~ao ¶e imprim¶³vel,
IN (X) ¶ e verdadeiro se e somente se a norma de X ¶e imprim¶³vel, e assim
por diante. Temos ent~ ao a de¯ni»c~a o do que ¶e uma senten»ca verdadeira.
Ao mesmo tempo observamos o seguinte caso de auto-refer^encia: o pro-
grama imprime senten»cas que de¯nem o que o programa pode e n~ a o pode
imprimir, portanto o programa descreve seu pr¶oprio comportamento.
Seja um program deste tipo, que imprime apenas senten»cas ver-
dadeiras sobre si mesmo. E ¶ poss¶³vel que o programa seja capaz de im-
primir todas as senten»cas verdadeiras? Seja a senten»ca :I N (:IN ). Por
de¯ni»c~ao, esta senten»ca ¶e verdadeira se e somente se a norma da cadeia
:I N n~ a o ¶e imprim¶³vel. No entanto, a norma de :I N ¶e justamente a
senten»ca :I N (:IN ), logo esta senten»ca ¶e verdadeira se e somente n~a o
¶e imprim¶³vel. Temos duas hip¶o teses:

² a senten»ca ¶
e imprim¶³vel, mas falsa - contradi»c~a o, pois o programa

o imprime senten»cas verdadeiras;

² a senten»ca ¶
e verdadeira, mas n~a o imprim¶³vel - ¶e a ¶unica possibili-
dade.

A analogia entre o enigma acima e o teorema da incompletude est¶a


no paralelo entre um programa que imprime cadeias e um sistema formal
que gera teoremas verdadeiros.
11.2. A Prova Original 247

11.2 A Prova Original


O artigo original de GÄ odel pode ser encontrado em [God65a]. Na pri-
meira se»c~ao daquele artigo, o esbo»co da demonstra»c~a o indica claramente
a conseqÄ u^encia ¯nal do teorema e o caminho a ser tomado para chegar
a ela. No entanto, s~ a o necess¶arias dezenas de de¯ni»c~o es e teoremas para
completar rigorosamente a prova. A µ luz da tese de Church, podemos
dispensar o arcabou»co formal e apresentar apenas a genialidade da id¶eia
global.
O princ¶³pio fundamental ¶e o de auto-refer^encia: GÄo del parte do sis-
tema formal para a aritm¶etica, de¯nido em Principia Mathematica (PM)
[WR13], e \reescreve-o" utilizando a linguagem dos n¶umeros naturais.
Este processo de aritmetiza»c~ ao (veja a se»c~ao 10.6) permite que os con-
ceitos e as propriedades daquele sistema formal sejam transformados em
conceitos e proprieades sobre os n¶umeros naturais.
O sistema de PM possui 3 axiomas sobre os n¶umeros naturais (2
para a fun»c~ao sucessor e 1 para o princ¶³pio de indu»c~ao ¯nita), 6 axiomas

o gicos (como na se»c~ ao 9.2.4, mais axiomas para quanti¯cadores1 ) e 2
axiomas para as regras de infer^encia Modus Ponens e Substitui»c~ao.
Em suma, a aritmetiza»c~a o de GÄo del ¶e um mapeamento entre os e-
lementos do sistema formal e os n¶umeros naturais. Apresentamos uma
pequena varia»c~ ao do mapeamento original utilizado po GÄodel, encon-
trado em [NN89]. Inicialmente, tem-se os s¶³mbolos do sistema formal,
na tabela a seguir. A correspond^encia ¶e feita com os 7 primeiros n¶ umeros
¶³mpares.

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

Consideramos a exist^ encia de 3 tipos de vari¶a veis: x1 ; x2 ; ¢¢ ¢ que po-


dem ser substitu¶³das por n¶ umeros; ®1; ®2 ; ¢ ¢ ¢ que podem ser substitu¶³das
o rmulas; e P1 ; P2 ; ¢ ¢ ¢ que podem ser substitu¶³das por predicados. A
por f¶
numera»c~a o das vari¶a veis ¶e como mostra a tabela a seguir.

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:

1. se n · 13 ¶e ¶³mpar, a express~a o ¶e um s¶³mbolo;

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

(a) se for o produto de primos sucessivos com expoentes ¶³mpares,


ent~a o potencialmente ¶e uma f¶ormula;
(b) se for o produto de primos sucessivos com expoentes pares,
ent~
a o potencialmente ¶e uma seqÄu^encia de mais de uma f¶o r-
mula.

Outras condi»c~
o es devem ser observadas para que um natural seja

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:

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

O n¶ umero da segunda premissa ¶e o produto dos 4 fatores primos


iniciais da primeira premissa. Os expoentes da conclus~a o s~ao os mes-
mos dos fatores primos da primeira premissa, ap¶os o fator 11 3, cor-
respondente ao s¶³mbolo !. Novamente, o leitor deve imaginar como
construir um programa que aplique Modus Ponens sobre dois n¶ umeros
de GÄ o del. Este programa computa a fun»c~a o caracter¶³stica da rela»c~ao
Deriv¶a velPorMP(x,y,z).
Para aritmetizar a regra de substitui»c~ao de uma vari¶a vel por um
termo, observe o exemplo:


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

H¶a , de fato, uma substitui»c~ao do fator 5 17 correspondente ao x 1,


com a inser»c~
a o dos expoentes do n¶umero de s(0) aplicados aos primos a
partir do 5, e os expoentes dos fatores µa direita do 517 foram deslocados
250 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

para primos ap¶ os o 13. O programa assim descrito computa a fun»c~a o


caracter¶³stica da rela»c~
a o Deriv¶
a velPorSUB(x,y).
Extrapolando estas observa»c~oes, GÄodel criou predicados aritm¶eticos
para conceitos tais como SerF¶ o rmula, SerAxioma, SerTeorema, todos
eles conjuntos recursivos. Para chegar ao ponto crucial do teorema,
foram utilizados, especialmente:

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

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

que diz, essencialmente, \n~ a o existe uma dedu»c~ao para a f¶ormula de


n¶umero de GÄo del x 3". Substituindo x3 por sub(x1 ;17; x1 ) temos
¶ rovaPara(x2 ; sub(x 1; 17; x1 )) ¢ ¢¢ (G 1)
:9x 2 EP

que diz, essencialmente, \n~ a o existe uma dedu»c~ao para a f¶ormula de


n¶umero de GÄo del sub(x1 ; 17; x1 )". Seja n o n¶umero de GÄodel de (G 1 ).
Portanto, o valor de sub(n; 17; n) ¶e o n¶umero de GÄo del de

:9x 2EProvaP ara(x2 ; sub(n;17; n)) ¢ ¢¢ (G)

que diz, essencialmente, \n~


a o existe uma dedu»c~ao para (G)".
Analisando o conte¶ udo da f¶o rmula (G), temos duas possibilidades:

1. se existe uma dedu»c~ a o no sistema formal da aritm¶etica para (G),


ent~
ao ¶e poss¶³vel deduzir uma contradi»c~a o dentro do sistema;
11.3. Sistemas Abstratos de Representa»
c~
ao 251

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.

Para fechar o teorema da incompletude, introduzimos, informal-


mente, dois conceitos sobre sistemas formais, que s~ao de¯nidos na se»c~ao
11.3.2.

1. Um sistema ¶ e consistente se n~a o ¶e poss¶³vel deduzir contradi»c~oes a


partir de seus axiomas.

2. Um sistema ¶ e completo se ¶e poss¶³vel deduzir todas as f¶o rmulas


verdadeiras a partir de seus axiomas.

Baseado nestes conceitos, GÄodel aritmetizou a f¶ormula que repre-


senta a seguinte a¯rma»c~ao:

Se a aritm¶
etica ¶e consistente ent~a o ¶e incompleta.

Finalmente, GÄ o del demonstrou que esta f¶o rmula ¶e deriv¶avel na aritm¶e-


tica. Isto indica que n~a o adianta tentar adicionar axiomas µa aritm¶etica
pois, se os axiomas forem consistentes o sistema ainda ser¶a incompleto.

11.3 Sistemas Abstratos de Representa»


c~
ao
O teorema da incompletude foi sumariamente e informalmente demons-
trado para um particular sistema formal: o da aritm¶etica, contido em
PM. No entanto, desejamos ampliar o resultado de modo a abranger
uma classe maior de sistemas formais.
Nesta se»c~
a o, caracterizamos o conceito de Sistema de Representa»c~ao
Abstrato (SRA) e estudamos suas propriedades. A id¶eia central ¶e a de
um Sistema de Representa»c~a o, que nos permite estudar representabili-
dade em sistemas de alta diversidade de estruturas sint¶a ticas. Todos os
sistemas que possam ser de interesse possuem ao menos as especi¯ca»c~oes
discutidas a seguir.
Primeiramente, temos um conjunto E , as chamadas de express~ o es,
que para os prop¶ ositos desta se»c~a o pode ser um conjunto enumer¶avel
completamente arbitr¶ ario.
252 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

Temos ent~ ao um subconjunto S de E , chamadas de senten»cas, e


subconjuntos T e R de S, que s~ao as senten»cas v¶ alidas de S.
a lidas e inv¶
Em aplica»c~oes a sistemas com signi¯cado, ou interpretados, T (R) ser¶a
o conjunto de verdades (falsidades), e em um sistema sint¶aticos, T (R)
ser¶
a o conjunto de teoremas (anti-teoremas).
Uma fun»c~ ao muito importante ¶e a fun»c~a o g de GÄodel, que realiza a
aritmetiza»c~
a o de todas as express~oes em n¶umeros naturais. Finalmente
temos a importante no»c~ a o de representa»c~
a o de um conjunto de n¶umeros
naturais. Certas express~ o es de E s~ao chamados de f¶ ormulas predicativas
ou predicados, por exemplo express~o es contendo uma vari¶avel.
A aritmetiza»c~a o de sistemas formais ¶e complicada quando existe uma
regra de infer^encia de substitui»c~a o. A raz~a o do problema ¶e que, em
geral, tais regras de infer^ encia possuem cl¶ausulas que restringem seu
uso, assim no estudo a seguir consideramos uma fun»c~ao © que realiza a
transforma»c~ ao de predicados que se referem ambigÄ uamente a n¶umeros
naturais (por exemplo pela ocorr^encia de vari¶a veis) em senten»cas que se
referenciam a um particular n¶umero natural.
A fun»c~
a o © varia consideravelmente de sistema para sistema, e nosso
prop¶osito, como discutido, ¶e permanecer afastados de toda complica»c~a o
com as peculiaridades formais de sistemas particulares, e para estudar a
relativa representatividade de sistemas particulares, com uma fun»c~ao ©
completamente arbitr¶ aria. A computabilidade da fun»c~a o © ¶e dependente
da computabilidade da fun»c~ ao g de GÄodel.
A no»c~ao de represent¶ avel discutida nesta se»c~a o difere daquela de
representabildade formal, apresentada na se»c~a o 10.4. L¶a um conjunto
de cadeias no alfabeto de constantes do SFE ¶e formalmente representado
em um SFE por um predicado P do sistema formal, se e somente se todo
elemento x do conjunto ¶ e tal que P (x) ¶e um teorema do sistema formal.
Aqui a no»c~ao de representabilidade ¶e o de uma correspond^encia entre o
conjunto abstrato N de n¶ umeros naturais e os predicados de um sistema
de representa»c~a o abstrato.

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;

g ¶ a o de E em N , bijetiva, chamada de enumera»


e uma fun»c~ c~
ao de

odel;
11.3. Sistemas Abstratos de Representa»
c~
ao 253

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;

R µ S ¶e um conjunto de senten»cas, cujos elementos s~


a o chamados de
senten»cas refut¶
a veis, falsas, ou anti-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

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.

Na de¯ni»c~ao de SRA apresentada, apareceram duas restri»c~oes: g ¶e


uma fun»c~ ao bijetiva e P ¶e um conjunto de predicados un¶arios. Tais res-
tri»c~
oes, contudo, n~ a o s~
a o fundamentais e visam, t~a o somente, µa simpli-
¯ca»c~a o do desenvolvimento que se segue. Isto signi¯ca que os resultados
apresentados continuar~ a o v¶alidos, alguns com pequenas modi¯ca»c~o es, se
considerarmos g como sendo apenas injetiva e P como sendo um con-
junto de predicados de qualquer aridade.

r
¡ ¡
Hq X
E
¡ S ¡
H (n) r
T
¡ R P ¡
¡ ¡
I@@ ª¡¡
© g
@I
¡ @ r ¡
@n r
¡ N g(X) ? ¡
¡ ¡
¡ ¡

Figura 11.1: Sistemas Abstratos de Representa»c~ao

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

Primo, ent~ a o ©(Primo; n) ¶e a senten»ca Primo(n), que pode ser lida


como \n ¶e primo". Supondo que n = 5 temos que P rimo(5) ¶e verdadeira,
se n = 6 ent~ao P rimo(6) ¶
e falsa.
Em geral, dado um conjunto de senten»cas W em um SRA, cada
n¶umero n tal que H(n) 2 W pode ser interpretado como uma inst^a ncia
da propriedade designada pelo predicado H, no mundo descrito por W .
No caso em que W ¶e T , H(n) seria uma senten»ca verdadeira e no caso
em que W ¶e R, H(n) seria uma senten»ca falsa. Estes casos s~ao, como o
leitor pode imaginar, muito importantes e merecem uma de¯ni»c~a o. Os
conceitos correspondentes a esta discuss~ao est~ao de¯nidos a seguir.

De¯ni» ao 11.3.2 Sejam Z um SRA, H um predicado de Z e W um


c~
oes de Z. De¯nimos HW como o conjunto:
conjunto de express~

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
¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢
¡ ¡
¢ ¢ ¢ ¢¢ ¢ ¢ ¢ ¢¢
¢¢ ¢¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢
¢ ¢ ¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢¢ ¢¢¢¢ ¢¢ ¢ ¢ ¢
¡ ¡

Figura 11.2: O conjunto HW

De¯ni» ao 11.3.3 Sejam Z um SRA, H um predicado de Z e A µ N .


c~
Dizemos que H representa A em Z se e somente se, para todo n 2 N ,
n 2 A se e somente se H(n) 2 T .

Como conseqÄ u^encia imediata, temos que H representa A em Z se e


somente se A = HT . A ¯gura 11.3 ilustra o conceito de representa»c~a o
do conjunto HT .
11.3. Sistemas Abstratos de Representa»
c~
ao 255

¡ ¡
q
E
¡ ¡
¢
¢¢¢¢ ¢¢ ¢¢ T
¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢
H(A) S P
¡ ¢¢¢ H ¡
¡ ¡
So ]JJ ª¡¡
S
©
J] ]JJ
¡¡ N J ¢¢ ¢¢J
¢¢ ¢ ¡¡
¢¢¢ ¢¢ ¢¢¢¢¢ ¢¢¢=¢¢ ¢¢
¡ J ¢¢¢A ¢ ¢ ¢¢ ¢ HT ¡
¡ ¡

Figura 11.3: Conjunto A representado por H em Z

Nos sistemas sint¶aticos, por exemplo nos SFE's, se um conjunto A ¶e


representado por um predicado H, ent~a o para cada ponto x do conjunto
A, a senten»ca H(x) ¶ e gerada a partir dos axiomas. S~a o a¯rma»c~oes
sobre os pontos de A, o conceito de nega»c~a o n~ao ¶e invocado. Nada ¶e
a¯rmado ou negado por H com respeito a pontos fora do conjunto A.
Quando desejamos tamb¶em algo negado a respeito de pontos fora de A,
precisamos de de¯ni»c~
oes.

De¯ni» ao 11.3.4 Seja Z um SRA e A µ N . Ent~


c~ a o dizemos que um
predicado H de Z de¯ne A se e somente se, para todo n¶umero n:

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.

Como conseqÄ encia imediata, temos que H de¯ne A em Z se e so-


u^
mente se A µ HT e A µ H R. A partir do predicado H que de¯ne um
conjunto A podemos decidir pertin^encia em A.

De¯ni»
c~ao 11.3.5 Seja Z um SRA e H um predicado de Z.

1. Uma senten»ca X ¶e decid¶³vel em Z se e somente se X 2 T [ R.


Uma senten»ca que n~
ao ¶
e decid¶³vel ¶
e dita ser indecid¶³vel.

e numericamente decid¶³vel se e somente se, para todo n 2 N ,


2. H ¶
e decid¶³vel em Z.
H(n) ¶
256 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

¡ 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

¡ ¡

Figura 11.4: H de¯ne A

ao 11.3.5 T [ R ¶e a classe de senten»cas decid¶³veis de Z.


Pela de¯ni»c~
Observando a ¯gura 11.4 o leitor pode notar que os pontos n e n0
est~a o ambos em HT , e portanto suas representa»c~oes est~a o ambas em T .
A representa»c~ao do segundo ponto tamb¶em est¶a em R, for»cando que
a o de T com R. J¶a a representa»c~a o do ponto n", que
exista uma interse»c~
se encontra fora de HT , n~ao pertence a T . Note que nada na de¯ni»c~ao de
SRA's nos obriga a ter T e R disjuntos. Assim a situa»c~a o apresentada
¶e perfeitamente poss¶³vel. De qualquer modo, temos o seguinte pequeno
resultado.

Corol¶ario 11.3.1 Seja Z um SRA e H um predicado. Se H de¯ne um


conjunto de n¶
umeros A, ent~
ao H ¶
e numericamente decid¶³vel. 2

De¯ni» ao 11.3.6 Seja Z um SRA e A 2 N . Ent~


c~ a o dizemos que um
predicado H representa completamente (ou fortemente) A em Z se e
somente se, para todo n¶umero n as cl¶
a usulas R.1 e R.2, abaixo, s~
ao
satisfeitas:

R.1 n 2 A se e somente se H(n) 2 T ;

R.2 n 6
2 A se e somente se H(n) 2 R;

Corol¶ario 11.3.2 Seja Z um SRA e A 2 N . Ent~a o H completamente


representa A em Z se e somente se A = HT e A = HR . 2
11.3. Sistemas Abstratos de Representa»
c~
ao 257

¡ 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

¡ ¡

Figura 11.5: A ¶e completamente representado por H

Novamente, exibimos a ¯gura 11.5 com uma poss¶³vel interse»c~ao entre


os conjuntos T e R, mas agora nenhum ponto de A poder¶a ocorrer nesta
parte comum dos dois conjuntos.
O procedimento usual na formula»c~ao dos sistemas formais, ¶e a in-
trodu»c~
a o de axiomas que produzem, atrav¶es de suas regras de infer^encia,
senten»cas de T . Alguns sistemas formais, al¶em desses axiomas, intro-
duzem anti-axiomas para produzir certas senten»cas que seriam anti-
teoremas ou senten»cas falsas, como mostra o pr¶o ximo exemplo.

Exemplo 11.3.1 [Cur77] O sistema formal possui uma constante 0 e


uma fun»c~ aria 0 . Seus axiomas s~
ao un¶ a o:

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


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; ¢ ¢ ¢

Assim, os axiomas Ax.2, Ax.3 e Ax.5, Ax.6 s~ao as mesmas senten»cas.


Se considerarmos que axiomas s~ao tamb¶em teoremas, e portanto anti-
teoremas, teremos uma interse»c~ao perfeitamente v¶alida entre o conjunto
de teoremas T e o conjunto de anti-teoremas R. O leitor poder¶a argu-
mentar que os axiomas da interse»c~ao poderiam ser inclu¶³dos como regras
de infer^encia e al¶em disso o axioma Ax.3 ¶e absolutamente in¶ocuo com
respeito aos teoremas do sistema, embora seja criativo com respeito ao
segundo sistema. E ¶ f¶
acil ver que os axiomas poderiam ser diferentes, por
exemplo se no lugar de igualdade tiv¶essemos uma rela»c~a o de equival^encia
na aritm¶ etica m¶odulo 2. Neste caso, entre os teoremas ter¶³amos 3 = 5 e
o axioma Ax.3 seria criativo. Por outro lado, incluir axiomas como re-
gras de infer^encia n~
ao ¶
e um procedimento interessante para mecaniza»c~ao,
e o sistema formal apresentado pode ser imaginado como apenas uma
inst^
a ncia de sistema formal a ser testado em um ambiente j¶a possuindo
a regra de infer^encia Modus Ponens.

11.3.2 Completude e Consist^encia


Nos sistemas formais ¶ e usual esperar-se que uma senten»ca n~a o possa ser
provada verdadeira e tamb¶ em provada falsa. Assim, ¶e natural que a
interse»c~ao entre os conjuntos T e R seja vazia. Tais sistemas formais
s~a o ditos consistentes. Uma outra caracter¶³stica desejada nos sistemas
formais ¶ e a de que uma senten»ca a¯rme ou negue algo, ou seja que
qualquer senten»ca possa ser provada verdadeira (est¶a em T ), falsa (est¶a
em R). Estas duas propriedades dos sistemas formais s~ao o tema central
deste cap¶³tulo.
11.3. Sistemas Abstratos de Representa»
c~
ao 259

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.

Corol¶ a rio 11.3.3 Seja Z um SRA. Ent~ ao Z ¶


e completo se, e somente
se, toda senten»ca de Z ¶e decid¶³vel em Z. 2

Teorema 11.3.1 Seja Z um SRA consistente. Se um conjunto A ¶ e


de¯n¶³vel em Z ent~ a vel em Z.
a o A ¶e fortemente represent¶
Demonstra»c~ao: Demonstra»c~ a o: Seja H um predicado que de¯ne A em
Z. Pelas condi»c~o es D:1 e D:2 sabemos que A µ H T e A µ HR .
Portanto, devemos mostrar que (1) HT µ A e (2) H R µ A. Para
mostrar (1), suponha que H(n) 2 T , ent~ a o por consist^encia H(n) 6
2 R
e por D:2, n 2 A. Para mostrar (2) procedemos do mesmo modo.

Teorema 11.3.2 Seja Z um SRA saturado e A µ N . Se A ¶ e repre-


a vel em Z ent~
sent¶ ao A ¶
e completamente represent¶a vel em Z.
Demonstra»c~ ao: Como A ¶ avel em Z, ent~
e represent¶ ao para todo n 2 N ,
n 2 A se e somente se H(n) 2 T . Assim, se n 6 2 A, ent~ ao H(n) 6
2 T.
Como Z ¶ e saturado, Z ¶
e completo e portanto H(n) 2 R. Conclu¶³mos
que
(1) Se n 62 A ent~ao H(n) 2 R
Por outro lado, se H(n) 2 R ent~ a o, como Z ¶ e consistente (pois ¶
e
saturado), H(n) 6
2 T e como A ¶e represent¶a vel em Z, temos que n 6
2 A,
mostrando que:

(2) Se H(n) 2 R ent~


ao n 6
2 A

Por (1) e (2) A ¶


e completamente represent¶
a vel. 2

Corol¶ a rio 11.3.4 Seja Z um SRA. Se existir um conjunto A µ N que


e represent¶
¶ avel, mas n~ ao Z ¶
a o de¯n¶³vel, ent~ e incompleto ou inconsis-
tente. 2
260 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

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° ¡
¡ ¡

Figura 11.6: Diagonaliza»c~o es de Express~oes

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

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).

Na ¯gura 11.6 representamos duas diagonaliza»c~o es: a de uma ex-


press~
ao X qualquer e a de um predicado H. A primeira nos fornece
uma express~a o, eventualmente um predicado, e a segunda nos fornece
sempre uma senten»ca, que pode estar em T , R ou fora destes conjuntos.
A senten»ca diagonal de um predicado H, ou seja ©(H; g(H)) ou
H(h), expressa, se em T , o fato de que o n¶umero de GÄo del de H est¶a
no conjunto representado por H.
Utilizamos a seguinte nota»c~a o:
1. dada uma express~ ao X, denotamos por X° o seu n¶umero de GÄodel,
e, X° = g(X). Similarmente, para um conjunto W de ex-
isto ¶
oes, denotamos por W° o conjunto dos n¶umeros de GÄodel das
press~
express~o es de W ;
2. para um conjunto de express~oes W , denotamos por W o comple-
mento de W com rela»c~
ao a E .
3. denotamos por Xn a express~a o cujo n¶
umero de GÄodel ¶e n.

De¯ni» ao 11.4.2 Seja Z um SRA e W µ E . W¤ ¶


c~ e o conjunto dos
n¶umeros de GÄ o del das express~ a o ©(X; X° ) 2 W ,
o es X cuja diagonaliza»c~
isto ¶e:
W¤ = fX° jX° = g(X) e ©(X; X° ) 2 W g
11.4. Senten»
cas de GÄ
o del e Representabilidade 261

Representamos o ponto n de W ¤ , via ©, como Xn. Aqui, utilizamos


a o Xn = g¡1 (n), ou seja, a express~ao cujo n¶umero de GÄodel ¶e n.
a nota»c~

q
W q
¡ ¡
q
X E
¡ ¡
X(X° )
Xn (n)
¡ ¡
I@@ AK ¡ª¡ ¤
¤g
©
AK@I@ q
¤
¤²X°
W ¤ Aq
¡ N ¡
¡ n
¡
¡ ¡

Figura 11.7: O conjunto de n¶umeros W ¤

Lema 11.4.1 Seja W um conjunto de express~


oes e H um predicado:

1. W° = (W )°

2. W ¤ = (W) ¤

3. H W = HW

Demonstra»c~
ao:

1. imediato, do fato de g : E ! N ser bijetiva.

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

Lema 11.4.2 Seja Z um SRA. Ent~ a o para todo conjunto W de ex-


¤
press~ ao existe um predicado H tal que W = HW .
o es n~
¤
Demonstra»c~ a o: Seja H tal que W = HW . Ent~ a o temos que n 2 (W )¤
se e somente se n 6 2 W ¤ se e somente se ©(g ¡1 (n); n) 6
2 W se e somente
se n 6
2 HW se e somente se ©(H;n) 6 2 W. Ou seja ©(g ¡1(n); n) 6 2 W se
e somente se ©(H; n) 6 2 W. Pela suposta igualdade temos tamb¶ em que
¡1
©(g (n); n) 6 ¡1
2 W se e somente se ©(g (n); n) 2 HW , mas tomando
n = h = g(H) temos

©(g¡1 (h); h) = ©(H; h) 6


2 W se e somente se ©(H; h) 2 HW

que ¶e um absurdo. 2

Teorema 11.4.1 Seja Z um SRA. Se Z ¶ ao R¤ n~


e consistente, ent~ ao ¶
e
de¯n¶³vel em Z.
Demonstra»c~a o: Se R¤ for de¯n¶³vel em Z, ent~
a o, como Z ¶e consistente,
¤
R ¶e completamente represent¶ avel. Ent~ao temos que:

1. R¤ = HT

2. R¤ = HR

Mas 2 contraria o lema 11.4.2. 2

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.

Intuitivamente, uma senten»ca de GÄo del a¯rma que o n¶umero de


GÄo del de um predicado, satisfaz o predicado. Um exemplo muito co-
nhecido ¶ e o das palavras que gozam da propriedade implicada por seu
signi¯cado, assim proparox¶³tono ¶e um proparox¶³tona, no entanto pa-
rox¶³tono n~ ao ¶
e um parox¶³tono. Vamos chamar palavras que n~a o gozam
desta propriedade de heterosigni¯cante.
A pergunta ent~ ao ¶
e:

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

famoso que foi criado por Bertrand Russel, anteriormente ao Teorema


da Incompletude, e serviu de inspira»c~ao para este teorema.
Veja que X ¶ e uma senten»ca de GÄo del para um conjunto A de n¶
umeros
(uma propriedade num¶erica), quando X° (o signi¯cado de X em N )
pertence ao conjunto A se e somente se este fato (sua pertin^encia) ¶e
prov¶a vel no sistema, isto ¶e, pertence a T .

De¯ni» ao 11.4.4 Seja X uma senten»ca e W um conjunto de expres-


c~
s~
oes. Dizemos que X ¶ odel para W se e somente se
e uma senten»ca de GÄ
X tem a propriedade: X 2 T se e somente se X 2 W.

Pelas de¯ni»c~o es 11.4.3 e 11.4.4, conclu¶³mos que X ¶e uma senten»ca


de GÄ o del para o conjunto de express~o es W se e somente se X ¶e uma
senten»ca de GÄo del para W° , uma vez que X 2 T se e somente se X 2 W
se e somente se X° 2 W° .

Corol¶ a rio 11.4.1 Seja Z uma SRA. Ent~ ao n~


a o existe senten»ca de GÄ
o-
del para T .
Demonstra»c~ ao: A exist^
encia de uma senten»ca de GÄodel X para T acar-
retaria o absurdo X 2 T se e somente se X 2 T . 2

Podemos concluir da de¯ni»c~ao que todas senten»cas de GÄo del se en-


ao (T \g ¡1(A))[ (S ¡ (T [ g¡1 (A))), que representamos
contram na regi~
na ¯gura 11.8.

¡ ¢ ¢ ¢¢¢ ¡1 (A) E ¡
¢ ¢¢ S ¢
¡ ¢¢¢¢¢¢¢¢ ¢¢¢¢ T ¢¢¢¢¢¢¢¢¢ ¢¢¢¢ g ¢¢¢ ¢¢ ¢¢¢¢
¢¢¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢¢¢¢ ¢¢¢¢¢ ¢¢¢¢¢¢¢ ¢¢ ¡
¡ ¡
¢¢¢¢¢¢ ¢¢ ¢
¢¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢¢ ¢¢¢ ¢

º¤ º¤
¤ ¤
¤ ¤
¡ ¤ ¤ ¡
¡ ¤A N
¡
¡ ¡

Figura 11.8: Sentenca de GÄodel para um conjunto num¶erico A

Lema 11.4.3 (Primeiro lema de diagonaliza» a o) Seja Z uma SRA


c~
¤
e W µ E . Se W ¶e represent¶ avel em Z ent~ ao W admite uma senten»ca
de GÄ o del. Mais especi¯camente, se H ¶ e um predicado que representa
W ¤ , ent~ao H(h) ¶ o del para W .
e uma senten»ca de GÄ
264 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

¢¢ ¢ ¢ ¢ ¢¢ ¢¢ ¢
¢ ¢ ¢ ¢ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢ ¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢ ¢ ¢
¢ ¢¢ ¢¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢ ¢¢ ¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢¢¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢¢ ¢
¢
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

a o: Vimos anteriormente que ©(H; HT ) µ T para todo pre-


Demonstra»c~
dicado H. Se W¤ ¶ e represent¶a vel por H, ent~ao HT = W¤ , portanto se
H(h) 2 W se e somente se h 2 W ¤ se e somente se h 2 HT ent~ ao
H(h) 2 T . Conclu¶³mos ent~a o que, se H(h) 2 W ent~ ao H(h) 2 T . Se
H(h) 62 W ent~ 2 W ¤ e portanto h 6
ao h 6 2 HT , ou seja H(h) 6
2 T . Assim,
H(h) ¶e uma senten»ca de GÄodel para W . 2

¤
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

ario 11.4.2 Seja Z um SRA. Ent~


Corol¶ ao, toda senten»ca indecid¶³vel ¶
e
odel para R.
uma senten»ca de GÄ

Teorema 11.4.3 Seja Z um SRA. Se R ¤ ¶ a vel em Z, ent~


e represent¶ ao
Z ¶e inconsistente ou incompleto.
Demonstra»c~a o: Se R¤ ¶ e represent¶a vel ent~
ao existe um predicado, diga-
mos H, que o representa. Pelo lema da diagonaliza»c~ a o, H(h) ¶e uma
senten»ca de GÄ odel para R. Assim sendo, H(h) 2 T se e somente se
H(h) 2 R, pela de¯ni»c~ a o 11.3.3(2.). Isto signi¯ca que: (i) H(h) 2 T \R
e assim Z seria inconsistente ou (ii) H(h) 6 2 T [R e neste caso Z seria
incompleto. 2

A ¯gura a seguir ilustra as duas alternativas:


11.5. SRA's como Sistemas Formais 265

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 ¤.

11.5 SRA's como Sistemas Formais


Na de¯ni»c~ ao de Sistemas de Representa»c~a o abstratos n~ao ¯zemos ne-
nhuma exig^ encia, sobre a recursividade das fun»c~oes g de enumera»c~a o de
GÄodel, ou da fun»c~ a o © de representa»c~a o. Na se»c~ao 11.2 vimos a cons-
tru»c~
ao efetiva de um tipo de enumera»c~ao de GÄo del e de uma fun»c~ao
de substitui»c~ a o. Vimos que tais constru»c~o es s~a o bastante complicadas,
mesmo para sistemas formais bastante simples. Os resultados apresen-
tados n~ ao empregam qualquer aparato da teoria de fun»c~o es recursivas.
Nesta se»c~ a o estudamos sistemas de representa»c~a o do ponto de vista de
indecidibilidade. Os resultados desta se»c~a o s~ao estabelecidos usando
somente um pequeno fragmento da teoria das fun»c~oes recursivas.
Junto com a fun»c~ a o de representa»c~ao © de um SRA Z e a numera»c~ao
de GÄ o del g consideramos agora a fun»c~ao repr : N 2 ! N de¯nida por:

repr(i; j) = k se e somente se ©(Xi; j) = Xk

Em consequ^ encia repr(i; j) ¶e o n¶umero de GÄo del da senten»ca ©(Xi; j).


Vamos admitir, para o que se segue, que g e ' sejam fun»c~oes recursi-
vas. Seja diag(i) = repr(i; i), ent~a o diag(i) ¶e o n¶u mero de GÄo del de
diagonaliza»c~
a o da express~ao Xi, ou seja.

diag(i) = g(Xi(i))
266 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

¶ claro que diag ¶


E e uma fun»c~ao recursiva. Dizemos que um SRA Z ¶e
efetivo se e somente se a fun»c~
ao diag de¯nida acima ¶e recursiva. Dizemos
neste caso que Z ¶e um SRAE.

Lema 11.5.1 Seja Z um SRAE, ent~


a o temos os seguintes resultados:

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:

1. n 2 W ¤ se e somente se ©(Xn ; n) 2 W se e somente se diag(n) 2


W° se e somente se n 2 diag¡1 (W° )

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

De¯ni» ao 11.5.1 Seja Z um SRAE. Dizemos que Z ¶


c~ e um sistema for-
mal se e somente se S ¶ e um conjunto recursivo e T e R s~ ao ambos
recursivamente enumer¶a veis.

De¯ni» ao 11.5.2 Seja Z um SRAE. Dizemos que Z ¶


c~ e decid¶³vel se e
somente se T e R s~
a o ambos conjuntos recursivos.

Teorema 11.5.1 Seja Z um SRAE. Se todo conjunto recursivo ¶ e re-


present¶avel em Z ent~ ao Z ¶e um sistema formal indecid¶³vel.
Demonstra»c~ a o: Suponha que T fosse recursivo. Ent~ ao T seria tamb¶ em
¤ ¤
recursivo. Ent~ a o, pelo lema 11.5.1, T seria recursivo. Ent~ a o T seria
represent¶avel em Z, pela hip¶ otese do teorema, o que contraria o teorema
11.4.2.
2

Teorema 11.5.2 Seja Z um SRAE. Se Z ¶ e um sistema formal inde-


a o Z ¶e inconsistente ou incompleto.
cid¶³vel, ent~
Demonstra»c~ a o: A demonstra»c~ ao ¶e imediata se notarmos que em Z,
sendo formal, S ¶ e um conjunto recursivo. Al¶em disso, se saturado
11.5. SRA's como Sistemas Formais 267

(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

Observamos que, para um sistema formal Z, a a¯rma»c~a o de que \T


n~ e recursivo" equivale µa a¯rma»c~a o de que \para todo conjunto W
ao ¶
de express~ oes, recursivamente enumer¶a vel e disjunto de T , existe uma
senten»ca de GÄ odel". Pois se Z ¶e um sistema formal, ent~a o temos que
S ¶e recursivo e T , R s~a o ambos recursivamente enumer¶a veis. Assim,
E¡S ¶ e recursivamente enumer¶a vel. Por outro lado, a¯rmar que T n~ao
e recursivo, mas recursivamente enumer¶avel, corresponde ao fato que

T n~ e recursivamente enumer¶a vel. Se considerarmos o conjunto W
ao ¶
recursivamente enumer¶ avel e disjunto de T , como E ¡ S ¶e recursivamente
enumer¶ ao W [ (E ¡ S ) µ T ¶e recursivamente enumer¶avel, e
a vel, ent~
portanto, W [ (E ¡ S) 6 = T . Isto signi¯ca que existe pelo menos uma
express~ao X 2 T e X 6 2 W [ (E ¡ S ). Assim, X 6 2 T, X 6 2 W e
X6 2 (E ¡ S), portanto X ¶e uma senten»ca de GÄo del para W .
Da observa»c~ a o acima conclu¶³mos que indecidibilidade ¶e algo mais
forte que incompletude, visto que esta meramente signi¯ca que existe
uma senten»ca de GÄ odel para um particular conjunto R.

Teorema 11.5.3 (GÄ odel(cf. Smullyan)) Se um sistema formal Z ¶ e


su¯cientemente poderoso para representar todos os conjuntos recursivos,
a o Z ¶e inconsistente ou incompleto.
ent~
Demonstra»c~ ao: Por hip¶o tese todo conjunto recursivo pode ser represen-
tado em Z, ent~ ao, pelo teorema 11.5.1, Z ¶ e indecid¶³vel e como Z ¶
e
formal, pelo teorema 11.5.2 Z ¶ e inconsistente ou incompleto. 2

Neste ponto observamos que a aritm¶etica das fun»c~oes recursivas,


pode ser constru¶³da como um sistema formal, por exemplo um sistema
formal elementar (cap¶³tulo 10). Um conjunto A µ N ¶e recursivo se
e somente se A e A s~ a o formalmente represent¶a veis. A aritm¶etica de
Peano ¶e uma teoria mais ampla que a aritm¶etica das fun»c~oes recursivas
portanto, se consistente ¶e incompleta. E ¶ claro que n~ao apresentamos
uma formaliza»c~
a o completa da aritm¶etica das fun»c~oes recursivas, ape-
nas apresentamos alguns predicados, mas o leitor a esta altura j¶a deve
estar convencido que esta possibilidade ¶e real.
268 Cap¶³tulo 11. O Teorema da Incompletude de GÄ
odel

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

A linguagem pseudo-Pascal utilizada no livro ¶e bastante simples. Apre-


sentamos os comandos de maneira informal,apenas para dissipar d¶uvidas
que possam surgir no decorrer do seu uso.
N~a o julgamos necess¶ario demonstrar a computabilidade da lingua-
gem, por ser esta propriedade absolutamente evidente. Para o leitor
interessado nos detalhes, recomendamos a redu»c~ao a LPM.
Pseudo-Pascal disp~o e de cinco tipos de comandos:

1. atribui»c~
a o: var = expr, onde var ¶e uma vari¶avel e expr ¶e uma
express~ ao de 5 tipos:

(a) uma vari¶


avel
(b) uma constante (n¶umero ou cadeia)
(c) uma express~ao booleana com os operadores booleanos AN D,
OR, N OT , T e F e rela»c~o es =, ·, ¸, etc;
(d) uma express~a o aritm¶etica
(e) chamada para uma fun»c~ao.
(
for var = i to n do
2. para: , onde var ¶e uma vari¶a vel, i e n
prg
s~
ao n¶umeros naturais. O trecho de programa prg ¶e iterado n ¡
i + 1 vezes. O trecho prg a ser iterado pelo para ¶e demarcado por

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.

5. retorno: return expr, onde expr ¶e uma express~a o como no item


1

Um programa tem a seguinte forma:

N omeDoPrograma(ListaDeArgumentos)
begin
C orpoDoPrograma
end
271

onde N omeDoPrograma ¶e auto-explicativo, ListaDeArgumentos ¶e a


lista de par^
a metros por valor e CorpoDoP rograma ¶e uma lista de co-
mandos. As palavras-chaves begin e end delimitam o in¶³cio e o ¯m
do programa, respectivamente.
272 Ap^
endice A. Linguagem Pseudo-Pascal
Bibliogra¯a

[BJ74] George S. Boolos and R. C Je®rey. Computability and Logic.


Cambridge University Press, 1974.

[BL74] Walter S. Brainerd and Lawrence H. Landweber. Theory of


Computation. John Wiley & Sons, 1974.

[BO93] Ronald V. Book and F. Otto. String-Rewriting Systems.


Springer-Verlag, 1993.

[CL73] C. L. Chang and R. Lee. Symbolic Logic and Mechanical


Theorem Proving. Academic Press, USA, 1973.

[Coh65] P. M. Cohn. Universal Algebra. Harper & Row, USA, 1965.

[Cur77] Haskell B. Curry. Foundations of Mathematical Logic. Dover


Publications, Inc., New York, 1977.

[Dav83] Martin Davis. Computability and Unsolvability. Dover, New


York, 1983.

[EE70] S. Eilenberg and C.C. Elgot. Recursiveness. New York: Aca-


demic Press, 1970.

[ER64] C. C. Elgot and A. Robinson. Random-access stored-program


machines, an approach to programming languages. Journal
of the ACM, 11:365{399, 1964.

[F*86] Solomon Feferman et al., editors. Kurt GÄ o del - Collected


Works. Volume I, II, III, Oxford University Press, New York,
1986.

273
274 BIBLIOGRAFIA

[Fit87] Melvin Fitting. Computability Theory, Semantics, and Logic


Programming. Oxford University Press, 1987.

[Gal87] Jean H. Gallier. Logic for Computer Science. John Wiley &
Sons, Inc., 1987.

[God65a] Kurt GÄ odel. The Undecidable, chapter On Formally Unde-


cidable Propositions of Principia Mathematica and Related
Systems, pages 5{38. Raven Press, New York, 1965.

[God65b] Kurt GÄ o del. The Undecidable, chapter On Undecidable


Propositions of Formal Mathematical Systems, pages 41{82.
Raven Press, New York, 1965.

[Gra68] George Gratzer. Universal Algebra. D. Van Nostrand Com-


pany, Inc., USA, 1968.

[Hal70] P. Halmos. Teoria Ing^enua dos Conjuntos. Edusp - Editora


da Universidade de S~ao Paulo, Brasil, 1970.

[Hen77] Fred Hennie. Introduction to Computability. Addison-Wesley


Publishing Company, 1977.

[HL65] G. E. Hughes and D. G. Londey. The Elements of Formal


Logic. Methuen & Co Ltd, 1965.

[Hof79] Douglas R. Hofstadter. GÄo del, Escher e Bach: an Eternal


Golden Braid. Basic Books, Nova Iorque, 1979.

[HU79] John Hopcroft and J. Ullman. Introduction to Automata The-


ory, Language and Computation. Addison-Wesley Publishing
Company, 1979.

[KK62] William Kneale and Martha Kneale. The Development of


Logic. Clarendon Press, Oxford, 1962.

[Kle52] Stephen Cole Kleene. Introduction to Metamathematics. D.


Van Nostrand Company, Inc., 1952.

[MdSP45] Ant^onio Aniceto Monteiro and Jos¶e da Silva Paulo. Aritm¶


e-
tica Racional. Livraria Avelar Machado, Lisboa, 1945.
BIBLIOGRAFIA 275

[MDW94] Ron Sigal Martin Davis and Elaine J. Weyuker. Computabil-


ity Complexity and Languages. Academic Press, New York,
1994.

[Mir92] Francisco Miraglia. Teoria dos Conjuntos: Um m¶³nimo.


Edusp - Editora da Universidade de S~ao Paulo, Brasil, 1992.

[ML84] Jonh S. Mallozzi and Nicholas J. De Lillo. Computability with


Pascal. Prentice-Hall, Inc., New Jersey, 1984.

[MY78] M. Machtey and P. Young. An Introduction to the General


Theory of Algorithms. North Holland, New York, 1978.

[Nel68] R. J. Nelson. Introduction to Automata. Jonh Wiley & Sons,


Inc., USA, 1968.

[NN89] Ernest Nagel and James R. Newman. GÄ


o del's Proof. Rout-
ledge, USA, 1989.

[PY73] Franco P. Preparatta and Raymond T. Yeh. Introduction to


Discrete Structures for Computer Science and Engineering.
Addison-Wesley Publishing Company, 1973.

[Rod95] Francisco A. Rodr¶³guez-Consuegra, editor. Kurt GÄo del - Un-


published Philosophical Essays. BirkhÄa user Verlag, Berlin,
1995.

[Rog67] Hartley Rogers Jr. Theory of Recursive Functions and Ef-


fective Computability. McGraw-Hill Book Company, USA,
1967.

[Sho71] Joseph R. Shoen¯eld. Degrees of Unsolvability. North{


Holland Publishing Company, 1971.

[Smu61] Raymond Smullyan. Theory of Formal Systems. Princeton,


1961.

[Smu78] Raymond Smullyan. What's the Name of This Book. Penguin


Books, 1978.

[Smu87] Raymond Smullyan. Forever Undecided: A Puzzle Guide to



odel. Oxford University Press, 1987.
276 BIBLIOGRAFIA

[Smu92] Raymond Smullyan. GÄ odel's Imcompleteness Theorems. Ox-


ford University Press, 1992.

[Smu93] Raymond Smullyan. Recursion Theory for Metamathematics.


Oxford University Press, 1993.

[Sto61] Robert R. Stoll. Set Theory and Logic. Dover Publications,


Inc., USA, 1961.

[Sup60] Patrick Suppes. Axiomatic Set Theory. D. Van Nostrand


Company, Inc., USA, 1960.

[Tur65] Alan M. Turing. The Undecidable, chapter On Computable


Numbers, with an Application to the Entscheidungsproblem,
pages 115{151. Raven Press, New York, 1965.

[Wan88] Hao Wang. Re°ections on Kurt GÄ


o del. The MIT Press, Cam-
bridge, Massachusetts, 1988.

[WR13] Alfred N. Whitehead and Bertrand Russell. Principia Methe-


matica. Cambridge University Press, Londres, 1913.

Você também pode gostar