Você está na página 1de 370

L

OGICA PARA PROGRAMAC

AO
Joao Pavao Martins
Departamento de Engenharia Informatica
Instituto Superior Tecnico
Universidade Tecnica de Lisboa
ii
Copyright c 2009 Joao Pav ao Martins
Este livro n ao pode ser reproduzido, no todo ou em parte, sob qualquer forma ou meio, electronico
ou mecanico, incluindo fotocopia, gravacao, ou qualquer sistema de registo de informac ao, sem
autorizac ao previa e escrita do autor:
Joao Pav ao Martins
Grupo de Inteligencia Articial
Departamento de Engenharia Inform atica
Instituto Superior Tecnico
Av. Rovisco Pais
1096 Lisboa CODEX
Portugal
jpm@gia.ist.utl.pt

Indice
Glossario de notacoes v
Prefacio ix
1 Conceitos Basicos 1
1.1 Proposicoes e argumentos . . . . . . . . . . . . . . . . . . . . 2
1.2 Smbolos logicos . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Componentes de uma l ogica . . . . . . . . . . . . . . . . . . . 17
1.3.1 O sistema dedutivo . . . . . . . . . . . . . . . . . . . . 19
1.3.2 O sistema semantico . . . . . . . . . . . . . . . . . . . 21
1.3.3 O sistema dedutivo e o sistema semantico . . . . . . . 21
1.4 O desenvolvimento de uma l ogica . . . . . . . . . . . . . . . . 23
1.5 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . . . . . 25
1.6 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 L ogica Proposicional 27
2.1 A linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 O sistema dedutivo . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.1 Abordagem da dedu cao natural . . . . . . . . . . . . . 32
2.2.2 Como construir provas . . . . . . . . . . . . . . . . . . 49
2.2.3 Abordagem axiomatica . . . . . . . . . . . . . . . . . 53
2.2.4 Propriedades do sistema dedutivo . . . . . . . . . . . . 56
2.2.5 Resolucao . . . . . . . . . . . . . . . . . . . . . . . . . 61
Forma clausal . . . . . . . . . . . . . . . . . . . . . . . 62
O princpio da resolu cao . . . . . . . . . . . . . . . . . 65
Demonstracao por resolucao . . . . . . . . . . . . . . . 68
Estrategias em resolu cao . . . . . . . . . . . . . . . . . 71
2.3 O sistema semantico . . . . . . . . . . . . . . . . . . . . . . . 75
2.3.1 Valora cao, interpreta cao e tabelas de verdade . . . . . 76
i
ii

INDICE
2.3.2 Diagramas de decisao bin arios (BDDs) . . . . . . . . . 81
2.3.3 Diagramas de decisao bin arios ordenados (OBDDs) . . 94
2.4 Solidez e completude da l ogica proposicional . . . . . . . . . . 114
2.5 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . . . . . 124
2.6 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3 L ogica de Primeira Ordem 131
3.1 A linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.2 O sistema dedutivo . . . . . . . . . . . . . . . . . . . . . . . . 149
3.2.1 Dedu cao natural . . . . . . . . . . . . . . . . . . . . . 149
3.2.2 Resolucao . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.2.3 Propriedades do sistema dedutivo . . . . . . . . . . . . 169
3.3 O sistema semantico . . . . . . . . . . . . . . . . . . . . . . . 169
3.3.1 A semantica da l ogica de primeira ordem . . . . . . . 169
3.3.2 O metodo de Herbrand . . . . . . . . . . . . . . . . . 177
3.4 Solidez e completude . . . . . . . . . . . . . . . . . . . . . . . 189
3.5 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . . . . . 190
3.6 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4 Programa cao em L ogica 199
4.1 Clausulas de Horn . . . . . . . . . . . . . . . . . . . . . . . . 200
4.2 Programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
4.3 Resolucao SLD . . . . . . . . . . . . . . . . . . . . . . . . . . 205
4.4

Arvores SLD . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
4.5 Semantica da programa cao em l ogica . . . . . . . . . . . . . . 214
4.5.1 Semantica declarativa . . . . . . . . . . . . . . . . . . 214
4.5.2 Semantica procedimental . . . . . . . . . . . . . . . . 215
4.6 Adequa cao computacional . . . . . . . . . . . . . . . . . . . . 215
4.7 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . . . . . 216
4.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5 Prolog 219
5.1 Componentes b asicos . . . . . . . . . . . . . . . . . . . . . . . 220
5.1.1 Termos . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.1.2 Literais . . . . . . . . . . . . . . . . . . . . . . . . . . 223
5.1.3 Programas . . . . . . . . . . . . . . . . . . . . . . . . 224
5.1.4 Clausulas . . . . . . . . . . . . . . . . . . . . . . . . . 225
5.1.5 Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.2 A semantica do prolog . . . . . . . . . . . . . . . . . . . . 227
5.3 Exemplos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . 233

INDICE iii
5.4 Unica cao de termos . . . . . . . . . . . . . . . . . . . . . . . 246
5.5 Comparacao de termos . . . . . . . . . . . . . . . . . . . . . . 248
5.6 A utiliza cao de predicados pre-denidos . . . . . . . . . . . . 249
5.7 Aritmetica em prolog . . . . . . . . . . . . . . . . . . . . . 250
5.8 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
5.9 Instru coes de leitura e de escrita . . . . . . . . . . . . . . . . 261
5.10 Estruturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
5.11 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.12 O operador de corte . . . . . . . . . . . . . . . . . . . . . . . 289
5.13 O falhan co for cado . . . . . . . . . . . . . . . . . . . . . . . . 302
5.14 A operacao condicional . . . . . . . . . . . . . . . . . . . . . . 302
5.15 A nega cao em prolog . . . . . . . . . . . . . . . . . . . . . 304
5.16 Execucao for cada . . . . . . . . . . . . . . . . . . . . . . . . . 306
5.17 Deni cao de novos operadores . . . . . . . . . . . . . . . . . . 306
5.18 Comparacao com outras linguagens . . . . . . . . . . . . . . . 310
5.19 Notas bibliogr acas . . . . . . . . . . . . . . . . . . . . . . . . 310
5.20 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Apendices 318
A Sumario da Regras de Inferencia 319
B Manual de Sobrevivencia em Prolog 323
B.1 Obten cao do Prolog . . . . . . . . . . . . . . . . . . . . . . . 323
B.2 Incio de uma sessao . . . . . . . . . . . . . . . . . . . . . . . 325
B.3 Criacao a alteracao de programas . . . . . . . . . . . . . . . . 325
B.4 Carregamento e utiliza cao de programas . . . . . . . . . . . . 327
B.5 Informa cao sobre predicados . . . . . . . . . . . . . . . . . . . 328
B.6 Rastreio de predicados . . . . . . . . . . . . . . . . . . . . . . 328
B.7 Informa cao de ajuda . . . . . . . . . . . . . . . . . . . . . . . 335
C Solucoes de Exerccios Seleccionados 337
C.1 Exerccios do Captulo 1 . . . . . . . . . . . . . . . . . . . . . 337
C.2 Exerccios do Captulo 2 . . . . . . . . . . . . . . . . . . . . . 337
C.3 Exerccios do Captulo 3 . . . . . . . . . . . . . . . . . . . . . 341
C.4 Exerccios do Captulo 4 . . . . . . . . . . . . . . . . . . . . . 342
C.5 Exerccios do Captulo 5 . . . . . . . . . . . . . . . . . . . . . 344
Bibliograa 349
Glossario 355
iv

INDICE
Glossario de nota coes
Notacao Descricao P agina
Fim de deni cao 2
Ent ao, portanto 4
` Fim de exemplo 11
Conjun cao 12, 29
Disjun cao 14, 29
Negacao 15, 29
Implicacao 16, 29
(, ) Argumento 18
Subconjunto 18
Pertence 18
Derivabilidade 20, 38
Th() Teoria gerada a partir de 20
{x : y} Conjunto de todos os elementos x
que satisfazem a propriedade y 20
|= Consequencia l ogica 21, 80
P Conjunto de todos os predicados da l ogica
proposicional 29
P
i
Smbolo de predicado 29
Uni ao de conjuntos 30
L
LP
Linguagem da l ogica proposicional 30
Prem Regra de premissa 32
Rep Regra de repeticao 33
I Regra de introducao da conjun cao 34
E Regra de elimina cao da conjun cao 34
Hip Regra de hip otese 35
Reit Regra de re-itera cao 36
Teorema 38
Teorema 38
Conjunto vazio 38
I Regra da introducao da implica cao 37
E Regra da elimina cao da implica cao 38
I Regra da introducao da nega cao 40
E Regra da elimina cao da nega cao 41
vi GLOSS

ARIO DE NOTAC

OES
Notacao Descricao P agina
I Regra da introducao da disjun cao 42
E Regra da elimina cao da disjun cao 42
Teo Teorema (regra de inferencia derivada) 45
Q.E.D. (m de demonstra cao) 214
E

Regra derivada da eliminacao da implica cao 46


MT Modus tollens 47
I Regra derivada da introdu cao da dupla nega cao 46
def
= Por deni cao 48
Equivalencia 48
I Regra da introducao da equivalencia 48
E Regra da elimina cao da equivalencia 48
Res Aplica cao da resolucao 67
v Fun cao de valora cao 76
Mapeamento 76
V Verdadeiro 76
F Falso 76
V Folha correspondente a verdadeiro 82
F Folha correspondente a falso 82
Arco de um grafo dirigido 83
[P
1
, . . . , P
n
] Sequencia 84, 95
Relacao de ordem total 94
[P
1
, . . . , P
n
]

Ordena cao introduzida por 95


Produto carteziano 97
N
0
Inteiros positivos 100
Indenido 101
Disjun cao exclusiva 14, 109
:= Operador de atribui cao 110
Quanticacao universal 135
Quanticacao existencial 136
f
n
i
Smbolo de funcao (com n argumentos) 136
P
n
i
Smbolo de predicado (com n argumentos) 136
x
i
Vari avel individual 136
t
i
Termo 136
L
LPO
Linguagem da l ogica de primeira ordem 138
P
n
i
(t
1
, t
2
, . . . , t
n
) Fbf at omica 138
{t
1
/x
1
, . . . , t
n
/x
n
} Substitui cao 141
GLOSS

ARIO DE NOTAC

OES vii
Notacao Descricao P agina
Substitui cao vazia 141
Aplica cao de substitui cao 142
I Regra da introducao da quantica cao universal 150
E Regra da elimina cao da quanticacao universal 150
I Regra da introducao da quantica cao existencial 152
E Regra da elimina cao da quanticacao existencial 152
Composi cao de substitui coes 159
(D, F, R) Conceptualizacao 171
D Universo de discurso 171
F Conjunto de fun coes 171
R Conjunto de rela coes 172
I Fun cao de interpretacao 173
|=
I
e verdadeira sugundo a interpreta cao I 176
Implicacao em clausulas Horn 201
Clausula vazia em nota cao de clausulas Horn 201
s |
{x
1
,...,x
m
}
Restricao de s ao conjunto de variaveis {x
1
, . . . , x
m
} 204
v() Vari aveis da clausula 204
S Fun cao de seleccao 205
U

Universo de Herbrand para 180

Base de Herbrand para 181


P Estrategia de procura 210
viii GLOSS

ARIO DE NOTAC

OES
Prefacio
Logic is invincible because in order to
combat logic it is necessary to use logic
Pierre Boutroux [Kline 72]
xxx
Agradecimentos
Jo ao Pedro Mendes Aires, Joana Alemao Alves, Ana Cardoso Cachopo,
Lusa Coheur, Diogo Correia, Jo ao P. Costa, Maria dos Remedios Cravo,
Diogo Cunha, Jo ao Dias, David Gaspar, Carlos Lage, Jose Louren co, Ines
Lynce, Leonor Martins, Filipa Morgado, Ricardo Nobre, Ana Santos, Daniel
Santos, Hugo Tavares, Andreia Soa Monteiro Teixeira.
x PREF

ACIO
Captulo 1
Conceitos Basicos
The ideal reasoner would when he has
once been shown a single fact in all its
bearing, deduce from it not only all the
chain of events which led up to it, but
also all the results which would follow
from it.
Sherlock Holmes, The Five Orange
Pips
Uma das caractersticas de agentes racionais e o interesse em justicar aquilo
em que acreditam e em compreender o modo como os outros agentes justi-
cam aquilo em que acreditam. Um dos principais objectivos da Logica e de,
a partir de uma situa cao descrita por frases que se assumem serem verda-
deiras, determinar que outras frases tem que ser verdadeiras nessa situa cao
a l ogica estuda os conceitos de consequencia dedutiva e de consistencia.
Embora n ao seja f acil denir em poucas palavras o que e a l ogica, pois esta
aborda um grande leque de problemas e n ao possui fronteiras perfeitamente
denidas, tocando num dos seus extremos na matematica e no outro na
losoa, podemos dizer que, no que diz respeito a este livro, a L ogica e o
ramo do conhecimento que aborda a an alise sistematica de argumentos, ou
a an alise dos metodos para distinguir os argumentos v alidos dos argumentos
inv alidos.
2 CAP

ITULO 1. CONCEITOS B

ASICOS
1.1 Proposicoes e argumentos
Neste livro consideramos que a nalidade da Logica e a an alise sistematica
do raciocnio correcto, ou seja, partindo de uma situa cao descrita por um
certo n umero de frases declarativas, as quais se assumem serem verdadei-
ras, o raciocnio correcto pretende determinar que outras frases tem que
ser verdadeiras nessa situacao. As frases de onde partimos sao chamadas as
premissas e as frases geradas a partir delas sao chamadas as conclusoes. Uti-
lizando raciocnio correcto, a partir de premissas verdadeiras nunca seremos
conduzidos a conclusoes falsas.
Antes de mais, convem reectir sobre o que sao frases declarativas. Uma
frase e qualquer veculo lingustico capaz de transmitir uma ideia. As frases
n ao correspondem aos smbolos lingusticos que contem, mas sim `a ideia
transmitida pela frase. Neste sentido, o S ocrates e um homem e Socrates
is a man correspondem `a mesma frase; o Jo ao esta a dar a aula e a aula
esta a ser dada pelo Jo ao tambem correspondem `a mesma frase. Nesta
descricao, e em todo este livro, distinguimos entre a mencao a uma entidade,
colocando-a entre aspas, e o uso da mesma entidade, o qual e feito sem o
recurso a aspas. Esta distin cao entre uso e men cao e muito importante em
l ogica. Podemos dizer que S ocrates e uma palavra com 8 letras, mas n ao
poderemos dizer que S ocrates e um homem; podemos dizer que S ocrates
e um homem, mas n ao podemos dizer que uma palavra com 8 letras e um
homem.
As frases podem-se classicar em declarativas, imperativas, interrogativas e
exclamativas.
As frases declarativas utilizam-se para enunciar como as coisas sao ou pode-
riam ter sido. Em relacao a estas frases, faz sentido dizer que sao verdadeiras
ou que sao falsas. Por exemplo, a Lua e uma estrela e a disciplina de
Logica para Programa cao e uma disciplina obrigat oria do primeiro ciclo da
LEIC sao frases declarativas que sao, respectivamente, falsa e verdadeira.
As frases imperativas prescrevem que as coisas sejam de certa maneira; as
frases interrogativas perguntam como sao as coisas; e as frases exclamativas
transmitem uma exclamacao. As frases forne ca uma resposta ao exerccio
4, o que e a Logica? e cuidado! sao exemplos, respectivamente, de
frases imperativas, interrogativas e exclamativas. Em relacao a este tipo de
frases, n ao faz sentido dizer que sao verdadeiras ou que sao falsas.
1.1. PROPOSIC

OES E ARGUMENTOS 3
Denicao 1.1.1 (Proposicao) Uma proposi cao e uma frase declarativa,
ou seja, e uma frase que faz uma arma cao sobre qualquer coisa.
Uma das caractersticas das proposicoes e a de ser possvel atribuir-lhes um
valor l ogico, um dos valores verdadeiro ou falso. Qualquer proposicao ou e
verdadeira ou e falsa, no entanto nem todas as proposicoes tem um valor
l ogico conhecido. Consideremos, por exemplo, a proposi cao no dia em
que embarcou para a

India, o Vasco da Gama entrou na sua nau com o pe
direito. Esta proposi cao ou e verdadeira ou e falsa. No entanto, duvidamos
que alguem seja capaz de avaliar o seu valor l ogico.
Devemos tambem notar que o valor l ogico de uma proposicao n ao e absoluto
e independente do tempo mas depende do contexto da sua interpretacao. Por
exemplo, a proposicao a relva e verde pode ser verdadeira no contexto
de um campo de golfe bem tratado mas pode ser falsa para um relvado
alentejano no pico do Verao.
Na nossa vida quotidiana, argumentamos produzindo um conjunto de fra-
ses declarativas, as quais apoiam uma dada frase declarativa que tentamos
transmitir como a conclusao da nossa argumentacao. Ao conjunto de frases
declarativas que suportam o nosso argumento d a-se o nome de premissas,
as quais sao usadas para justicar a conclus ao obtida a partir delas. Es-
tas sequencias de frases, contendo premissas e conclusao, sao usadas, quer
para justicar as coisas em que acreditamos, quer para justicar as nossas
accoes. Em linguagem comum e habitual separar as premissas da conclusao
por palavras tais como ent ao, portanto ou consequentemente.
O seguinte exemplo classico corresponde a um argumento:
todos os homens sao mortais
o S ocrates e um homem
portanto, o S ocrates e mortal
Outro exemplo classico corresponde ao argumento:
o Jose teve negativa no exame
portanto, o Jose n ao obtem aprovacao na disciplina
Este segundo exemplo, apresenta um aspecto que e comum na nossa ar-
gumentacao quotidiana e que corresponde `a supress ao de uma premissa.
Na realidade, dado que a frase quem tem negativa no exame n ao obtem
aprova cao na disciplina faz parte do conhecimento partilhado nos meios
4 CAP

ITULO 1. CONCEITOS B

ASICOS
academicos, pode ser aborrecido formul a-la explicitamente. Formular expli-
citamente premissas que fazem parte do conhecimento comum e uma forma
de pedantismo. Em nome do rigor, praticaremos neste livro um certo grau
de pedantismo.
Denicao 1.1.2 (Argumento) Um argumento
1
e um par constitudo por
um conjunto nito de proposi coes, as premissas, e por uma unica proposi cao,
a conclus ao.
Nos nossos argumentos, utilizaremos o smbolo para separar as premis-
sas da conclusao. Assim, o argumento relativo `a mortalidade de S ocrates
sera escrito da seguinte forma:
todos os homens sao mortais
o S ocrates e um homem
o S ocrates e mortal
Como dissemos no incio deste captulo, o objectivo da l ogica e o estudo sis-
tematico dos argumentos, ou seja, o seu objectivo e distinguir os argumentos
que sao bons dos argumentos que n ao prestam. Em termos l ogicos, um
argumento pode ser v alido ou ser inv alido.
Denicao 1.1.3 (Validade) Diz-se que um argumento e valido (poden-
do tambem dizer-se que as premissas implicam logicamente a conclusao,
ou que a conclusao e uma consequencia l ogica das premissas) quando for
logicamente impossvel ter todas as premissas verdadeiras e a conclusao falsa.
O argumento diz-se invalido em caso contr ario.
Qualquer argumento e v alido ou e inv alido. No entanto, tal como acontece
para os valores logicos das proposicoes, para certos argumentos pode n ao se
saber se estes sao v alidos ou se sao inv alidos.
Um argumento v alido apresenta uma propriedade interessante: se as pre-
missas forem todas verdadeiras, ent ao a conclusao tambem e verdadeira.
Devemos, desde j a, ser cuidadosos ao distinguir os conceitos de validade e
invalidade dos conceitos de verdade e falsidade. A validade e a invalidade sao
atributos de argumentos ao passo que a verdade e a falsidade sao atributos
de proposicoes.
1
Tambem conhecido como argumento premissa-conclusao.
1.1. PROPOSIC

OES E ARGUMENTOS 5
Exemplo 1.1.1 Consideremos o seguinte argumento:
a neve e branca
o ceu e azul
a neve e branca
Ser a que e logicamente impossvel ter todas as premissas verdadeiras e a con-
clusao falsa? Neste caso a resposta e simples, sim, e logicamente impossvel.
Uma vez que a conclusao e uma das premissas, se as premissas forem todas
verdadeiras, ent ao a conclusao (que e uma destas premissas) tambem sera
verdadeira. Este e um exemplo de um argumento v alido. `
Exemplo 1.1.2 Consideremos o argumento:
a neve e verde
o ceu e castanho
a neve e verde
Neste caso, as premissas sao todas falsas e a conclusao tambem e falsa. Ser a
que podemos imaginar uma situacao em que todas as premissas sao verda-
deiras? Sem grande esfor co, podemos idealizar um lme de animacao que
se passa num mundo em que a neve e verde e o ceu e castanho. Neste caso,
as premissas sao verdadeiras e a conclusao, para este mundo imagin ario,
tambem e verdadeira. Para este exemplo, e impossvel imaginar uma si-
tua cao em que as premissas sao todas verdadeiras e a conclusao e falsa.
Estamos novamente perante um argumento v alido. `
Exemplo 1.1.3 Consideremos o argumento:
o Pedro e um aluno da LEIC
o Pedro e inteligente
todos os alunos da LEIC sao inteligentes
Neste caso, supondo que o Pedro e um aluno da LEIC e que o Pedro e
inteligente, podemos imaginar que existe um aluno da LEIC, o Zacarias, que,
infelizmente, n ao e inteligente. Temos uma situa cao em que as premissas
sao todas verdadeiras e a conclusao e falsa, pelo que o argumento e inv alido.
`
Como estes exemplos mostram, a validade (ou a invalidade) de um argu-
mento parece n ao estar directamente relacionada com os valores l ogicos das
proposi coes que este contem. Um argumento v alido pode ter as premissas
6 CAP

ITULO 1. CONCEITOS B

ASICOS
falsas e a conclusao falsa (ver Exemplo 1.1.2), outros exemplos de argu-
mentos v alidos e de argumentos inv alidos com premissas e conclusoes com
diferentes valores l ogicos sao apresentados na Tabela 1.1.
2
Valores l ogicos das
premissas e da Argumento v alido Argumento inv alido
conclus ao
(Verdadeiro, Verdadeiro) todos os homens sao mortais todas as pessoas sao humanos
S ocrates e um homem todos os humanos sao pessoas
S ocrates e mortal
(Verdadeiro, Falso) todos os c aes sao animais
todos os animais sao c aes
(Falso, Verdadeiro) todas as aves sao humanos todos os animais sao c aes
todos os humanos tem penas todos os c aes sao animais
todas as aves tem penas
(Falso, Falso) todos os c aes sao felinos todos os gatos sao c aes
todos os felinos tem penas todos os c aes sao gatos
todos os c aes tem penas
Tabela 1.1: Exemplos do princpio da irrelev ancia do valor l ogico.
A unica relacao entre a validade e a invalidade de um argumento e a verdade
e a falsidade das proposi coes que o constituem e a seguinte: um argumento
cujas premissas sao todas verdadeiras e a conclusao e falsa e um argumento
inv alido. Na realidade, considerando, de novo, a Tabela 1.1, n ao consegui-
mos encontrar nenhum argumento v alido em que todas as premissas sao
verdadeiras e a conclusao e falsa pois isto colide com a propria deni cao de
argumento valido.
Esta constatacao da quase independencia entre a validade e a invalidade
de um argumento e a verdade e a falsidade das proposicoes que o constituem
e traduzida pelo chamado princpio da irrelev ancia do valor l ogico.
2
Agrade co a John Corcoran, a Bill Rapaport e ` a Ana Cardoso Cachopo a sugestao de
alguns destes argumentos.
1.1. PROPOSIC

OES E ARGUMENTOS 7
Proposicao 1.1.1 (Princpio da irrelevancia do valor logico) Com
excepcao do caso em que as premissas sao todas verdadeiras e a conclusao e
falsa, a verdade ou a falsidade das proposicoes que constituem um argumento
n ao e relevante para determinar a validade ou a invalidade do argumento.
Este princpio signica que a validade (ou a invalidade) de um argumento n ao
e uma fun cao dos valores l ogicos das suas proposicoes. Tentando saber de
que depende a validade ou a invalidade de um argumento, obtemos a resposta
(que n ao nos ajuda nada, por enquanto): e uma fun cao da existencia ou nao
da relacao de consequencia l ogica entre as premissas e a conclusao.
Consideremos agora os seguintes argumentos:
A
1
: o Piupiu e uma ave
nenhuma ave tem barbatanas
o Piupiu n ao tem barbatanas
A
2
: o Bobi e um animal
todos os caes sao animais
o Bobi n ao e um cao
nem todos os animais sao caes
A
3
: factorial e um nome em Scheme
nenhum nome em Scheme contem o caracter branco
factorial n ao contem o caracter branco
A
4
: todas as pessoas sao humanos
todos os humanos sao pessoas
Como podemos dizer se estes sao v alidos ou sao inv alidos? Sabemos que a
l ogica tenta denir metodos para distinguir argumentos v alidos de argumen-
tos invalidos. Esta distin cao deve ser feita independentemente do assunto
sobre o qual os argumentos tratam, pois no caso contr ario n ao existiria uma
disciplina independente chamada l ogica. Para isso, em l ogica, consideram-se
classes constitudas por argumentos os quais sao estruturalmente semelhan-
tes excepto no que respeita aos termos especcos do domnio de que o
argumento trata. Por exemplo, os argumentos A
1
e A
3
sao estruturalmente
semelhantes e, no entanto, A
1
diz respeito a zoologia ao passo que A
3
diz
respeito a informatica. Em logica diz-se que os argumentos A
1
e A
3
tem a
mesma forma.
Para avaliar a validade ou a invalidade de um argumento considera-se que
8 CAP

ITULO 1. CONCEITOS B

ASICOS
cada uma das suas proposicoes contem termos l ogicos (palavras tais como
e, ou, n ao, se . . . ent ao, todos) e termos especcos do domnio
sobre o qual a proposicao trata (nomes pr oprios, substantivos ou adjectivos).
Denicao 1.1.4 (Forma de um argumento) A forma de um argumento
e um argumento em que os termos especcos (ou seja, os termos n ao l ogicos)
de cada uma das proposicoes constituintes sao substitudos por um smbolo
associado `a sua categoria gramatical.
Exemplo 1.1.4 A forma dos argumentos A
1
e A
3
e a seguinte:
F
1
: A e um B
nenhum B tem C
A n ao tem C
em que A e um nome pr oprio e B e C sao substantivos. `
Exemplo 1.1.5 A forma do argumento A
2
e a seguinte:
F
2
: A e um B
todos os C sao B
A n ao e C
nem todos os B sao C
em que A e um nome pr oprio, B e um substantivo e C e um substantivo.
`
A forma de um argumento pode ser estudada independentemente do domnio
especco de que tratam as proposicoes que o constituem. Na realidade e
em virtude da sua forma e n ao do seu domnio especco que um argumento
e v alido ou e invalido. Isto signica que todos os argumentos com a mesma
forma sao ou todos v alidos ou todos inv alidos. Este facto e traduzido pelo
princpio da forma.
Proposicao 1.1.2 (Princpio da forma) Se dois argumentos tem a mesma
forma ent ao estes sao ambos v alidos ou ambos inv alidos.
Um modo alternativo de enunciar o princpio da forma corresponde a dizer
que todo o argumento com a mesma forma de um argumento v alido e valido
e que todo o argumento com a mesma forma de um argumento inv alido e
inv alido.
1.1. PROPOSIC

OES E ARGUMENTOS 9
Argumento
Palpite
Valido Inv alido
Tente
encontrar
uma
prova
Sim Nao
Tente
encontrar
um contra
argumento
Nao Sim

.
`
`
`
``

Sabido
v alido
Sabido
invalido
Mude de
palpite
(Validade ou
invalidade
desconhecida)
`

Figura 1.1: Metodologia da l ogica.


Exemplo 1.1.6 Utilizando o princpio da forma, podemos concluir que o
argumento A
4
e inv alido visto que o seguinte argumento (com a mesma
forma) tem premissas verdadeiras e conclusao falsa:
A
5
: Todos os caes sao mamferos
Todos os mamferos sao caes
`
Esta discussao mostra que a l ogica estuda argumentos quanto `a forma (e
da a razao de ser chamada um sistema formal).
Nesta seccao apresentamos uma primeira abordagem `a metodologia para
estudar os argumentos quanto `a forma e para decidir quais deles sao v alidos
e quais sao inv alidos.
Na Figura 1.1, apresentamos as linhas gerais da metodologia para determinar
se um dado argumento e valido ou e inv alido. De acordo com esta metodo-
logia, dado um argumento qualquer, o primeiro passo para determinar a sua
validade ou a sua invalidade corresponde a produzir um palpite sobre essa
validade ou invalidade. Este palpite e produzido analisando as premissas
e a conclusao e tentando determinar intuitivamente se a conclusao e uma
10 CAP

ITULO 1. CONCEITOS B

ASICOS
r
A
&%
'$
B
&%
'$
C
Figura 1.2: Diagrama para mostrar a validade de F
1
.
consequencia das premissas.
A partir deste palpite seguimos uma de duas linhas de raciocnio:
1. Se pensamos que o argumento e v alido, teremos que provar que e
impossvel que as premissas sejam todas verdadeiras e que a conclusao
seja falsa. Se conseguirmos encontrar uma prova ent ao o argumento
passa a ser sabido valido. Ou seja, o conhecimento sobre a validade de
um argumento envolve raciocnio abstracto.
2. Se pensamos que o argumento e inv alido, devemos tentar encontrar um
argumento com a mesma forma cujas premissas sejam todas verdadei-
ras e a conclusao seja falsa. Este e chamado um contra-argumento.
Encontrando um contra-argumento, o argumento original passa a ser
sabido invalido. Ou seja, o conhecimento sobre a invalidade de um
argumento, normalmente, envolve conhecimento factual.
3
No caso de n ao conseguirmos provar a validade ou a invalidade de um argu-
mento, podemos mudar a nossa opini ao (o nosso palpite) e tentar provar o
contr ario. No caso desta tentativa tambem falhar, a validade ou a invalidade
do argumento e desconhecida.
Exemplo 1.1.7 (Prova para argumento valido) Consideremos o argu-
mento A
1
e tentemos obter uma prova de que este e v alido. Vamos considerar
a forma deste argumento, F
1
, e representemos atraves de um diagrama de
Venn
4
a entidade A, todas as entidades que vericam a propriedade B e
todas as entidades que vericam a propriedade C.
3
Podemos tambem, se for mais f acil, apresentar uma prova formal para a invalidade de
um argumento.
4
Os diagramas de Venn foram inventados por John Venn (18341923) em 1880 e foram
renados por Clarence Irving Lewis (18831964).
1.2. S

IMBOLOS L

OGICOS 11
Uma vez que a primeira premissa arma que A e um B, a entidade A tem
que pertencer `as entidades que vericam a propriedade B. A segunda pre-
missa arma que as entidades que vericam a propriedade B e as entidades
que vericam a propriedade C sao disjuntas (Figura 1.2). Do diagrama
apresentado na gura, podemos concluir que a entidade A n ao pode ter a
propriedade C. Portanto, o argumento A
1
e sabido v alido. `
Exemplo 1.1.8 (Contra-argumento de argumento invalido) O argu-
mento A
4
pode ser mostrado inv alido, produzindo o argumento A
5
(ver
Exemplo 1.1.6), com a mesma forma e com premissa verdadeira e conclusao
falsa. `
Embora um argumento seja sempre ou v alido ou inv alido, a sua validade
(ou a sua invalidade) pode ser desconhecida. Como exemplo, consideremos
o argumento em que as premissas sao os axiomas da aritmetica e cuja con-
clusao e a proposicao, para n > 2, n ao existem inteiros x, y e z tais que
z
n
= x
n
+y
n
. Este argumento, conhecido pelo ultimo teorema de Fermat
5
manteve-se com validade ou invalidade desconhecida desde a sua formulacao
no seculo XVII ate 1993 (o ano em que foi demonstrado v alido), apresar dos
esforcos de muitos matematicos para o provar ao longo de 300 anos. Este
argumento e v alido mas apenas passou a ser conhecido como v alido 300 anos
ap os a sua formula cao.
1.2 Smbolos logicos
Ao discutir a forma de um argumento, dissemos que as proposi coes conti-
nham termos l ogicos e termos especcos do domnio sobre o qual a pro-
posi cao tratava. Ent ao, mencionamos como termos l ogicos palavras tais
como e, ou e se . . . ent ao. Nesta seccao abordamos a an alise de alguns
desses termos l ogicos, introduzindo o correspondente smbolo que utilizare-
mos para os representar.
O primeiro aspecto que importa discutir e o facto de um termo l ogico ser um
operador de forma cao de proposi coes, ou seja, um termo l ogico e uma pala-
vra, ou uma sequencia de palavras, que quando apropriadamente composta
5
Formulado em 1637 pelo matem atico Frances Pierre de Fermat (16011665) o qual
escreveu ` a margem das suas notas encontrei uma prova maravilhosa para esta arma c ao,
mas a margem destas notas e demasiado pequena para a apresentar.
12 CAP

ITULO 1. CONCEITOS B

ASICOS
com outras proposicoes d a origem a uma nova proposicao. Como exemplos
de operadores de formacao de proposi coes, podemos pensar nas palavras
e, ou e implica ou nas sequencias de palavras se ... ent ao, para
todo, o Francisco acredita que e e possvel que.
Na logica devemos escolher quais os operadores de formacao de proposicoes
a considerar como smbolos l ogicos e analisar qual o signicado das frases
obtidas com esses operadores. Nesta seccao, iremos abordar o estudo de
quatro desses operadores, correspondentes aos smbolos logicos conjun cao,
disjun cao, nega cao e implicacao.
Conjun cao. A conjun cao corresponde `a palavra portuguesa e, a qual a
partir de duas proposi coes cria uma nova proposicao que arma que ambas
se vericam (ou que ambas sao verdadeiras). Por exemplo, partindo das
proposi coes a neve e branca e o ceu e azul, a proposi cao a neve e
branca e o ceu e azul arma simultaneamente que a neve e branca e que
o ceu e azul.
Neste livro, representaremos a palavra e pelo smbolo . Este smbolo
e designado por conjun cao. Se e representarem duas proposicoes ar-
bitr arias, ent ao representa a conjun cao destas duas proposicoes, a
qual e lida e .
Somos facilmente levados a concluir que uma frase resultante da utiliza cao
de uma conjun cao sera verdadeira apenas se ambas as frases que esta palavra
liga forem verdadeiras.
Continuando com a analise do signicado de frases compostas com a palavra
e, podemos tambem concluir que as frases e terao o mesmo
valor l ogico.
Devemos, no entanto, notar que esta comutatividade nos componentes de
uma conjun cao nem sempre corresponde ao que queremos transmitir com
a utiliza cao da palavra e na nossa linguagem comum. Consideremos a
frase o Jo ao escorregou e caiu (sub-entenda-se, o Jo ao escorregou e o
Joao caiu). Esta frase e normalmente proferida tendo em atencao uma
sequencia temporal de acontecimentos, indicando que o Jo ao escorregou e
que, depois, o Jo ao caiu, pelo que a frase o Jo ao caiu e escorregou n ao
e logicamente equivalente `a frase inicial.
Deste exemplo, podemos concluir que o smbolo n ao captura exacta-
mente o signicado da palavra portuguesa e. A discussao deste problema
1.2. S

IMBOLOS L

OGICOS 13
esta fora do ambito deste livro, no qual assumimos que e exactamente
o mesmo que , retirando a ambiguidade que possa estar associada `a
palavra e. Por outras palavras, a conjun cao captura as condicoes mnimas
que impomos `a palavra portuguesa e.
Disjuncao. A disjun cao corresponde `a palavra portuguesa ou, a qual
a partir de duas proposicoes cria uma nova proposicao que arma que a
primeira ou que a segunda e verdadeira (ou que, eventualmente, ambas sao
verdadeiras).
Com a palavra ou, a ambiguidade a ela associada e muito maior do que
no caso da conjun cao. Surge desde logo a questao do que signica ou
?
6
Ser a que ou signica que exactamente uma das proposi coes
ou e verdadeira? Ser a que ou signica que pelo menos uma
das proposicoes ou e verdadeira, mas que ambas tambem podem
ser verdadeiras? Para responder a esta questao iremos considerar algumas
situacoes em que a palavra ou e utilizada em portugues.
Suponhamos que num determinado local esta a decorrer uma votacao, exis-
tindo, quatro listas candidatas, as listas A, B, C e D. Suponhamos ainda
que um dos eleitores, o Jo ao, ap os longa reeccao sobre as listas candidatas
arma eu vou votar na lista A ou na lista B (sub-entenda-se, eu vou
votar na lista A ou eu vou votar na lista B). Com a frase anterior, o Jo ao
esta a armar que vai votar e que o seu voto apenas ir a para uma das lis-
tas A ou B, e n ao para as duas. Neste caso, a frase composta atraves da
palavra ou arma que exactamente uma das proposi coes constituintes e
verdadeira.
Suponhamos, por outro lado, que num dia de calor, o Jo ao arma eu vou
para a praia ou para a piscina (sub-entenda-se, eu vou para a praia ou eu
vou para a piscina). Neste caso, n ao diramos que o Jo ao tinha mentido
se mais tarde tomassemos conhecimento que o Jo ao tinha passado a manh a
na praia e a tarde na piscina. Neste segundo caso, a frase composta atraves
da palavra ou arma que uma das proposicoes constituintes e verdadeira,
podendo ambas ser verdadeiras.
Face a situacoes como estas, em l ogica, normalmente sao denidos dois
smbolos l ogicos que correspondem aos dois possveis signicados da palavra
portuguesa ou:
6
Estamos a assumir que e representam duas proposic oes arbitr arias.
14 CAP

ITULO 1. CONCEITOS B

ASICOS
A disjun cao inclusiva, ou simplesmente disjun cao, representada pelo
smbolo , corresponde ao caso em que uma frase composta por
este smbolo e verdadeira se alguma das suas proposicoes constituintes
for verdadeira ou se ambas as proposicoes que a constituem forem
verdadeiras (por outras palavras, uma frase utilizando este smbolo
e falsa apenas no caso de ambas as proposi coes constituintes serem
falsas).
A disjun cao exclusiva, representada pelo smbolo , corresponde ao
caso em que uma frase composta por este smbolo e verdadeira apenas
no caso de exactamente uma das suas proposicoes constituintes ser
verdadeira.
Neste livro, `a semelhanca da maioria dos textos de l ogica, utilizaremos a
disjun cao inclusiva. A disjuncao exclusiva sera apresentada apenas pontu-
almente. Este aspecto n ao tem as consequencias negativas que `a primeira
vista pode parecer, pois a disjun cao exclusiva pode ser denida `a custa de
outros smbolos l ogicos utilizados neste livro.
Se e representarem duas proposi coes arbitr arias, ent ao representa
a disjun cao (inclusiva) destas duas proposicoes, a qual e lida ou .
Convem fazer ainda outra observacao quanto `a utiliza cao da palavra ou na
nossa comunica cao quotidiana. Suponhamos que quando o Jo ao faz a ar-
macao eu vou votar na lista A ou na lista B, o Jo ao j a tinha decidido, sem
sombra de d uvida, que iria votar na lista A. Ao termos conhecimento de toda
esta informa cao, seremos levados a pensar que o Jo ao nos enganou fazendo
a arma cao eu vou votar na lista A ou na lista B. Na realidade, e um
pressuposto da nossa comunica cao, que ao transmitirmos uma proposicao
fazemos a arma cao mais forte que estamos em posi cao de fazer. A arma cao
eu vou votar na lista A e mais forte do que a armacao eu vou votar na
lista A ou na lista B pois a primeira transmite mais informa cao do que a
segunda.
Apesar desta constatacao, consideramos que o valor l ogico da frase
apenas depende dos valores l ogicos das frases que a constituem, e
, sendo verdadeiro sempre que pelo menos um deles seja verdadeiro.
Esta e uma decisao semelhante `a que tomamos em rela cao ao smbolo l ogico
quando simplic amos a sua utilizacao, ignorando aspectos temporais
nas frases contendo uma conjun cao.
1.2. S

IMBOLOS L

OGICOS 15
Negacao. A nega cao corresponde `a frase em portugues n ao e verdade
que ou a qualquer das suas contraccoes que e habitual utilizar na nossa
lnguagem comum, por exemplo, eu n ao vou votar na lista B. A negacao
transforma uma proposi cao noutra proposicao, a qual apenas e verdadeira
se a proposicao de origem for falsa.
A nega cao e representada pelo smbolo , lido n ao ou n ao e verdade
que. Se representar uma proposicao arbitr aria, ent ao representa a
negacao da proposicao .
Implicacao. A implicacao corresponde ao operador de formacao de frases
traduzido pelas palavras portuguesas se . . . ent ao.
`
A frase que se segue
`a palavra se chama-se o antecedente e `a frase que se segue `a palavra
ent ao chama-se o consequente. A implica cao corresponde a um dos ope-
radores l ogicos em relacao aos quais existe mais controversia.
Consideremos a proposi cao se o Pedro tem nota positiva no exame, ent ao
o Pedro obtem aprova cao na disciplina e tentemos relacionar os valores
l ogicos do antecedente e do consequente com o valor l ogico da frase. Deve
ser evidente que se o antecedente e verdadeiro (ou seja, o Pedro tem nota
positiva no exame) ent ao o consequente e obrigatoriamente verdadeiro (ou
seja, o Pedro obtem aprovacao na disciplina). Se alguem vier a saber
que o Pedro teve nota positiva no exame e que o Pedro n ao obteve
aprova cao na disciplina, tera certamente razoes para armar que a frase
se o Pedro tem nota positiva no exame, ent ao o Pedro obtem aprovacao
na disciplina n ao e verdadeira. Assim, poderemos dizer que uma frase da
forma se . . . ent ao sera verdadeira se o antecedente for verdadeiro e o con-
sequente tambem for verdadeiro e sera falsa se o antecedente for verdadeiro
e o consequente for falso.
Suponhamos agora que o antecedente e falso, ou seja o Pedro n ao teve nota
positiva no exame, o que e que podemos concluir juntando esta armacao `a
arma cao anterior? O Pedro obtem aprova cao na disciplina ou o Pedro
n ao obtem aprova cao na disciplina? Infelizmente, com esta informa cao, n ao
podemos concluir nada, pois a frase nada nos diz sobre o que acontece na
situacao do antecedente ser falso. Podemos imaginar uma situa cao em que
uma nota positiva no exame dava dispensa de prova oral e aprova cao ime-
diata na disciplina. Pelo que o Pedro poder a obter aprovacao na disciplina
se prestar uma boa prova oral. Ou podemos imaginar a situa cao em que o
exame e a unica prova da disciplina, pelo que a n ao obten cao de positiva
16 CAP

ITULO 1. CONCEITOS B

ASICOS
no exame origina a n ao aprovacao na disciplina. A frase original, contudo,
e omissa em rela cao a estes casos, pelo que devemos admitir que se o ante-
cedente for falso, o consequente poder a ser verdadeiro ou ser falso. Assim,
poderemos dizer que uma frase da forma se . . . ent ao sera verdadeira se o
antecedente for falso, independentemente do valor l ogico do consequente.
Entusiasmados com esta discussao, podemos ser levados a fazer as seguintes
armacoes se o Governo abolir os impostos, ent ao eu dou 20 valores a
todos os meus alunos e se o Pedro tem nota positiva no exame, ent ao o
escalao maximo do IVA e 20%. Olhando apenas para os valores l ogicos
do antecedente e do consequente destas proposi coes, podemos concluir que
como o antecedente da primeira proposicao e falso (o Governo n ao vai mesmo
abolir os impostos), ent ao eu sou livre para dar as notas justas a cada aluno,
em lugar de lhes dar cegamente 20 valores (o que eles muito gostariam);
por outro lado, como o consequente da segunda proposi cao e verdadeiro (o
escalao maximo do IVA e na realidade 20%), a proposicao e verdadeira,
independentemente do valor l ogico do antecedente. No entanto, se qualquer
destas arma coes fosse proferida numa conversa entre seres humanos, elas
seriam imediatamente rejeitadas por n ao existir qualquer rela cao entre o
antecedente e o consequente.
Estamos pois numa situa cao semelhante `a encontrada para a disjun cao, e
de certo modo para a conjun cao, na qual existe uma divergencia entre a
utiliza cao comum de palavras em portugues e a utiliza cao que denimos
para a l ogica.
Vamos adoptar o smbolo l ogico , designado por implicacao material, ou
apenas por implicacao, para representar o operador de construcao de frases
correspontende `as palavras portuguesas se . . . ent ao e cujo valor l ogico
apenas depende dos valores l ogicos das proposicoes que correspondem ao
antecedente e ao consequente. Se e corresponderem a proposicoes
arbitr arias, a frase le-se se ent ao ou implica . O valor
l ogico da proposicao e falso apenas se o antecedente for verdadeiro
e o consequente for falso. Novamente, tal como no caso da conjun cao e
da disjun cao, a implicacao (material) captura as condicoes mnimas que
impomos `a utiliza cao das palavras portuguesas se . . . ent ao.
Existem l ogicas que adoptam outros tipos de implicacao, por exemplo, o
smbolo , designado por implicacao relevante, os quais n ao sao meras
fun coes l ogicas dos valores do antecedente e do consequente, mas dependem
da existencia ou n ao de uma liga cao de relevancia entre o antecedente o o
1.3. COMPONENTES DE UMA L

OGICA 17
consequente. Estes outros tipos de implica cao exigem um tratamento formal
muito mais complicado do que o que apresentamos e estao fora do ambito
deste livro.
Outros smbolos logicos. Para alem dos quatro smbolos l ogicos b asicos
que acab amos de apresentar, conjuncao, disjun cao, negacao e implicacao,
e possvel denir muitos outros. No Captulo 3 introduzimos mais dois
smbolos l ogicos, e , correspondentes aos operadores de formacao
de frases para todo e existe. Logicas mais sosticadas utilizam outros
smbolos, por exemplo, , para representar e necessario e , para
representar e possvel.
Argumentos em linguagem simb olica. Tal como em matematica existe
um conjunto de smbolos para descrever os objectos de que a matematica
trata, em l ogica usam-se smbolos para descrever aqueles objectos que sao
comuns a formas de argumentos, os termos l ogicos. J a apresent amos os
smbolos , , e . Mencion amos outros, por exemplo, .
Usando estes smbolos l ogicos, e outras conven coes apresentadas neste livro,
os argumentos podem ser escritos de forma muito mais rigorosa e compacta.
Por exemplo, o argumento com a forma F
1
sera escrito de um modo mais
compacto como:
F

1
: B(A)
x[B(x) C(x)]
C(A)
1.3 Componentes de uma l ogica
A an alise que ate agora efectuamos sobre a validade ou a invalidade de
argumentos embora seja intuitivamente util para apreender o conceito de
validade e a sua possvel rela cao com o conceito de verdade, n ao e pratic avel
em argumentos complexos como aqueles que vamos querer abordar. Tendo
transmitido os conceitos b asicos, vamos agora comecar a desenvolver um
formalismo para a an alise sistematica de argumentos.
Antes de comecar a falar sobre uma l ogica, precisamos de especicar a lin-
guagem a utilizar na descricao dos nossos argumentos. Esta linguagem es-
18 CAP

ITULO 1. CONCEITOS B

ASICOS
tabelece as coisas sobre as quais podemos falar e o nvel de detalhe com
que podemos abord a-las. Por exemplo, podemos convencionar que usare-
mos letras para representar as proposicoes e que usaremos apenas os quatro
smbolos l ogicos que j a mencionamos, a conjun cao, a disjun cao, a negacao
e a implica cao. Se P e Q representarem proposicoes, ent ao e natural que
admitamos que P Q, P (QP) e P tambem representem proposi coes na
nossa linguagem, mas poderemos ser levados a rejeitar P Q e P como
possveis proposi coes. Em nome do rigor, esta linguagem dever ser denida
de um modo claro e n ao ambguo, o que nos leva ao conceito de f ormula
bem formada.
Denicao 1.3.1 (F ormula bem formada) A linguagem de uma l ogica e
denida atraves de um conjunto de regras de forma cao que especicam as
frases legais da l ogica, as chamadas f ormulas bem formadas (abreviadas por
fbfs).
Exemplos de regras de formacao de frases, para diferentes linguagens, sao
apresentados nos captulos 2 e 3.
Denicao 1.3.2 (Argumento versao 2) Sendo L a linguagem que cor-
responde `as formulas bem formadas, um argumento e um par (, ), no qual
L e L.
7

Como em qualquer linguagem, sobre as frases de L podemos efectuar dois


tipos distintos de opera coes:
Podemos efectuar operacoes de manipula cao de smbolos, considerando
a linguagem apenas ao nvel simb olico. Atraves destas opera coes efec-
tuamos o que se chama provas, sequencias de frases da linguagem
(fbfs), comecando pelas premissas e tentando obter uma dada con-
clusao;
Podemos atribuir um signicado aos smbolos, e atraves deste signi-
cado, podemos atribuir um valor l ogico, `as proposicoes que constituem
um argumento. Este sera um dos passos para poder determinar a va-
lidade ou a invalidade do argumento. Note-se que, como sabemos, a
validade ou a invalidade de um argumento n ao e uma fun cao do valor
l ogico das proposicoes que o constituem, pelo que para determinar a
7
Utilizamos letras gregas min usculas (, , etc.) para representar proposic oes e letras
gregas mai usculas (, , etc.) para representar conjuntos de proposic oes.
1.3. COMPONENTES DE UMA L

OGICA 19
validade ou a invalidade de um argumento teremos que fazer outras
coisas baseadas no valor l ogico dos constituintes de um argumento.
Estas operacoes sao efectuadas em diferentes componentes de uma l ogica,
nomeadamente, no sistema dedutivo e no sistema semantico.
1.3.1 O sistema dedutivo
O sistema dedutivo contem um conjunto de regras para a manipula cao dos
smbolos existentes na linguagem, as regras de inferencia. Estas regras n ao
fazem parte da linguagem da l ogica mas falam sobre as entidades existentes
na linguagem, ou seja, pertencem `a meta-linguagem da l ogica.
Denicao 1.3.3 (Regra de inferencia) Uma regra de inferencia e uma
regra de manipulacao de smbolos que especica como gerar novas f ormulas
bem formadas a partir de f ormulas bem formadas que ja existem.
As regras de inferencia apenas consideram os smbolos que existem nas fra-
ses da linguagem sem se preocuparem com o signicado destes smbolos.
Ou seja, as regras de inferencia permitem-nos escrever novas f ormulas bem
formadas a partir da mera existencia de outras f ormulas bem formadas.

E
evidente que na criacao das regras de inferencia o signicado dos smbolos
l ogicos e tido em consideracao, no entanto, a aplica cao das regras de in-
ferencia e feita de uma forma mecanica.
Exemplo 1.3.1 (Utilizacao de regra de inferencia) Com aquilo que j a
sabemos sobre a conjun cao e natural estabelecer a regra de inferencia que
arma se e sao duas proposicoes arbitr arias a que temos acesso,
8
ent ao
somos autorizados a escrever . Se P e Q forem duas proposicoes da
nossa linguagem, a que temos acesso, esta regra de inferencia permite-nos
escrever, entre muitas outras, as seguintes proposi coes:
P Q
P P
P (P P)
Notemos que embora n ao saibamos a que proposi coes correspondem P e Q,
a regra de inferencia autoriza-nos a escrever novas proposicoes utilizando
exclusivamente manipula coes sint acticas. `
8
Esta expressao a que temos acesso sera, naturalmente, denida de um modo formal.
20 CAP

ITULO 1. CONCEITOS B

ASICOS
O sistema dedutivo pode tambem conter um certo n umero de fbfs que sao
aceites sem demonstracao, aos quais se d a o nome de axiomas.
Denicao 1.3.4 (Derivabilidade) Dado um argumento (, ) se existir
uma sequencia de regras de inferencia que aplicadas `as fbfs de (e `as fbfs
geradas a partir de ) produz , diz-se que e deriv avel a partir de e
escreve-se .
Denicao 1.3.5 (Argumento demonstravel) Se ent ao diremos
que o argumento (, ) e demonstravel.
Note-se que o operador e dependente do sistema dedutivo e, portanto,
em rigor ele devia ser indexado com uma identica cao do sistema dedutivo
no qual se utiliza o conceito de derivabilidade. No entanto, para simplicar
a nota cao e sempre que n ao haja perigo de confusao, utilizaremos apenas
, signicando derivabilidade no sistema dedutivo em considera cao.
Exemplo 1.3.2 (Derivabilidade) Tendo em atencao a regra de inferencia
apresentada no Exemplo 1.3.1, podemos concluir que {P, Q} P (P P).
Contudo, se a regra de inferencia apresentada nesse mesmo exemplo n ao
existisse no nosso sistema dedutivo, j a n ao teramos a garantia que P(PP)
fosse deriv avel de {P, Q}. Note-se que dizemos j a nao teramos a garantia
pois a regra que permite essa derivacao directa n ao existia, o que n ao quer
dizer que n ao existam outras regras de inferencia que permitam atingir o
mesmo resultado. `
Denicao 1.3.6 (Prova) A sequencia de fbfs gerada a partir de de modo
a obter (incluindo e ) e chamada uma prova de a partir de .
Uma prova e pois uma sequencia nita de fbfs (normalmente escrita em
forma de coluna), tal que cada fbf e ou uma premissa ou o resultado da
aplicacao de uma regra de inferencia a uma das fbfs anteriores da prova.
9
Denicao 1.3.7 (Teoria gerada a partir de um conjunto de fbfs)
Dado um conjunto de fbfs, L, ao conjunto de todas as fbfs deriv aveis a
partir de d a-se o nome de teoria gerada a partir de e escreve-se Th().
Formalmente, Th() = { : }.
9
As linhas de uma prova tambem podem corresponder a axiomas ou a teoremas, mas
isso n ao e relevante por agora.
1.3. COMPONENTES DE UMA L

OGICA 21
1.3.2 O sistema semantico
O sistema sem antico especica as condi coes sob as quais as proposi coes, as
fbfs, sao verdadeiras ou sao falsas. A semantica e baseada no conceito de in-
terpretacao, informalmente uma maneira de atribuir signicado aos smbolos
que compoem a linguagem.
10
Uma interpreta cao permite determinar os va-
lores l ogicos das proposi coes.
Denicao 1.3.8 (Consequencia logica) Dado um argumento (, ), se
n ao existir nenhuma interpreta cao que torna todas as proposi coes em
verdadeiras e falsa, ent ao diz-se que implica logicamente , ou e uma
consequencia l ogica de e escreve-se |= .
Da denicao anterior podemos concluir que se |= , ent ao o argumento
(, ) e v alido.
Note-se que a frase n ao existir nenhuma interpreta cao que torna todas
as proposi coes em verdadeiras e falsa corresponde a uma arma cao
muito forte. Esta frase n ao signica que nao somos capazes de encontrar
uma interpreta cao nestas condi coes, mas sim que e impossvel encontr a-la.
1.3.3 O sistema dedutivo e o sistema semantico
No sistema dedutivo nada se diz acerca da validade (o sistema dedutivo
apenas involve manipula cao sintactica de fbfs). Por outro lado, o sistema
semantico nada diz sobre derivabilidade (o sistema semantico apenas se pre-
ocupa com a atribui cao de signicado a fbfs). Estes componentes fornecem
diferentes perspectivas sobre as possveis relacoes entre as premissas e a con-
clusao. Embora o sistema dedutivo e o sistema semantico sejam aspectos
distintos de uma l ogica, eles devem ser compatveis para que a l ogica fa ca
sentido.
Denicao 1.3.9 (Solidez) Uma l ogica e s olida (do ingles, sound) se
qualquer argumento demonstr avel (com o seu sistema dedutivo) e v alido
de acordo com a sua semantica (Figura 1.3).
Informalmente, uma l ogica ser solida signica que a partir de proposi coes
verdadeiras apenas podemos provar proposicoes verdadeiras. Ou seja, par-
10
A sem antica e especicada de um modo rigoroso nas Secc oes 2.3 e 3.3.
22 CAP

ITULO 1. CONCEITOS B

ASICOS
Linguagem
Derivabilidade

.
`
`
`
`
`
`
`
``
Validade
|=
Sistema dedutivo Sistema semantico

Solidez

Completude
Figura 1.3: Rela cao entre o sistema dedutivo e o sistema semantico.
tindo de um conjunto de premissas, o nosso sistema dedutivo n ao gera ne-
nhuma conclus ao errada.
Note-se que o conceito de uma l ogica ser solida aplica-se `a existencia ou
n ao de regras de inferencia erradas. Podemos levar este conceito ao extremo
dizendo que se n ao existirem regras de inferencia no sistema dedutivo, ent ao
n ao faremos qualquer erro no nosso raciocnio pois n ao podemos provar nada.
Temos, neste caso uma l ogica solida mas sem qualquer interesse.
Denicao 1.3.10 (Completude) Uma l ogica e completa (do ingles, com-
plete) se qualquer argumento v alido de acordo com a sua semantica e de-
monstr avel no seu sistema dedutivo (Figura 1.3).
Informalmente, uma l ogica ser completa signica que podemos provar todas
as proposicoes verdadeiras, tendo em atencao as premissas.
A completude preocupa-se com a questao de ser ou n ao possvel provar
tudo aquilo que e verdadeiro, tendo em atencao as premissas. Aqui tambem
podemos imaginar um caso extremo, pensando num sistema dedutivo que
nos permita derivar todas as f ormulas bem formadas. Neste caso extremo,
dado que podemos inferir qualquer coisa, ent ao podemos provar todas as
proposi coes verdadeiras (e tambem todas as proposi coes falsas). Neste caso
a l ogica sera completa, mas n ao solida, e tambem sem qualquer interesse.
Os conceitos de solidez e de completude n ao sao uma propriedade apenas do
sistema dedutivo ou do sistema semantico mas sim uma relacao entre os dois
sistemas. Numa l ogica solida e completa as no coes de demonstrabilidade e
de validade sao extensionalmente equivalentes no sentido em que se aplicam
exactamente aos mesmos argumentos.
1.4. O DESENVOLVIMENTO DE UMA L

OGICA 23
1.4 O desenvolvimento de uma logica
Os conceitos de derivabilidade e de validade sao denidos para um sistema
formal e apenas aplic aveis a argumentos formais. No nosso dia a dia trata-
mos com argumentos informais e classicamo-los em v alidos ou em inv alidos.
Na realidade fazemos mais que isso, consideramos argumentos aceitaveis ou
n ao aceitaveis em que um argumento aceitavel, para alem de ser intuitiva-
mente v alido apresenta uma liga cao coerente entre as premissas e a con-
clusao.
A questao que levantamos nesta seccao diz respeito `a rela cao entre a nossa
no cao intuitiva de validade e a no cao formal de validade introduzida por
uma l ogica. J a vimos que em relacao a quatro dos smbolos l ogicos introdu-
zimos algumas simplicacoes que fazem com que esses smbolos l ogicos nem
sempre tenham o mesmo signicado que associamos `as palavras portuguesas
a que estes correspondem. Uma vez que uma l ogica pretende formalizar os
argumentos informais, representando-os numa forma precisa e generalizavel,
um sistema l ogico para ser aceitavel deveria apresentar a seguinte proprie-
dade: se um dado argumento informal e traduzido num argumento formal da
l ogica ent ao esse argumento formal devera ser v alido apenas se o argumento
informal e intuitivamente v alido.
Na realidade, podemos comecar o desenvolvimento de um sistema formal
com base na considera cao de conceitos intuitivos de validade de argumentos
informais. Representamos os argumentos informais atraves de uma nota cao
simb olica e criamos regras de inferencia e um sistema para avaliar a verdade
ou a falsidade de proposicoes, de modo que a representacao formal de argu-
mentos informais considerados v alidos de origem a argumentos v alidos no
nosso sistema e analogamente para argumentos inv alidos.
Utilizando estas regras de inferencia e o sistema semantico, outros argumen-
tos formais v alidos no sistema podem corresponder a argumentos informais
que sao intuitivamente considerados inv alidos. Face a esta situacao pode-
mos rever as regras do sistema ou, eventualmente, se as regras a rever sao
aceitaveis e plausveis e se a nossa intui cao sobre a invalidade do argumento
informal n ao e particularmente forte, podemos rever a nossa opini ao sobre
a validade do argumento informal.
`
A l ogica intuitiva que utilizamos quotidianamente para avaliar a validade
ou a invalidade de argumentos informais d a-se o nome de l ogica utens, a
l ogica que possumos.
`
A avalia cao rigorosa de argumentos baseada num
24 CAP

ITULO 1. CONCEITOS B

ASICOS
Logica utens
(argumentos informais)
noc ao intuitiva de validade
Logica docens
(argumentos formais)
nocao formal de validade

formalizac ao

avaliacao

avaliacao
Figura 1.4: Logica utens e l ogica docens.
sistema formal d a-se o nome de l ogica docens, a l ogica que aprendemos.
11
Na Figura 1.4 apresentamos a rela cao entre estas duas l ogicas.
Como os argumentos informais contem ambiguidade (recorde-se a discussao
que apresent amos na Sec cao 1.2), na passagem de um argumento informal
ao argumento formal correspondente algo se perde.
O primeiro passo para criar uma l ogica corresponde `a escolha de um con-
junto de smbolos l ogicos. Estes smbolos l ogicos v ao determinar quais os
argumentos formais admissveis e tambem o que se perde da passagem do
argumento informal para o argumento formal correspondente. Desenvolve-
se ent ao um sistema para decidir a validade de argumentos. Comparam-se
os resultados produzidos pelo sistema com as nossas no coes intuitivas de
validade e de invalidade. No caso de resultados n ao concordantes podemos
rever o sistema ou rever as nossas intui coes. Uma vez o sistema anado ele
torna-se o elemento de decisao sobre a validade ou a invalidade dos argu-
mentos.
11
As designac oes logica utens e logica docens foram introduzidas pelo matem atico
americano Charles Sanders Peirce (18391914), que, por sua vez, adoptou esta terminolo-
gia dos trabalhos sobre logica da Idade Media.
1.5. NOTAS BIBLIOGR

AFICAS 25
1.5 Notas bibliogracas
A l ogica e estudada h a mais de 2000 anos. Uma excelente apresentacao do
desenvolvimento hist orico desta disciplina pode ser consultada em [Kneale
e Kneale 88].
A metodologia que apresent amos para decidir se um argumento e v alido ou
e inv alido foi sugerida por Arist oteles (por volta do ano 350 a.c.) e foi
re-articulada na sua forma moderna por Alfred Tarski (19011983).
Uma boa discussao sobre o conceito de argumento e quanto `a determina cao
da forma de um argumento pode ser consultada em [Haack 78, p aginas 22
a 27].
Os livros sobre l ogica podem ser considerados em duas grandes categorias, a
l ogica los oca [Haack 78] e a l ogica matematica[Church 56], [Fitch 52], [Kle-
ene 52], [Lemon 78], [Tarski 65], [Whitehead e Russell 10]. A l ogica los oca
estuda os aspectos los ocos que surgem quando utilizamos ou pensamos so-
bre uma l ogica formal, incluindo referencia, identidade, verdade, nega cao,
quanticacao, existencia e necessidade, estando concentrada nas entidades
pensamentos, frases ou proposicoes que podem ser verdadeiras ou falsas.
Neste sentido, muitos dos aspectos considerados tem ligacoes `a losoa da
mente e `a losoa da linguagem. A l ogica matem atica e uma sub-disciplina
da l ogica e da matematica. Esta disciplina aborda o estudo matematico da
l ogica e a aplica cao deste estudo a outras areas da matematica. A l ogica ma-
tematica tem estreitas rela coes com a inform atica e com a l ogica losoca.
Aspectos comuns na l ogica matematica incluem o poder expressivo de uma
l ogica e o poder dedutivo de um sistema dedutivo.
1.6 Exerccios
1. Aplique a metodologia da l ogica para determinar a validade ou a in-
validade dos seguintes argumentos:
(a) Fernando Pessoa e Alberto Caeiro
Ricardo Reis e Alberto Caeiro
Fernando Pessoa e Ricardo Reis
(b) Fernando Pessoa e humano
Ricardo Reis e humano
Fernando Pessoa e Ricardo Reis
26 CAP

ITULO 1. CONCEITOS B

ASICOS
(c) Fernando Pessoa e Alberto Caeiro
Luis de Camoes n ao e Ricardo Reis
Luis de Camoes n ao e Alberto Caeiro
(d) Fernando Pessoa e humano
Fernando Pessoa n ao e Luis de Camoes
Luis de Camoes n ao e humano
(e) Ricardo Reis e Alberto Caeiro
Ricardo Reis e um poeta
Alberto Caeiro e um poeta
2. Aplicando a metodologia da l ogica, mostre se os seguintes argumentos
sao v alidos ou sao inv alidos:
(a) todos os homens sao saud aveis
uma mulher e saud avel
todos os homens sao mulheres
(b) o Pedro e um professor
os professores sao pessoas
as pessoas sao animais
o Pedro e um animal
(c) os homens sao humanos
o Silvestre n ao e um homem
o Silvestre n ao e humano
3. Preencha a Tabela 1.1 com novos argumentos para cada uma das si-
tua coes possveis.
4. Considere a frase em portugues o Jo ao foi despedido e revoltou-se.
Discuta o signicado informal desta frase, comparando-o com o signi-
cado atribudo pela l ogica. Em particular, considere a comutatividade
da conjun cao.
Captulo 2
Logica Proposicional
On the contrary, Watson, you can see
everything. You fail, however, to rea-
son from what you see. You are too
timid in drawing your inferences.
Sherlock Holmes, The Adventure of the
Blue Carbuncle
Um dos aspectos envolvidos na deni cao de uma l ogica corresponde `a escolha
da linguagem a utilizar na representacao de proposicoes. A deni cao da
linguagem vai determinar as coisas que podem ser expressas com a linguagem
e o nvel de detalhe com que estas coisas podem ser expressas.
A l ogica proposicional apresenta uma linguagem muito simples. Em l ogica
proposicional, o nvel mais elementar que utilizamos na representacao e o
conceito de smbolo de proposicao. Um smbolo de proposicao corresponde
a uma proposicao como um todo, ao interior da qual n ao podemos aceder.
De modo a claricar esta arma cao, consideremos a proposi cao S ocrates e
um homem. Esta proposicao pode ser representada em l ogica proposicional
por um smbolo de proposi cao, digamos P. Este smbolo de proposi cao n ao
nos d a nenhuma indica cao sobre as entidades S ocrates, nem homem,
nem sobre a relacao que existe entre elas. A proposi cao existe apenas como
um unico smbolo. Denindo o poder expressivo de uma linguagem como as
coisas que e possvel representar na linguagem, diremos que, em rela cao `a
arma cao anterior, a l ogica proposicional nao tem poder expressivo suci-
ente para representar as entidades S ocrates, nem homem, nem a rela cao
28 CAP

ITULO 2. L

OGICA PROPOSICIONAL
que existe entre elas.
Apesar do seu fraco poder expressivo, a grande vantagem da l ogica propo-
sicional, apresentada neste captulo, advem da simplicidade com que esta
permite apresentar certos conceitos, abrindo a porta para uma boa compre-
ensao de l ogicas mais complexas.
2.1 A linguagem
Smbolos da linguagem. Ao denir uma linguagem, teremos que comecar
por especicar quais os smbolos que fazem parte das frases da linguagem.
1
A
linguagem da logica proposicional admite tres tipos de smbolos, os smbolos
de pontua cao, os smbolos l ogicos
2
e os smbolos de proposicao.
1
Em informatica, estes designam-se por smbolos terminais.
2
Tambem conhecidos por conectivas logicas.
2.1. A LINGUAGEM 29
1. Smbolos de pontuacao: ( )
2. Smbolos logicos:
(a) o smbolo corresponde `a opera cao de nega cao;
(b) o smbolo corresponde `a opera cao de conjun cao;
(c) o smbolo corresponde `a opera cao de disjun cao;
(d) o smbolo corresponde `a operacao de implica cao.
3. Smbolos de proposi cao: P
i
(para i 1)
Um smbolo de proposicao, ou apenas uma proposi cao, corresponde a
um smbolo que representa uma proposi cao e que, portanto, pode ter
um valor l ogico.
A razao para parametrizar os smbolos de proposi cao, em lugar de
utilizar smbolos individuais para os representar, resulta do facto que
atraves desta parametriza cao obtemos uma capacidade ilimitada para
denir novos smbolos de proposicao.
Representamos por P o conjunto de todos os smbolos de proposi cao
da l ogica proposicional, ou seja
P = {P : P e um smbolo de proposi cao }.
Frases da linguagem. Nem todas as combina coes de smbolos terminais
correspondem a frases da linguagem. As frases legais em l ogica proposicional
sao designadas por f ormulas bem formadas (ou apenas por fbfs).
Denicao 2.1.1 (F ormula bem formada de L
LP
) As f ormulas bem for-
madas (ou fbfs) correspondem ao menor conjunto denido atraves das se-
guintes regras de forma cao:
1. Os smbolos de proposi cao sao fbfs (chamadas fbfs atomicas);
2. Se e uma fbf, ent ao e uma fbf;
3. Se e sao fbfs, entao ( ), ( ) e ( ) sao fbfs.
Por menor conjunto entende-se que as unicas f ormulas que sao fbfs sao
as que o sao em virtude das condi coes 1 a 3 da deni cao de f ormula bem
formada.
30 CAP

ITULO 2. L

OGICA PROPOSICIONAL
A fbf le-se n ao e verdade que ; a fbf () le-se e ; a fbf ()
le-se ou e a fbf ( ) le-se implica ou, alternativamente,
se ent ao .
A linguagem da l ogica proposicional, designada por L
LP
, e composta por
fbfs construdas a partir de smbolos obtidos do conjunto
{(, )} {, , , } P.
Quando n ao existir perigo de confus ao, utilizaremos letras romanas mai us-
culas, P, Q, R, etc., sem ndices, para representar smbolos de proposi cao;
assim, o conjunto b asico de smbolos da nossa linguagem corresponde, de
um modo simplicado, a
{(, )} {, , , } {P, Q, R, . . .}.
De acordo com estas deni coes, se P, Q, e R correspondem a smbolos de
proposi cao, as seguintes frases sao fbfs:
3
P
(P Q)
((P Q) R)
((P ((P Q) R)) R)
Sempre que possvel, os parenteses redundantes serao omitidos, pelo que as
tres ultimas fbfs apresentadas serao escritas do seguinte modo:
P Q
(P Q) R
(P ((P Q) R)) R
As seguintes sequencias de smbolos n ao sao fbfs:
4
()
(( P Q) R)
(P ((P Q) R)) R)(
Antes de continuar, apresentaremos alguns exemplos de fbfs em l ogica pro-
posicional e a sua relacao com proposicoes expressas em portugues.
3
Como exerccio, deve mostrar que estas frases sao fbfs.
4
Como exerccio, deve mostrar que estas frases n ao sao fbfs.
2.2. O SISTEMA DEDUTIVO 31
Exemplo 2.1.1 Suponhamos que P representa a proposi cao esta a cho-
ver, Q representa a proposi cao esta vento e R representa a proposi cao
eu co em casa. Neste caso, a fbf P Q representa a proposicao esta a
chover e esta vento; a fbf (P Q) R representa a proposicao se esta a
chover e esta vento, entao eu co em casa. `
2.2 O sistema dedutivo
O sistema dedutivo especica as regras de inferencia, regras que permitem
a introdu cao de novas fbfs a partir de fbfs existentes.
Como dissemos no captulo anterior, as regras de inferencia nao pertencem
`a linguagem da l ogica, mas falam sobre as entidades da linguagem, ou seja,
pertencem `a meta-linguagem da l ogica. As regras de inferencia sao conside-
radas como regras de manipula cao simb olica pois especicam que a partir de
um certo n umero de fbfs com uma certa forma, somos autorizados a escrever
uma nova fbf com uma certa forma. Devemos tambem notar que uma vez
que as regras de inferencia pertencem `a meta-linguagem, elas falam sobre
fbfs, e por isso as regras de inferencia utilizam vari aveis cujo domnio sao as
fbfs.
Por convencao, utilizaremos letras gregas min usculas (, , , etc.) como
meta-vari aveis cujo domnio sao as fbfs.
Exemplo 2.2.1 A fbf (P Q) R, poder a ser representada dos seguintes
modos:
Apenas por , uma meta-vari avel cujo valor e a fbf (P Q) R.
Por em que e uma meta-vari avel cujo valor e a fbf P Q e
e uma meta-vari avel cujo valor e a fbf R.
Por ( ) , em que e uma meta-vari avel cujo valor e a fbf P,
e uma meta-vari avel cujo valor e a fbf Q, e e uma meta-vari avel
cujo valor e a fbf R. `
Existem duas abordagens principais ao desenvolvimento de um sistema de-
dutivo. Uma delas, chamada dedu cao natural, apenas contem regras de
inferencia. A outra, chamada axiom atica, baseia-se na existencia de um con-
junto de axiomas, fbfs que se aceitam sem demonstracao, juntamente com
32 CAP

ITULO 2. L

OGICA PROPOSICIONAL
um pequeno n umero de regras de inferencia. Na pr oxima seccao apresen-
tamos uma abordagem da dedu cao natural e na Seccao 2.2.3 apresentamos
uma abordagem axiom atica.
2.2.1 Abordagem da deducao natural
Em sistemas de dedu cao natural, existem tipicamente duas regras de in-
ferencia para cada smbolo l ogico, a regra de introdu cao que diz como intro-
duzir uma fbf que utiliza o smbolo l ogico, e a regra de elimina c ao que diz
como usar uma fbf que contem o smbolo l ogico.
Antes de apresentar as regras de inferencia, apresentamos de um modo ri-
goroso os conceitos de prova e de prova de uma conclusao a partir de um
conjunto de premissas.
Denicao 2.2.1 (Prova versao 2) Uma prova e uma sequencia nita
de linhas numeradas, cada uma das quais ou contem uma premissa ou uma
fbf que e adicionada `a prova utilizando as fbfs que existem nas linhas ante-
riores e uma das regras de inferencia.
No lado direito de cada linha existe uma justica cao da introducao da linha
na prova.
Denicao 2.2.2 (Prova de a partir de ) Uma prova de a partir
de e uma prova cuja cuja ultima linha contem a fbf e cujas restantes
linhas contem ou uma fbf em ou uma fbf obtida a partir das fbfs das
linhas anteriores atraves da aplica cao de uma regra de inferencia. Se existir
uma prova de a partir de , dizemos que e deriv avel a partir de e
escrevemos .
Regra da premissa. Existe uma regra de inferencia que permite a in-
trodu cao de qualquer fbf numa prova, marcando-a como uma premissa. Esta
regra, chamada regra da premissa, identicada por Prem, arma que qual-
quer fbf pode ser introduzida como uma premissa. Esta regra de inferencia
e representada do seguinte modo:
n Prem
Na representacao desta regra de inferencia, n corresponde ao n umero da
linha em que a fbf e introduzida, corresponde `a fbf introduzida pela regra
da premissa e Prem indica a utiliza cao da regra da premissa.
2.2. O SISTEMA DEDUTIVO 33
Exemplo 2.2.2 Comecaremos com um exemplo simples, tentando provar
que {P, Q} PQ. Este resultado e obvio, pois a partir das premissas P e Q,
devemos ser capazes de inferir que P Q (recorde-se a discussao apresentada
na Sec cao 1.2 em relacao ao signicado da conjun cao). Comecamos a nossa
prova, escrevendo as premissas:
1 P Prem
2 Q Prem
Ate aqui, escrevemos duas linhas, a linha 1 contem a fbf P e e justicada
como uma premissa e a linha 2 contem a fbf Q e tambem e justicada como
uma premissa. De modo a continuar a nossa prova precisamos de introduzir
mais regras de inferencia. `
Regra da repeti cao. Existe uma regra de inferencia que permite a re-
peti cao numa prova de uma linha que j a existe na prova. Esta regra, cha-
mada regra de repeti cao, identicada por Rep, arma que qualquer fbf
pode ser repetida dentro de uma prova. Esta regra de inferencia e represen-
tada do seguinte modo:
n
.
.
.
.
.
.
m Rep, n
Ou seja, se a fbf existe na linha n (sem nos preocuparmos com a razao pela
qual esta existe na linha n), podemos escrever a fbf na linha m (m > n),
justicando esta nova linha pela aplicacao da regra de repeticao da linha n.
Exemplo 2.2.3 A regra da repeticao permite-nos adicionar uma terceira
linha `a prova do Exemplo 2.2.2:
1 P Prem
2 Q Prem
3 P Rep, 1
A linha 3 desta prova arma que a fbf P foi introduzida pela repeti cao da
linha 1. `
Regras para a conjuncao. Tal como acontece com os outros smbolos
l ogicos, existem duas regras de inferencia para tratar a conjun cao. Uma des-
tas regras diz-nos como introduzir (ou como construir) uma fbf cujo smbolo
34 CAP

ITULO 2. L

OGICA PROPOSICIONAL
l ogico principal e uma conjun cao. Esta regra chama-se introdu cao da con-
jun cao, abreviada por I.
A regra da introdu cao da conjun cao arma que numa prova em que aparecem
as fbfs e , podemos derivar a fbf :
n
n + 1
n + 2 I, (n, n + 1)
A justica cao da linha n + 2, I, (n, n + 1), indica que esta linha foi obtida
a partir das linhas n e n + 1 usando a regra de introdu cao da conjun cao.
Exemplo 2.2.4 Usando esta regra de inferencia, podemos adicionar uma
terceira linha `a prova do Exemplo 2.2.2:
1 P Prem
2 Q Prem
3 P Q I, (1, 2)
Com esta prova, podemos concluir que {P, Q} P Q, uma vez que a
fbf P Q foi obtida numa prova partindo das premissas P e Q. `
Exemplo 2.2.5 (Necessidade da repeti cao) Por estranho que pareca,
a partir das linhas 1 e 2 da prova do Exemplo 2.2.2, n ao podemos obter
directamente QP uma vez que esta dedu cao n ao segue o padr ao especi-
cado na regra de I esta regra de inferencia permite-nos introduzir uma
conjun cao cujo primeiro elemento e a fbf na linha n e cujo segundo elemento
e a fbf na linha n + 1. Contudo, usando a regra da repeticao, seguida da
aplica cao da regra da introdu cao da conjun cao, somos capazes de obter o
resultado desejado:
1 P Prem
2 Q Prem
3 P Rep, 1
4 Q P I, (2, 3)
`
A segunda regra para a conjun cao diz-nos como utilizar uma fbf cujo smbolo
l ogico principal e uma conjun cao. Esta regra, chamada elimina cao da con-
jun cao, abreviada por E, arma que a partir da fbf podemos derivar
2.2. O SISTEMA DEDUTIVO 35
, , ou ambas.
n
.
.
.
.
.
.
m E, n
ou
n
.
.
.
.
.
.
m E, n

E importante notar que existem duas formas da regra da eliminacao da


conjun cao. A primeira diz-nos que a partir de uma conjun cao podemos
obter o primeiro elemento da conjun cao, ao passo que a segunda diz-nos que
a partir de uma conjun cao podemos obter o segundo elemento da conjun cao.
Exemplo 2.2.6 Usando as regras associadas `a conjun cao, apresentamos a
seguinte prova para o argumento ({P Q, R}, P R):
1 P Q Prem
2 R Prem
3 P E, 1
4 R Rep, 2
5 P R I, (3, 4)
`
Regras para provas hipoteticas. Os sistemas de dedu cao natural uti-
lizam o conceito de prova hipotetica, uma prova iniciada com a introdu cao
de uma hip otese. Podemos pensar numa prova hipotetica como um con-
texto ou um ambiente em que, para alem das outras fbfs da prova, consi-
deramos a hip otese que iniciou a prova. Em linguagem corrente, uma prova
hipotetica corresponde a raciocnio originado a partir do uso das palavras
vamos supor que ou imaginemos que.
Uma prova hipotetica e introduzida pela regra da hipotese, abreviada por
Hip, a qual arma que em qualquer ponto de uma prova podemos introdu-
zir qualquer fbf como uma hip otese, comecando uma nova prova hipotetica.
Esta regra e representada do seguinte modo (na qual um tra co vertical e de-
senhado ao longo de todas as linhas que correspondem `a prova hipotetica):
n Hip
n + 1 . . .
36 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Uma vez iniciada uma prova hipotetica, todas as linhas que adicionarmos `a
prova pertencem `a prova hipotetica ate que essa prova seja terminada (o que
ainda n ao sabemos como fazer). Dentro de uma prova hipotetica podemos
aplicar qualquer regra de inferencia do mesmo modo que a aplicamos numa
prova n ao hipotetica.
Exemplo 2.2.7 A seguinte sequencia de linhas corresponde a uma prova
que contem uma prova hipotetica:
1 P Q Prem
2 P E, 1
3 R Hip
4 R Rep, 3
`
Regra da re-iteracao. Existe uma regra de inferencia especial, a qual
apenas e aplic avel em provas hipoteticas, e que nos permite repetir, dentro
de uma prova hipotetica, qualquer fbf que exista na prova que contem a prova
hipotetica. Esta chama-se regra da re-iterac ao, escrita Rei, a qual arma
que qualquer fbf numa prova pode ser re-iterada (repetida) em qualquer
prova hipotetica que exista na prova. Esta regra representa-se do seguinte
modo:
n
.
.
.
.
.
.
m Rei, n
Note-se que o converso desta regra n ao e regulamentado pelas regras de
inferencia. Ou seja, se uma fbf existir dentro de uma prova hipotetica, nao
somos autorizados a escrever essa fbf fora da prova hipotetica.
Exemplo 2.2.8 Com a regra da re-iteracao, podemos continuar a prova
2.2. O SISTEMA DEDUTIVO 37
apresentada no Exemplo 2.2.7 do seguinte modo:
1 P Q Prem
2 P E, 1
3 R Hip
4 R Rep, 3
5 P Rei, 2
6 R P I, (4, 5)
`
Neste momento, devemos observar que temos dois tipos de provas. A prova
exterior, a qual n ao foi iniciada com a introdu cao de uma hip otese a
qual tem o nome de prova categorica e as provas hipoteticas, as quais sao
iniciadas com a introdu cao de uma hip otese. As fbfs de uma prova hipotetica
sao chamadas contingentes, uma vez que dependem da hip otese que iniciou
a prova; as fbfs na prova exterior sao chamadas categoricas.
Ate agora, a necessidade de provas hipoteticas n ao e clara. Contudo, esta
necessidade revela-se ao considerar as regras para a implicacao.
Regras para a implicacao. Antes de apresentar as regras para a im-
plica cao, recordemos, da Seccao 1.2, o signicado intuitivo de uma pro-
posi cao contendo uma implicacao. Seja P a proposicao esta a chover e
seja Q a proposi cao eu co em casa. A fbf P Q le-se se esta a chover,
entao eu co em casa. Devemos lembrar que esta arma cao n ao depende
do facto de estar ou n ao a chover, ela apenas arma que no caso de estar a
chover eu carei em casa; se n ao estiver a chover, ent ao eu poderei ou nao
car em casa pois a proposicao nada arma sobre esta situacao.
No caso de desejarmos provar que P Q, deveremos considerar um con-
texto hipotetico no qual assumimos que esta a chover; se dentro deste con-
texto conseguirmos provar que eu co em casa, ent ao a f ormula esta pro-
vada. Deve tambem ser claro que esta prova e independente das condicoes
metereologicas. Este contexto hipotetico corresponde a uma prova hi-
potetica.
A regra da introdu cao da implicacao, abreviada por I, arma que, se
numa prova iniciada pela hip otese , formos capazes de derivar , ent ao,
38 CAP

ITULO 2. L

OGICA PROPOSICIONAL
podemos derivar na prova que contem a prova hipotetica iniciada
pela introdu cao da hip otese :
n Hip
.
.
.
.
.
.
m
m+ 1 I, (n, m)
A justica cao da fbf na linha m+1, I(n, m), diz que esta linha foi obtida
a partir da prova iniciada pela hip otese na linha n e a fbf na linha m.
A regra da introdu cao da implica cao e, por enquanto, a primeira regra que
permite terminar provas hipoteticas.
Exemplo 2.2.9 Consideremos a prova
1 P Hip
2 P Rep, 1
3 P P I, (1, 2)
`
Para alem de ilustrar a utiliza cao da regra da introdu cao da implicacao, a
prova do Exemplo 2.2.9, e a nossa primeira prova que n ao utiliza premissas.
Uma vez que a fbf na linha 3 n ao depende de nenhuma premissa, esta prova
signica que (P P).
Denicao 2.2.3 (Teorema) Uma fbf que e obtida numa prova que n ao
contem premissas e chamada um teorema. Quando , ou seja, quando
e um teorema, e usual escrever apenas .
De modo a podermos utilizar uma fbf cujo smbolo l ogico principal e uma
implicacao, necessitamos da regra da elimina cao da implicacao, abreviada
por E, e tambem conhecida por modus ponens. Esta regra arma que
numa prova que contem tanto como podemos derivar :
n
n + 1
n + 2 E, (n, n + 1)
2.2. O SISTEMA DEDUTIVO 39
Exemplo 2.2.10 Consideremos a prova de {P Q, P} Q:
1 P Q Prem
2 P Prem
3 P Q Rep, 1
4 Q E, (2, 3)
Note-se a utiliza cao da regra da repeti cao na linha 3 para gerar o padr ao es-
pecicado na regra de inferencia. `
Exemplo 2.2.11 A seguinte prova mostra que (P (Q R)) ((P Q)
R) e um teorema:
1 P (Q R) Hip
2 P Q Hip
3 P E, 2
4 P (Q R) Rei, 1
5 Q R E, (3, 4)
6 Q E, 2
7 Q R Rep, 5
8 R E, (6, 7)
9 (P Q) R I, (2, 8)
10 (P (Q R)) ((P Q) R) I, (1, 9)
`
Exemplo 2.2.12 A seguinte prova mostra que (P (Q P)) e um teo-
rema.
1 P Hip
2 Q Hip
3 P Rei, 1
4 Q P I, (2, 3)
5 P (Q P) I, (1, 4)
40 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Este resultado, P (Q P), pode chocar-nos `a primeira vista. In-
formalmente, podemos ler este teorema como se P, entao, para qualquer
proposi cao Q, se Q entao P. Podemos tambem ler esta arma cao como
qualquer proposicao implica uma proposi cao verdadeira. Este resultado e
conhecido como um dos paradoxos da implicacao e gerou algumas objeccoes
`a l ogica classica.
5
Os paradoxos da implica cao sao originados pela decisao
que tomamos em relacao ao signicado da implicacao (material) e cuja jus-
ticacao apresent amos na Seccao 1.2. `
Regras para a negacao. A regra da introdu cao da negacao, abreviada
por I, utiliza o conceito de prova por absurdo: se a partir de uma dada
premissa podemos derivar uma contradi cao (uma ocorrencia de uma fbf da
forma ), ent ao rejeitamos a premissa, ou seja, aceitamos a sua negacao,
com base no facto que a premissa leva a uma conclusao absurda. A regra
da introdu cao da negacao arma que se numa prova iniciada pela hip otese
, podemos derivar uma contradi cao (tanto como ), ent ao somos auto-
rizados a derivar na prova que contem a prova hipotetica iniciada pela
introdu cao da hip otese :
n Hip
.
.
.
.
.
.
m
m+ 1
m+ 2 I, (n, (m, m+ 1))
A justica cao da fbf na linha m + 2, I(n, (m, m + 1)), arma que esta
linha foi obtida a partir da prova iniciada com a hip otese na linha n e pela
contradi cao entre as linhas m e m+ 1.
A regra da introdu cao da nega cao e outra regra de inferencia que termina
uma prova hipotetica.
Exemplo 2.2.13 Usando a regra da introdu cao da nega cao, juntamente
com as regras de inferencia anteriores, podemos demonstrar que {P
Q, Q} P:
5
Ver Branquinho J., Implicac ao, em Enciclopedia de Termos L ogico-Filos ocos,
Branquinho e Murcho (eds), p aginas 377379, Lisboa: Gradiva, 2001 ou [Haack 78, p aginas
3637].
2.2. O SISTEMA DEDUTIVO 41
1 P Q Prem
2 Q Prem
3 P Hip
4 P Q Rei, 1
5 Q E, (3, 4)
6 Q Rei, 2
7 P I, (3, (5, 6))
Esta prova corresponde a um padr ao de raciocnio conhecido como modus
tollens, a partir de e , podemos derivar . `
A regra da elimina cao da negacao, abreviada por E, arma que negar
uma proposi cao duas vezes e o mesmo que armar essa proposi cao. Por
exemplo, se P arma que esta a chover, ent ao a fbf P arma que n ao e o
caso de n ao estar a chover, o que equivale a dizer que esta a chover.
A regra de eliminacao da negacao arma que se numa prova a fbf e negada
duas vezes, ent ao podemos concluir :
n
n + 1 E, n
Exemplo 2.2.14 A seguinte prova mostra que uma contradi cao implica
qualquer proposi cao, o que e traduzido pelo teorema ((P P) Q). Este
resultado e outro dos paradoxos da implicacao.
6
6
Ibid.
42 CAP

ITULO 2. L

OGICA PROPOSICIONAL
1 P P Hip
2 Q Hip
3 P P Rei, 1
4 P E, 3
5 P E, 3
6 Q I, (2, (4, 5))
7 Q E, 6
8 (P P) Q I, (1, 7)
`
Regras para a disjuncao. O signicado intuitivo de uma disjun cao e que
pelo menos um dos elementos da disjun cao se verica, e que, eventualmente,
ambos os elementos se podem vericar (recorde-se a discussao apresentada
na Seccao 1.2).
A regra da introdu cao da disjun cao, abreviada por I, utiliza este signi-
cado, armando que a partir da fbf , podemos derivar tanto como
como ambas, em que e qualquer fbf:
n
n + 1 I, n
ou
n
n + 1 I, n
A regra da elimina cao da disjun cao, abreviada por E, corresponde a um
raciocnio por casos: a partir da fbf (signicando intuitivamente que
pelo menos uma das fbfs ou se verica), se formos capazes de derivar
uma terceira fbf, , independentemente, a partir de cada uma das fbfs e
, ent ao, certamente que se verica.
A regra e formalizada do seguinte modo: se numa prova temos (1) a fbf
; (2) uma prova hipotetica, iniciada com a hip otese contendo a fbf
; e (3) uma prova hipotetica, iniciada com a hip otese contendo a fbf ,
2.2. O SISTEMA DEDUTIVO 43
ent ao, nessa prova, podemos derivar a fbf :
n
o Hip
.
.
.
.
.
.
p
r Hip
.
.
.
.
.
.
s
m E, (n, (o, p), (r, s))
A justica cao da fbf na linha m, E(n, (o, p), (r, s)), arma que esta linha foi
obtida a partir da fbf na linha n, juntamente com duas provas hipoteticas,
uma iniciada pela hip otese na linha o e contendo a fbf na linha p, e a outra
iniciada pela hip otese na linha r e contendo a fbf na linha s.
Exemplo 2.2.15 Usando a regra da elimina cao da disjun cao, provamos o
teorema ((P Q) P) Q. Este teorema corresponde a um padr ao de
raciocnio a que se d a o nome de silogismo disjuntivo, e que corresponde `a
inferencia da l ogica proposicional que consiste em derivar (ou respectiva-
mente ) a partir de e (ou respectivamente ):
44 CAP

ITULO 2. L

OGICA PROPOSICIONAL
1 (P Q) P Hip
2 P Q E, 1
3 P E, 1
4 P Hip
5 Q Hip
6 P Rei, 4
7 P Rei, 3
8 Q I, (5, (6, 7))
9 Q E, 8
10 Q Hip
11 Q Rep, 10
12 Q E, (2, (4, 9), (10, 11))
13 ((P Q) P) Q I, (1, 12)
`
Teoremas e regras de inferencia derivadas. Como vimos, uma prova
e uma sequencia de linhas, cada uma das quais contendo uma fbf, cuja in-
trodu cao e justicada por uma regra de inferencia.
`
A medida que vamos
fazendo provas, vericamos que existem certos passos que sao sistemati-
camente repetidos e sentimos a necessidade de introduzir algum nvel de
abstraccao nas nossas provas de modo a facilitar o trabalho, diminuindo
o n umero de passos que sao necessarios nas provas. Existem duas maneiras
de diminuir o n umero de linhas das provas, a primeira utiliza o conceito de
teorema e a segunda o conceito de regra de inferencia derivada.
Recordemos que um teorema e qualquer fbf que possa ser derivada a partir de
um conjunto vazio de premissas. Sempre que nas nossas provas precisarmos
de utilizar uma fbf que corresponda a um teorema, podemos introduzir na
nossa prova todas as linhas que correspondem `a demonstracao do teorema,
obtendo a fbf correspondente.

E permissvel a omissao da prova que cor-
responde ao teorema, introduzindo apenas a fbf respectiva e justicando-a
2.2. O SISTEMA DEDUTIVO 45
como um teorema. Por exemplo, demonstr amos na p agina 38 que P P e
um teorema, por esta razao, em provas futuras, somos autorizados a utilizar
a linha
n P P Teo

E importante notar ainda que embora tenhamos demonstrado que P P,


a fbf P poderia ter sido substituda por qualquer outra fbf; assim, em lugar
de um unico teorema, temos um n umero innito de fbfs da forma
correspondentes a teoremas. O conceito associado a esta arma cao chama-se
f ormula de inser cao.
Denicao 2.2.4 (F ormula de inser cao) Seja uma fbf. Uma f ormula
de inser cao de e qualquer fbf obtida a partir de atraves da substitui cao
de todas as ocorrencias de qualquer dos seus smbolos de proposicao por uma
fbf qualquer.
Exemplo 2.2.16 As seguintes fbfs correspondem a f ormulas de insercao de
(P Q) (P Q):
(R Q) (R Q)
((R S) Q) ((R S) Q)
(P (R S)) (P (R S))
`
Exemplo 2.2.17 A seguinte fbf n ao corresponde a uma f ormula de insercao
de (P Q) (P Q) pois apenas uma das inst ancias do smbolo de
proposi cao Q e substituda.
(P R) (P Q)
`
Teorema 2.2.1 (Teorema de inser cao) Qualquer f ormula de inser cao de
um teorema e um teorema.
Demonstrac ao: Trivial.
O Teorema 2.2.1 n ao faz parte do nosso sistema de regras de inferencia,
representando uma arma cao do que pode ser feito usando as nossas regras
46 CAP

ITULO 2. L

OGICA PROPOSICIONAL
de inferencia, este e, pois, um meta-teorema. Este teorema n ao nos per-
mite provar mais nada que n ao pudessemos provar mas facilita-nos muito o
trabalho ao realizar provas.
Uma outra maneira de simplicar as nossas provas corresponde `a utiliza cao
de regras de inferencia derivadas.
Denicao 2.2.5 (Regra de inferencia derivada) Uma regra de inferen-
cia derivada e qualquer padr ao de raciocnio correspondente `a aplica cao de
v arias regras de inferencia.
Uma regra de inferencia derivada corresponde a uma abstrac cao atraves da
qual podemos agrupar a aplicacao de v arias regras de inferencia num unico
passo.
Exemplo 2.2.18 (Variacao da eliminacao da implicacao) Considere-
mos a regra da eliminacao da implicacao. Tendo em aten cao a regra da re-
peti cao, podemos facilmente concluir que a seguinte sequencia de inferencias
corresponde a um padr ao correcto de raciocnio:
n
n + 1
n + 2 E

, (n, n + 1)
Com efeito,
n
n + 1
n + 2 Rep, n
n + 3 E, (n + 1, n + 2)
Deste modo, seremos autorizados a utilizar a regra de E

nas nossas provas.


A regra de E

corresponde a uma regra de inferencia derivada. `


Exemplo 2.2.19 (Dupla negacao) Uma outra regra de inferencia deri-
vada, a introdu cao da dupla negacao, representada por I, e justicada
atraves da seguinte prova:
1 P Prem
2 P Hip
3 P Rei, 1
4 P Rep, 2
5 P I, (2, (3, 4))
2.2. O SISTEMA DEDUTIVO 47
Portanto, numa prova que contem podemos derivar :
n
n + 1 I, n
`
Exemplo 2.2.20 (Modus tollens) Na p agina 41, apresent amos um pa-
dr ao de raciocnio chamado modus tollens, outro exemplo de uma regra
de inferencia derivada, o qual e formalizado dizendo que numa prova que
contem tanto como , podemos derivar .
n
n + 1
n + 2 MT, (n, n + 1)
`
Em resumo, as fbfs numa prova sao ou premissas, ou teoremas ou correspon-
dem `a aplica cao de regras de inferencia a outras fbfs da prova. As regras de
inferencia tanto podem ser regras que sao denidas associadas aos smbolos
l ogicos (chamadas regras de inferencia de base) como regras de inferencia
derivadas.
Novos smbolos logicos. Os smbolos l ogicos que apresent amos corres-
pondem aos smbolos tradicionais de uma l ogica. Pode ser demonstrado
que apenas dois dos smbolos que apresent amos, , e um dos smbolos do
conjunto {, , }, sao realmente necessarios para exprimir todas as fbfs
possveis em l ogica proposicional.
Uma das nalidades deste livro e a de denir linguagens para exprimir co-
nhecimento e raciocinar com as frases da linguagem. Sob esta perspectiva,
e natural que desejemos utilizar linguagens que permitam exprimir de um
modo f acil arma coes sobre o mundo que estamos a modelar.
Numa l ogica, somos livres de introduzir novos smbolos l ogicos como uma
combina cao de smbolos existentes. As f ormulas com estes novos smbolos
podem ser consideradas como ac ucar sint actico para f ormulas mais com-
plexas utilizando os smbolos l ogicos tradicionais. A introdu cao de novos
smbolos l ogicos n ao aumenta o poder expressivo da nossa linguagem, faci-
litando apenas o modo com escrevemos fbfs.
48 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Nesta seccao ilustramos este aspecto atraves da introdu cao de um novo
smbolo l ogico chamado equivalencia (tambem conhecido por bi-condicional)
e representado por .
A introdu cao da equivalencia leva-nos a rever as regras de formacao para
fbfs apresentadas na p agina 29, com a adi cao da regra:
3a. Se e sao fbfs, ent ao ( ), ( ), ( ) e ( ) sao fbfs.
A fbf le-se e equivalente a , ou, de um modo alternativo, se
e s o se .
Denimos a fbf contendo o smbolo l ogico como uma abreviatura da
seguinte fbf:
7

def
= ( ) ( ) (2.1)
Usando esta deni cao, introduzimos as seguintes regras de inferencia para a
equivalencia.
A regra da introdu cao da equivalencia, escrita I, arma que numa prova
com as fbfs e , podemos derivar :
n
n + 1
n + 2 I, (n, n + 1)
A regra da elimina cao da equivalencia, escrita E, arma que a partir
da fbf , podemos derivar , , ou ambas.
n
n + 1 E, n
ou
n
n + 1 E, n
Alguns teoremas comuns. Listamos aqui alguns dos teoremas a que e
comum recorrer em l ogica proposicional e os quais utilizaremos ao longo
deste livro. A sua demonstracao e deixada como exerccio.
7
O smbolo
def
=, le-se por denic ao.
2.2. O SISTEMA DEDUTIVO 49
1. Lei do terceiro excludo (a demonstracao deste teorema e apresentada
no Exemplo 2.2.22)
P P
2. Lei da dupla nega cao
P P
3. Primeiras leis de De Morgan
8
(P Q) (P Q)
(P Q) (P Q)
4. Lei do contrapositivo
(P Q) (Q P)
5. Leis do silogismo
(Q R) ((P Q) (P R))
(P Q) ((Q R) (P R))
6. Lei do transporte
(P (Q R)) ((P Q) R)
7. Equivalencia entre a implicacao e a disjun cao
(P Q) (P Q)
8. Propriedade distributiva da disjun cao em relacao `a conjuncao
(P (Q R)) ((P Q) (P R))
9. Propriedade distributiva da conjun cao em relacao `a disjuncao
(P (Q R)) ((P Q) (P R))
2.2.2 Como construir provas
Uma questao que e pertinente levantar neste ponto corresponde a saber qual
e a estrategia a seguir para a constru cao de uma prova. Para atingir este
objectivo, deveremos comecar por escrever as premissas (se estas existirem)
e tentar obter uma linha com a fbf que desejamos provar.
8
Estas equivalencias foram baptizadas em honra do matem atico ingles Augustus De
Morgan (18061871).
50 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Embora apresentemos aqui algumas sugestoes gerais para realizar esta ta-
refa, estas devem ser consideradas como sugestoes e n ao como passos a seguir
cegamente.
O modo de desenvolver uma prova depende fundamentalmente da estrutura
da f ormula que estamos a tentar demonstrar:
Ao tentar provar uma fbf da forma , a alternativa mais comum e
iniciar uma prova hipotetica com a introdu cao da hip otese e, dentro
dessa prova, tentar obter a fbf . Repare-se que ao fazermos isto,
mudamos o nosso objectivo do problema de tentar provar para
o problema de tentar obter a fbf .
9
Ao tentar provar uma fbf da forma , deveremos tentar provar
separadamente tanto como . Novamente, mudamos a atencao da
prova de para duas provas separadas, respectivamente, de e
de .
Ao tentar provar uma fbf da forma , deveremos tentar provar uma
das fbfs ou . Novamente, mudamos a atencao da prova de
para outra prova, seja a de ou a de .
No caso de nenhuma das vias anteriores resultar, podemos tentar se-
guir um ou mais dos seguintes caminhos:
podemos tentar encontrar aplicacoes de regras de inferencia que
nos levam `a introdu cao da fbf em questao;
se n ao formos capazes de encontrar uma prova directa, podemos
tentar uma prova por absurdo, iniciando uma prova hipotetica
com a introdu cao da negacao da fbf e tentar derivar uma con-
tradi cao dentro dessa prova hipotetica;
10
se na nossa prova existirem fbfs que correspondam a disjun coes,
poderemos tentar o raciocnio por casos.
Apresentamos agora algumas provas adicionais, explicando o nosso processo
de raciocnio na sua constru cao.
9
Como exemplo de uma excepc ao a esta sugestao, suponhamos que estavamos a tentar
provar a fbf Q R numa prova que continha tanto P como P (Q R), neste caso a
nossa sugestao n ao e util e devemos ser sucientemente espertos para aplicar a regra da
E.
10
Repare-se que esta abordageme muito semelhante ` a metodologia da logica apresentada
na Figura 1.1.
2.2. O SISTEMA DEDUTIVO 51
Exemplo 2.2.21 Comecaremos pela demonstracao do teorema P (Q
(P Q)).
Como estamos a demonstrar um teorema n ao existem premissas.
Uma vez que desejamos demonstrar uma fbf que corresponde a uma im-
plica cao, vamos iniciar uma prova hipotetica, introduzindo a hip otese P e
tentar provar Q (P Q) dentro desta prova.
1 P Hip
Tentemos preencher estas linhas
n Q (P Q)
Uma vez que o nosso novo objectivo e provar uma fbf que corresponde a
uma implicacao, Q (P Q), vamos comecar uma nova prova hipotetica
com a introdu cao da hip otese Q, tentando provar P Q dentro desta prova.
1 P Hip
2 Q Hip
Tentemos preencher estas linhas
m P Q
n Q (P Q)
De modo a provar uma fbf correspondente a uma conjun cao, vamos provar
separadamente cada um dos elementos da conjun cao, ou seja, vamos tentar
provar P e vamos tentar provar Q. Estas fbfs podem ser facilmente provadas,
pelo que o resto da prova e trivial:
1 P Hip
2 Q Hip
3 P Rei, 1
4 Q Rep, 2
5 P Q I, (3, 4)
6 Q (P Q) I, (2, 5)
7 P (Q (P Q)) I, (1, 6)
52 CAP

ITULO 2. L

OGICA PROPOSICIONAL
`
Exemplo 2.2.22 Neste exemplo provamos o teorema PP. Este teorema
e conhecido como a lei do terceiro excludo.
11
Aqui a situacao e mais complicada. Apesar de estarmos a tentar provar
uma disjun cao, n ao existe maneira de provar qualquer um dos elementos
da disjun cao (como um teorema). Na realidade n ao podemos provar um
smbolo de proposicao arbitr ario a partir do nada. Vamos tentar recorrer a
uma prova por absurdo, a partir da hip otese que corresponde `a nega cao do
teorema que queremos provar.
1 (P P) Hip
Tentemos preencher estas linhas
n
n + 1
A diculdade principal nesta prova e determinar qual a contradi cao a derivar
(qual o valor de na prova anterior). Uma vez que negamos P P, a qual,
de acordo com a nossa intui cao se deve vericar, tentaremos obter P P.
De modo a derivar esta fbf , come camos por iniciar uma prova com a hip otese
P. A partir daqui a prova e obvia:
11
Uma proposic ao ou e verdadeira ou e falsa, n ao existindo uma terceira hipotese.
2.2. O SISTEMA DEDUTIVO 53
1 (P P) Hip
2 P Hip
3 P P I, 2
4 (P P) Rei, 1
5 P I, (2, (3, 4))
6 P P I, 5
7 (P P) Rep, 1
8 (P P) I, (1, (6, 7))
9 P P E, 8
`
2.2.3 Abordagem axiomatica
Uma outra abordagem ao desenvolvimento de um sistema dedutivo consiste
em utilizar axiomas em vez de um grande n umero de regras de inferencia.
Para atingir este objectivo, abandonamos todas as regras de inferencia, ex-
cepto a regra da elimina cao da implicacao (e, evidentemente, a regra da
premissa).
Um sistema axiom atico ou um sistema de estilo Hilbert
12
baseia-se na exis-
tencia de um conjunto de axiomas (proposicoes que sao aceites no sistema
sem demonstracao) e de um conjunto pequeno de regras de inferencia (nor-
malmente apenas com a regra da E).
Um sistema axiom atico, que corresponde ao sistema dedutivo conhecido por
sistema L (de Mendelson),
13
contem tres axiomas e uma regra de inferencia,
a eliminacao da implica cao, a qual e designada por modus ponens.
Os axiomas do sistema L sao os seguintes:
Ax1: P (Q P)
Ax2: (P (Q R)) ((P Q) (P R))
12
Em honra do matem atico alem ao David Hilbert (18621943).
13
Ver [Mendelson 87, p agina 29].
54 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Ax3: (Q P) ((Q P) Q)
O axioma Ax1 corresponde ao facto de uma proposicao verdadeira ser impli-
cada por qualquer proposi cao; o axioma Ax2 corresponde `a distributividade
da implicacao; o axioma Ax3 e a lei da dupla negacao, com efeito, se Q
implica tanto P como P, ent ao Q tem que ser falso pelo que Q, ou
seja, Q.
Chamar axioma a uma fbf signica que ela, ou qualquer f ormula de insercao
que dela resulte, pode ser utilizada como uma linha de uma prova, sem
depender de qualquer outra linha. A consideracao de f ormulas de insercao
signica que cada um dos axiomas Ax1, Ax2 e Ax3 corresponde a uma co-
leccao innita de fbfs, por exemplo as seguintes fbfs sao f ormulas de insercao
do axioma Ax1:
((P Q) R) ((S T) ((P Q) R))
e
P (P P).
Por esta razao os axiomas Ax1, Ax2 e Ax3 sao chamados esquemas de axi-
omas.
Note-se que os axiomas Ax1, Ax2 e Ax3 n ao tratam nem da conjun cao
nem da disjun cao. Estes smbolos l ogicos sao tratados como abreviaturas
sint acticas de combina coes dos outros smbolos. Assim, teremos as seguintes
deni coes:
14

def
= ( )

def
= .
A regra de inferencia do sistema L, modus ponens (abreviada por MP no
sistema apresentado por Mendelson e por n os abreviada por E por uma
questao de consistencia), e traduzida pela frase a partir de e de
podemos concluir .
No sistema L, uma prova tem a mesma deni cao que utiliz amos no sistema
de dedu cao natural, existindo apenas as regras da premissa, de MP e a
possibilidade de adicionar uma f ormula de insercao de qualquer axioma, a
qual e indicada atraves do nome do axioma.
14
Convem aqui recordar a observa c ao feita na p agina 47 relativa ` a denic ao de smbolos
logicos em termos de outros smbolos logicos.
2.2. O SISTEMA DEDUTIVO 55
A ttulo de exemplo, apresentamos duas provas no sistema L, a prova do
teorema P P e a prova de {(P (Q R))} (Q (P R)).
56 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Exemplo 2.2.23
1 (P ((P P) P))
((P (P P)) (P P)) Ax2
2 P ((P P) P) Ax1
3 (P (P P)) (P P) E , (1, 2)
4 P (P P) Ax1
5 P P E , (3, 4)
`
Exemplo 2.2.24
1 (P (Q R)) Prem
2 ((P (Q R)) ((P Q) (P R)) Ax2
3 (P Q) (P R) E , (2, 1)
4 (((P Q) (P R))
(Q ((P Q) (P R)))) Ax1
5 Q ((P Q) (P R)) E , (3, 4)
6 ((Q ((P Q) (P R)))
((Q (P Q)) (Q (P R)))) Ax2
7 (Q (P Q)) (Q (P R)) E , (5, 6)
8 Q (P Q) Ax1
9 Q (P R) E , (7, 8)
`
Demonstra-se que se podem derivar exactamente os mesmos teoremas no
sistema de dedu cao natural que apresent amos na Sec cao 2.2.1 e no sistema L
de Mendelson. A complexidade das demonstracoes num sistema axiom atico
e uma das razoes para preferirmos um sistema de dedu cao natural.
2.2.4 Propriedades do sistema dedutivo
O sistema dedutivo da l ogica proposicional
15
apresenta um certo n umero
de propriedades, algumas das quais sao descritas nesta seccao. Todos os
resultados que aqui apresentamos correspondem a meta-teoremas, pois sao
resultados sobre as propriedades do sistema dedutivo.
15
Bem como o sistema dedutivo da logica de primeira ordem apresentado no Captulo 3.
2.2. O SISTEMA DEDUTIVO 57
Teorema 2.2.2 (Teorema da dedu cao) Se e um conjunto de fbfs, e
sao fbfs, e se ( {}) , ent ao ( ).
Demonstrac ao: Suponhamos que ( {}) . Isto signica que existe uma
prova iniciada com as premissas em , juntamente com a premissa corres-
pondente `a fbf , cuja ultima linha contem a fbf . Suponhamos que = {
1
,
. . .,
n
}. As primeiras n +1 linhas desta prova contem as fbfs
1
, . . .,
n
, e
a ultima linha desta prova, digamos que e a linha m, contem a fbf :
1
1
Prem
.
.
.
.
.
.
n
n
Prem
n + 1 Prem
.
.
.
.
.
.
m
Iniciemos uma nova prova cujas n primeiras linhas sao as premissas
1
, . . .,

n
. Na linha n + 1 desta nova prova iniciamos uma prova hipotetica que
contem a hip otese .
Utilizando a regra da re-iteracao, introduzimos as linhas n +1 +1 (= n +2)
a n + 1 + m, contendo as premissas, ou seja, a linha n + 1 + i (1 i m)
contem a premisa
i
.
As restantes linhas desta nova prova sao construdas, recorrendo `a prova ori-
ginal, do seguinte modo: para cada linha k (k < n + 1) da prova original,
introduza-se uma linha identica na nova prova na qual a justica cao e ob-
tida da justica cao da linha k da prova original actualizando cada uma das
referencias a linhas com a adi cao de n + 1.
A linha m + n + 1 da nova prova contem a fbf e esta contida na prova
hipotetica que foi iniciada pela introdu cao da hip otese :
1
1
Prem
.
.
.
.
.
.
n
n
Prem
n + 1 Hip
.
.
.
.
.
.
m+n + 1
Usando a regra da introdu cao da implica cao, podemos adicionar a linha m+
58 CAP

ITULO 2. L

OGICA PROPOSICIONAL
n+2 `a nova prova contendo a fbf e justicada por I, (n+1, m+n+1):
1
1
Prem
.
.
.
.
.
.
n
n
Prem
n + 1 Hip
.
.
.
.
.
.
m+n + 1
m+n + 2 I, (n + 1, m+n + 1)
Esta nova prova mostra que ( ).
Corolario 2.2.1 Se = {
1
, . . .
n
} e um conjunto de fbfs, se e uma fbf
e se , ent ao
1
(. . . (
n
)).
Demonstrac ao: A demonstracao deste corol ario corresponde a n aplica coes do
Teorema 2.2.2.
Teorema 2.2.3 Se e um conjunto de fbfs, e sao fbfs e se ( )
ent ao ( {}) .
Demonstrac ao: A demonstracao utiliza uma linha de raciocnio semelhante `a
utilizada na demonstra cao do Teorema 2.2.2.
Teorema 2.2.4 (Transitividade de ) Se e um conjunto de fbfs,
1
,
. . .,
n
sao fbfs, e uma fbf, se
1
, ...,
n
e {
1
, . . . ,
n
} , ent ao
.
Demonstrac ao: Suponhamos que = {
1
, . . .,
m
}. Suponhamos tambem que
para 1 i n,
i
. Isto signica que existem n provas, cada uma delas
comecando com as premissas
1
, . . .,
m
, e tendo a fbf
i
na linha k
i
:
1
1
Prem
.
.
.
.
.
.
m
m
Prem
.
.
.
.
.
.
k
i

i
Suponhamos que {
1
, . . . ,
n
} . Isto signica que existe uma prova que e
iniciada com as premissas
1
, . . . ,
n
e cuja ultima linha, digamos l, contem
2.2. O SISTEMA DEDUTIVO 59
a fbf :
1
1
Prem
.
.
.
.
.
.
n
n
Prem
.
.
.
.
.
.
l
Iremos construir uma nova prova do seguinte modo: as primeiras m linhas
contem as premissas
1
. . .
m
; as linhas m + 1 a k
1
sao identicas `as linhas
m + 1 a k
1
da prova de
1
; para 2 j n, temos linhas identicas `as
linhas m+1 a k
j
da prova de
j
, excepto que as referencias `as aplica coes
das regras de inferencia sao actualizadas apropriadamente.
1
1
Prem
.
.
.
.
.
.
m
m
Prem
.
.
.
.
.
.
k
1

1
.
.
.
.
.
.
.
.
.
.
.
.
m+

n
i=1
(k
i
m)
n
Usando a regra da repeti cao, podemos introduzir linhas com as fbfs
1
. . .

n
:
1
1
Prem
.
.
.
.
.
.
m
m
Prem
.
.
.
.
.
.
k
1

1
.
.
.
.
.
.
.
.
.
.
.
.
m+

n
i=1
(k
i
m)
n
m+

n
i=1
(k
i
m) + 1
1
Rep
.
.
.
.
.
.
m+

n
i=1
(k
i
m) +n
n
Rep
Escrevemos agora as linhas n + 1 a l da prova de {
1
, . . . ,
n
} , actuali-
60 CAP

ITULO 2. L

OGICA PROPOSICIONAL
zando as referencias respectivas:
1
1
Prem
.
.
.
.
.
.
m
m
Prem
.
.
.
.
.
.
k
1

1
.
.
.
.
.
.
.
.
.
.
.
.
m+

n
i=1
(k
i
m)
n
m+

n
i=1
(k
i
m) + 1
1
Rep
.
.
.
.
.
.
m+

n
i=1
(k
i
m) +n
n
Rep
.
.
.
.
.
.
m+

n
i=1
(k
i
m) +l
Esta nova prova mostra que .
Teorema 2.2.5 (Monotonicidade versao 1) Se
1
e
2
sao conjun-
tos de fbfs, e uma fbf, e
1
, ent ao (
1

2
) .
Demonstrac ao: Seja
1
= {
11
, . . . ,
1n
} e
2
= {
21
, . . . ,
2m
}. Uma vez que

1
, existe uma prova iniciada com as premissas
11
, . . . ,
1n
que termina
com a fbf :
1
11
Prem
.
.
.
.
.
.
n
1n
Prem
.
.
.
.
.
.
k
Iremos construir uma prova que se inicia com as premissas
11
, . . . ,
1n
,
21
,
. . . ,
2m
e cujas linhas, apos a linha n+m sao identicas `as linhas n+1 a k da
prova de
1
, actualizando apropriadamente as referencias `as aplica coes
das regras de inferencia:
1
11
Prem
.
.
.
.
.
.
n
1n
Prem
n + 1
21
Prem
.
.
.
.
.
.
n +m
2m
Prem
.
.
.
.
.
.
m+k
Esta nova prova mostra que (
1

2
) .
2.2. O SISTEMA DEDUTIVO 61
Teorema 2.2.6 Para qualquer conjunto de fbfs , o conjunto Th() e
innito.
16
Demonstrac ao:

E f acil demonstrar que qualquer que seja , Th() = . De
facto, mesmo que = , Th( ) contem todos os teoremas. Dada qualquer
fbf em Th(), digamos , utilizando apenas as regra da I, podemos originar
um n umero innito de fbfs, , , ..., . . . .
Teorema 2.2.7 (Monotonicidade versao 2) Se
1
e
2
sao conjun-
tos de fbfs e se
1

2
, ent ao Th(
1
) Th(
2
).
Demonstrac ao: Mostramos que para qualquer fbf tal que Th(
1
) ent ao
Th(
2
). Seja
2
=
1

0
(isto e uma consequencia directa do facto
de
1

2
).
Seja qualquer fbf tal que Th(
1
). Por deni cao,
1
. O Teo-
rema 2.2.5 garante que (
1

0
) . Portanto, Th(
2
).
Teorema 2.2.8 (Ponto xo) Se e um conjunto de fbfs, ent ao
Th() = Th(Th()).
Demonstrac ao: Mostramos que Th() Th(Th()) e que Th(Th()) Th().
1. Th() Th(Th()).
Seja Th(). Uma vez que {} , podemos concluir que
Th(Th()).
2. Th(Th()) Th().
Suponhamos por absurdo que Th(Th()) Th(). Isto signica que
existe um tal que Th(Th()) e Th().
Uma vez que Th(Th()) e Th(), a fbf e originada numa
prova com as premissas
1
, . . . ,
n
tais que {
1
, . . . ,
n
} Th(). Pelo
Teorema 2.2.3, isto signica que Th(), o que e uma contradi cao.
Pelo que Th(Th()) Th().
Ent ao Th() = Th(Th())
2.2.5 Resolu cao
Da discussao apresentada na Sec cao 2.2.2 deve estar claro que a geracao
autom atica de provas utilizando um sistema de dedu cao natural n ao e f acil.
16
Recorde-se do Captulo 1 que Th() = { : }.
62 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Das provas apresentadas na Sec cao 2.2.3, podemos concluir que a gera cao de
provas num sistema axiom atico e bastante mais difcil. A criacao de provas
exige raciocnio e pr atica, existindo algumas regras empricas, as quais nem
sempre funcionam.

E pois natural que se tenham desenvolvido metodos para a automatiza cao


da geracao de provas, ou, como por vezes sao conhecidos, metodos para a
automatiza cao do raciocnio ou metodos para o raciocnio automatico. Nesta
seccao introduzimos um desses metodos, chamado resolucao. A resolu cao e
baseada numa unica regra de inferencia, o princpio da resolu cao.
A utiliza cao do princpio da resolu cao obriga `a transforma cao das fbfs para
uma forma especial, a forma clausal, a qual corresponde a uma conjun cao
de clausulas.
Forma clausal
Antes de apresentar a resolucao precisamos de introduzir algumas denicoes
e discutir o processo de transforma cao de uma fbf arbitr aria para a sua forma
clausal.
Denicao 2.2.6 (Literal) Uma fbf at omica ou a sua negacao e chamada
um literal. Recorde-se que uma fbf at omica corresponde a um smbolo de
proposi cao. Um literal positivo corresponde a uma fbf at omica e um literal
negativo corresponde `a negacao de uma fbf at omica.
Denicao 2.2.7 (Clausula) Uma cl ausula e ou um literal ou uma dis-
jun cao de literais.
Denicao 2.2.8 (Clausula unitaria) Uma cla usula constituda apenas
por um literal chama-se uma cl ausula unit aria.
Exemplo 2.2.25 Sendo P e Q smbolos de proposicao, as fbfs P e Q sao
literais, respectivamente, negativo e positivo. As fbfs P Q e P Q sao
clausulas. As fbfs P e P sao clausulas unit arias. `
A transforma cao de qualquer fbf para a sua representacao em forma clau-
sal pode ser realizada mecanicamente atraves da aplica cao da sequencia de
passos que apresentamos de seguida. No entanto, antes de apresentar esta
sequencia de passos (na realidade, um algoritmo) convem fazer duas ob-
servacoes:
2.2. O SISTEMA DEDUTIVO 63
1. Na transforma cao que apresentamos apenas admitimos a utilizacao dos
smbolos l ogicos , , e . Uma fbf com outros smbolos l ogicos
devera ser transformada numa fbf equivalente utilizando apenas os
quatro smbolos l ogicos que apresentamos.
2. A transforma cao que apresentamos e baseada em teoremas que corres-
pondem a equivalencias entre fbfs. Sendo e duas fbfs, a fbf
permite-nos substituir a fbf pela fbf e vice-versa. Note-se que
nestes passos estamos a utilizar propriedades da l ogica e n ao a provar
resultados com a l ogica.
Passos para a transforma cao de uma fbf arbitr aria em forma clausal:
1. Elimina cao do smbolo
A eliminacao do smbolo baseia-se na equivalencia entre a im-
plica cao e a disjun cao:
( ) ( )
Este passo consiste na substitui cao de todas as ocorrencias de
por .
Exemplo 2.2.26 Consideremos a seguinte fbf:
P (Q ((R S) P))
aplicando a regra da elimina cao do smbolo , esta fbf sera sucessiva-
mente transformada em:
P (Q ((R S) P))
P (Q ((R S) P))
`
2. Redu cao do domnio do smbolo
O objectivo deste passo e o de reduzir ao mnimo o domnio de aplicacao
do smbolo . No nal da execucao deste passo, a negacao deve-se ape-
nas aplicar a fbfs at omicas.
Este passo e obtido utilizando repetitivamente as seguintes equivalen-
cias:
64 CAP

ITULO 2. L

OGICA PROPOSICIONAL
(a) Lei da dupla nega cao

(b) Primeiras leis de De Morgan
( ) ( )
( ) ( )
Exemplo 2.2.27 Aplicando este passo `a fbf do Exemplo 2.2.26, ob-
temos:
P (Q ((R S) P))
P (Q ((R S) P))
P (Q ((R S) P))
`
3. Obtencao da forma conjuntiva normal
O objectivo deste passo e o de transformar a nossa fbf numa conjun cao
de disjun coes (a que se d a o nome de forma conjuntiva normal).
Neste passo aplicamos repetitivamente a propriedade distributiva da
disjun cao em relacao `a conjuncao:
( ) ( ) ( )
Exemplo 2.2.28 A partir da fbf obtida no Exemplo 2.2.27, obtemos
as seguintes transforma coes:
(P Q) (P ((R S) P))
(P Q) (P (R S)) (P P)
(P Q) (P R) (P S) (P P)
`
4. Elimina cao do smbolo
Este passo consiste em transformar a fbf num conjunto de clausulas.
Uma vez que a fbf gerada no passo anterior e j a constituda por uma
conjun cao de clausulas, este passo corresponde `a forma cao de um con-
junto com tantos elementos quanto o n umero de clausulas existentes
na fbf.
2.2. O SISTEMA DEDUTIVO 65
Exemplo 2.2.29 A partir da fbf do Exemplo 2.2.28, obtemos:
{P Q, P R, P S, P P}
`
5. Elimina cao do smbolo
Este passo consiste na transforma cao de cada clausula num conjunto
de literais. Uma vez que o smbolo l ogico que liga os literais da clausula
e a disjun cao, e esta e comutativa,
17
podemos omiti-la. Obtemos assim
um conjunto de conjuntos de literais. A partir daqui, passaremos a
designar uma cl ausula como um conjunto de literais, entendendo-se
que este conjunto corresponde `a disjuncao dos seus elementos.
Exemplo 2.2.30 A partir do conjunto do Exemplo 2.2.29, obtemos:
18
{{P, Q}, {P, R}, {P, S}, {P}}
`
Denicao 2.2.9 (Clausula versao 2) Uma cl ausula e um conjunto de
literais.
Dado que uma clausula passa a ser representada por um conjunto, utilizamos
letras gregas mai usculas para a designar.
O princpio da resolu cao
O princpio da resolucao corresponde a um padr ao de raciocnio que arma
que a partir de e de podemos concluir que . Este padr ao
de raciocnio e justicado pela seguinte prova:
19
17
Das regras de I e E e obvio que ( ) ( ).
18
Note-se que a disjunc ao {P P} e transformada no conjunto singular {P}.
19
Note-se que esta prova utiliza meta-variaveis que representam fbfs.
66 CAP

ITULO 2. L

OGICA PROPOSICIONAL
1 Prem
2 Prem
3 Hip
4 Rei, 2
5 Hip
6 Hip
7 Rei, 3
8 Rei, 5
9 I, (6, (7, 8))
10 E, 9
11 I, 10
12 Hip
13 I, 12
14 I, (4, (5, 11), (12, 13))
15 Hip
16 I, 15
17 E, (1, (3, 14), (15, 16))
O princpio da resolucao e uma regra de inferencia derivada que e aplic avel
a clausulas, gerando novas clausulas.
Denicao 2.2.10 (Princpio da resolu cao) Sejam e duas clausulas
e uma fbf at omica tal que e , entao, podemos inferir a
clausula ({}) ({}). A clausula obtida e chamada o resolvente
das clausulas e , as quais sao designadas por cl ausulas m ae. Em texto
corrido, o resolvente e representado por Res(, ).
Exemplo 2.2.31 Consideremos as clausulas {P} e {P, Q}, as quais cor-
respondem, respectivamente, `as fbfs de l ogica proposicional P e P Q.
A aplica cao do princpio da resolucao a estas duas clausulas d a origem `a
clausula {Q}. Usando resolucao, e vulgar apresentar as inferencias atraves
2.2. O SISTEMA DEDUTIVO 67
{P} {P, Q}

{Q}
Figura 2.1: Representa cao gr aca da aplicacao do princpio da resolucao.
de uma representacao gr aca como se mostra na Figura 2.1. Alternativa-
mente, esta aplicacao do princpio da resolucao e representada atraves da
seguinte sequencia de linhas:
20
1 {P} Prem
2 {P, Q} Prem
3 {Q} Res, (1, 2)
Note-se que esta aplicacao do princpio da resolucao corresponde `a regra de
inferencia modus ponens. `
Exemplo 2.2.32 Consideremos as clausulas {P, Q} e {Q, R}, as quais
correspondem, respectivamente, `as fbfs de l ogica proposicional P Q e
Q R. A aplicacao do princpio da resolucao a estas duas clausulas d a
origem `a clausula {P, R}, a qual corresponde em l ogica proposicional `a fbf
P R. Esta aplica cao pode ser expressa atraves da seguinte sequencia de
linhas:
1 {P, Q} Prem
2 {Q, R} Prem
3 {P, R} Res, (1, 2)
Note-se que esta aplica cao do princpio da resolucao corresponde ao enca-
deamento de fbfs contendo implicacoes. `
Exemplo 2.2.33 Consideremos as clausulas {P} e {P}, as quais cor-
respondem, respectivamente, `as fbfs de l ogica proposicional P e P. A
aplicacao do princpio da resolucao a estas duas clausulas d a origem `a
clausula {}, chamada a cl ausula vazia, a qual corresponde em l ogica pro-
posicional a uma contradi cao. `
20
Esta sequencia de linhas corresponde a uma prova no sistema de deduc ao natural com
clausulas em lugar de fbfs e utilizando a regra da resoluc ao, abreviada por Res.
68 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Demonstra cao por resolu cao
Uma demonstra cao por resolucao corresponde a uma prova no sistema de
dedu cao natural com a diferen ca que as fbfs sao escritas sob a forma de
clausulas e apenas utiliza duas regras de inferencia, a regra da premissa e o
princpio da resolu cao.
Denicao 2.2.11 (Demonstra cao por resolu cao de a partir de )
Uma demonstracao por resolu cao de uma clausula a partir de um conjunto
de clausulas = {
1
, . . . ,
m
} e uma sequencia de clausulas
1
, . . .,
n
, tal
que:
1.
n
= ;
2. Para todo o i (1 i n),

i
{
1
, . . . ,
m
}
ou

i
= Res(, ), em que , {
1
, . . . ,
i1
}
.
Exemplo 2.2.34 Dado o conjunto de clausulas
= {{P, Q}, {Q, R}, {R, S}, {P}},
a seguinte sequencia e uma demonstracao por resolucao de {S} a partir de
:
1 {P, Q} Prem
2 {Q, R} Prem
3 {R, S} Prem
4 {P} Prem
5 {P, R} Res, (1, 2)
6 {P, S} Res, (3, 5)
7 {S} Res, (4, 6)
`
Normalmente a resolucao aplica-se a demonstra coes por absurdo, as quais,
utilizando resolu cao se chamam demonstracoes por refutacao. Nas demons-
tracoes por refuta cao adiciona-se `as premissas a nega cao da conclusao e
gera-se uma contradi cao (a clausula vazia).
Denicao 2.2.12 (Demonstra cao por refutacao) Uma demonstra cao
por refuta cao a partir de um conjunto de clausulas = {
1
, . . . ,
m
} e uma
demonstracao por resolucao de {} a partir de . .
2.2. O SISTEMA DEDUTIVO 69
{P, Q} {Q, R}

{P, R} {R, S}

{P, S} {P}

{S} {S}

{}
Figura 2.2: Demonstra cao por refuta cao.
Exemplo 2.2.35 Usando uma demonstracao por refuta cao, a demonstracao
do Exemplo 2.2.34 transforma-se na seguinte demonstracao:
1 {P, Q} Prem
2 {Q, R} Prem
3 {R, S} Prem
4 {P} Prem
5 {S} Prem
6 {P, R} Res, (1, 2)
7 {P, S} Res, (3, 6)
8 {S} Res, (4, 7)
9 {} Res, (5, 8)
Na Figura 2.2 mostramos uma representacao gr aca desta demonstracao,
sendo as premissas representadas dentro de um rectangulo e os literais que
sao utilizados na aplica cao do princpio da resolu cao indicados a sublinhado.
`
70 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Gera cao por satura cao de nveis. Correspondendo a resolu cao a um
processo de inferencia que e f acil de automatizar, e natural que se tenham
desenvolvido estrategias para a gera cao sistematica de novas clausulas a
partir de clausulas existentes.
Um dos processos de geracao de clausulas utilizado na resolucao, chamado
metodo de resolu cao por saturacao de nveis, consiste em separar as clausulas
geradas em v arios nveis, cada um dos quais utiliza pelo menos uma das
clausulas existentes no nvel anterior.
Usando este metodo, uma demonstracao por resolu cao da clausula a partir
de um conjunto de clausulas e uma sequencia de cl ausulas
1
, . . .,
n
,
agrupadas em conjuntos
1
, . . .,
m
tais que:
1.
n
= (
n

m
);
2.
0
= ;
3. Para k > 0

k
= { : = Res(, )
k1

i=0

i

k1
}.
Exemplo 2.2.36 Na Figura 2.3 apresentamos a demonstracao por refuta cao
de S a partir de {{P, Q}, {Q, R}, {R, S}, {P}}, utilizando a estrategia
de resolu cao por nveis. Note-se que algumas das clausulas do nvel 2 po-
dem ser obtidas por diferentes aplicacoes do princpio da resolu cao, embora
apenas uma delas seja apresentada na gura. `
A utiliza cao da resolu cao por saturacao de nveis fornece um algoritmo para
a aplicacao sistematica do princpio da resolu cao a um conjunto de clausulas,
que garante encontrar uma solu cao, se esta existir, que corresponde ao me-
nor n umero de aplica coes do princpio da resolu cao.
21
No entanto, como o
Exemplo 2.2.36 claramente o mostra, a resolu cao por saturacao de nveis
origina muitas clausulas que n ao sao uteis para a prova e, alem disso, gera
clausulas repetidas. Compare-se, por exemplo, as provas apresentadas na
Figuras 2.2 e 2.3, as quais utilizam o mesmo conjunto de premissas.
21
Como exerccio, o leitor devera convencer-se desta arma c ao.
2.2. O SISTEMA DEDUTIVO 71
{P, Q} {Q, R} {R, S} {S} {P}
0
:
{P, R} {Q, S} {R} {Q}
1
:
`
`
`
`
`
/
/
/
/
/
`
`
`
`
`
/
/
/
/
/
`
`
`
`
`
/
/
/
/
/
`
`
`
`
`
/
/
/
/
/
{S}
`
`
`
`
`
`
`
`
/
/
/
/
/
/
{Q}

{P}

{R}
.
.
.
.
.
.
.
.
{P, S}

2
:

3
: {}
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

Figura 2.3: Utiliza cao da resolu cao por satura cao de nveis.
Estrategias em resolu cao
Para aumentar a eciencia do processo de demonstracao por resolu cao foram
desenvolvidas estrategias que permitem simplicar o processo, dirigindo as
inferencias para o objectivo pretendido. Estas estrategias podem ser divi-
didas em estrategias de elimina cao de cl ausulas que permitem a remo cao
de clausulas redundantes e estrategias de seleccao de cl ausulas que permi-
tem seleccionar as clausulas `as quais vai ser aplicado o princpio da re-
solucao. O n umero de estrategias aqui apresentadas esta longe de ser exaus-
tivo, recomendando-se ao leitor interessado a consulta das referencias bibli-
ogr acas apresentadas na Seccao 2.5.
Estrategias de elimina cao de clausulas. Uma estrategia de elimina cao
de clausulas corresponde `a remo cao de certas clausulas que n ao v ao ser uteis
numa demonstra cao por resolucao, removendo-as antes de serem utilizadas.
Uma das estrategias de eliminacao, a elimina cao de teoremas, corresponde
`a eliminacao das clausulas que contenham tanto como , em que e um
smbolo de proposicao. Para justicar esta estrategia, notemos em primeiro
72 CAP

ITULO 2. L

OGICA PROPOSICIONAL
lugar que para quaisquer fbfs, e , a fbf () e um teorema.
22
Sendo
uma fbf correspondente a um teorema, e f acil provar que se {}
ent ao . Podemos ent ao concluir que a elimina cao de clausulas que
contenham tanto como n ao ir a afectar as conclusoes que e possvel
extrair a partir das restantes clausulas.
Outra estrategia de eliminacao, a elimina cao de cl ausulas n ao mnimas, esta
associada ao conceito de subordina cao.
Denicao 2.2.13 (Subordina cao) Uma clausula subordina a cl ausula
(tambem dito que e subordinada por ) se .
Dado um conjunto de clausulas, podemos eliminar todas as clausulas su-
bordinadas por uma outra clausula existente no conjunto.
23
Num conjunto
de cl ausulas, qualquer clausula que seja subordinada por outra clausula do
conjunto e chamada cl ausula n ao mnima.
Exemplo 2.2.37 Consideremos as clausulas
{{P, Q, R}, {P, Q, Q}, {P, Q}}.
A elimina cao de teoremas permite-nos eliminar a segunda clausula, dando
origem a
{{P, Q, R}, {P, Q}}
e a eliminacao de clausulas n ao mnimas permite-nos reduzir o conjunto
anterior apenas `a clausula
{{P, Q}}.
`
Estrategias de seleccao de clausulas. Uma estrategia de seleccao de
clausulas corresponde a um processo de controlar as clausulas que sao gera-
das numa demonstra cao por resolucao, impondo restricoes `as clausulas que
podem ser candidatas `a aplica cao do princpio da resolu cao. Consideramos
aqui apenas duas estrategias de seleccao de clausulas, a resolu cao unit aria e
a resolucao linear.
22
Esta demonstrac ao deixa-se como exerccio.
23
Note-se que para quaisquer fbfs e , (( ) ) .
2.2. O SISTEMA DEDUTIVO 73
{Q} {P, Q}

{P, Q}

{P} {P}

{}
Figura 2.4: Utiliza cao da resolu cao unit aria.
Resolu cao unitaria A resolucao unit aria baseia-se no facto que ao uti-
lizarmos a resolucao tentamos normalmente diminuir o n umero de lite-
rais existentes nas clausulas produzidas (este aspecto e claramente evidente
nas demonstracoes por refuta cao). Se uma das clausulas envolvidas numa
aplicacao do princpio da resolucao apenas contiver um literal (se for uma
clausula unit aria) ent ao e garantido que o resolvente tem menos literais do
que a clausula mae com maior n umero de literais.
A estrategia de resolu cao unit aria consiste em aplicar o princpio da re-
solucao utilizando sempre pelo menos uma clausula unit aria.
Exemplo 2.2.38 Consideremos a demonstracao por refuta cao de Q a par-
tir de {{P, Q}, {P, Q}} utilizando a resolu cao unit aria:
1 {P, Q} Prem
2 {P, Q} Prem
3 {Q} Prem
4 {P} Res, (1, 3)
5 {P} Res, (2, 3)
6 {} Res, (4, 5)
A representa cao graca desta prova e apresentada na Figura 2.4. `
Os processos de inferencia baseados apenas na resolucao unitaria n ao sao
completos (recorde-se do Captulo 1, p agina 22 que numa l ogica completa
se podem demonstrar todos os argumentos v alidos).
74 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Exemplo 2.2.39 O conjunto de clausulas
{{P, Q}, {P, Q}, {P, Q}, {P, Q}}
n ao gera qualquer clausula recorrendo ao metodo da resolu cao unit aria (pois
n ao contem clausulas unit arias), embora
{{P, Q}, {P, Q}, {P, Q}, {P, Q}} {}.
`
Resolu cao linear Utilizando a estrategia da resolucao linear, comecamos
por seleccionar uma clausula entre as premissas, chamada a cl ausula inicial,
obtendo um resolvente entre a clausula inicial e outra cl ausula qualquer
pertencente `as premissas. A partir da, sempre que se aplica o princpio da
resolucao, utiliza-se o ultimo sucessor da clausula inicial. Qualquer sucessor
da clausula inicial tem o nome de cl ausula central.
Denicao 2.2.14 (Demonstra cao por resolu cao linear) Uma demons-
tra cao por resolu cao linear de uma clausula , a partir de um conjunto de
clausulas , usando a clausula como clausula inicial e uma sequencia
de clausulas
1
, . . .,
n
em que:
1.
1
= ;
2.
n
= ;
3. Para todo o i (1 i n1),
i+1
= Res(
i
, ) em que {
1
,
. . . ,
i
}.
As clausulas
2
, . . .,
n
correspondem `as clausulas centrais.
Notemos que numa demonstracao por resolucao linear existe um grau de n ao
determinismo pois em cada passo podem existir v arias clausulas candidatas
`a aplica cao do princpio da resolu cao. No Captulo 4 voltamos a abordar
este assunto.
Um outro aspecto a considerar numa demonstra cao por resolucao linear cor-
responde `a escolha da clausula inicial.

E habitual escolher como clausula
inicial a clausula que corresponde `a nega cao da clausula que queremos pro-
var, utilizando uma demonstracao por refuta cao.
2.3. O SISTEMA SEM

ANTICO 75
{R, S} {S}
>
>
>
>
>
>
>
>
>
>
{R} {Q, R}
>
>
>
>
>
>
>
>
>>
{Q} {P, Q}
>
>
>
>
>
>
>
>
>
>
{P}
{P}
>
>
>
>
>
>
>
>
>
>
{}
Figura 2.5: Demonstra cao por resolu cao linear.
A resolucao linear herda o seu nome da forma linear que a representa cao
gr aca das suas derivacoes apresenta.
Exemplo 2.2.40 Suponhamos que desejavamos provar que
{{P, Q}, {Q, R}, {R, S} {P}} {S}.
Utilizando uma demonstra cao por refuta cao, esta demonstracao transforma-
se em
{{P, Q}, {Q, R}, {R, S} {P}, {S}} {}.
Na Figura 2.5 apresentamos a demonstra cao por resolucao linear correspon-
dente a esta prova. Uma vez que na prova original estamos a tentar provar
S, utilizamos {S} como clausula inicial. `
2.3 O sistema semantico
No sistema semantico consideramos as fbfs e os smbolos l ogicos sob o ponto
de vista do seu signicado. O sistema semantico baseia-se no conceito de
76 CAP

ITULO 2. L

OGICA PROPOSICIONAL
interpreta cao.
2.3.1 Valora cao, interpreta cao e tabelas de verdade
Denicao 2.3.1 (Fun cao de valoracao) Uma fun cao de valoracao e uma
fun cao, v, dos smbolos de proposicao para os valores l ogicos, verdadeiro (V )
e falso (F). Ou seja, v : P {V, F}.
Denicao 2.3.2 (Satisfacao) Dado um smbolo de proposicao P e uma
fun cao de valora cao v, dizemos que v satisfaz o smbolo de proposicao P se e
so se v(P) = V (diz-se tambem que o smbolo de proposi cao P e verdadeiro
segundo a fun cao de valoracao v); em caso contr ario dizemos que a fun cao de
valora cao nao satisfaz o smbolo de proposi cao P (neste caso, diz-se tambem
que o smbolo de proposi cao P e falso segundo a fun cao de valora cao v).
Exemplo 2.3.1 Sejam P e Q dois smbolos de proposicao. Uma fun cao de
valora cao corresponde `a atribui cao de um valor l ogico a cada uma destes
smbolos de proposicao, por exemplo:
v(P) = V
v(Q) = F.
De acordo com esta fun cao de valora cao, P e verdadeiro e Q e falso. `
Denicao 2.3.3 (Interpreta cao) Dada uma fbf contendo os smbolos
de proposicao P
1
, . . ., P
n
, uma interpretacao e uma fun cao de valora cao em
que apenas se consideram os smbolos de proposicao existentes na fbf.
Um dos aspectos interessantes da semantica e que o valor l ogico de uma
fbf apenas depende dos valores l ogicos das fbfs que a compoem e dos smbolos
l ogicos que relacionam esses componentes:
1. No que respeita as fbfs at omicas, a fun cao de valoracao e uma asso-
ciacao entre os smbolos de proposicao e os valores l ogicos V e F.
2. De modo a poder atribuir valores l ogicos a fbfs que contenham smbolos
l ogicos, temos que denir o signicado dos pr oprios smbolos l ogicos.
Denimos este signicado atraves de uma funcao booleana,
24
uma fun-
cao que transforma valores l ogicos em valores l ogicos. Uma fun cao
booleana de n argumentos e uma fun cao de {V, F}
n
para {V, F}.
24
Em honra do matem atico ingles George Boole (18151864).
2.3. O SISTEMA SEM

ANTICO 77
A deni cao das fun coes booleanas baseia-se nos signicados intuitivos
dos smbolos l ogicos apresentados na Seccao 1.2. Para cada smbolo
l ogico, esta fun cao e especicada atraves de uma tabela conhecida por
tabela de verdade.
(a) Dada uma fbf e uma intrepreta cao, dizemos que a interpreta cao
satisfaz a fbf se e so se a interpretacao n ao satisfaz a fbf :

V F
F V
(b) Dadas duas fbfs e e uma intrepreta cao, dizemos que a inter-
pretacao satisfaz a fbf se e so se a interpretacao satisfaz
ambas as fbfs e :

V V V
V F F
F V F
F F F
(c) Dadas duas fbfs e e uma intrepreta cao, dizemos que a inter-
pretacao satisfaz a fbf se e so se a interpreta cao satisfaz pelo
menos uma das fbfs ou :

V V V
V F V
F V V
F F F
(d) Dadas duas fbfs e e uma intrepreta cao, dizemos que a in-
terpreta cao satisfaz a fbf se e so se a interpreta cao n ao
satisfaz ou a interpreta cao satisfaz :

V V V
V F F
F V V
F F V
Os valores l ogicos de fbfs contendo m ultiplos smbolos de proposi cao sao
obtidos atraves da composicao dos valores l ogicos das fbfs que estas contem.
78 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Dizemos que uma fbf e verdadeira (respectivamente, falsa) segundo uma
interpreta cao se essa interpreta cao satisfaz (respectivamente, nao satisfaz)
essa fbf.
Exemplo 2.3.2 Dados os smbolos de proposicao P, Q, e R, se quisermos
saber sob que condi coes a fbf (P Q) R e verdadeira, construmos a
seguinte tabela de verdade:
P Q P Q R (P Q) R
V V V V V
V V V F F
V F F V V
V F F F V
F V F V V
F V F F V
F F F V V
F F F F V
Vericamos que a fbf (P Q) R apenas n ao e verdadeira no caso de
ambos os smbolos de proposicao P e Q serem verdadeiros e o smbolo de
proposi cao R ser falso. `
Denicao 2.3.4 (F ormula satisfazvel) Uma fbf diz-se satisfazvel se e
so se existe uma interpreta cao na qual a fbf e verdadeira.
Exemplo 2.3.3 A fbf (P Q) R e satisfazvel (ver Exemplo 2.3.2). `
Denicao 2.3.5 (F ormula falsicavel) Uma fbf diz-se falsic avel se e so
se existe uma interpreta cao na qual a fbf e falsa.
Exemplo 2.3.4 A fbf (P Q) R e falsic avel (ver Exemplo 2.3.2). `
Denicao 2.3.6 (F ormula tautologica) Certas fbfs sao verdadeiras para
todas as interpreta coes, fbfs essas que se dizem tautol ogicas ou tautologias.
25
Se e uma tautologia escrevemos |= ou apenas |= .
Exemplo 2.3.5 De acordo com a seguinte tabela de verdade:
25
Por abuso de linguagem, e comum tambem dizer que estas fbfs sao v alidas.
2.3. O SISTEMA SEM

ANTICO 79
Falsa em todas
as interpreta c oes
Verdadeira em todas
as interpreta coes
Tautologica Satisfazvel Falsicavel Contradit oria
Verdadeira em algumas
interpreta coes e falsa noutras
Figura 2.6: Classica cao das fbfs em L
LP
.
P Q P Q P (P Q) (P (P Q)) Q
V V V V V
V F F F V
F V V F V
F F V F V
a fbf (P (P Q)) Q e tautol ogica. `
Denicao 2.3.7 (F ormula contraditoria) Certas fbfs sao falsas para to-
das as interpreta coes, fbfs essas que se dizem contraditorias ou nao satisfa-
zveis.
Exemplo 2.3.6 A fbf P P e contradit oria, como o mostra a seguinte
tabela de verdade:
P P P P
V F F
F V F
`
Na Figura 2.6 apresentamos, gracamente, as relacoes entre fbfs tautol ogicas,
satisfazveis, falsic aveis e contradit orias.
Teorema 2.3.1 A fbf e tautol ogica se e so se e contradit oria.
80 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Demonstrac ao: Seja uma fbf arbitr aria e seja v uma fun cao de valora cao. Por
deni cao da interpreta cao para a negacao v() = V se e so se v() = F
(ver p agina 77). Se for verdadeira para todas as fun coes de valora cao (
e tautol ogica), ent ao sera falsa para todas as funcoes de valora cao (
e contradit oria). Conversamente, se for falsa para todas as fun coes de
valora cao, ent ao sera verdadeira para todas as fun coes de valora cao.
Teorema 2.3.2 A fbf e satisfazvel se e so se e falsic avel.
Demonstrac ao: Seja uma fbf arbitr aria e seja v uma fun cao de valora cao. Por
deni cao da interpreta cao para a negacao v() = V se e so se v() = F (ver
p agina 77). Se existir uma fun cao de valora cao na qual e verdadeira ( e
satisfazvel) ent ao para essa fun cao de valora cao e falsa ( e falsic avel).
Conversamente, se existir uma fun cao de valora cao para a qual e falsa,
ent ao para essa fun cao de valora cao e verdadeira.
Denicao 2.3.8 (Conjunto satisfazvel) Um conjunto de fbfs diz-se
satisfazvel se e so se existe pelo menos uma interpreta cao que satisfaz todas
as fbfs de .
Exemplo 2.3.7 Considerando o Exemplo 2.3.5, o conjunto {P, Q, P Q}
e satisfazvel pois a interpreta cao v(P) = V e v(Q) = V satisfaz todas as
fbfs deste conjunto. `
Denicao 2.3.9 (Conjunto contraditorio) Um conjunto de fbfs diz-
se contradit orio se e so se n ao existe nenhuma interpreta cao que satisfaz
todas as fbfs de .
Exemplo 2.3.8 O conjunto {P, P} e contradit orio pois nenhuma inter-
preta cao satisfaz todas as fbfs deste conjunto. `
Denicao 2.3.10 (Modelo de um conjunto de formulas) Dado um
conjunto de fbfs , uma interpretacao que satisfaz todas as fbfs de diz-se
um modelo do conjunto .
Usando a semantica podemos agora vericar a validade ou a invalidade de
um argumento. Por deni cao o argumento (, ) e v alido se n ao existir
nenhuma interpretacao que torne todas as proposicoes em verdadeiras e
a conclusao () falsa.
26
Neste caso escrevemos |= .
26
De um modo equivalente podemos dizer que todos os modelos das premissas sao
modelos da conclusao.
2.3. O SISTEMA SEM

ANTICO 81
Exemplo 2.3.9 Dado o argumento ({P Q, R}, P R), a seguinte tabela
de verdade mostra a sua validade. Note-se que nesta tabela n ao existe
nenhuma linha em que todas as premissas tenham o valor V e a conclusao
tenha o valor F.
P Q R P Q P R
V V V V V
V V F V F
V F V F V
V F F F F
F V V F F
F V F F F
F F V F F
F F F F F
`
Dada uma fbf contendo n smbolos de proposicao, P
1
, P
2
, . . ., P
n
, podemos,
em princpio, construir uma tabela de verdade com 2
n
linhas, cada uma das
quais corresponde a uma combina cao possvel dos valores l ogicos de P
1
, P
2
,
. . ., P
n
. Esta tabela de verdade pode ser utilizada como base para um
algoritmo para determinar, por exemplo, se e uma tautologia.
O problema com este algoritmo e que a sua complexidade cresce exponen-
cialmente com o n umero de smbolos de proposicao. Estes algoritmos sao
importantes, por exemplo, para o projecto de circuitos electronicos. No
projecto de um circuito electronico, um pequeno chip pode facilmente ter
mais de 100 smbolos de proposi cao, o que exigiria uma tabela de verdade
com mais de 2
100
linhas (n umero esse que e superior a 10
30
).
2.3.2 Diagramas de decisao binarios (BDDs)
Para resolver o problema apresentado no nal da seccao anterior foram de-
senvolvidos metodos que permitem, de um modo mais eciente, o calculo dos
possveis valores l ogicos de uma fbf contendo v arios smbolos de proposicao.
Um desses metodos, os diagramas de decisao bin arios, e apresentado nesta
seccao. Para denir um diagrama de decisao bin ario necessitamos do con-
ceito de arvore de decisao.
82 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Denicao 2.3.11 (

Arvore de decisao) Uma arvore de decis ao para uma


fbf e uma arvore bin aria em que os n os contem os smbolos de proposicao
existentes na fbf e as folhas da arvore sao um dos valores V e F , repre-
sentando, respectivamente, verdadeiro e falso.
A cada nvel de profundidade da arvore, todos os n os correspondem ao
mesmo smbolo de proposi cao.
Cada um dos n os, com a excepcao das folhas, domina duas arvores de de-
cisao, a da esquerda, `a qual esta ligado por uma linha a tracejado e a da
direita, `a qual esta ligado por uma linha a cheio.
Para uma dada interpretacao, comecando na raiz da arvore, para cada
smbolo de proposicao, tomando o ramo da esquerda (linha a tracejado)
se o valor do smbolo de proposicao for falso e o ramo da direita (linha a
cheio) se o valor do smbolo de proposi cao for verdadeiro, o valor da fo-
lha que se atinge tem o valor l ogico que surge na ultima coluna da linha
correspondente da tabela de verdade.
Uma tabela de verdade pode ser transformada numa arvore de decisao, re-
presentando em cada nvel um dos smbolos de proposicao, pela ordem em
que aparecem nas colunas da tabela de verdade, ligando cada smbolo a um
nvel ao smbolo do nvel seguinte atraves de uma linha a cheio e de uma linha
a tracejado e inserindo as folhas da arvore com os valores correspondentes.
Exemplo 2.3.10 Consideremos a tabela de verdade para a fbf P ((Q
R) (R Q)):
P Q R P ((Q R) (R Q))
V V V V
V V F F
V F V V
V F F F
F V V F
F V F F
F F V F
F F F F
Na Figura 2.7 apresentamos a arvore de decisao construda a partir desta
tabela de verdade. Considerando esta arvore de decisao, a interpreta cao
v(P) = V , v(Q) = F e v(R) = V , determina o valor l ogico verdadeiro para
a fbf. `
2.3. O SISTEMA SEM

ANTICO 83
P
R
F V
Q
R
F V
Q
R R
F F F F
Figura 2.7:

Arvore de decisao para a fbf P ((Q R) (R Q)).
Note-se que as arvores de decisao e as tabelas de verdade sao basicamente
semelhantes no que respeita `a sua dimensao e ao n umero de pontos de de-
cisao que e necessario considerar para avaliar uma fbf. No entanto, existe
um conjunto de transforma coes que aplicado a arvores de decisao permite
transform a-las em grafos acclicos dirigidos e rotulados que representam, de
um modo compacto, a mesma informa cao.
Denicao 2.3.12 (Grafo dirigido) Um grafo dirigido corresponde a uma
estrutura (N, A) em que N e um conjunto nito e A e uma relacao bin aria
denida sobre N. O conjunto N corresponde aos nos do grafo e o conjunto
A corresponde aos arcos do grafo.
De acordo com esta deni cao, os arcos correspondem a um conjunto de pares
em que cada elemento do conjunto, (n
i
, n
j
), pertence a N
2
. Se (n
i
, n
j
) A,
diz-se que existe um arco que parte de n
i
e que termina em n
j
. Em texto,
representamos o arco (n
i
, n
j
) por n
i
n
j
.
Dado um grafo dirigido (N, A), um n o n para o qual n ao existe nenhum
arco que nele termina, ou seja n ao existe nenhum par em A cujo segundo
elemento e n, diz-se um no inicial ou uma raiz; um no n para o qual n ao
existe nenhum arco que dele parte, ou seja n ao existe nenhum par em A
cujo primeiro elemento e n, diz-se um no terminal ou uma folha. Note-se
que contrariamente a uma arvore, num grafo podem existir zero ou mais
raizes e zero ou mais folhas. Um n o que nao seja nem um no inicial nem um
n o terminal diz-se n o nao terminal.
Denicao 2.3.13 (Caminho) Num grafo dirigido dene-se um caminho
84 CAP

ITULO 2. L

OGICA PROPOSICIONAL
n
1
n
2
n
3
n
4
n
5
Figura 2.8: Exemplo de representacao de um grafo.
como sendo uma sequencia de n os, [n
1
, n
2
, . . . , n
k
], tal que para cada n o
na sequencia existe um arco para o proximo n o da sequencia, ou seja, para
1 i k 1 verica-se que n
i
n
i+1
. No caminho [n
1
, n
2
, . . . , n
k
], o n o
n
1
diz-se o incio do caminho e o n o n
k
diz-se o m do caminho.
Denicao 2.3.14 (Grafo acclico) Um grafo dirigido diz-se acclico se
n ao e possvel construir nenhum caminho que comeca e termina no mesmo
n o.
Exemplo 2.3.11 Na Figura 2.8 mostramos a representa cao do grafo ({n
1
,
n
2
, n
3
, n
4
, n
5
}, {(n
1
, n
3
), (n
2
, n
1
), (n
2
, n
3
), (n
2
, n
4
), (n
3
, n
3
), (n
3
, n
4
)}).
Esta representa cao mostra o arco n m como uma seta de n para m,
no entanto, a seta pode ser substituda por uma linha se a direc cao estiver
implcita.
Os n os n
2
e n
5
sao n os iniciais (raizes) e os n os n
4
e n
5
sao n os terminais
(folhas). Note-se que o n o n
5
n ao pertence a nenhum par da rela cao, sendo,
por isso, simultaneamente um n o inicial e um n o terminal.
As sequencias [n
2
, n
3
, n
3
, n
3
, n
4
], [n
2
, n
1
, n
3
, n
4
] e [n
3
, n
3
] sao exemplos de
caminhos neste grafo, pelo que o grafo n ao e acclico. `
Denicao 2.3.15 (Grafo dirigido e rotulado) Um grafo dirigido e ro-
tulado corresponde a uma estrutura (N, A) em que N e um conjunto nito
e A e um conjunto de rela coes bin arias denidas sobre N. O conjunto
N corresponde aos nos do grafo e o conjunto A corresponde aos arcos do
2.3. O SISTEMA SEM

ANTICO 85
n
1
n
2
n
3
n
4
n
5
R
1
R
2
R
1
R
2
R
1
R
2
R
1
R
1
Figura 2.9: Exemplo de representa cao de um grafo dirigido e rotulado.
grafo. Cada rela cao em A corresponde a um conjunto de arcos com um dado
r otulo.
Exemplo 2.3.12 Na Figura 2.9 mostramos a representa cao do grafo ({n
1
,
n
2
, n
3
, n
4
, n
5
}, {{(n
1
, n
3
), (n
2
, n
1
), (n
2
, n
3
), (n
2
, n
4
), (n
3
, n
4
)}, {(n
2
, n
1
),
(n
3
, n
3
), (n
3
, n
4
)}}). Esta representa cao mostra o arco n m como uma
seta de n para m, seta essa que e rotulada com uma indica cao da relacao,
R
1
ou R
2
. `
Note-se que, na representacao gr aca, em lugar de rotular os arcos com os
nomes das rela coes, podemos ter diferentes tipos de representa coes gr acas
para cada uma das relacoes.
Exemplo 2.3.13 O grafo da Figura 2.9 pode ser representado como se
indica na Figura 2.10, utilizando uma linha a cheio para os arcos que corres-
pondem `a rela cao R
1
e uma linha a tracejado para os arcos que correspondem
`a relacao R
2
. `
Com a introdu cao de grafos dirigidos e rotulados, a deni cao de caminho
deve ser reformulada, existindo duas possibilidades para esta denicao.
Denicao 2.3.16 (Caminho segundo uma relacao) Num grafo dirigi-
do e rotulado dene-se um caminho segundo uma rela cao como sendo uma
sequencia de n os, [n
1
, n
2
, . . . , n
k
], tal que existe uma rela cao R A, tal
86 CAP

ITULO 2. L

OGICA PROPOSICIONAL
n
1
n
2
n
3
n
4
n
5
Figura 2.10: Representa cao alternativa para o grafo da Figura 2.9.
que para cada n o na sequencia existe um arco, segundo essa rela cao, para
o pr oximo n o da sequencia, ou seja, para 1 i k 1 verica-se que
(n
i
, n
i+1
) R.
Denicao 2.3.17 (Caminho segundo qualquer relacao) Num grafo
dirigido e rotulado dene-se um caminho segundo qualquer rela cao como
sendo uma sequencia de n os, [n
1
, n
2
, . . . , n
k
], tal que para cada n o na sequen-
cia existe um arco, segundo uma relacao em A, para o pr oximo n o da sequen-
cia, ou seja, para cada i (1 i k 1), existe uma rela cao R
j
A tal que
(n
i
, n
i+1
) R
j
.
Na representa cao gr aca de um grafo, os n os podem estar associados a
r otulos, mostrando-se o r otulo e n ao o n o (o elemento de N). No entanto
n ao se deve confundir um n o com o seu r otulo; os n os sao unicos no grafo
(correspondem a elementos do conjunto N), ao passo que dois ou mais n os
podem ter o mesmo r otulo.
Exemplo 2.3.14 O grafo da Figura 2.9 pode ser representado como se in-
dica na Figura 2.11, utilizando os seguintes r otulos para os n os r otulo(n
1
) =
A, r otulo(n
2
) = B, r otulo(n
3
) = C, r otulo(n
4
) = A e r otulo(n
5
) = C. `
Denicao 2.3.18 (BDD) Um diagrama de decis ao binario (do ingles Bi-
nary Decision Diagram, abreviado por BDD), tambem designado apenas
por BDD, e um grafo acclico dirigido e rotulado em que os r otulos do n os
2.3. O SISTEMA SEM

ANTICO 87
A
A
B
C
C
Figura 2.11: Representacao alternativa para o grafo da Figura 2.9.
pertencem ao conjunto P { V , F }.
27
Num BDD existem duas relacoes, uma representada gracamente por arcos
a cheio e a outra representada por arcos a tracejado.
Para alem destas condi coes, e por deni cao, um BDD tem um unico n o
inicial e todos os seus n os terminais tem os r otulos V ou F . Os r otulos
dos n os n ao terminais correspondem a smbolos de proposicao.
O signicado das relacoes existentes num BDD e semelhante ao signicado
dos arcos existentes numa arvore de decisao. Dado qualquer n o, n, que
n ao seja uma folha, seguindo o arco a tracejado (chamado o arco negativo)
a partir de n leva-nos para um n o no qual se assume que o smbolo de
proposi cao que corresponde ao r otulo do n o n e falso; seguindo o arco a
cheio (chamado o arco positivo) a partir de n leva-nos para um n o no qual
se assume que o smbolo de proposicao que corresponde ao r otulo do n o n
e verdadeiro. Por abuso de linguagem, e sempre que n ao exista perigo de
confus ao, num BDD referimo-nos a um n o indicando apenas o seu r otulo.
Na representacao de um BDD omitimos as setas nas extremidades dos arcos,
estando implcito que os arcos correspondem a uma linha dirigida do no mais
acima para o n o mais abaixo.
Exemplo 2.3.15 Na Figura 2.12 apresentamos um exemplo de um BDD.
Neste BDD, o n o inicial tem o r otulo P, os n os n ao terminais tem os r otulos
27
Recorde-se da p agina 29 que P representa o conjunto dos smbolos de proposic ao.
88 CAP

ITULO 2. L

OGICA PROPOSICIONAL
P
R
Q
R
V
Q
R R
F
Figura 2.12: Exemplo de um BDD.
Q e R. Notemos, mais uma vez, que no grafo sujacente ao BDD cada n o
tem um identicador unico, o qual n ao mostramos. `
Denicao 2.3.19 (Profundidade de um n o) Num BDD, dene-se a
profundidade de um n o como o n umero de n os que existem num caminho
segundo qualquer rela cao entre a raiz e esse n o, n ao contando com a raiz. Por
deni cao a profundidade da raiz de qualquer BDD e zero. Dado um inteiro
n ao negativo, m, e um BDD, os n os ao nvel m do BDD correspondem ao
conjunto de todos os n os do BDD cuja profundidade e m.
Denicao 2.3.20 (BDD positivo e negativo) Dado um BDD que n ao
seja uma folha, o BDD que se atinge tomando, a partir do n o inicial, o arco
que corresponde `a situa cao do smbolo de proposi cao associado a este n o
ter o valor falso (o arco negativo) chama-se o BDD negativo; o BDD que se
atinge tomando, a partir do n o inicial, o arco que corresponde `a situacao
do smbolo de proposicao associado a este n o ter o valor verdadeiro (o arco
positivo) chama-se o BDD positivo.
Exemplo 2.3.16 Considerando o BDD da Figura 2.12, os seus BDDs ne-
gativo e positivo estao representados, respectivamente, na Figura 2.13 (a) e
(b). `
Transforma coes aplicaveis em BDDs.

E importante notar que uma
arvore de decisao bin aria pode ser considerada um BDD. Com efeito, cada
ramo da arvore pode ser considerado como um arco, dirigido (do n o mais
2.3. O SISTEMA SEM

ANTICO 89
R
Q
R
V
Q
R R
F F
(a) (b)
Figura 2.13: BDDs negativo e positivo do BDD da Figura 2.12.
acima para o n o mais abaixo) ligando dois n os. Uma arvore de decisao
bin aria tem um unico n o inicial (a raiz da arvore) e todos os seus n os ter-
minais (as folhas) tem os r otulos V ou F . Para alem disso, todos os n os
n ao terminais correspondem a smbolos de proposicao.
Existe um conjunto de transforma coes, conhecidas por redu coes, que aplica-
das a BDDs permitem transform a-los em BDDs equivalentes (equivalentes,
no sentido em que calculam o mesmo valor para a mesma interpreta cao)
mas com uma representacao mais compacta:
R1 Remo cao de folhas duplicadas. Se o BDD tem mais do que uma folha
com o r otulo V ou com o r otulo F , todas as folhas com o mesmo
r otulo sao unicadas, sendo os arcos associados redireccionados para
reectir esta altera cao.
Exemplo 2.3.17 Usando esta transforma cao, a arvore de decisao da
Figura 2.7 e transformada no BDD apresentado na Figura 2.12. `
R2 Remo cao de testes redundantes. Se ambos os arcos que saem de um
n o se dirigem ao mesmo n o, ent ao podemos eliminar o n o de sada,
redireccionando os arcos do n o de entrada.
Exemplo 2.3.18 Na Figura 2.14 mostramos os testes redundantes
existentes no BDD da Figura 2.12. A aplicacao de um passo desta
transforma cao pode dar origem a outros testes redundantes, pelo que
esta transformacao pode ser aplicada mais do que uma vez. Na Fi-
90 CAP

ITULO 2. L

OGICA PROPOSICIONAL
P
R
Q
R
V
Q
R R
F
Figura 2.14: Indica cao de testes redundantes no BDD da Figura 2.12.
P
R
Q
R
V F
Figura 2.15: Resultado da aplicacao sucessiva da transforma cao R2.
gura 2.15 mostra-se o resultado nal da aplica cao sucessiva da trans-
forma cao R2 ao BDD da Figura 2.14.
28
`
R3 Remo cao de nos redundantes. Se dois n os distintos sao os nos iniciais
de dois sub-BDDs estruturalmente semelhantes,
29
ent ao podemos eli-
minar um deles, dirigindo os n os relevantes do outro. Note-se que a
transforma cao R1 e um caso particular desta transforma cao.
28
A vericac ao deste resultado deixa-se como exerccio.
29
Dois BDDs correspondentes a folhas sao estruturalmente semelhantes se tiverem o
mesmo r otulo; dois BDDs que n ao sejam folhas sao estruturalmente semelhantes se os
n os correspondentes ` as suas razes tiverem o mesmo r otulo e se os seus BDDs positivos e
negativos forem, respectivamente, estruturalmente semelhantes.
2.3. O SISTEMA SEM

ANTICO 91
P
R
V F
Figura 2.16: Resultado nal da aplica cao das transforma coes.
Exemplo 2.3.19 No BDD da Figura 2.15 os sub-BDDs cuja raiz tem
o r otulo R sao estruturalmente semelhantes. Novamente, esta trans-
forma cao pode ter que ser aplicada mais do que uma vez, eventual-
mente em conjun cao com as outras transforma coes. Na Figura 2.16
apresentamos o resultado nal da aplica cao das transforma coes R1,
R2 e R3 ao BDD da Figura 2.12.
30
`
Denicao 2.3.21 (BDD reduzido) Um BDD ao qual n ao e possvel apli-
car nenhuma das transforma coes R1, R2 ou R3 diz-se um BDD em forma
reduzida ou BDD reduzido.
Composicao de BDDs. As transforma coes que descrevemos, embora
permitam simplicar a representacao de uma fbf atraves de uma arvore de
decisao bin aria, obrigam `a constru cao da arvore de decisao bin aria para a
fbf em causa, o que por si so, e um problema de complexidade exponencial.
Uma das vantagens da utiliza cao de BDDs corresponde `a possibilidade de
construir um BDD para uma fbf directamente a partir dos BDDs que cor-
respondem `as componentes dessa fbf.
Na descri cao que apresentamos apenas consideramos os smbolos l ogicos ,
e . As fbfs que contenham outros smbolos l ogicos deverao ser transforma-
das em fbfs que apenas contenham os smbolos considerados. Por exemplo,
a fbf devera ser transformada em .
Sejam BDD

e BDD

, respectivamente, os BDDs correspondentes `as fbfs


e .
31
Ent ao:
30
A vericac ao deste resultado deixa-se como exerccio.
31
Se uma destas fbfs for um smbolo de proposic ao, o seu BDD ter a uma raz cujo r otulo
92 CAP

ITULO 2. L

OGICA PROPOSICIONAL
P
R
F
V
P
F V
Q
R
(a) (b)
Figura 2.17: BDDs correspondentes a (P Q) (P R) e a P R.
1. O BDD para a fbf pode ser criado a partir de BDD

substituindo,
simultaneamente o n o com o r otulo V por F e o n o com o r otulo
F por V .
2. O BDD para a fbf pode ser criado a partir de BDD

, substituindo
o n o com o r otulo V pelo BDD

e aplicando ao BDD resultante as


transforma coes R1 a R3.
3. O BDD para a fbf pode ser criado a partir de BDD

, substituindo
o n o com o r otulo F pelo BDD

e aplicando ao BDD resultante as


transforma coes R1 a R3.
Exemplo 2.3.20 Consideremos as fbfs (P Q)(P R) e P R, `as quais
correspondem, respectivamente, os BDDs representados na Figura 2.17 (a)
e (b). Suponhamos que queramos construir um BDD para a fbf ((P Q)
(P R)) (P R). De acordo com as regras enunciadas, obteramos o
BDD da Figura 2.18 (a), o qual, usando as transforma coes R1, R2 e R3,
seria transformado no BDD da Figura 2.18 (b). `
e esse smbolo de proposic ao e cujos BDDs positivo e negativo sao, respectivamente, V
e F .
2.3. O SISTEMA SEM

ANTICO 93
(a) (b)
P
F
Q
R
P
R
F
V
P
Q
R
P
R
F
V
Figura 2.18: BDD correspondente a ((P Q) (P R)) (P R).
94 CAP

ITULO 2. L

OGICA PROPOSICIONAL
P
Q
R
F
V
Figura 2.19: Outro BDD correspondente a ((P Q) (P R)) (P R).
Note-se, que na deni cao de BDD, nada probe que um smbolo de pro-
posi cao apareca mais do que uma vez num caminho do grafo, tal como
acontece na Figura 2.18 (b). Neste caso, contudo, teremos que considerar
apenas caminhos consistentes ao longo do BDD. O caminho que atinge o n o
V considerando a possibilidade de P ser falso e de P ser verdadeiro, n ao
e consistente pois ao longo deste caminho o mesmo smbolo de proposi cao
(P) e simultaneamente considerado como verdadeiro e falso.
Note-se tambem, que se construirmos de raiz (ou seja, partindo da arvore
de decisao bin aria) um BDD para a fbf ((P Q) (P R)) (P R),
obtemos o BDD apresentado na Figura 2.19, o qual, para alem de estar mais
simplicado, n ao apresenta caminhos inconsistentes.
Os problemas encontrados na constru cao dos BDDs da Figura 2.18 foram
originados do facto das fbfs ((P Q) (P R)) e (P R) partilharem
smbolos de proposicao e o BDD que resulta da composi cao dos BDDs destas
fbfs n ao tomar esse aspecto em considera cao.
Para resolver este problema teremos que introduzir o conceito de diagrama
de decisao bin ario ordenado.
2.3.3 Diagramas de decisao binarios ordenados (OBDDs)
Seja {P
1
, . . . , P
n
} um conjunto de smbolos de proposicao e seja uma
relacao de ordem total denida sobre o conjunto {P
1
, . . . , P
n
}. Note-se que
pelo facto de {P
1
, . . . , P
n
} ser um conjunto, esta implcito que este n ao tem
2.3. O SISTEMA SEM

ANTICO 95
elementos repetidos.
Denicao 2.3.22 (Relacao de ordem total) Uma rela cao de ordem to-
tal, , denida sobre {P
1
, . . . , P
n
} e uma rela cao bin aria, transitiva, anti-
reexiva e anti-simetrica, que permite que todos os elementos do conjunto se-
jam compar aveis. Ou seja, dados dois elementos quaisquer de {P
1
, . . . , P
n
},
P
i
e P
j
, exactamente uma das duas rela coes se verica P
i
P
j
ou P
j
P
i
.

Denicao 2.3.23 (Ordena cao introduzida por relacao) Diz-se que a


relacao de ordem introduz uma ordenacao no conjunto {P
1
, . . . , P
n
}, a
qual e representada por [P
1
, . . . , P
n
]

(quando n ao haja risco de confus ao,


este sera abreviado para apenas [P
1
, . . . , P
n
]). Na sequencia [P
1
, . . . , P
n
]

,
para todo o i (1 i n 1) verica-se que P
i
P
i+1
. Na sequencia
[P
1
, . . . , P
n
]

, P
1
e o elemento com maior prioridade e P
n
e o elemento com
menor prioridade.
Denicao 2.3.24 (Sequencia satisfaz uma ordem) Dado um subcon-
junto de {P
1
, . . . , P
n
}, {Q
1
, . . . , Q
m
}, diz-se que a sequencia [Q
1
, . . . , Q
m
]
satisfaz a ordem se e so se para todo o i (1 i m 1) se verica que
Q
i
Q
i+1
.
Denicao 2.3.25 (BDD satisfaz uma ordem) Seja {P
1
, . . . , P
n
} um
conjunto de smbolos de proposi cao, seja uma rela cao de ordem total
denida sobre {P
1
, . . . , P
n
} e seja D um BDD que apenas contem smbolos
de proposi cao pertencentes ao conjunto. Diz-se que D satisfaz a ordem se
e so se para qualquer caminho segundo qualquer rela cao, n
1
, n
2
, . . . , n
k
em
D a sequencia de n os [n
1
, n
2
, . . . , n
k
] satiszer a ordem , ou seja para todo
o i, 1 i k 1, n
i
n
i+1
.
Denicao 2.3.26 (OBDD) Um diagrama de decis ao binario ordenado (do
ingles Ordered Binary Decision Diagram ou OBDD), tambem designado
apenas por OBDD, e um BDD que satisfaz alguma rela cao de ordem total
para os smbolos de proposicao que contem.
Dadas as propriedades das relacoes de ordem totais, e f acil concluir que num
OBDD n ao podem existir caminhos que contenham mais do que uma vez
o mesmo smbolo de proposicao. Por esta razao, os BDDs apresentados na
Figura 2.18 nao sao OBDDs.
96 CAP

ITULO 2. L

OGICA PROPOSICIONAL
R
Q
V F
P
Q
R
F V
Figura 2.20: Exemplo de OBDDs n ao compatveis.
Denicao 2.3.27 (OBDDs compatveis) Dados dois OBDDs, OBDD
1
e OBDD
2
e uma sequencia de smbolos de proposicao [P
1
, . . . , P
n
] induzida
por uma ordem , diz-se que OBDD
1
e OBDD
2
sao compatveis se e so se
ambos satisfazem a ordem aplicada ao conjunto de smbolos de proposi cao
{P
1
, . . . , P
n
}.
Exemplo 2.3.21 Os OBDDS apresentados na Figura 2.17 sao compatveis;
os OBDDS apresentados na Figura 2.20 n ao sao compatveis. `
A import ancia dos OBDDs resulta, em parte, dos seguintes resultados:
Teorema 2.3.3 Dada uma fbf e uma rela cao de ordem total para os
smbolos de proposi cao de , o OBDD reduzido correspondente a e unico.
Demonstrac ao: Ver [Bryant 86].
Corolario 2.3.1 A verica cao de se dois OBDDs correspondem `a mesma
fbf e feita vericando se estes sao estruturalmente semelhantes.
Demonstrac ao: Ver [Bryant 86].
Do Teorema 2.3.3 e do Corol ario 2.3.1, podemos extrair um conjunto de
testes triviais para vericar propriedades de fbfs:
1. Teste para validade. Uma fbf e uma tautologia se e so se o seu OBDD
reduzido e V .
2.3. O SISTEMA SEM

ANTICO 97
2. Teste para satisfazibilidade. Uma fbf e satisfazvel se e so se o seu
OBDD reduzido n ao e F .
3. Teste para inconsistencia. Uma fbf e uma contradi cao se e so se o
seu OBDD reduzido e F .
4. Teste para equivalencia. Duas fbfs e sao equivalentes se e so se os
seus OBDDs sao estruturalmente semelhantes.

E importante notar que a relacao de ordem escolhida tem inuencia no


tamanho do OBDD. Por exemplo, na Figura 2.21 mostram-se os OBDDs
reduzidos para a fbf (P
1
P
2
) (P
3
P
4
) (P
5
P
6
) usando as ordens totais
P
1
P
2
P
3
P
4
P
5
P
6
e P
1
P
3
P
5
P
2
P
4
P
6
.
32
Apesar deste resultado negativo, e possvel encontrar heursticas ecientes
para determinar a ordem dos smbolos de proposicao a utilizar num OBDD.
Algoritmos para a manipulacao de OBDDs. Dada a import ancia
dos resultados traduzidos pelos testes de verica cao de propriedades de
fbfs usando OBDDs, vamos agora concentrar-nos no desenvolvimento de
algoritmos para a manipula cao de OBDDs.
Para facilitar a apresenta cao destes algoritmos, consideramos um OBDD
como um tipo abstracto de informa cao, em relacao ao qual sao denidas as
opera coes b asicas que descrevemos de seguida. Na denicao destas operacoes
assume-se que N e o conjunto de n os do OBDD. Os r otulos dos n os perten-
cem ao conjunto P {V, F}.
1. Construtores:
cria folha : {V, F} OBDD
cria folha(b) devolve um OBDD correspondente a uma folha cujo
r otulo e b.
cria OBDD : P OBDD OBDD OBDD
cria OBDD(r, o
n
, o
p
) tem como valor o OBDD cuja raiz tem o
r otulo r, cujo OBDD negativo e o
n
e cujo OBDD positivo e o
p
.
2. Selectores:
32
Exemplo introduzido por [Bryant 86] e adaptado de [Huth and Ryan 04, p. 371].
98 CAP

ITULO 2. L

OGICA PROPOSICIONAL
F V
P
1
P
2
P
3
P
4
P
5
P
6
P
2
P
2
P
2
P
2
P
5
P
5
P
5
P
5
P
3
P
3
P
1
P
4
P
4
V
P
6
F
P
1
P
1
P
3
P
5
P
2
P
4
P
6
[ ]
, , , , ,
P
1
P
2
P
3
P
4
P
5
P
6
[ ]
, , , , ,
Figura 2.21: OBDDs para a mesma fbf com diferentes ordena coes.
2.3. O SISTEMA SEM

ANTICO 99
raiz : OBDD P {V, F}
raiz(o) recebe um OBDD, o, e tem como valor o r otulo do n o que
corresponde `a sua raiz.
neg : OBDD OBDD
neg(o) recebe um OBDD, o, e tem como valor o OBDD nega-
tivo de o. Se o OBDD corresponder a uma folha, o valor desta
opera cao e a pr opria folha.
pos : OBDD OBDD
pos(o) recebe um OBDD, o, e tem como valor o OBDD positivo de
o. Se o OBDD corresponder a uma folha, o valor desta operacao
e a pr opria folha.
3. Modicadores:
muda neg! : OBDD OBDD OBDD
muda neg!(o, o
n
) recebe um OBDD, o, e muda destrutivamente
o seu OBDD negativo para o
n
. Se o for uma folha nada acontece.
muda pos! : OBDD OBDD OBDD
muda pos(o, o
p
)! recebe um OBDD, o, e muda destrutivamente o
seu OBDD positivo para o
p
. Se o for uma folha nada acontece.
4. Reconhecedores:
folha? : OBDD {V, F}
folha?(o) tem o valor V (verdadeiro) se o OBDD o corresponde
a uma folha e tem o valor F (falso), em caso contr ario.
Consideramos tambem que as seguintes opera coes de alto nvel estao deni-
das para OBDDs:
folhas : OBDD 2
OBDD
folhas(o) devolve o conjunto de todos os OBDDs que correspondem
a folhas do OBDD o.
nvel : OBDD N
0
2
OBDD
nvel(o, n) devolve o conjunto de todos os OBDDs cujas razes se en-
contram ao nvel n no OBDD o, ou, simplesmente, os OBDDs do nvel
n do OBDD o.
100 CAP

ITULO 2. L

OGICA PROPOSICIONAL
profundidade max : OBDD N
0
profundidade max(o) devolve o valor da maior profundidade a que e
possvel encontrar um n o no OBDD o.
Para alem do tipo OBDD, os nossos algoritmos trabalham com conjuntos
e com listas associativas. Consideramos que as seguintes operacoes est ao
denidas para o tipo conjunto e para o tipo lista associativa.
Conjunto. Nestas opera coes, elem corresponde ao tipo dos elementos do
conjunto:
novo conjunto : {} conjunto
novo conjunto() devolve um conjunto vazio.
escolhe : conjunto elem
escolhe(c) devolve um elemento do conjunto c. Este elemento e escol-
hido arbitrariamente. Se c for o conjunto vazio, o valor desta operacao
e indenido.
junta : elemconjunto conjunto
junta(e, c) devolve o conjunto que se obtem adicionando o elemento e
a c. Se e j a pertencer ao conjunto, esta operacao devolve c.
subtrai : elemconjunto conjunto
subtrai(e, c) devolve o conjunto que se obtem de c removendo o ele-
mento e. Se e n ao pertencer ao conjunto, esta operacao devolve c.
vazio? : conjunto {V, F}
vazio?(c) tem o valor V (verdadeiro) se c corresponde ao conjunto
vazio e tem o valor F (falso), em caso contr ario.
card : conjunto N
0
card(c) tem como valor o n umero de elementos (a cardinalidade) do
conjunto c.
Lista associativa. Uma lista associativa e uma lista cujos elementos sao
pares. O primeiro elemento de cada par, a chave, corresponde a um identi-
cador unico na lista. O segundo elemento do par, o conte udo, pode ser qual-
quer tipo de informa cao. Entre outras, as listas associativas tem as seguintes
opera coes b asicas. Nestas operacoes, chave corresponde ao tipo escolhido
para a chave e universal corresponde a qualquer tipo de informa cao.
2.3. O SISTEMA SEM

ANTICO 101
1. Construtores:
nova lst ass : {} lista assoc
nova lst ass() devolve uma nova lista associativa sem elementos.
2. Selectores:
conte udo : chave lista assoc universal
conte udo(ch, l a) devolve o segundo elemento do par existente em
l a cuja chave e ch. Se n ao existir nenhum par com essa chave, o
valor desta opera cao e indenido.
3. Modicadores:
insere lst ass! : chave universal lista assoc lista assoc
insere lst ass!(ch, cont, l a) modica destrutivamente a lista as-
sociativa l a atraves da introdu cao do par (ch, cont). Se em l a j a
existir um par com a chave ch, este par e alterado para (ch, cont).
Utilizamos listas associativas cujas chaves correspondem aos identicadores
produzidos pelo Algoritmo 2.1, inteiros n ao negativos, e em que os elementos
correspondem a OBDDs.
O algoritmo reduz. O objectivo do algoritmo reduz (Algoritmo 2.1)
e transformar um OBDD, satisfazendo uma ordena cao [P
1
, . . . , P
n
]

num
OBDD reduzido, satisfazendo a mesma ordena cao.
Este algoritmo baseia-se no facto de um OBDD satisfazendo a ordena cao
[P
1
, . . . , P
n
]

ter no maximo n nveis. O algoritmo associa, a cada um


dos sub-OBDDs do OBDD, um identicador correspondente a um n umero
inteiro n ao negativo. Por esta razao, assumimos as seguintes opera coes para
manipular estes identicadores:
id : OBDD N
0
id(o) recebe um OBDD, o, e tem como valor o identicador associado
a esse OBDD.
id! : OBDD N
0

id!(o, n) recebe um OBDD, o, e um inteiro n ao negativo, n, e associa
o inteiro n como o identicador do OBDD o. Esta operacao tem valor
indenido.
102 CAP

ITULO 2. L

OGICA PROPOSICIONAL
O algoritmo reduz percorre, por nveis, o grafo correspondente ao OBDD
comecando nas suas folhas. Ao percorrer o grafo, atribui um identicador
a cada OBDD de tal modo que dois OBDDs o
1
e o
2
representam a mesma
fbf se e so se os seus identicadores sao iguais, ou seja, se id(o
1
) = id(o
2
).
1. Num primeiro passo, o identicador 0 e atribudo a todos os OBDDs
folhas com o r otulo F e o identicador 1 e atribudo a todos os
OBDDs folhas com o r otulo V . Este passo e realizado pelo algo-
ritmo associa id a folhas! (Algoritmo 2.2).
2. A atribuicao de identicadores aos OBDDs do nvel i e feita assumindo
que o algoritmo j a atribuiu identicadores a todos os OBDDs do nvel
i + 1.
Dado um OBDD, o:
(a) Se os seus sub-OBDDs positivo e negativo tem o mesmo iden-
ticador (id(neg(o)) = id(pos(o))), ent ao e atribudo o mesmo
identicador ao OBDD o (id!(o, id(neg(o)))) pois a raiz de o efec-
tua um teste redundante e pode ser removida pela transforma cao
R2.
(b) Se, entre os OBDDs que j a tem identicadores, existe um OBDD,
o
Id
, tal que o e o
Id
tem razes com r otulos iguais e os seus OBDDs
positivos e negativos tem os mesmos identicadores, ou seja, se
as seguintes condi coes sao cumulativamente vericadas
raiz(o) = raiz(o
Id
),
id(neg(o)) = id(neg(o
Id
)) e
id(pos(o)) = id(pos(o
Id
)),
ent ao o identicador de o
Id
e atribudo ao OBDDo (id!(o, id(o
Id
)))
pois este OBDD corresponde a um OBDD redundante e pode ser
removido pela transforma cao R3.
(c) Em caso contr ario, e atribudo um novo identicador ao OBDD
o.
3. Ap os a atribui cao de identicadores a todos os sub-OBDDs, o OBDD
resultante e compactado recorrendo ao algoritmo compacta! (Algo-
ritmo 2.4).
2.3. O SISTEMA SEM

ANTICO 103
Algoritmo 2.1 reduz(O)
l a := nova lst ass()
associa id a folhas!(folhas(O), l a)
pr ox id := 2
OBDDs com id := folhas(O)
for i = profundidade max(O) 1 to 0 with increment 1 do
Nvel i := nvel(O, i)
repeat
o
1
:= escolhe(Nvel i)
if id(pos(o
1
)) = id(neg(o
1
)) then
id!(o
1
, id(neg(o
1
)))
else
redundante? := F
verificados := OBDDs com id
while vazio?(verificados) and redundante? do
o
2
:= escolhe(verificados)
verificados := subtrai(o
2
, verificados)
if (raiz(o
1
) = raiz(o
2
)) and (id(neg(o
1
)) = id(neg(o
2
))) and
(id(pos(o
1
)) = id(pos(o
2
))) then
redundante? := V
end if
end while
if redundante? then
id!(o
1
, id(o
2
))
else
associa id!(o
1
, pr ox id, l a)
pr ox id := pr ox id + 1
end if
OBDDs com id := junta(o
1
, OBDDs com id)
end if
Nvel i := subtrai(o
1
, Nvel i)
until vazio?(Nvel i)
end for
return compacta!(conte udo(id(o), l a), l a)
104 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Algoritmo 2.2 associa id a folhas!(F, l a)
for all f in F do
if raiz(f) = V then
associa id!(f, 1, l a)
else
associa id!(f, 0, l a)
end if
end for
Algoritmo 2.3 associa id!(o, id, l a)
id!(o, id)
insere lst ass(id, o, l a)
Exemplo 2.3.22 (Algoritmo reduz) Consideremos o OBDD apresentado
na Figura 2.22.
O primeiro passo do algoritmo reduz corresponde `a associa cao de iden-
ticadores aos n os com r otulos F e V . Na Figura 2.23 (a) mostram-
se os identicadores associados `as folhas correspondentes.
Consideremos agora os OBDDs cujas raizes sao n os pertencentes ao
nvel 2, indicados dentro de uma linha a tracejado na Figura 2.23 (b).
Ambos os OBDDs tem uma raiz que corresponde ao smbolo de pro-
posi cao R, calculando exactamente a mesma operacao l ogica, por esta
razao, o mesmo identicador e atribudo a ambos os OBDDs. Note-se
que atraves do Algoritmo 2.1, um destes OBDDs e escolhido arbi-
trariamente, sendo-lhe atribudo o identicador 2. Quando o segundo
OBDD e seleccionado, conclui-se que este OBDD e redundante, sendo-
lhe atribudo o mesmo identicador.
Considerando os OBDDs cujas razes sao os n os ao nvel 1 (indicados
dentro de uma linha a tracejado na Figura 2.24 (a)), embora as razes
destes OBDDs correspondam ao mesmo smbolo de proposicao, Q, o
OBDD da direita efectua um teste redundante (ambos os seus arcos
ligam-se a OBDDs com o mesmo identicador), sendo-lhe atribudo o
identicador anterior, o OBDD da esquerda n ao efectua nenhum teste
redundante, pelo que lhe e atribudo um novo identicador.
Finalmente, ao nvel 0 apenas temos o OBDD com raiz correspondente
ao smbolo de proposicao P, ao qual e atribudo um novo identicador.
2.3. O SISTEMA SEM

ANTICO 105
P
R
F V
Q
R
F V
Q
Figura 2.22: OBDD antes da aplica cao do algoritmo reduz.
Figura 2.23: Atribui cao de identicadores.
106 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Figura 2.24: Atribui cao de identicadores (parte 2).
O resultado da aplica cao do Algoritmo 2.1 e apresentado na Figura 2.24 (b).
Note-se que como efeito secund ario da execucao deste algoritmo, foi criada
a lista associativa apresentada na Figura 2.25. Para cada chave, esta lista
associativa contem o OBDD que deve aparecer no OBDD compactado cor-
respondente a essa chave. Na Figura 2.25, as chaves sao apresentadas usando
os identicadores produzidos pelo Algoritmo 2.1 e um tri angulo por baixo
de cada smbolo de proposi cao, que representa esquematicamente o OBDD
situado abaixo desse smbolo de proposicao.`
O algoritmo compacta!. Consideremos agora o algoritmo compacta!
(Algoritmo 2.4) que recebe um OBDD com identicadores associados e a
correspondente lista associativa, l a, e substitui cada sub-OBDD cujo iden-
ticador e i pelo OBBD que se encontra associado `a chave i da lista associ-
ativa.
Este algoritmo e invocado pelo Algoritmo 2.1 tendo como argumentos o
Figura 2.25: Lista associativa com OBDDs.
2.3. O SISTEMA SEM

ANTICO 107
Algoritmo 2.4 compacta!(O, l a)
if id(O) = 0 or id(O) = 1 then
return conte udo(id(O), l a)
else
muda neg!(O, conte udo(id(neg(O)), l a))
muda pos!(O, conte udo(id(pos(O)), l a))
compacta!(neg(O), l a)
compacta!(pos(O), l a)
return O
end if
P
R
F V
Q
R
F V
Q
O1 O2 O3 O4
O5 O6
O7 O8
O9
Figura 2.26: Nomes dos OBDDs.
OBDD da lista associativa l a na posi cao correspondente ao identicador
atribudo ao OBDD a reduzir, e a lista associativa l a.
Exemplo 2.3.23 (Algoritmo compacta!) Vamos seguir o funcionamento
do Algoritmo 2.4 com o argumento O correspondente ao OBDD da Fi-
gura 2.24 (b) e a lista associativa l a correspondendo `a lista representada
na Figura 2.25. Na explicacao que se segue, usamos os nomes indicados na
Figura 2.26 para nos referirmos aos v arios OBDDs. O nome de cada OBDD
encontra-se representado `a esquerda da raiz de cada OBDD. Usando estes
nomes, a lista associativa l a tem o conte udo que se apresenta na Figura 2.27.
A avalia cao de compacta!(O9, l a), origina as duas avalia coes muda neg!(O9,O8)
e muda pos!(O9,O6). Ap os estas avalia coes o OBDD O9 encontra-se como
108 CAP

ITULO 2. L

OGICA PROPOSICIONAL
2 4 3 1 0 (( )) ) ( ) ( ) ( ) ( O9 O8 O6 O4 O2
Figura 2.27: Lista associativa com os nomes dos OBDDs.
P
R
F V
R
F V
Q
O1 O2 O3 O4
O5 O6
O8
O9
Figura 2.28: Resultado da primeira compacta cao.
se mostra na Figura 2.28.
A avalia cao de compacta!(O8, l a), origina a avalia cao de muda neg!(O8,
O2) e de muda pos!(O8, O6). Ap os estas avaliacoes o OBDD O9 encontra-
se como se mostra na Figura 2.29. As restantes avaliacoes
compacta!(O2, l a),
compacta!(O4, l a),
compacta!(O6, l a),
muda neg!(O6, O2),
muda pos!(O6, O4),
compacta!(O2, l a) e
compacta!(O4, l a)
n ao alteram nada, pelo que o resultado nal e o OBBD da Figura 2.29. `
O algoritmo aplica. Tendo um algoritmo que efectua as transforma-
coes R1, R2 e R3 sobre um OBDD, produzindo o OBDD reduzido, vamos
concentrar a nossa atencao no algoritmo que recebe um operador l ogico, op,
2.3. O SISTEMA SEM

ANTICO 109
P
F V
R
Q
O2 O4
O6
O8
O9
Figura 2.29: Resultado da segunda compacta cao.
e dois OBDDs reduzidos e compatveis o

e o

, correspondentes `as fbfs e


e que devolve o OBDD reduzido correspondente `a fbf ( op ). Note-se que
este aspecto ja foi considerado na p agina 91, tendo n os feito, separadamente,
a an alise para a operacao e para as opera coes e .
Por uma questao de generalizacao e de uniformizacao, o algoritmo que apre-
sentamos apenas considera opera coes bin arias. Para desenvolver este al-
goritmo vamos introduzir um novo smbolo l ogico, a disjun cao exclusiva,
representado por
33
(ver a discussao apresentada na Sec cao 1.2), o qual e
denido pela seguinte tabela de verdade:

V V F
V F V
F V V
F F F
33
Ao introduzir este smbolo logico, devemos aumentar as nossas regras de forma c ao de
fbfs para contemplar a seguinte situac ao: se e sao fbfs ent ao e uma fbf.
110 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Algoritmo 2.5 aplica(op, o

, o

)
if folha(o

) and folha(o

) then
return cria folha(raiz(o

) op raiz(o

))
else
P := max pred(o

, o

)
if raiz(o

) = P and raiz(o

) = P then
return cria OBDD reduzido(P,
aplica(op, neg(o

), neg(o

)),
aplica(op, pos(o

), pos(o

)))
else if raiz(o

) = P then
return cria OBDD reduzido(P,
aplica(op, neg(o

), o

),
aplica(op, pos(o

), o

))
else
return cria OBDD reduzido(P,
aplica(op, o

, neg(o

)),
aplica(op, o

, neg(o

)))
end if
end if
A disjun cao exclusiva permite-nos escrever a expressao
() ( V ) (2.2)
na qual V corresponde ao valor verdadeiro. Note-se que () (V ) n ao
e uma fbf, pois a constante V n ao pertence `a linguagem L
LP
. No entanto,
para qualquer smbolo de proposicao P P a fbf () ( (P P))
e uma tautologia.

E com base neste facto que introduzimos este abuso de
linguagem.
O algoritmo aplica (Algoritmo 2.5) calcula o OBDD que resulta da aplicacao
de uma opera cao l ogica a dois OBDDs. A avaliacao de aplica(op, o

, o

),
em que op e uma opera cao l ogica bin aria, devolve o OBDD correspondente
`a fbf op . Dado que a aplica cao directa deste algoritmo pode originar
OBDDs que n ao estao na forma reduzida, denimos a opera cao:
cria OBDD reduzido(r, o

, o

) = reduz(cria OBDD(r, o

, o

)) (2.3)
A intuicao subjacente ao Algoritmo 2.5 e a seguinte:
1. Se ambos os ODBBs corresponderem a folhas, aplica-se a opera cao op
aos correspondentes valores logicos.
2.3. O SISTEMA SEM

ANTICO 111
P
R
V F
P
Q
R
F V
(a) (b)
Figura 2.30: OBDDS correspondentes `as fbfs P R e P (Q R).
2. Em caso contr ario, escolhe-se o smbolo de proposicao com maior pri-
oridade existente em o

e o

(deixa-se como exerccio a demonstracao


que este smbolo de proposi cao corresponde `a raiz de pelo menos um
dos OBDDs), e divide-se o problema em dois subproblemas num dos
quais o smbolo de proposi cao e verdadeiro e no outro o smbolo de
proposi cao e falso.
(a) Se o smbolo de proposi cao e a raiz de ambos os OBDDs, o OBDD
resultante ter a esse smbolo de proposi cao como raiz, o seu OBDD
negativo resulta de aplicar recursivamente o algoritmo aos corres-
pondentes OBDDs negativos e analogamente para o seu OBDD
positivo.
(b) Em caso contr ario, o OBDD resultante tera esse smbolo de pro-
posi cao como raiz, o seu OBDD negativo resulta de aplicar recur-
sivamente o algoritmo ao OBDD negativo do OBDD que contem
o smbolo de proposicao e o outro OBDD (que n ao contem o
smbolo de proposicao), e analogamente para o OBDD positivo.
Exemplo 2.3.24 (Algoritmo aplica) Consideremos os OBDDs compat-
veis apresentados na Figura 2.30, correspondentes `as fbfs P R (Fi-
gura 2.30 (a)) e P (Q R) (Figura 2.30 (b)), os quais serao designados,
respectivamente, por O
PR
e O
P(QR)
. Estes OBDDs satisfazem a or-
dem [P, Q, R].
112 CAP

ITULO 2. L

OGICA PROPOSICIONAL
P
R
V F
Q
R
F V
F V
Figura 2.31: OBDD com raiz P.
Vamos seguir a execucao de
aplica(, O
PR
, O
P(QR)
). (2.4)
O smbolo de proposi cao com maior prioridade e P, sendo a raiz de ambos
os OBDDs, pelo que o valor devolvido pelo algoritmo e
cria OBDD reduzido(P,
aplica(, neg(O
PR
), neg(O
P(QR)
)),
aplica(, pos(O
PR
), pos(O
P(QR)
)))
(2.5)
O resultado desta aplica cao e um OBDD cuja raiz e P, resultando os seus
OBDDs negativo e positivo de invoca coes do algoritmo aplica. Na Fi-
gura 2.31 representa-se esquematicamente o resultado desta aplicacao, es-
tando as invocacoes ao algoritmo aplica representadas dentro de rectangulos,
representando-se a aplicacao do operador atraves de nota cao inxa.
O resultado da aplicacao do algoritmo ao OBDD positivo da Figura 2.31 e
F , correspondendo `a aplica cao do operador `as duas folhas.
No que respeita ao OBDD negativo da Figura 2.31, o smbolo de proposi cao
com maior prioridade, Q, apenas aparece num dos OBDDs, pelo que o
2.3. O SISTEMA SEM

ANTICO 113
Q
R
V F
R
F V
F
R
V F
Figura 2.32: OBDD com raiz Q.
OBDD resultante, com raiz Q, esta representado esquematicamente na Fi-
gura 2.32, originando duas invocacoes ao algoritmo aplica.
Expandindo o OBDD negativo da Figura 2.32, podemos concluir que tanto
o OBDD negativo como o positivo correspondem a F .

E importante no-
tar que esta conclusao j a poderia ter sido obtida atraves da an alise da Fi-
gura 2.32. Com efeito, sendo falso o valor absorvente da conjuncao, o resul-
tado da conjun cao de qualquer OBDD com F tera F como resultado. Um
raciocno semelhante pode ser feito para o elemento neutro da conjuncao.
Portanto, para qualquer OBDD, o, vericam-se as seguintes igualdades:
aplica(, o, F ) = F (2.6)
aplica(, o, V ) = o (2.7)
Expandindo o OBDD positivo da Figura 2.32, obtemos um OBDD cujo valor
e F .
Considerando o OBDD positivo da Figura 2.32, este resultado era expectavel
pois este corresponde `a conjun cao de duas fbfs em que uma e a negacao da
outra.
Compilando os resultados das avaliacoes parciais, conclumos que o OBDD
resultante da aplica cao 2.4 e F , o que signica que a fbf (P R) (P
(Q R)) e contradit oria. `
114 CAP

ITULO 2. L

OGICA PROPOSICIONAL
2.4 Solidez e completude da logica proposicional
Nesta seccao apresentamos alguns resultados fundamentais em relacao `a
l ogica proposicional, nomeadamente a solidez e a completude do formalismo
apresentado ao longo deste captulo.
Com a demonstracao da solidez mostramos que as nossas regras de inferencia
estao correctas, no sentido em que se existir uma prova de a partir de
1
,
. . .,
k
, ent ao para qualquer interpreta cao que torne todas as fbfs
1
, . . .,

k
verdadeiras, esta interpreta cao tambem torna a fbf verdadeira.
Na prova da solidez utilizamos um processo de demonstracao a que se d a o
nome de indu cao matematica (completa). A indu cao matematica e utilizada
para demonstrar que uma propriedade P denida no conjunto dos n umeros
naturais e verdadeira para todos eles. Na nossa demonstracao, os n umeros
naturais que consideramos correspondem ao comprimento de uma prova, ou
seja o n umero de linhas da prova.
Uma demonstracao por indu cao matematica tem duas partes. A primeira,
aborda o caso do primeiro n umero natural, mostrando que a propriedade se
verica para 1. Esta parte e conhecida como base da indu cao. A segunda
parte tem a forma de uma implicacao na qual no antecedente se assume
que dado um inteiro arbitr ario, n, a propriedade P se verica para todos os
inteiros menores ou iguais a n, e o consequente arma que a propriedade P
se verica para o inteiro n+1. Esta parte tem o nome de hipotese indutiva.
O resultado da indu cao matematica e a armacao que a propriedade P se
verica para todos os inteiros.
Teorema 2.4.1 (Solidez) A l ogica proposicional e solida. Para quaisquer
fbfs
1
, . . .,
k
e , se {
1
, . . .,
k
} ent ao {
1
, . . .,
k
} |= .
Demonstrac ao: Na nossa demonstra cao apenas consideramos as regras de in-
ferencia de base (as regras de inferencia apresentadas entre as p aginas 32
e 44), uma vez que as outras, os teoremas e as regras de inferencia deri-
vadas, correspondem a simplicacoes sint acticas da utiliza cao das regras de
inferencia de base.
1. Base da indu c ao.
Utilizando apenas as regras de inferencia de base, qualquer prova com
apenas uma linha deve ter a forma:
1 Prem
2.4. SOLIDEZ E COMPLETUDE DA L

OGICA PROPOSICIONAL 115


Da Deni cao 2.2.2 e evidente que {} . Por razoes obvias {} |= ,
pelo que a propriedade da solidez se verica para qualquer prova apenas
com uma linha.
2. Hipotese indutiva
Suponhamos, como hip otse indutiva, que para qualquer prova com n
ou menos linhas, estabelecendo que {
1
, . . .,
k
} , se verica que
{
1
, . . .,
k
} |= .
Iremos demonstrar, assumindo esta hip otese, que o mesmo resultado
se verica para qualquer prova com, no maximo, n + 1 linhas. Para
demonstrar este resultado, iremos considerar exaustivamente as pos-
sibilidades de estender uma prova de n linhas para uma prova com
n + 1 linhas, considerando, individualmente, cada uma das regras de
inferencia.
Prem Suponhamos que estendamos a prova adicionando a linha con-
tendo a premissa
k+1
. Esta nova prova mostra que {
1
, . . .,
k
,

k+1
}
k+1
. Dado que
k+1
{
1
, . . .,
k
,
k+1
}, e impossvel
ter todas as premissas verdadeiras e a conclusao falsa, pelo que
{
1
, . . .,
k
,
k+1
} |=
k+1
.
Rep Para estender a prova {
1
, . . .,
k
} , usando a regra da repeti cao
iremos adicionar uma linha contendo uma fbf que j a existe na
prova. Esta nova prova demonstra que {
1
, . . .,
k
} .
Como a fbf j a existia na prova inicial, ent ao {
1
, . . .,
k
}
, tendo esta prova no maximo n linhas. Pela hip otese indutiva,
podemos concluir que {
1
, . . .,
k
} |= .
I Para estender a prova {
1
, . . .,
k
} , usando a regra da I
teremos que introduzir a fbf , a qual obriga a que tanto
como existam em linhas da prova em consideracao. Isto signica
que as provas {
1
, . . .,
k
} e {
1
, . . .,
k
} estao contidas na
prova inicial, tendo cada uma destas provas no maximo n linhas.
34
Pela hip otese indutiva podemos concluir que {
1
, . . .,
k
} |=
e que {
1
, . . .,
k
} |= . Por deni cao de consequencia l ogica,
sempre que {
1
, . . .,
k
} forem verdadeiras tanto como serao
verdadeiras. Podemos assim concluir que {
1
, . . .,
k
} |= .
E Para estender a prova {
1
, . . .,
k
} , usando a regra da E
teremos que introduzir uma das fbfs ou a partir da fbf .
Para isso podemos considerar duas possibilidades:
(a) A fbf e da forma . Adicionando `a prova original uma nova
linha contendo a fbf , obtemos uma prova com no maximo
n + 1 linhas. Tendo em atencao que {
1
, . . .,
k
} |=
(= ), e f acil concluir que e impossvel ter todas as premissas
34
Note-se que estas provas poderao ser obtidas com menos premissas, mas isso n ao e
relevante para a nossa demonstrac ao.
116 CAP

ITULO 2. L

OGICA PROPOSICIONAL

1
, . . .,
k
verdadeiras e falsa, pelo que {
1
, . . .,
k
} |= .
Um raciocnio an alogo pode ser estabelecido em rela cao `a fbf .
(b) Uma das linhas da prova {
1
. . .
k
} , que n ao a ultima,
e da forma . Consideremos a derivacao original ate essa
linha. Esta deriva cao mostra que {
1
, . . .,
k
} . Como
esta derivacao tem n ou menos linhas, pela hipotese indutiva, e
impossvel que as premissas
1
, . . .,
k
sejam todas verdadeiras
e a fbf seja falsa. Podemos agora aplicar um raciocnio
an alogo ao da alnea anterior.
I Para adicionar uma linha utilizando a regra da I, na prova {
1
,
. . .,
k
} existe uma subprova iniciada com a hip otese e cuja
ultima linha e a fbf . A regra da I permite-nos escrever na
pr oxima linha a fbf .
Consideremos uma prova alternativa contendo as hip oteses
1
, . . .,

k
e .

E obvio que nesta prova podemos derivar a fbf , tendo esta
nova prova no maximo n linhas. Pela hip otese indutiva podemos
concluir que {
1
, . . .,
k
, } |= .
Consideremos ent ao a prova {
1
, . . .,
k
} . Suponhamos,
por absurdo, que existe uma situa cao que torna todas as premissas

1
, . . .,
k
verdadeiras e a conclusao falsa. Se a fbf e
falsa, ent ao a fbf e verdadeira e a fbf e falsa, o que contradiz a
hip otese indutiva de que {
1
, . . .,
k
, } |= . Logo, {
1
, . . .,
k
}
|=
E Para estender a prova {
1
, . . .,
k
} , utilizando a regra da E
tem que existir nessa prova uma linha contendo a fbf e uma
linha contendo a fbf . Neste caso, tanto {
1
, . . .,
k
}
como {
1
, . . .,
k
} , tendo cada uma destas provas no maximo
n linhas. Pela hip otese indutiva podemos concluir que tanto {
1
,
. . .,
k
} |= como {
1
, . . .,
k
} |= .
Utilizando a regra da E estabelecemos a prova {
1
, . . .,
k
}
. No caso de todas as premissas serem verdadeiras, tanto
com sao verdadeiras. Pela denicao de implicacao, tambem
sera verdadeira, pelo que {
1
, . . .,
k
} |= .
I Para adicionar uma linha `a prova {
1
, . . .,
k
} , recorrendo `a
regra da I, na prova existe uma subprova iniciada com a hip otese
e cujas linhas contem as fbfs e . A regra da I permite-nos
escrever na pr oxima linha a fbf .
Utilizando um raciocnio semelhante ao aplicado no caso da I,
podemos concluir que {
1
, . . .,
k
, } |= e tambem que {
1
, . . .,

k
, } |= .
Consideremos ent ao a prova {
1
, . . .,
k
} . Ser a que e possvel
que todas as fbfs {
1
, . . .,
k
} sejam verdadeiras e a fbf seja
falsa? Para isso, todas as fbfs {
1
, . . .,
k
} terao que ser verda-
deiras e a fbf tambem sera verdadeira. Nestas condi coes, e pela
2.4. SOLIDEZ E COMPLETUDE DA L

OGICA PROPOSICIONAL 117


hip otese indutiva, sabemos que tanto como sao verdadeiras,
o que e uma contradi cao. Pelo que {
1
, . . .,
k
} |= .
E Para adicionar uma linha `a prova {
1
, . . .,
k
} , utilizando a
regra da E, signica que na prova existe uma linha com a fbf .
Como esta linha exite na prova podemos concluir que que {
1
, . . .,

k
} , tendo esta prova no maximo n linhas. Pela hip otese
indutiva, podemos concluir que {
1
, . . .,
k
} |= . Pela de-
ni cao da negacao, podemos tambem concluir que {
1
, . . .,
k
} |=
.
Ent ao, adicionando a linha com a fbf verica-se que {
1
, . . .,
k
}
o que obriga que {
1
, . . .,
k
} |= .
I Para estender a prova {
1
, . . .,
k
} , usando a regra da I
iremos adicionar uma linha contendo a fbf em que ou ou
j a existem na prova. Consideremos cada um destes casos:
(a) Suponhamos que a fbf j a existe na prova. Isto signica que
{
1
, . . .,
k
} , tendo esta prova n ou menos linhas. Pela
hip otese indutiva {
1
, . . .,
k
} |= .
Introduzindo a linha com a fbf obtemos a prova {
1
, . . .,

k
} . Pela hip otese indutiva, sabemos que se todas as
fbfs
1
, . . .,
k
forem verdadeiras ent ao a fbf e verdadeira.
Pela deni cao da disjun cao, a fbf tambem sera verdadeira
pelo que {
1
, . . .,
k
} |= .
(b) Suponhamos que a fbf j a existe na prova. O raciocnio e
semelhante ao da alnea anterior.
E Para estender a prova {
1
, . . .,
k
} , usando a regra da E
iremos adicionar uma linha contendo a fbf , partindo da existencia
de uma linha com a fbf e de duas subprovas, uma iniciada
com a hip otese e tendo como ultima linha e a outra iniciada
com a hip otese e tendo como ultima linha.
Consideremos as seguintes situacoes:
(a) Como a linha contendo a fbf existe na prova original
podemos concluir que {
1
, . . .,
k
} , tendo esta prova
n ou menos linhas. Pela hip otese indutiva, {
1
, . . .,
k
} |=
.
(b) Como na prova original existe uma subprova iniciada com a
hip otese e tendo como ultima linha, usando um raciocnio
semelhante ao apresentado para a regra da I podemos con-
cluir que {
1
, . . .,
k
, } , tendo esta prova n ou menos
linhas. Pela hip otese indutiva ent ao {
1
, . . .,
k
, } |= .
(c) Usando um raciocnio an alogo ao da alnea anterior, podemos
tambem concluir que {
1
, . . .,
k
, } |= .
Vejamos ent ao se sera possvel encontrar uma situacao em que as
fbfs
1
, . . .,
k
sao todas verdadeiras e a fbf e falsa. Pela alnea
(a), se as fbfs
1
, . . .,
k
sao todas verdadeiras ent ao a fbf
118 CAP

ITULO 2. L

OGICA PROPOSICIONAL
tambem e verdadeira. Neste caso, pela tabela da verdade da
disjun cao, pelo menos uma das fbfs ou tera que ser verdadeira.
Supondo que a fbf e verdadeira, a alnea (b) garante-nos que e
verdadeira. Por outro lado, supondo que e verdadeira, o mesmo
resultado e garantido pela alnea (c). Logo e verdadeira pelo que
{
1
, . . .,
k
} |= .
Mostr amos que se para qualquer prova com n ou menos linhas de a partir
de
1
, . . .,
k
se verica que {
1
, . . .,
k
} |= , ent ao qualquer prova com
n+1 linhas corresponde a tambem a um argumento v alido. Isto permite-nos
concluir que para qualquer prova {
1
, . . .,
k
} se verica que {
1
, . . .,

k
} |= , ou seja, que a l ogica e solida.
Para demonstrar a completude precisamos de introduzir alguns conceitos,
ao nvel do sistema dedutivo, nomeadamente o conceito de conjunto de fbfs
maximamente consistente.
Denicao 2.4.1 (Conjunto consistente) Um conjunto de fbfs e con-
sistente se e so se para nenhuma fbf se verica que ( ).
Denicao 2.4.2 (Conjunto inconsistente) Um conjunto de fbfs e in-
consistente se e so se para alguma fbf se verica que ( ).
Denicao 2.4.3 (Conjunto maximamente consistente) Um conjunto
de fbfs e maximamente consistente se e so se as duas condi coes seguintes
se vericam:
1. Para nenhuma fbf se verica que ( );
2. Para qualquer fbf , ou pertence a ou (exclusivo) pertence a
.
Informalmente, um conjunto maximamente consistente e um conjunto de
fbfs que e t ao grande quanto pode ser, sem ser inconsistente (ou seja sem
conter simultaneamente as fbfs e ). Sendo um conjunto maxima-
mente consistente, n ao lhe podemos adicionar nenhuma fbf sem originar um
conjunto inconsistente. Na realidade, suponhamos que tentamos adicionar
a a fbf . Podemos considerar 2 possibilidades (1) , neste caso
o resultado da adi cao e o pr oprio ; ou (2) , mas neste caso, pela
segunda condi cao da Deni cao 2.4.3, pelo que a adi cao de gerar a
um conjunto inconsistente.
2.4. SOLIDEZ E COMPLETUDE DA L

OGICA PROPOSICIONAL 119


Teorema 2.4.2 Qualquer conjunto consistente de fbfs pode ser estendido
para um conjunto maximamente consistente.
Demonstrac ao: Recordemos da p agina 29 que cada smbolo de proposi cao e
indexado por um inteiro positivo. Esta indexa cao, juntamente com as regras
de forma cao de fbfs apresentadas na p agina 29 permitem denir uma relacao
de ordem total sobre todas as fbfs. Designamos a sequencia ordenada de
todas as fbfs por [
1
,
2
. . . .].
Seja um conjunto consistente de fbfs. Tendo em atencao a rela cao de
ordem total denida sobre as fbfs, denimos a seguinte sequencia innita de
conjuntos de fbfs:

0
=

1
=


0
{
1
} se
0
{
1
} e consistente

0
{
1
} em caso contr ario
.
.
.

n+1
=


n
{
n+1
} se
n
{
n+1
} e consistente

n
{
n+1
} em caso contr ario
.
.
.
Como
0
e consistente, por construcao, e se
n
for consistente ent ao
n+1
e consistente, por indu cao matematica, podemos concluir que para todo o n,

n
e consistente.
Seja

i=0

i
.
Demonstramos agora que este conjunto e maximamente consistente, ou seja,
(1) para nenhuma fbf se verica que

( ) e (2) para qualquer


fbf , ou pertence a

ou pertence a

.
Suponhamos por absurdo que

n ao e maximamente consistente. Neste


caso, uma das condi coes (1) ou (2) e falsa.
1. Suponhamos que a condi cao (1) e falsa. Neste caso existe uma fbf
tal que

( ). Consideremos a prova de e seja


m
a fbf com o ndice mais alto que e utilizada na prova. Recorde-se da
Deni cao 2.2.1 que uma prova e uma sequencia nita de linhas, pelo
que existir a nessa prova um
m
. Ent ao
m
(), o que contradiz
a condi cao que cada um dos elementos da sequencia [
0
,
1
, . . .] e
consistente.
2. Suponhamos que a condi cao (2) e falsa. Neste caso, existe uma fbf
tal que

. Seja m o ndice da fbf na sequencia


[
1
,
2
. . . .], ou seja, =
m
. A constru cao do conjunto
m
obriga a
que ou ou perten cam a
m
, o que contradiz a nossa hip otese.
120 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Portanto,

e maximamente consistente.
Teorema 2.4.3 Qualquer conjunto maximamente consistente tem um mo-
delo, ou seja, existe uma interpreta cao que satisfaz todas as fbfs do conjunto.
Demonstrac ao: Seja um conjunto maximamente consistente. Iremos conside-
rar uma interpreta cao que satisfaz todas as fbfs em .
A prova da existencia desta interpreta cao sera realizada por indu cao ma-
tematica com base no n umero de smbolos l ogicos que existem numa fbf em
. Mostramos, como base da indu cao, que a interpreta cao satisfaz todas
as fbfs com zero smbolos l ogicos, ou seja todas as fbfs correspondentes a
smbolos de proposicao. Assumimos como hip otese indutiva que uma fbf
com n ou menos smbolos l ogicos e satisfeita pela interpreta cao se e so se
e mostramos que daqui resulta que qualquer fbf com n+1 smbolos
l ogicos e verdadeira se e so se .
1. Base da indu c ao.
Seja uma fbf com zero smbolos l ogicos ( P). Ent ao, se
, consideramos a valora cao v() = V ; e se , consideramos a
valora cao v() = F. A interpreta cao satisfaz se e so se .
2. Hipotese indutiva.
Suponhamos que qualquer fbf com n ou menos smbolos l ogicos e
satisfeita pela interpreta cao se e so se . Consideremos as possibi-
lidades para construir uma fbf com n + 1 smbolos l ogicos:
35
(a) A fbf com n+1 smbolos l ogicos e da forma . Ent ao a fbf tem
n smbolos l ogicos.
Queremos mostrar que e satisfeita pela interpreta cao se e so
se . Para isso, teremos que mostrar que se e satisfeita
pela interpreta cao ent ao (esta prova e assinalada com )
e teremos que mostrar que se , ent ao e satisfeita pela
interpreta cao (esta prova e assinalada com ).
Se e satisfeita pela interpreta cao ent ao .
Suponhamos que e satisfeita pela interpreta cao. Pela ta-
bela de verdade para a negacao, sabemos que n ao e satisfeita
pela interpreta cao, o que signica que . Como e ma-
ximamente consistente, .
Se , ent ao e satisfeita pela interpreta cao.
Suponhamos que . Como e maximamente consis-
tente, , o que juntamente com a hip otese indutiva nos
permite concluir que n ao e satisfeita pela interpreta cao. Pela
tabela de verdade da negacao, concluimos que e satisfeita
pela interpreta cao, ou seja e verdadeira.
35
N ao estamos a considerar o caso da equivalencia, pois esta e tratada como uma com-
binac ao dos outros smbolos logicos.
2.4. SOLIDEZ E COMPLETUDE DA L

OGICA PROPOSICIONAL 121


Portanto e verdadeira se e so se .
(b) A fbf com n+1 smbolos l ogicos e da forma . Podemos garantir
que tanto como tem, no maximo, n smbolos l ogicos.
Queremos mostrar que e satisfeita pela interpreta cao se e so
se ( ) .
Se e satisfeita pela interpreta cao ent ao ( ) .
Suponhamos que e satisfeita pela interpreta cao. Sabe-
mos pela tabela de verdade da conjun cao que e verdadeira e
e verdadeira. Uma vez que e tem no maximo n smbolos
l ogicos, pela hip otese indutiva, e . Suponhamos
por absurdo que ( ) . Como e maximamente con-
sistente () , pelo que (). Por outro lado,
como , e como {, } ( ), ( ).
O que e uma contradi cao, pelo que teremos que abandonar a
hip otese de ( ) , logo ( ) .
Se ( ) , ent ao e satisfeita pela interpreta cao.
Suponhamos que ( ) . Suponhamos por absurdo que
e falsa. Pela tabela de verdade da conjun cao, sabemos
que e falsa ou que e falsa.
i Suponhamos que e falsa. Pela hip otese indutiva, .
Como ( ) , sabemos que e verdadeira, o que
contradiz a suposi cao que e falsa.
ii Suponhamos que e falsa. O raciocnio e an alogo ao do
caso anterior.
Portanto e verdadeira.
Portanto e verdadeira se e so se ( ) .
(c) A fbf com n+1 smbolos l ogicos e da forma . Podemos garantir
que tanto como tem, no maximo, n smbolos l ogicos.
Queremos mostrar que e satisfeita pela interpreta cao se e so
se ( ) .
Se e satisfeita pela interpreta cao ent ao ( ) .
Suponhamos que e satisfeita pela interpreta cao. Sabemos
pela tabela de verdade da disjun cao que e verdadeira ou que
e verdadeira.
i Suponhamos que e verdadeira. Uma vez que tem no
maximo n smbolos l ogicos, pela hip otese indutiva, .
Suponhamos agora, por absurdo, que ( ) . Como
e maximamente consistente, ( ) , pelo que
(). Como e {} (), () o que e
uma contradi cao visto ser consistente. Pelo que teremos
que abandonar a hip otese de ( ) e concluir que
( ) .
ii Suponhamos que e verdadeira. Um raciocnio an alogo ao
da alnea anterior leva-nos a concluir que ( ) .
122 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Portanto, se e satisfeita pela interpreta cao ent ao ()
.
Se ( ) , ent ao e satisfeita pela interpreta cao.
Suponhamos que ( ) . Suponhamos por absurdo que
e falsa. Pela tabela de verdade da disjun cao, sabemos
que e falsa e que e falsa. Uma vez que tanto como
tem no maximo n smbolos l ogicos, pela hip otese indutiva,
e . Como e maximamente consistente
e .
Dado que {, } ( ), tambem ( ), o que
contradiz o facto de ser consistente. Portanto, teremos que
abandonar o pressuposto que e falsa e concluir que
e verdadeira.
Portanto, se ( ) , ent ao e satisfeita pela inter-
pretacao.
Portanto e verdadeira se e so se ( ) .
(d) A fbf com n + 1 smbolos l ogicos e da forma . Podemos
garantir que tanto como tem, no maximo, n smbolos l ogicos.
Queremos mostrar que e satisfeita pela interpretacao se e
so se ( ) .
Se e satisfeita pela interpreta cao ent ao ( ) .
Suponhamos que e satisfeita pela interpreta cao. Sabe-
mos pela tabela de verdade da implicacao que e falsa ou
e verdadeira. Uma vez que e tem no maximo n smbolos
l ogicos, pela hip otese indutiva, ou . Iremos
considerar duas alternativas:
i Suponhamos que . Como e maximamente consis-
tente, sabemos que . Sabemos tambem que {}
( ).
Suponhamos que ( ) . Como e maximamente
consistente, sabemos que ( ) , pelo que
( ). Logo e inconsistente. Rejeitamos a suposicao
que ( ) e conclumos que ( )
ii Consideremos que . Como consequencia desta su-
posi cao, {} ( ).
Suponhamos que ( ) . Como e maximamente
consistente, sabemos que ( ) , pelo que
( ). Logo e inconsistente. Rejeitamos a suposicao
que ( ) e conclumos que ( ) .
Portanto ( ) .
Se ( ) , ent ao e satisfeita pela interpreta cao.
Suponhamos que ( ) . Suponhamos por absurdo que
e falsa. Pela tabela de verdade da implica cao, sabemos
que e verdadeira e e falsa. Uma vez que e tem no
2.4. SOLIDEZ E COMPLETUDE DA L

OGICA PROPOSICIONAL 123


maximo n smbolos l ogicos, pela hip otese indutiva, e
. Uma vez que {, } , podemos concluir que
, o que contradiz o facto de ser consistente. Portanto,
temos que abandonar a hip otese de ser falsa e concluir
que e verdadeira.
Portanto, e satisfeita pela interpreta cao se e so se (
) .

Teorema 2.4.4 Para qualquer fbf , se |= ent ao .


Demonstrac ao: Seja o conjunto de todos os teoremas ( = Th({})). Supo-
nhamos por absurdo que existe uma fbf que e uma tautologia (|= ) e que
n ao e um teorema ( ).
Uma vez que n ao e um teorema, o conjunto {} n ao e inconsis-
tente. Note-se que se {} fosse inconsistente, poderamos derivar
e consequentemente o que contradiz o facto de n ao ser um teorema.
Seja

um conjunto maximamente consistente originado a partir de


{}. Pelo Teorema 2.4.2, este conjunto existe.
Pelo Teorema 2.4.3, existe um modelo para

. Isto signica que existe uma


interpreta cao que satisfaz todas as fbfs de

, incluindo . Contudo, se
for verdadeira, ent ao e falsa, o que contradiz a nossa suposi cao que
e uma tautologia. Portanto e um teorema.
Teorema 2.4.5 Se {
1
, . . . ,
n1
,
n
} |= , ent ao {
1
, . . . ,
n1
} |= (
n

).
Demonstrac ao: Suponhamos que {
1
, . . . ,
n1
,
n
} |= . Isto signica que se
todas as fbfs
1
, . . . ,
n1
,
n
forem verdadeiras ent ao a fbf e verdadeira.
Consideremos agora a expressao {
1
, . . . ,
n1
} |= (
n
) e vejamos
se e possvel conceber uma situacao em que as premissas sao verdadeiras e

n
e falsa. Para isso,
n
ter a que ser verdadeira e falsa, o que n ao e
possvel uma vez que quando todas as fbfs
1
, . . . ,
n1
,
n
forem verdadeiras
a fbf tambem e verdadeira. Ent ao {
1
, . . . ,
n1
} |= (
n
).
Teorema 2.4.6 Se {
1
, . . . ,
n
} |= , ent ao |= (
1
(. . . (
n
) . . .)).
Demonstrac ao: Esta prova corresponde a n aplica coes do Teorema 2.4.5.
Teorema 2.4.7 (Completude) A l ogica proposicional e completa. Para
quaisquer fbfs
1
. . .
n
, , se {
1
, . . .,
n
} |= ent ao {
1
, . . .,
n
} .
124 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Demonstrac ao: Suponhamos que {
1
, . . .,
n
} |= . Pelo Teorema 2.4.6, sabe-
mos que |= (
1
(. . . (
n
) . . .)). Pelo Teorema 2.4.4, sabemos que
(
1
(. . . (
n
) . . .)). Atraves de n aplica coes do Teorema 2.2.3,
podemos concluir que {
1
. . .
n
} .
Teorema 2.4.8 (Solidez da resolu cao) Se existe uma demonstra cao por
resolucao da clausula a partir das clausulas , ent ao |= .
Teorema 2.4.9 (Completude da resolu cao) Se e um conjunto n ao
satisfazvel de clausulas, ent ao existe uma demonstracao por resolu cao de
{} a partir de .
2.5 Notas bibliogracas
O conceito de linguagem formal foi introduzido em 1897 por Gottlob Fregue
(18481925). Uma re-edi cao do artigo original pode ser encontrada em [van
Heijenhoort 67]).
Os sistemas de dedu cao natural tem as suas origens nos trabalhos de Gerhard
Gentzen (19091945) (originalmente publicado em 1934 e re-editado em
[Gentzen 69]) e de Stanislaw Jaskowski (19061965) [Jaskowski 34]. Uma
boa apresentacao de uma alternativa aos sistemas de dedu cao natural, os
sistemas axiomaticos, pode ser consultada em [Mendelson 87].
A semantica da l ogica proposicional foi introduzida em 1854 por George Bo-
ole (18151864) [Boole 54]. A metodologia que apresent amos para calcular
o valor l ogico de uma proposicao foi introduzida em 1936 por Alfred Tarski.
Uma re-edicao do artigo original de Tarski aparece em [Corcoran 83].
O princpio da resolu cao foi introduzido por John Alan Robinson em 1965
[Robinson 65]. Entre os textos que apresentam o princpio da resolucao,
recomendamos a leitura de [Gabbay, Hogger e Robinson 93].
2.6 Exerccios
1. Usando as regras do sistema de deducao natural, demonstre os seguin-
tes teoremas:
(a) Lei da dupla nega cao
P P
2.6. EXERC

ICIOS 125
(b) Primeiras leis de De Morgan
(P Q) (P Q)
(P Q) (P Q)
(c) Lei do contrapositivo
(P Q) (Q P)
(d) Leis do silogismo
(Q R) ((P Q) (P R))
(P Q) ((Q R) (P R))
(e) Lei do transporte
(P (Q R)) ((P Q) R)
(f) Equivalencia entre a implicacao e a disjun cao
(P Q) (P Q)
(g) Propriedade distributiva da disjun cao em relacao `a conjun cao
(P (Q R)) ((P Q) (P R))
(h) Propriedade distributiva da conjun cao em relacao `a disjun cao
(P (Q R)) ((P Q) (P R))
2. Usando as regras do sistema de deducao natural, demonstre os seguin-
tes teoremas:
(a) (P (Q R)) ((P Q) (P R))
(b) ((P Q) Q) P
(c) (P Q) (P Q)
3. Usando o sistema de dedu cao natural da l ogica de primeira ordem,
prove os seguintes argumentos:
(a) ({}, (P Q) (P Q))
(b) ({(P (P Q)) P}, Q)
(c) ({P Q}, Q P)
(d) ({(P Q) (Q R)}, P R}
(e) ({P P}, Q)
(f) ({P P}, P)
(g) ({P}, Q (P Q))
4. Transforme as seguintes fbfs em forma clausal:
126 CAP

ITULO 2. L

OGICA PROPOSICIONAL
(a) (P Q R)
(b) P (Q R)
(c) (P Q) (P Q)
(d) (P (Q ((R S) P)))
(e) P (Q R)
5. Utilizando o princpio da resolucao demonstre:
(a) {(P Q), P} Q
(b) {P Q} (P Q)
(c) {(P Q)} P Q
(d) {P Q} (P Q)
(e) {(P Q)} (P Q)
6. Utilizando o princpio da resolu cao, demonstre por refuta cao os se-
guintes argumentos:
(a) ({(P (P Q)) P}, Q)
(b) ({P Q}, Q P)
(c) ({(P Q) (Q R)}, P R}
(d) ({P P}, Q)
(e) ({P P}, P)
(f) ({P}, Q (P Q))
(g) {(P Q) R, P Q} P R
7. Produza uma demonstra cao por refuta cao para os seguintes conjuntos
de clausulas:
(a) {{P, Q, S}, {Q, S, P}, {S, R}, {S, P}, {Q, R}, {P, Q}}
(b) {{P, Q, R}, {P, Q, R}, {P, Q}, {P, R}, {P, R}}
8. Produza uma demonstracao por refuta cao para
{{P, Q}, {Q, R}, {R, S}, {P}} {S}
usando a estrategia de resolu cao linear e {S} como clausula central.
2.6. EXERC

ICIOS 127
9. Suponha que se podem produzir as seguintes reaccoes qumicas:
36
MgO + H
2
Mg + H
2
O
C + O
2
CO
2
CO
2
+ H
2
O H
2
CO
3
.
Utilizando o princpio da resolucao, mostre que a partir de MgO, H
2
,
C e O
2
e possvel produzir H
2
CO
3
.
10. Utilizando o princpio da resolu cao mostre que e possvel gerar uma
contradi cao a partir dos seguintes conjuntos:
(a) {P QS, P QS, SR, SP, P Q, RQ, P Q}
(b) {P Q, Q R, R P, P R, P R}
(c) {P Q R, P Q R, P Q, P R, P R}
11. Considere as seguntes fbfs
(a) (P Q) (P Q)
(b) (P Q) (P Q)
Classique-as como satisfazveis, falsic aveis, tautol ogicas ou contra-
dit orias.
12. Considere o seguinte conjunto de fbfs:
{P (Q R), P (Q R), Q (R P)}
(a) Dena o que entende por modelo de um conjunto de fbfs e diga
quais os modelos do conjunto apresentado.
(b) A fbf P Q e consequencia l ogica do conjunto? Porque?
13. Considere o seguinte conjunto de fbfs:
= {(P Q) R, R S, P}.
(a) Mostre, pela via semantica, que a fbf S n ao e consequencia l ogica
do conjunto .
(b) Se acrescentasse a fbf Q ao conjunto , sera que a fbf S passaria
a ser uma das suas consequencias l ogicas? Justique.
36
Exemplo de [Chang e Lee 73, p agina 21].
128 CAP

ITULO 2. L

OGICA PROPOSICIONAL
14. (a) Desenhe a arvore de decisao correspondente `a seguinte fbf:
P (Q (P R))
(b) Transforme a arvore de decisao da alnea anterior num BDD re-
duzido. Indique os passos seguidos.
15. Considere os seguintes OBDDs:
Q
R
V F
P
Q
R
F V
Utilizando o algoritmo aplica, calcule o OBDD que resulta de dis-
jun cao das fbfs que correspondem a estes OBDDS. Mostre os passos
utilizados.
16. (a) Sendo um conjunto de fbfs e uma fbf, diga qual o signicado
de |= .
(b) Diga como pode usar o OBDD de uma fbf para determinar os
modelos dessa fbf.
(c) Aplique a resposta da alnea (b) ao seguinte OBDD:
R
Q
F V
(d) Usando OBDDs, mostre que {P, P Q} |= Q. Sugest ao: Uti-
lizando o algoritmo aplica, construa o OBDD para a conjun cao
das premissas e veja o que pode concluir em relacao `a conclusao
do argumento.
2.6. EXERC

ICIOS 129
17. Dado um OBDD qualquer, o, mostre que os seguintes resultados sao
vericados:
(a) aplica(, o, F ) = F
(b) aplica(, F , o) = F
(c) aplica(, o, V ) = o
(d) aplica(, V , o) = o
(e) aplica(, o, V ) = V
(f) aplica(, V , o) = V
(g) aplica(, o, F ) = o
(h) aplica(, F , o) = o
130 CAP

ITULO 2. L

OGICA PROPOSICIONAL
Captulo 3
Logica de Primeira Ordem
When a fact appears to be opposed to a
long train of deductions, it invariably
proves to be capable of bearing some
other interpretation.
Sherlock Holmes, A Study in Scarlet
A l ogica proposicional que discutimos ate agora apenas nos permite avaliar
uma classe muito restrita de argumentos. Embora tenhamos considerado
proposi coes de certo modo complexas, os seus componentes elementares cor-
respondem a smbolos de proposicao, ao interior dos quais nao podemos ace-
der. Recorde-se da p agina 27 que, em l ogica proposicional, a representa cao
da proposicao S ocrates e um homem n ao permitia a representa cao de
S ocrates, nem de homem, nem da relacao entre estas duas entidades.
Neste captulo, desenvolvemos uma l ogica cuja linguagem nos permite consi-
derar o interior das proposi coes. Com esta nova linguagem, as proposicoes
elementares deixam de ser um todo, passando a ter uma estrutura na qual
podem existir constantes, vari aveis, fun coes e relacoes. A logica resultante
chama-se l ogica de primeira ordem ou l ogica de predicados. A passagem da
l ogica proposicional para a l ogica de primeira ordem obriga a uma refor-
mula cao das regras para a formacao de fbfs (contemplando vari aveis) e `a
introdu cao de novos smbolos l ogicos e de novas regras de inferencia.
132 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


3.1 A linguagem
A l ogica de primeira ordem e muito mais rica do que a l ogica proposicional.
Para alem de conter todos os smbolos da l ogica proposicional, a l ogica de
primeira ordem contem dois smbolos l ogicos adicionais, os quanticadores,
e permite a utiliza cao de fun coes e de variaveis. Alem disso, em lugar dos
smbolos de proposicao, a l ogica de primeira ordem introduz predicados, os
quais tem uma estrutura no sentido em que correspondem a relacoes com
argumentos.
Antes de apresentar a linguagem da l ogica de primeira ordem, discutimos
os conceitos de fun cao, de relacao e de vari avel.
Fun coes. A palavra funcao e usada no sentido lato para representar
uma correspondencia (ou uma transforma cao) entre duas classes de entida-
des. Do ponto de vista da teoria dos conjuntos, uma fun cao e um conjunto
(potencialmente innito) contendo os elementos (pares ordenados) que cor-
respondem `a transformacao. Como exemplos, podemos pensar em fun coes
que correspondem `a capital de um pas, ao ano de nascimento de uma pes-
soa ou ao sucessor de um n umero natural. Os seguintes conjuntos listam
parcialmente estas transforma coes:
1
{(Portugal, Lisboa), (Franc
,
a, Paris), (Espanha, Madrid), . . .}
{(Augustus De Morgan, 1806), (Alonzo Church, 1903), . . .}
{(1, 2), (2, 3), (3, 4) . . .}
De um modo mais rigoroso, uma fun cao e um conjunto de pares ordenados
que n ao contem dois pares distintos com o mesmo primeiro elemento. O
conjunto de todos os primeiros elementos dos pares e chamado o domnio da
fun cao e o conjunto de todos os segundos elementos dos pares e chamado o
contradomnio da fun cao.
Ao denir uma funcao n ao e comum apresentar uma lista exaustiva de todos
os pares que pertencem `a fun cao, em muitos casos isto n ao e mesmo possvel,
por exemplo, se o domnio for innito. De um modo geral, ao denir uma
1
Note-se que o primeiro conjunto e nito, o segundo conjunto e muito grande (consi-
derando todas as pessoas), mas tambem e nito, e o terceiro conjunto e innito.
3.1. A LINGUAGEM 133
fun cao, especicamos qual o seu domnio e fornecemos uma express ao de-
signatoria
2
que ao receber um elemento do domnio da fun cao (chamado o
argumento da funcao) calcula o elemento correspondente do contradomnio
(chamado o valor da fun cao).
Exemplo 3.1.1 As fun coes anteriores podem ser denidas pelas seguintes
expressoes designat orias (partindo do princpio que o seu domnio j a foi
especicado):
capital(x) = a capital de x
n(x) = o ano de nascimento de x
s(x) = x + 1
`
Para calcular o valor da fun cao para um determinado valor do seu domnio,
o que tem de ser feito e a susbstitui cao da vari avel pelo valor correspondente
na expressao designat oria que corresponde `a deni cao da fun cao.
Exemplo 3.1.2 Para calcular o valor da fun cao s do Exemplo 3.1.1 para o
valor 2, teremos que substituir x por 2 na expressao x + 1, obtendo 3. `
Tendo em atencao que as fun coes correspondem a transforma coes, estas po-
dem ser utilizadas para descrever entidades. Por exemplo, usando novamente
a fun cao s, s(2), representa o n umero natural 3.
Embora a nossa discussao apenas tenha considerado funcoes com um argu-
mento, podemos facilmente considerar fun coes de n argumentos, ou fun coes
de aridade n, (n 0) do seguinte modo: uma fun cao de n argumentos e um
conjunto de (n + 1)-tuplos ordenados que n ao contem dois tuplos com os
mesmos n primeiros elementos. De acordo com esta deni cao, uma fun cao
com zero argumentos corresponde a um conjunto singular e e considerada
como uma constante.
Variaveis. Chamam-se vari aveis a certos smbolos que desempenham o
papel de designacoes sem serem propriamente designacoes. Cada vari avel
pode ter como valor qualquer elemento de um conjunto denominado domnio
da vari avel.
2
Uma expressao que se transforma numa designac ao quando as variaveis que esta
contem sao substitudas por constantes.
134 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


As vari aveis correspondem de certo modo a espacos em branco de um
formul ario a preencher, sendo o seu uso regulamentado por duas regras:
1. Se uma vari avel gura em mais do que um lugar numa expressao, so
podemos atribuir-lhe de cada vez um mesmo valor, em todos os lugares
que a vari avel ocupa na expressao.
2. A vari aveis diferentes e lcito atribuir um mesmo valor, desde que esse
valor pertenca ao domnio de ambas as vari aveis.
As vari aveis, por si so, n ao representam entidades, mas podem ser subs-
titudas por elementos apropriados do seu domnio.
Relacoes. A palavra rela cao e usada para representar qualquer rela cao
entre elementos de conjuntos. Do ponto de vista matematico, uma rela cao
de n argumentos (tambem dita relacao de aridade n ou rela cao n-aria) e um
conjunto de n-tuplos ordenados.
Como exemplo, podemos pensar na relacao binaria
3
correspondendo ao con-
junto dos pases que partilham uma fronteira terrestre. O seguinte conjunto
contem alguns dos pases que estao envolvidos nesta relacao:
{(Portugal, Espanha), (Espanha, Portugal), (Espanha, Franc
,
a), . . .}
Os pares (Espanha, Portugal) e (Espanha, Franc
,
a) fazem parte desta
relacao uma vez que Espanha tem fronteira terrestre tanto com Portu-
gal como com a Franca, ao passo que os pares (Portugal, Dinamarca)
e (M exico, Canad a) n ao pertencem a esta rela cao pois os pases envolvidos
n ao tem fonteira terrestre. Repare-se que nesta rela cao existe mais do que
um par com o mesmo primeiro elemento, de facto list amos dois pares nestas
condi coes, (Espanha, Portugal) e (Espanha, Franc
,
a), o que faz com que
esta relacao n ao seja uma fun cao.
Tal como no caso das fun coes, as relacoes tem um domnio e um contra-
domnio. Uma rela cao e normalmente denida atraves da especicacao dos
conjuntos aos quais o primeiro e o segundo elemento dos pares pertencem,
juntamente com uma express ao proposicional
4
que a partir dos elementos
3
Relac ao de dois argumentos.
4
Uma expressao que se transforma numa proposic ao quando as variaveis que esta
contem sao substitudas por constantes.
3.1. A LINGUAGEM 135
destes conjuntos faz uma arma cao sobre a sua rela cao. Sob esta perspec-
tiva, a relacao anterior pode ser denida do seguinte modo:
Tem fronteira(x, y) = x tem fronteira terrestre com y
Relacoes apenas com um argumento sao normalmente conhecidas por classes
ou propriedades.
Do ponto de vista matematico, qualquer fun cao pode ser considerada como
uma rela cao, ambas correspondem a conjuntos de pares, mas as fun coes
colocam uma restri cao adicional sobre os elementos desses conjuntos. No
entanto, a utiliza cao de fun coes e de rela coes e bastante diferenciada.
Exemplo 3.1.3 Consideremos a relacao S que relaciona um n umero na-
tural com o seu sucessor e a fun cao s que corresponde ao sucessor de um
n umero natural:
S(x, y) = y e o sucessor de x
s(x) = x + 1
A rela cao S contem os pares {(1, 2), (2, 3), (3, 4), . . .}. Este conjunto e igual
ao conjunto que corresponde `a fun cao s. No entanto, usando uma rela cao
n ao podemos falar sobre o sucessor de um dado n umero, como acontece
com a utiliza cao de uma fun cao; recorrendo a uma rela cao, apenas podemos
armar, por exemplo, que o par (3, 4) pertence `a rela cao S. `
Com a conclusao desta pequena discussao sobre fun coes, vari aveis e relacoes,
vamo-nos agora concentrar no t opico desta seccao, a deni cao da linguagem
da l ogica de primeira ordem.
Alfabeto basico. O alfabeto da l ogica de primeira ordem, para alem dos
smbolos de pontua cao e dos smbolos l ogicos, tem um n umero innito de
smbolos de fun cao, um n umero innito de smbolos de relacao e um n umero
innito de vari aveis individuais.
1. Smbolos de pontuacao: , ( ) [ ]
2. Smbolos l ogicos:
Para alem dos smbolos l ogicos j a utilizados na l ogica proposicional,
existem dois novos smbolos l ogicos:
(a) o smbolo corresponde `a quantica cao universal;
136 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


(b) o smbolo corresponde `a quanticacao existencial.
3. Letras de fun cao com n argumentos (ou funcoes de aridade n), f
n
i
(para n 0 e i 1).
A razao de indexarmos as letras de fun cao em lugar de utilizarmos
letras individuais para as designar e o facto de o recurso a umndice nos
fornecer uma capacidade ilimitada para criar novos nomes de fun coes.
As funcoes com aridade zero (ou seja, as fun coes sem argumentos,
correspondentes a f
0
i
) correspondem a constantes.
Quando n ao haja perigo de confus ao, as letras de fun cao sao designadas
por cadeias de caracteres come cando por uma letra min uscula. Por
exemplo, f, g, h, capital e pai.
4. Letras de predicado com aridade n, P
n
i
(para n 0 e i 1).
Uma letra de predicado com n argumentos representa uma relacao
n-aria.
Quando n ao haja perigo de confus ao, representaremos as letras de pre-
dicado por cadeias de caracteres comecando com uma letra mai uscula.
Por exemplo, P, Q, R, Humano e Homem.
5. Vari aveis individuais, x
i
(para i 1).
Quando n ao haja perigo de confus ao, representaremos as vari aveis
individuais por x, y, z, etc.
Termos. Os termos representam as entidades sobre as quais queremos
falar e correspondem a sintagmas nominais em lngua natural.
Existem v arios tipos de termos, constantes (que correspondem a fun coes de
zero argumentos ou de aridade zero), vari aveis e aplicacoes de fun coes ao
n umero apropriado de termos.
Denicao 3.1.1 (Termo) Os termos correspondem ao menor conjunto de-
nido recursivamente atraves das seguintes regras de forma cao:
1. Cada letra de fun cao com aridade zero (letra de constante) e um termo;
2. Cada vari avel e um termo;
3. Se t
1
, t
2
, ..., t
n
sao termos, ent ao f
n
i
(t
1
, t
2
, . . . , t
n
) e um termo.
3.1. A LINGUAGEM 137
Exemplo 3.1.4 Suponhamos que Portugal e Augustus De Morgan sao
constantes;
5
suponhamos que capital e uma fun cao de um argumento, cujo
valor e a cidade que e a capital do pas que e seu argumento, que pai e uma
fun cao de um argumento cujo valor e o pai da pessoa que corresponde ao
seu argumento; suponhamos ainda que x e uma variavel. Ent ao, de acordo
com a deni cao anterior, as seguintes expressoes sao termos:
Portugal (3.1)
Augustus De Morgan (3.2)
capital(Portugal) (3.3)
pai(Augustus De Morgan) (3.4)
pai(pai(pai(Augustus De Morgan))) (3.5)
x (3.6)
capital(x) (3.7)
pai(x) (3.8)
Nos termos 3.1 a 3.8 utilizamos uma abordagem que e comum em pro-
gramacao. Em lugar de utilizar nomes apenas com uma letra, usamos uma
cadeia de caracteres que sugere o signicado do nome. Note-se, contudo,
que n ao existe nenhum signicado formal correspondente a estes nomes. `
Denicao 3.1.2 (Termo fechado) Um termo que n ao contem vari aveis e
chamado um termo fechado ou termo chao (do ingles, ground term).
Exemplo 3.1.5 No Exemplo 3.1.4, os termos 3.1 a 3.5 sao termos fechados
e os termos 3.6 a 3.8 n ao sao termos fechados. `
5
Estamos aqui a violar a nossa conven cao de que um termo comeca por uma letra
min uscula. No entanto, como e habitual escrever nomes pr oprios come cando por uma
letra mai uscula, adoptaremos essa conven c ao para nomes pr oprios.
138 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


F ormulas bem formadas. As f ormulas bem formadas (ou apenas fbfs)
sao denidas com base na aplica cao de uma letra de predicado ao n umero
apropriado de argumentos e com base na combina cao de fbfs utilizando
smbolos l ogicos.
A linguagem da l ogica de primeira ordem, ou seja o conjunto de todas as
fbfs, e representada por L
LPO
.
Denicao 3.1.3 (F ormula bem formada de L
LPO
) As f ormulas bem
formadas (ou fbfs) correspondem ao menor conjunto denido atraves das
seguintes regras de forma cao:
1. Se t
1
, t
2
, ... t
n
sao termos, ent ao P
n
i
(t
1
, t
2
, . . . , t
n
) e uma fbf (esta fbf e
chamada fbf atomica);
2. Se e uma fbf , ent ao () e uma fbf ;
3. Se e sao fbfs, ent ao ( ), ( ), e ( ) sao fbfs;
4. Se e uma fbf contendo zero ou mais ocorrencias da vari avel x, ent ao
x[] e x[] sao fbfs.
A fbf x[] le-se para todo o x, e a fbf x[] le-se existe um x tal que
.
Exemplo 3.1.6 Se P for uma letra de predicado com aridade 2, Q for uma
letra de predicado com aridade um, R e S forem letras de predicado com
aridade zero, f for uma letra de fun cao com aridade um, e g for uma letra de
fun cao com aridade 3, ent ao, de acordo com a deni cao anterior, as seguintes
expressoes sao fbfs:
(P(a, g(a, b, c))) (3.9)
(P(a, b) (Q(f(d)))) (3.10)
(R S) (3.11)
Sempre que possvel, os parenteses redundantes serao eliminados, pelo que
as fbfs anteriores serao escritas abreviadamente como
P(a, g(a, b, c)) (3.12)
P(a, b) Q(f(d)) (3.13)
R S. (3.14)
`
3.1. A LINGUAGEM 139
Exemplo 3.1.7 Suponhamos que
Tem fronteira e V ive em sao letras de predicado com aridade 2,
Travaram guerra e uma letra de predicado com aridade 3,
capital e uma letra de fun cao com aridade 1,
Portugal e Espanha sao constantes (letras de fun cao com aridade
zero).
Ent ao, as seguintes expressoes sao fbfs:
Tem fronteira(Portugal, Espanha) (3.15)
Tem fronteira(x, y) (3.16)
x [y [Tem fronteira(x, y) g [Travaram guerra(g, x, y)]]] (3.17)
V ive em(x, capital(Portugal)) (3.18)
`
Denicao 3.1.4 (F ormula cha) Uma fbf que n ao contem vari aveis diz-se
uma f ormula ch a (do ingles, ground formula).
Exemplo 3.1.8 No Exemplo 3.1.7, a fbf 3.15 e uma f ormula ch a. `
Sempre que possvel, abreviaremos uma sequencia de quanticadores do
mesmo tipo, por exemplo, x [y [. . .]], por uma unica ocorrencia do quan-
ticador seguido de uma lista das vari aveis correspondentes, por exemplo,
x, y [. . .].
Exemplo 3.1.9 De acordo com esta conven cao, a fbf 3.17 sera escrita do
seguinte modo:
x, y [Tem fronteira(x, y) g [Travaram guerra(g, x, y)]] (3.19)
`
140 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Variaveis livres e variaveis ligadas. A utiliza cao de quanticadores
leva `a distin cao entre dois tipos de ocorrencias de vari aveis, as vari aveis
livres e as vari aveis ligadas.
Denicao 3.1.5 (Domnio de um quanticador) Na fbf x[] e na fbf
x[], a fbf e chamada o domnio do quanticador ( ou ) e diz-se que o
quanticador liga (do ingles binds) a variavel x.
Exemplo 3.1.10 Considerando a fbf 3.19, o domnio do quanticador uni-
versal e a fbf
Tem fronteira(x, y) g [Travaram guerra(g, x, y)] (3.20)
e o domnio do quanticador existencial e a fbf
Travaram guerra(g, x, y). (3.21)
Na fbf 3.19, o quanticador universal liga as vari aveis x e y e o quanticador
existencial liga a vari avel g. `
Note-se que a fbf que aparece no domnio de um quanticador que liga a
vari avel x n ao tem necessariamente que conter a vari avel x, como acontece,
por exemplo, com a fbf
x [Tem fronteira(Portugal, Espanha)]. (3.22)
Neste caso, tanto x[] como x[] tem o mesmo signicado que .
Denicao 3.1.6 (Variavel ligada) Uma ocorrencia da vari avel x diz-se
ligada (do ingles bound) numa fbf se esta ocorrencia aparecer dentro do
domnio do quanticador que a introduz.
Denicao 3.1.7 (Variavel livre) Uma ocorrencia da vari avel x diz-se li-
vre (do ingles free) se esta n ao for uma ocorrencia ligada.
Exemplo 3.1.11 A fbf A(x) contem uma ocorrencia livre de x (o que
tambem e referido dizendo que A(x) contem a vari avel livre x). `
Exemplo 3.1.12 A fbf x[A(x)] contem a vari avel ligada x. `
Exemplo 3.1.13 A fbf A(x) x[B(x)] contem uma ocorrencia livre de
x, em A(x), e uma ocorrencia ligada de x, em B(x). `
3.1. A LINGUAGEM 141
Em resumo, uma ocorrencia da vari avel x na fbf e ligada nas fbfs x[] e
x[].
Denicao 3.1.8 (F ormula fechada) Uma fbf sem vari aveis livres diz-se
fechada.
Substituicoes. Sabemos que intuitivamente as vari aveis correspondem
a espa cos em branco para designar entidades. Ao lidar com fbfs com
vari aveis, precisamos frequentemente de substituir inst ancias de vari aveis
por termos (note-se que os termos correspondem ao domnio destas vari aveis).
Denicao 3.1.9 (Substituicao) Uma substitui cao e um conjunto nito
de pares ordenados {t
1
/x
1
, . . . , t
n
/x
n
} em que cada x
i
(1 i n) e uma
vari avel individual e cada t
i
(1 i n) e um termo.
Numa substitui cao, todas as vari aveis individuais sao diferentes (ou seja,
para todo o i e j, 1 i n, 1 j n se i = j ent ao x
i
= x
j
) e nenhuma
das vari aveis individuais e igual ao termo correspondente (ou seja, para todo
o i, 1 i n x
i
= t
i
).
Exemplo 3.1.14 Supondo que a e b sao constantes, x, y e z sao vari aveis
individuais e que f, g e h sao fun coes de aridade 1, ent ao os seguintes
conjuntos sao exemplos de substituicoes
{f(x)/x, z/y}
{a/x, g(y)/y, f(g(h(b)))/z}
os seguintes conjuntos nao sao exemplos de substitui coes
6
{x/x, z/y}
{a/x, g(y)/y, b/x, f(g(h(b)))/c}
`
Existem dois casos especiais de substitui coes, a substitui cao vazia e as subs-
titui coes ch as.
Denicao 3.1.10 (Substituicao vazia) A substitui cao vazia corresponde
ao conjunto vazio e e representada por .
6
Como exerccio, deve explicar a raz ao porque estes conjuntos nao sao substituic oes.
142 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Denicao 3.1.11 (Substituicao cha) Uma substitui cao ch a (do ingles,
ground substitution) e uma substitui cao na qual nenhum dos termos
contem vari aveis.
A ideia subjacente a uma substitui cao e que esta sera utilizada como um
guia para substituir certas vari aveis numa fbf: cada vari avel individual na
substitui cao sera substituda pelo termo que lhe esta associado. Esta ideia
justica a razao das restri coes impostas a uma substitui cao, nomeadamente
a restricao de que todas as vari aveis individuais sao diferentes (caso contrario
n ao saberamos qual o termo a usar para substituir a vari avel) e a restricao
de que nenhuma vari avel e igual ao termo correspondente (caso contr ario a
substitui cao seria in util).
Denicao 3.1.12 (Aplicacao de substitui cao) A aplicacao da substitui-
cao s = {t
1
/x
1
, . . . , t
n
/x
n
} `a fbf (representada por s) e a fbf obtida de
substituindo todas as ocorrencias da vari avel livre x
i
por t
i
(1 i n).

Exemplo 3.1.15 Dada a fbf


P(x, f(a, y)), (3.23)
a qual contem as vari aveis livres x e y, e a substitui cao
s = {a/x, f(a, b)/y}, (3.24)
a aplicacao da substituicao s a P(x, f(a, y)) resulta em
P(x, f(a, y)) {a/x, f(a, b)/y} = P(a, f(a, f(a, b)). (3.25)
O mesmo resultado seria obtido aplicando a substitui cao
s

= {a/x, f(a, b)/y, c/z} (3.26)


a P(x, f(a, y)). A aplica cao da substituicao 3.24 a A(x) x[B(x)] resulta
em
(A(x) x[B(x)]) {a/x, f(a, b)/y} = A(a) x[B(x)]. (3.27)
`
3.1. A LINGUAGEM 143
Exemplo 3.1.16 Dada a substitui cao 3.24 e a fbf
x[P(x, f(a, y))], (3.28)
temos
x[P(x, f(a, y))] {a/x, f(a, b)/y} = x[P(x, f(a, f(a, b)))]. (3.29)
`
Escreveremos (x
1
, . . . , x
n
) para indicar que a fbf tem x
1
, . . ., x
n
como
vari aveis livres. Note-se que isto n ao impede que tenha outras vari aveis
livres. Com esta nota cao escreveremos tambem
(x
1
, . . . , x
n
) {t
1
/x
1
, . . . , t
n
/x
n
} = (t
1
, ..., t
n
).
Exemplo 3.1.17 Consideremos a substitui cao
{a/x, x/y}. (3.30)
A aplica cao desta susbstitui cao `a fbf 3.28 tem como resultado:
x[P(x, f(a, y))] {a/x, x/y} = x[P(x, f(a, x))]. (3.31)
A aplica cao desta substitui cao teve um resultado indesej avel, a vari avel x
que esta ligada pelo quanticador universal e introduzida como segundo
argumento do predicado P. Esta alteracao muda o signicado da fbf 3.28,
o que n ao era o objectivo da aplica cao da substituicao. Para evitar casos
como este, e necessario introduzir a deni cao de um termo ser livre para
uma vari avel numa fbf. `
Denicao 3.1.13 (Termo livre para uma variavel) Se for uma fbf e
t um termo, dizemos que t e livre para x em se nenhuma ocorrencia livre
de x em ocorrer dentro do domnio do quanticador x (ou x) em que x
e uma vari avel em t.
Informalmente, t ser livre para x em signica que se todas as ocorrencias
de x forem substitudas por t nenhuma ocorrencia de uma vari avel em t
deixa de ser livre em (t).
Exemplo 3.1.18 O termo g(y, f(b)) e livre para x na fbf P(x, y) mas n ao
o e na fbf y[P(x, y)]. `
Note-se, por deni cao, que um termo sem vari aveis e sempre livre para
qualquer vari avel em qualquer fbf.
144 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Representacao em logica de primeira ordem. Vamos agora conside-
rar a utiliza cao da l ogica de primeira ordem para representar conhecimento
sobre um mundo ou uma situa cao.
Como em qualquer formalismo de representacao, o primeiro passo a tomar
e inventar um modelo daquilo que estamos a representar. Um modelo
corresponde a uma abstrac cao do mundo que apenas captura os seus aspec-
tos que sao relevantes para um certo problema ou para uma certa tarefa.
Nesta representacao devemos denir as entidades do mundo sobre as quais
queremos falar (o chamado universo de discurso) e as fun coes e as rela coes
que iremos utilizar.
As entidades sobre as quais queremos falar correspondem `as entidades in-
dividuais que sao nomeadas no universo de discurso. Entre estas rela coes e
habitual denir as chamadas classes ou propriedades, relacoes de um argu-
mento que circunscrevem tipos de entidades ou que denem as propriedades
que estas possuem.
Ao fazer isto, estamos a denir o vocabul ario que e utilizado pelas fbfs da
nossa representa cao. Em relacao `as regras de formacao apresentadas na
p agina 135, estamos a particularizar as letras de fun cao e as letras de pre-
dicado que vamos considerar.

E boa pr atica documentar as decisoes tomadas quanto ao signicado intui-


tivo das constantes, fun coes e rela coes que vamos utilizar.
Depois de tomadas estas decisoes, a tarefa da representa cao consiste em es-
crever fbfs que relacionam estas constantes, fun coes e relacoes. Estas fbfs sao
vulgarmente designadas por axiomas pr oprios, ou seja proposi coes que acei-
tamos sem demonstra cao em rela cao ao domnio que estamos a representar.
Exemplo 3.1.19 (Os Simpsons) Neste exemplo, apresentamos conceitos
relacionados com rela coes familiares. Para ilustrar o nosso exemplo, usamos
uma famlia bem conhecida (Figura 3.1).
7
Comecaremos com a deni cao do vocabul ario, as constantes, as fun coes e
as rela coes que iremos utilizar. Juntamente com cada rela cao e com cada
fun cao fornecemos o seu signicado intuitivo. Usamos a expressao signi-
cado intuitivo porque o signicado formal e denido atraves do tuplos que
correspondem `a relacao ou `a fun cao (como descrito na Seccao 3.3).
7
Esta imagem foi obtida em http://duffzone.co.uk/desktops/tree/. Reproduzida
com a autoriza c ao de www.duffzone.co.uk.
3.1. A LINGUAGEM 145
Figura 3.1: A arvore genealogica dos Simpsons.
Usamos as seguintes constante para representar cada um dos membros desta
famlia, Hugo (Hugo Simpson), Bart (Bart J. Simpson), Lisa (Lisa Simp-
son), Maggie (Maggie Simpson), Herb (Herb Powers), Homer (Homer J.
Simpson), Marge (Marge B. Simpson), Selma (Selma Bouvier), Paty (Paty
Bouvier), Sra.Y (a pessoa sem nome na zona inferior esquerda da arvore),
Abe (Abraham Simpson), Penelope (Penelope Olsen), Jackie (Jackie Bou-
vier) e Sr.B (Mr. Bouvier).
Utilizamos duas classes (rela coes de um argumento), Homem e Mulher,
com os seguintes signicados intuitivos:
Homem(x) = x e um homem
Mulher(x) = x e uma mulher
Uma outra rela cao bin aria que utilizamos e a de ascendente directo, que
corresponde ao pai ou `a mae de uma entidade. A relacao de dois argumentos
146 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


AD tem o seguinte signicado intuitivo:
AD(x, y) = x e um ascendente directo de y
Utilizamos tambem as relacoes de dois argumentos, Pai, M ae, Av o, Av o,
A2Linha (um av o ou uma av o), Ant (antepassado), DD (descendente di-
recto), Filho, Filha, Irm ao, Irm a, e ADC (ascendente directo comum)
com os seguintes signicados intuitivos:
Pai(x, y) = x e o pai de y
M ae(x, y) = x e a mae de y
Av o(x, y) = x e um avo de y
Av o(x, y) = x e uma avo de y
A2Linha(x, y) = x e um ascendente de 2
a
linha de y
Ant(x, y) = x e um antepassado de y
DD(x, y) = x e um descendente directo de y
Filho(x, y) = x e um lho de y
Filha(x, y) = x e uma lha de y
Irm ao(x, y) = x e um irm ao de y
Irm a(x, y) = x e uma irm a de y
ADC(x, y) = x e y tem um ascendente directo em comum
Com estas rela coes, e com base na informa cao da Figura 3.1, podemos es-
crever as seguintes fbfs fechadas:
Homem(Sr.B) (3.32)
Homem(Abe) (3.33)
Homem(Homer) (3.34)
Homem(Herb) (3.35)
Homem(Hugo) (3.36)
Homem(Bart) (3.37)
Mulher(Jackie) (3.38)
3.1. A LINGUAGEM 147
Mulher(Penelope) (3.39)
Mulher(Sra.Y ) (3.40)
Mulher(Marge) (3.41)
Mulher(Selma) (3.42)
Mulher(Patty) (3.43)
Mulher(Lisa) (3.44)
Mulher(Maggie) (3.45)
AD(Sr.B, Marge) (3.46)
AD(Jackie, Marge) (3.47)
AD(Sr.B, Selma) (3.48)
AD(Jackie, Selma) (3.49)
AD(Sr.B, Patty) (3.50)
AD(Jackie, Patty) (3.51)
AD(Abe, Homer) (3.52)
AD(Pamela, Homer) (3.53)
AD(Abe, Herb) (3.54)
AD(Sra.Y, Herb) (3.55)
AD(Homer, Hugo) (3.56)
AD(Marge, Hugo) (3.57)
AD(Homer, Bart) (3.58)
AD(Marge, Bart) (3.59)
AD(Homer, Lisa) (3.60)
AD(Marge, Lisa) (3.61)
AD(Homer, Maggie) (3.62)
AD(Marge, Maggie) (3.63)
Usando as rela coes que denimos, podemos escrever as seguintes fbfs que
correspondem a axiomas pr oprios do nosso domnio:
x, y, z [(AD(x, y) AD(y, z)) A2Linha(x, z)] (3.64)
148 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


x, y [AD(x, y) Ant(x, y)] (3.65)
x, y, z [(Ant(x, y) AD(y, z)) Ant(x, z)] (3.66)
x, y [(AD(x, y) Homem(x)) Pai(x, y)] (3.67)
x, y [(AD(x, y) Mulher(x)) M ae(x, y)] (3.68)
x, y [(A2Linha(x, y) Homem(x)) Av o(x, y)] (3.69)
x, y [(A2Linha(x, y) Mulher(x)) Av o(x, y)] (3.70)
x, y [AD(x, y) DD(y, x)] (3.71)
x, y [(DD(x, y) Homem(x)) Filho(x, y)] (3.72)
x, y [(DD(x, y) Mulher(x)) Filha(x, y)] (3.73)
x, y [(Irm ao(x, y) Irm a(x, y)) ADC(x, y)] (3.74)
A fbf 3.74 poderia ter sido escrita, alternativamente, como duas fbfs, sepa-
radas;
x, y [Irm ao(x, y) ADC(x, y)] (3.75)
x, y [Irm a(x, y) ADC(x, y)] (3.76)
A decisao de utilizar a fbf 3.74 ou as fbfs 3.75 e 3.76 e fundamentalmente
uma questao de facilidade de expressao.
Algumas destas fbfs utilizam o smbolo l ogico correspondente `a equivalencia.
A utiliza cao deste smbolo signica que a fbf contem as condi coes necessarias
e sucientes para a deni cao do predicado. Por exemplo, a fbf 3.67, dene
completamente o predicado Pai atraves da combina cao dos predicados AD
e Homem. Fbfs deste tipo sao vulgarmente designadas por denicoes com-
pletas.
Um outro tipo de fbf a que e muito vulgar recorrer, chamada disjun cao,
8
arma que certas combina coes de uma relacao sao disjuntas. Por exemplo,
sabemos que a rela cao Ant e anti-reexiva:
x, y [Ant(x, y) Ant(y, x)] (3.77)
Ao conjunto de todas as constantes, fun coes, relacoes e axiomas pr oprios
denidos para um dado domnio d a-se o nome de ontologia do domnio.
8
N ao confundir esta designac ao com o smbolo logico disjunc ao.
3.2. O SISTEMA DEDUTIVO 149
Considerando a representacao que denimos, podemos pensar em repre-
sentar que uma pessoa apenas tem um pai. Repare-se que nada na nossa
representacao aborda este aspecto. Este facto pode ser representado atraves
da seguinte fbf:
x, y, z[(Pai(x, z) Pai(y, z)) Eq(x, y)]
na qual Eq e a relacao
Eq(x, y) = x e igual a y
A relacao Eq e t ao utilizada em l ogica que frequentemente a expressao
Eq(x, y) e abreviada para x = y.

E importante mencionar que a decisao
sobre a igualdade de dois elementos esta longe de ser um aspecto trivial.
Neste exemplo assumimos que esta relacao satisfaz os seguintes axiomas:
x[x = x]
x, y[(x = y) (y = x)]
x, y, z[((x = y) (y = z)) (x = z)]
Para alem de termos denido a rela cao Pai, poderamos ter tambem es-
colhido utilizar a funcao pai. Esta fun cao pode ser denida do seguinte
modo
pai(x) = o pai de x
Neste caso, podemos escrever a fbf x[Homem(pai(x))]. `
3.2 O sistema dedutivo
3.2.1 Deducao natural
As provas em l ogica de primeira ordem sao semelhantes `as provas em l ogica
proposicional, excepto que contem novas regras de inferencia para lidar com
a introdu cao e com a elimina cao de quanticadores. Isto signica que todas
as regras de inferencia apresentadas na Seccao 2.2 sao tambem aplic aveis `a
l ogica de primeira ordem.
150 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Regras para a quanticacao universal. Antes de abordarmos as re-
gras para a quantica cao universal, consideremos o signicado intuitivo da
fbf x[(x)]. Esta f ormula arma que, para qualquer termo t, se substituir-
mos x por t, a fbf (t) verica-se. A regra de introdu cao do quanticador
universal, escrita I, ter a que reectir este aspecto, ou seja, para intro-
duzir a fbf x[(x)], teremos que provar (t) para um termo arbitr ario t.
De modo a garantir que n ao existem restricoes em rela cao ao termo t que
satisfaz a propriedade (t), utilizamos uma tecnica semelhante `a utilizada
na regra da introdu cao da implicacao, criamos um novo contexto no qual
aparece um novo termo (um termo que nunca apareceu antes na prova) e ten-
tamos provar que este termo tem a propriedade . Este raciocnio e obtido
comecando uma nova prova hipotetica, a qual introduz uma nova vari avel,
x
0
, que nunca apareceu antes na prova. A nova prova hipotetica estabelece
o domnio da vari avel em lugar do domnio da hip otese como acontece na
regra da I.
A regra da introdu cao da quanticacao universal arma que se numa prova
iniciada pela introdu cao da vari avel x
0
que nunca tinha aparecido antes na
prova, conseguirmos derivar a fbf (x
0
),
9
ent ao, podemos escrever x[(x)]
na prova que contem imediatamente a prova hipotetica iniciada com a in-
trodu cao da vari avel x
0
:
n x
0
.
.
.
.
.
.
m (x) {x
0
/x}
m+ 1 x[(x)] I, (n, m)
Na representacao desta regra de inferencia, x
0
`a esquerda da linha vertical
que delimita a prova hipotetica, signica que x
0
e uma nova vari avel, nunca
utilizada anteriormente na prova. Esta nova prova hipotetica inicia-se com
a introdu cao da vari avel e termina com a derivacao da fbf que permite in-
troduzir uma f ormula com o quanticador universal.
Antes de apresentar um exemplo, vamos apresentar a regra da elimina cao
do quanticador universal, escrita E, que utiliza uma fbf contendo um
quanticador universal. A partir de x[(x)], podemos inferir (x) {t/x},
em que t e qualquer termo (sujeito `a condi cao obvia que t seja livre para x
9
Repare-se que (x
0
) = (x) {x
0
/x}.
3.2. O SISTEMA DEDUTIVO 151
em ):
n x[(x)]
n + 1 (x) {t/x} E, n
Exemplo 3.2.1 Consideremos a demonstracao do argumento ({x[P(x)
Q(x)], x[Q(x) R(x)]}, x[P(x) R(x)]):
152 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


1 x[P(x) Q(x)] Prem
2 x[Q(x) R(x)] Prem
3 x
0
x[P(x) Q(x)] Rei, 1
4 x[Q(x) R(x)] Rei, 2
5 P(x
0
) Q(x
0
) E, 3
6 Q(x
0
) R(x
0
) E, 4
7 P(x
0
) Hip
8 P(x
0
) Q(x
0
) Rei, 5
9 Q(x
0
) E, (7, 8)
10 Q(x
0
) R(x
0
) Rei, 6
11 R(x
0
) E, (9, 10)
12 P(x
0
) R(x
0
) I, (7, 11)
13 x[P(x) R(x)] I, (3, 12)
`
Regras para a quanticacao existencial. A regra de introdu cao do
quanticador existencial, escrita I, e muito simples. A partir de (t), em
que t e qualquer termo, podemos inferir x[(x)], em que x e livre em (x):
n (t)
n + 1 x[(x)] I, n
A regra de elimina cao do quanticador existencial, escrita E, e um pouco
mais complicada. Note-se que a fbf x[(x)] arma que existe uma entidade
que satisfaz a propriedade . Embora saibamos que tal entidade existe, n ao
sabemos qual e a entidade que satisfaz esta propriedade. Suponhamos que
t e a entidade tal que (t).

E importante notar que como n ao sabemos
qual e a entidade t, n ao podemos fazer qualquer arma cao sobre t para
alem de (t). Na nossa prova, iremos criar um contexto em que surge
uma nova entidade que nunca foi mencionada anteriormente. Se, dentro
deste contexto formos capazes de derivar a fbf , a qual n ao menciona a
entidade t, ent ao deve-se vericar, independentemente de t.
3.2. O SISTEMA DEDUTIVO 153
A regra da elimina cao da quanticacao existencial usa o conceito de uma sub-
prova que combina as provas hipoteticas iniciadas pela introdu cao de uma
hip otese e as provas hipoteticas iniciadas pela introdu cao de uma vari avel.
Esta regra arma que, se a partir da fbf x[(x)] e de uma prova iniciada
com a introdu cao da vari avel x
0
(que nunca apareceu antes na prova), jun-
tamente com a hip otese de que (x
0
), formos capazes de derivar a fbf
a qual n ao contem a vari avel x
0
, ent ao, podemos derivar na prova que
contem imediatamente a prova hipotetica iniciada pela introdu cao conjunta
da vari avel x
0
e da hip otese (x
0
):
n x[(x)]
m x
0
(x) {x
0
/x} Hip
.
.
.
.
.
.
k
k + 1 E, (n, (m, k))
Exemplo 3.2.2 Usando as regras de inferencia para os quanticadores,
provamos agora um teorema que e parte das segundas leis de De Morgan,
x[P(x)] x[P(x)]:
1 x[P(x)] Hip
2 x
0
P(x
0
) Hip
3 x[P(x)] Hip
4 P(x
0
) Rei, 2
5 P(x
0
) E, 3
6 x[P(x)] I, (3, (4, 5))
7 x[P(x)] E, (1, (2, 6))
8 x[P(x)] x[P(x)] I, (1, 7)
`
Exemplo 3.2.3 Considerando de novo o Exemplo 3.1.19, podemos utilizar
as fbfs 3.32 a 3.74 como premissas para derivar informa cao sobre a famlia. A
seguinte prova (que apenas utiliza as premissas relevantes, 3.33, 3.34, 3.37,
3.52, 3.58, 3.64, e 3.69) mostra que Abe e av o de Bart:
154 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


1 Homem(Abe) Prem
2 Homem(Homer) Prem
3 Homem(Bart) Prem
4 AD(Abe, Homer) Prem
5 AD(Homer, Bart) Prem
6 x, y, z [(AD(x, y) AD(y, z)) A2Linha(x, z)] Prem
7 x, y [(A2Linha(x, y) Homem(x)) Av o(x, y)] Prem
8 (AD(Abe, Homer)
AD(Homer, Bart))
A2Linha(Abe, Bart) E, 6
9 AD(Abe, Homer) AD(Homer, Bart) I, (4, 5)
10 A2Linha(Abe, Bart) E, (9, 8)
11 (A2Linha(Abe, Bart) Homem(Abe))
Av o(Abe, Bart) E, 7
12 (A2Linha(Abe, Bart) Homem(Abe))
Av o(Abe, Bart) E, 11
13 A2Linha(Abe, Bart) Homem(Abe) I, (10, 1)
14 Av o(Abe, Bart) E, (13, 12)
`
3.2.2 Resolu cao
Forma Clausal. Como vimos no Captulo 2, a utiliza cao da resolucao
obriga `a transforma cao de fbfs para a forma clausal. No caso da l ogica de
primeira ordem, as transforma coes que apresent amos na Seccao 2.2.5 terao
que ser revistas `a luz dos novos smbolos e conceitos introduzidos nesta
l ogica.
Nesta seccao, apresentamos as regras de transforma cao de uma fbf de L
LPO
para a forma clausal. Dado que algumas destas transforma coes sao as mes-
mas que em l ogica proposicional, sempre que isso acontecer, indicamos o
nome da transformacao e o n umero da p agina em que a transforma cao e
apresentada no Captulo 2. As transforma coes sao exemplicadas utilizando
a fbf:
10
x[P(x) (y[P(y) P(f(x, y))] y[Q(x, y) P(y)])]. (3.78)
A transforma cao de uma fbf para forma clausal pode ser realizada mecani-
10
Exemplo de [Nilsson 71, p agina 165].
3.2. O SISTEMA DEDUTIVO 155
camente atraves da aplicacao da seguinte sequencia de passos:
11
1. Elimina cao do smbolo
Esta transforma cao e identica `a apresentada na p agina 63.
Exemplo 3.2.4 A fbf 3.78 sera transformada, sucessivamente em:
x[P(x) (y[P(y) P(f(x, y))] y[Q(x, y) P(y)])]
x[P(x) (y[P(y) P(f(x, y))] y[Q(x, y) P(y)])]
`
2. Redu cao do domnio do smbolo
Esta transforma cao e identica `a apresentada na p agina 63, com a
adi cao das seguintes transforma coes que lidam com quanticadores:
(c) As segundas leis de De Morgan
x[(x)] x[(x)]
x[(x)] x[(x)]
Exemplo 3.2.5 Aplicando este passo `a fbf do Exemplo 3.2.4, obte-
mos:
x[P(x) (y[P(y) P(f(x, y))] y[(Q(x, y) P(y))])]
x[P(x) (y[P(y) P(f(x, y))] y[Q(x, y) P(y)])]
x[P(x) (y[P(y) P(f(x, y))] y[Q(x, y) P(y)])]
`
3. Normaliza cao de vari aveis
Este passo baseia-se no facto de que as ocorrencias ligadas de uma
vari avel (ocorrencias dentro do domnio do quanticador que introduz
a vari avel) correspondem a vari aveis mudas.
A normaliza cao de vari aveis consiste em mudar o nome de algumas das
vari aveis de modo a que cada ocorrencia de um quanticador esteja
associada a um unico nome de vari avel.
11
Nas transforma c oes apresentadas apenas consideramos os smbolos logicos , , ,
, , e .
156 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Exemplo 3.2.6 Na fbf obtida no Exemplo 3.2.5, existem dois quan-
ticadores associados `a vari avel y pelo que a sua segunda ocorrencia e
mudada para z. Assim, a nossa fbf transforma-se em:
x[P(x) (y[P(y) P(f(x, y))] z[Q(x, z) P(z)])]
`
4. Elimina cao dos quanticadores existenciais
Neste passo, eliminam-se todas as ocorrencias de quanticadores exis-
tenciais.
A eliminacao destes quanticadores baseia-se em dois princpios:
(a) Elimina cao de um quanticador isolado
Recordemos da p agina 152 que a fbf x[(x)] arma que existe
uma entidade que satisfaz a propriedade mas n ao arma qual
e essa entidade. Esta transformacao permite-nos substituir a fbf
x[(x)] por (a) em que a e uma nova constante (chamada
constante de Skolem
12
).
(b) Dependencias entre quanticadores existenciais e universais
Se um quanticador existencial aparecer dentro do domnio de um
quanticador universal, existe a possibilidade do valor da vari avel
quanticada existencialmente depender do valor da vari avel quan-
ticada universalmente.
Exemplo 3.2.7 Considerando o domnio dos n umeros naturais,
sabemos que para qualquer n umero natural existe um n umero
natural que e maior do que ele. Esta arma cao traduz-se na
seguinte fbf x[y[y > x]]. Usando uma constante de Skolem,
obtemos a fbf x[a > x], a qual arma que existe um n umero
natural que e maior do que qualquer outro, o que claramente e
falso. `
No Exemplo 3.2.7, o valor de y depende do valor de x, pelo
que para eliminar o quanticador existencial devemos substituir
a vari avel a ele associada por um termo formado por um novo
smbolo de fun cao aplicado `a vari avel quanticada universalmente
(esta fun cao e chamada fun cao de Skolem
13
). Seja f(x) uma
12
Em honra do matem acico Noruegues Thoralf Albert Skolem (18871963).
13
Ibid.
3.2. O SISTEMA DEDUTIVO 157
fun cao de Skolem, ent ao eliminando o quanticador existencial
na fbf x[y[y > x]], obtemos a fbf x[f(x) > x].
Note-se que a alnea (a) e um caso particular desta alnea.
Obtemos assim a seguinte regra: se for uma letra de predicado e
Q
1
x
1
, . . ., Q
n
x
n
for a sequencia de quanticadores dentro de cujo
domnio se encontra e se Q
r
{Q
1
, . . . , Q
n
} for um quanticador
existencial, ent ao:
(a) Se nenhum quanticador universal aparecer antes de Q
r
escolhe-
mos uma nova constante (c), substitumos todas as ocorrencias de
x
r
em por c e removemos Q
r
x
r
da sequencia Q
1
x
1
, . . ., Q
n
x
n
.
(b) Se Q
u
1
, . . . , Q
u
m
sao todos os quanticadores universais que apa-
recem antes de Q
r
1 u
1
. . . u
m
r escolhemos uma nova
letra de fun cao (f) com m argumentos, substitumos x
r
em
por f(x
u
1
, . . . , x
u
m
) e removemos Q
r
x
r
da sequencia.
Exemplo 3.2.8 Na fbf do Exemplo 3.2.6 temos apenas um quanti-
cador existencial (associado `a vari avel z) o qual se encontra dentro do
domnio de um quanticador universal (associado `a vari avel x).
Usando esta transforma cao, a nossa fbf transforma-se em:
x[P(x) (y[P(y) P(f(x, y))] (Q(x, g(x)) P(g(x))))]
em que g(x) e uma fun cao de Skolem. `
5. Convers ao para a forma Prenex normal (do ingles, Prenex normal
form)
O objectivo deste passo e o de mover todas as ocorrencias de quanti-
cadores universais para a esquerda da fbf.
Este passo e obtido utilizando o princpio que diz que se n ao contiver
a vari avel x ent ao x[] signica o mesmo que .
Exemplo 3.2.9 Em relacao `a fbf do Exemplo 3.2.8, teremos:
xy[P(x) ((P(y) P(f(x, y))) (Q(x, g(x)) P(g(x))))]
`
158 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


6. Elimina cao da quanticacao universal
Uma vez que a fbf de origem n ao tinha vari aveis livres, todas as
vari aveis existentes na fbf ap os o passo 5 sao quanticadas universal-
mente, e como a ordem por que aparecem os quanticadores universais
n ao e importante, podemos eliminar a ocorrencia explcita dos quanti-
cadores universais e assumir que todas as vari aveis sao quanticadas
universalmente.
Exemplo 3.2.10 Obtemos assim, a partir do Exemplo 3.2.9,
P(x) ((P(y) P(f(x, y))) (Q(x, g(x)) P(g(x))))
`
7. Obtencao da forma conjuntiva normal
Esta transforma cao e identica `a apresentada na p agina 64.
Exemplo 3.2.11 Obtemos assim, a partir da fbf do Exemplo 3.2.10,
as seguintes transforma coes:
(P(x) (P(y) P(f(x, y)))) (P(x) (Q(x, g(x)) P(g(x))))
(P(x)P(y)P(f(x, y)))(P(x)Q(x, g(x)))(P(x)P(g(x)))
`
8. Elimina cao do smbolo
Esta transforma cao e identica `a apresentada na p agina 64.
Exemplo 3.2.12 A partir da fbf do Exemplo 3.2.11, obtemos:
{P(x) P(y) P(f(x, y)), P(x) Q(x, g(x)), P(x) P(g(x))}
`
9. Elimina cao do smbolo
Esta transforma cao e identica `a apresentada na p agina 65.
Exemplo 3.2.13 A partir das clausulas do Exemplo 3.2.12, obtemos:
{{P(x), P(y), P(f(x, y))}, {P(x), Q(x, g(x))}, {P(x), P(g(x))}}.
`
3.2. O SISTEMA DEDUTIVO 159
Unicacao. A unicacao e o processo que permite determinar se duas
fbfs at omicas podem ser tornadas iguais atraves de substitui coes apropriadas
para as suas variaveis livres. Ao considerar o problema da unica cao temos
que introduzir o conceito de composicao de substitui coes.
Denicao 3.2.1 (Composicao de substituicoes) Sendo s
1
e s
2
duas
substitui coes, a composi cao das substitui c oes s
1
e s
2
, representada por s
1
s
2
,
e a substitui cao s tal que para qualquer fbf , s = ( s
1
) s
2
. Por outras
palavras, (s
1
s
2
) = ( s
1
) s
2
.
A composi cao das substitui coes s
1
= {t
1
/x
1
, . . . , t
n
/x
n
} e s
2
= {u
1
/y
1
,
. . . , u
m
/y
m
} obtem-se aplicando s
2
aos termos de s
1
e adicionando a s
1
os
elementos de s
2
que contem vari aveis que n ao ocorrem em s
1
.
Em termos pr aticos, o calculo de s
1
s
2
e efectuado aplicando s
2
aos termos
de s
1
, adicionando s
2
a s
1
, removendo todos os elementos (t
i
s
2
)/x
i
tais que
t
i
s
2
= x
i
e removendo todos os elementos u
j
/y
j
tais que y
j
{x
1
. . . x
n
}.
Ou seja,
s
1
s
2
= {(t
1
s
2
)/x
1
, . . . , (t
n
s
2
)/x
n
, u
1
/y
1
, . . . , u
m
/y
m
}
({(t
i
s
2
)/x
i
: (t
i
s
2
) = x
i
} {u
j
/y
j
: y
j
{x
1
, . . . , x
m
}}).
Exemplo 3.2.14 Sejam s
1
e s
2
as substitui coes:
s
1
= {f(y)/x, z/y}
s
2
= {a/x, b/y, y/z}
A composicao das substitui coes, s
1
s
2
, e dada por:
s
1
s
2
= {(f(y) {a/x, b/y, y/z})/x, (z {a/x, b/y, y/z})/y, a/x, b/y, y/z}
({(z {a/x, b/y, y/z})/y} {a/x, b/y}) =
= {f(b)/x, y/y, a/x, b/y, y/z} ({y/y} {a/x, b/y}) =
= {f(b)/x, y/z}.
`
Teorema 3.2.1 (Composicao com a substituicao vazia) Para qualquer
substitui cao s, s = s = s.
Demonstrac ao: Trivial.
160 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Teorema 3.2.2 (Associatividade) Para quaisquer substitui coes s
1
, s
2
e
s
3
, s
1
(s
2
s
3
) = (s
1
s
2
) s
3
.
Demonstrac ao: Trivial
Teorema 3.2.3 (Nao comutatividade) A composi cao de substitui coes
n ao e comutativa.
Demonstrac ao: Consideremos, por exemplo, as substituicoes s
1
= {f(x)/x}
e s
2
= {x/y}. Neste caso temos, s
1
s
2
= {f(x)/x, x/y} e s
2
s
1
=
{f(x)/y, f(x)/x}.
Denicao 3.2.2 (Conjunto unicavel) Um conjunto de fbfs at omicas
{
1
, . . . ,
m
} diz-se unic avel se e so se existir uma substitui cao s que torna
identicas todas as fbfs do conjunto, ou seja se e so se existir uma substitui cao
s tal que
1
s = . . . =
m
s. Neste caso, a substitui cao s diz-se o unicador
do conjunto {
1
, . . . ,
m
}.
Se s e um unicador do conjunto {
1
, . . . ,
m
} ent ao {
1
s, . . . ,
m
s} =
{
1
s}.
Exemplo 3.2.15 A substitui cao {a/x, b/y, c/z} e um unicador do con-
junto {P(a, y, z), P(x, b, z)}, dando origem a {P(a, b, c)}. Embora esta subs-
titui cao unique as duas fbfs, ela n ao e o unico unicador. N ao temos que
substituir z por c para as unicar, podemos substituir z por qualquer termo
ou, eventualmente, podemos nem substituir z. `
Denicao 3.2.3 (Unicador mais geral) Dado um conjunto de fbfs at o-
micas {
1
, . . . ,
m
} dene-se o unicador mais geral ou mgu (do ingles,
most general unier) do conjunto como sendo um unicador, s, de {
1
,
. . . ,
m
}, com a seguinte propriedade: se s
1
for um unicador de {
1
, . . . ,

m
} ent ao existe uma substitui cao s
2
tal que s
1
= s s
2
.
Uma propriedade importante do unicador mais geral e o facto de ser unico
(excepto para variantes alfabeticas de vari aveis).
Algoritmo de unica cao. O Algoritmo 3.1, a partir de um conjunto
de fbfs, = {
1
, . . . ,
m
}, produz o unicador mais geral desse conjunto
ou indica insucesso quando este conjunto n ao e unic avel. Este algoritmo
utiliza o Algoritmo 3.2 com os argumentos e a substitui cao vazia.
3.2. O SISTEMA DEDUTIVO 161
Algoritmo 3.1 mgu()
return unifica(, {})
No Algoritmo 3.2:
card e a fun cao que calcula o n umero de elementos do conjunto x (ver
a deni cao de card na p agina 100);
var? e uma fun cao booleana que tem o valor verdadeiro apenas se o
seu argumento corresponder a uma vari avel;
termo? e uma fun cao booleana que tem o valor verdadeiro apenas se
o seu argumento corresponder a um termo.
Algoritmo 3.2 unifica(, s)
if card() = 1 then
return s {s e o unicador mais geral}
else
C
d
:= conj desacordo()
if x, t C
d
such that var?(x) and
termo?(t) and
x n ao ocorre em t
then
unifica( {t/x}, s {t/x})
else
stop {Conjunto n ao unic avel}
end if
end if
O Algoritmo 3.2 utiliza outro algoritmo, chamado conj desacordo (e que n ao
apresentamos formalmente), para determinar o conjunto de desacordo de um
conjunto de fbfs . O conjunto de desacordo de obtem-se localizando o
primeiro constituinte, a partir da esquerda, que n ao e igual em todas as
fbfs em e extraindo das fbfs em todos os componentes que estao nessa
posi cao.
Exemplo 3.2.16 Sendo
= {P(x, f(x, y)), P(x, a), P(x, g(h(k(x))))},
162 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


indicamos a sublinhado os termos que n ao sao iguais em todas as fbfs. Asim,
o conjunto de desacordo e
{f(x, y), a, g(h(k(x)))}.
`

E importante notar que o Algoritmo 3.2 n ao e determinstico. O teste apli-


cado na quinta linha, x, t C
d
such that var?(x) and termo?(t) and x
n ao ocorre em t, n ao especica como escolher x e t, mas apenas pretende
garantir que tal vari avel e termo existem.
Exemplo 3.2.17 Consideremos as clausulas
{P(a, x, f(y)), P(u, v, w), P(a, r, f(c))} (3.79)
nas quais x, y, u, v, w e r sao vari aveis e a e c sao constantes, e sigamos o
funcionamento do Algoritmo 3.1:
mgu({P(a, x, f(y)), P(u, v, w), P(a, r, f(c))}) =
= unifica({P(a, x, f(y)), P(u, v, w), P(a, r, f(c))}, {})
como card({P(a, x, f(y)), P(u, v, w), P(a, r, f(c))}) = 1, o conjunto de de-
sacordo sera calculado.
C
d
:= conj desacordo({P(a, x, f(y)), P(u, v, w), P(a, r, f(c))})
C
d
:= {a, u}
Em C
d
existe um termo (a) e uma vari avel (u) tal que u n ao ocorre em a.
Neste caso o valor devolvido sera o resultado de calcular:
unifica({P(a, x, f(y)), P(u, v, w), P(a, r, f(c))} {a/u}, {} {a/u}) =
= unifica({P(a, x, f(y)), P(a, v, w), P(a, r, f(c))}, {a/u})
Novamente card({P(a, x, f(y)), P(a, v, w), P(a, r, f(c))}) = 1 pelo que o
conjunto de desacordo sera calculado.
C
d
:= conj desacordo({P(a, x, f(y)), P(a, v, w), P(a, r, f(c))})
C
d
:= {x, v, r}
O conjunto de desacordo tem tres elementos, todos eles, neste caso sao
vari aveis, e consequentemente sao tambem termos. O Algoritmo 3.2 n ao
especica como escolher o termo nem como escolher a vari avel a testar no
3.2. O SISTEMA DEDUTIVO 163
conjunto de desacordo. Este e pois um algoritmo n ao determinstico. Supo-
nhamos que sao escolhidos x e v. Podemos concluir que em C
d
existe um
termo (v) e uma vari avel (x) tal que x n ao ocorre em v. Neste caso o valor
devolvido sera o resultado de calcular:
14
unifica({P(a, x, f(y)), P(a, v, w), P(a, r, f(c))} {v/x}, {a/u} {v/x}) =
= unifica({P(a, v, f(y)), P(a, v, w), P(a, r, f(c))}, {a/u, v/x}) =
= unifica({P(a, v, f(y)), P(a, v, w), P(a, r, f(c))} {v/r},
{a/u, v/x} {v/r}) =
= unifica({P(a, v, f(y)), P(a, v, w), P(a, v, f(c))}, {a/u, v/x, v/r})
como card({P(a, v, f(y)), P(a, v, w), P(a, v, f(c))}) = 1, o conjunto de de-
sacordo sera calculado.
C
d
:= conj desacordo({P(a, v, f(y)), P(a, v, w), P(a, v, f(c))})
C
d
:= {f(y), w, f(c)}
Em C
d
existe um termo (f(y)) e uma vari avel (w) tal que w n ao ocorre em
f(y). Neste caso o valor devolvido sera o resultado de calcular:
unifica({P(a, v, f(y)), P(a, v, w), P(a, v, f(c))} {f(y)/w},
{a/u, v/x, v/r} {f(y)/w}) =
= unifica({P(a, v, f(y)), P(a, v, f(c))}, {a/u, v/x, v/r, f(y)/w})
Novamente, como card({P(a, v, f(y)), P(a, v, f(c))}) = 1, o conjunto de de-
sacordo sera calculado.
C
d
:= conj desacordo({P(a, v, f(y)), P(a, v, f(c))})
C
d
:= {y, c}
Em C
d
existe um termo (c) e uma vari avel (y) tal que y n ao ocorre em c.
Neste caso o valor devolvido sera o resultado de calcular:
unifica({P(a, v, f(y)), P(a, v, f(c))} {c/y},
{a/u, v/x, v/r, f(y)/w} {c/y}) =
= unifica({P(a, v, f(c))}, {a/u, v/x, v/r, f(c)/w, c/y})
Agora, card({P(a, v, f(c)}) = 1 pelo que o resultado do algoritmo de uni-
cacao e a substitui cao {a/u, v/x, v/r, f(c)/w, c/y}. `
14
Note-se que estamos a aplicar dois passos seguidos do algoritmo por estes serem obvios.
164 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


{P(f(a), x)} {P(y, h(z)), Q(f(y), z)}
{f(a)/y, h(z)/x}

{Q(f(f(a)), x)}
Figura 3.2: Aplica cao do princpio da resolucao.
Resolu cao com clausulas com variaveis. Podemos agora enunciar o
princpio da resolu cao para o caso em que as clausulas contem vari aveis.
Denicao 3.2.4 (Princpio da resolu cao versao 2) Sejame duas
clausulas, e dois literais tais que e , e e sao unic aveis.
Seja s o unicador mais geral de e . Ent ao, usando o princpio da re-
solucao, podemos inferir a clausula (({}) ( {})) s. A clausula
obtida e chamada o resolvente das clausulas e .
Exemplo 3.2.18 Consideremos as clausulas
= {P(f(a), x)}
e
= {P(y, h(z)), Q(f(y), z)}.
Uma vez que P(f(a), x) , P(y, h(z)) e P(f(a), x) e P(y, h(z))
sao unic aveis com a substitui cao {f(a)/y, h(z)/x}, podemos aplicar o prin-
cpio da resolu cao inferindo a clausula
{Q(f(y), z)} {f(a)/y, h(z)/x} = {Q(f(f(a)), x)}.
Esta aplica cao do princpio da resolucao e apresentada gracamente na Fi-
gura 3.2, na qual em cada clausula se sublinham os literais unicados e ao
lado de uma das linhas correspondentes `a aplicacao do princpio da resolu cao
se indica o unicador utilizado. `
Com a utiliza cao de clausulas com vari aveis, a resolucao pode ser utilizada
para responder a dois tipos de questoes, questoes do tipo verdadeiro ou
falso e questoes do tipo quem ou qual.
As quest oes do tipo verdadeiro ou falso pretendem saber se uma dada
clausula pode ser derivada de um conjunto de clausulas.
3.2. O SISTEMA DEDUTIVO 165
{AD(Sr.B, Marge)} {AD(x, y), Ant(x, y)}

{Sr.B/x, Marge/y}
{Ant(Sr.B, Marge)} {Ant(x, y), AD(y, z), Ant(x, z)}
>
>
>
>
>
>
>
>
>
>
{Sr.B/x, Marge/y}
{AD(Marge, z), Ant(Sr.B, z)} {AD(Marge, Bart)}

{Bart/z}
{Ant(Sr.B, Bart)}
{Ant(Sr.B, Bart)}
>
>
>
>
>
>
>
>
>
>
{}
Figura 3.3: Resolu cao com uma questao do tipo verdadeiro ou falso.
Exemplo 3.2.19 Consideremos as seguintes arma coes, um ascendente
directo de uma pessoa e seu antepassado, um antepassado de um ascen-
dente directo de uma pessoa e um antepassado dessa pessoa,
15
a Marge
e um ascendente directo do Bart e o Sr.B e um ascendente directo da
Marge:
x, y[AD(x, y) Ant(x, y)] (3.80)
x, y, z[Ant(x, y) AD(y, z) Ant(x, z)] (3.81)
AD(Marge, Bart) (3.82)
AD(Sr.B, Marge) (3.83)
Tentemos saber se o Sr.B e um antepassado do Bart, ou seja, tentemos
saber se as fbfs 3.80 a 3.83 permitem derivar a fbf Ant(Sr.B, Bart).
Usando a resolucao, devemos converter as fbfs 3.80 a 3.83 para a forma
clausal, obtendo
{AD(x, y), Ant(x, y)} (3.84)
15
Ver as denic oes das relac oes AD e Ant nas p aginas 146 e 146 e as fbfs 3.65 e 3.66.
166 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


{Ant(x, y), AD(y, z), Ant(x, z)} (3.85)
{AD(Marge, Bart)} (3.86)
{AD(Sr.B, Marge)} (3.87)
e adicionando a estas clausulas a clausula que corresponde `a nega cao da
conclusao
{Ant(Sr.B, Bart)}. (3.88)
Podemos agora realizar a seguinte prova por refuta cao. Para facilitar a
compreensao das provas, `a direita de cada linha, indicamos, em letra mais
pequena, a substitui cao que foi aplicada.
1 {AD(x, y), Ant(x, y)} Prem
2 {Ant(x, y), AD(y, z), Ant(x, z)} Prem
3 {AD(Marge, Bart)} Prem
4 {AD(Sr.B, Marge)} Prem
5 {Ant(Sr.B, Bart)} Prem
6 {Ant(Sr.B, Marge)} Res, (1, 4), {Sr.B/x, Marge/y}
7 {AD(Marge, z), Ant(Sr.B, z)} Res, (2, 6), {Sr.B/x, Marge/y}
8 {Ant(Sr.B, Bart)} Res, (3, 7), {Bart/z}
9 {} Res, (5, 8), {}
O processo de resolucao encontra-se representado gracamente na Figura 3.3,
na qual as premissas sao representadas dentro de um rectangulo. `
Nas quest oes do tipo quem ou qual n ao estamos interessados em saber se
uma dada proposicao e consequencia de um conjunto de clausulas, mas sim
quais sao as inst ancias que fazem com que uma fbf que contem variaveis
livres seja a consequencia de um conjunto de clausulas.
Exemplo 3.2.20 Consideremos, de novo, as fbfs 3.80 a 3.83, e tentemos
saber quem sao os antepassados do Bart. Neste caso, estamos `a procura de
substitui coes que tornam a fbf Ant(x, Bart) uma consequencia das premis-
sas.
De modo a fornecer uma resposta a esta questao, utilizando resolucao, para
alem de necessitarmos de transformar as premissas em forma clausal, podere-
3.2. O SISTEMA DEDUTIVO 167
mos adicionar uma nova fbf que especica quais sao as respostas desejadas
16
x[Ant(x, Bart) R(x)] (3.89)
na qual R(x) tem o seguinte signicado:
R(x) = x e uma resposta.
Usando a resolu cao, podemos construir a seguinte prova:
1 {AD(x, y), Ant(x, y)} Prem
2 {Ant(x, y), AD(y, z), Ant(x, z)} Prem
3 {AD(Marge, Bart)} Prem
4 {AD(Sr.B, Marge)} Prem
5 {Ant(x, Bart), R(x)} Prem
6 {Ant(Marge, Bart)} Res, (1, 3), {Marge/x, Bart/y}
7 {R(Marge)} Res, (5, 6), {Marge/x}
8 {Ant(Sr.B, Marge)} Res, (1, 4), {Sr.B/x, Marge/y}
9 {AD(Marge, z), Ant(Sr.B, z)} Res, (2, 8), {Sr.B/x, Marge/y}
10 {Ant(Sr.B, Bart)} Res, (3, 9), {Bart/z}
11 {R(Sr.B)} Res, (5, 10), {Sr.B/x}
Desta prova concluimos que a Marge e o Sr.B sao os antepassados do Bart.
Este processo de resolucao encontra-se representado gracamente na Fi-
gura 3.4. `
Exemplo 3.2.21 Consideremos as proposi coes que armam que todas as
pessoas tem uma mae, todas as maes sao mulheres e que o Bart e uma
pessoa:
x[Pessoa(x) y[M ae(y, x)]] (3.90)
x, y[M ae(x, y) Mulher(x)] (3.91)
Pessoa(Bart) (3.92)
Suponhamos que queramos saber quais as mulheres que estao envolvidas
nestas proposi coes. Estamos novamente numa situacao em que tentamos
responder a uma questao do tipo quem ou qual, e para a responder adi-
cionaremos `as nossas premissas a informa cao de que as respostas pretendidas
correspondem aos nomes das mulheres
x[Mulher(x) R(x)]. (3.93)
16
A adic ao desta nova fbf n ao e obrigat oria pois estamos ` a procura de f ormulas ch as
que contenham o predicado Ant com Bart como segundo argumento. No entanto, esta
abordagem permite explicitar quais sao as entidades que correspondem a respostas.
168 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


{AD(Sr.B, Marge)} {AD(x, y), Ant(x, y)}
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
{Sr.B/x,
Marge/y}
{Marge/x,
Bart/y}
{Ant(Sr.B, Marge)} {Ant(x, y), AD(y, z), Ant(x, z)}
>
>
>
>
>
>
>
>
>
>
{Sr.B/x, Marge/y}
{AD(Marge, z), Ant(Sr.B, z)} {AD(Marge, Bart)}
>
>
>
>
>
>
>
>
>
>

{Bart/z}
{Ant(Sr.B, Bart)}
{Ant(Marge, Bart)} {Ant(x, Bart), R(x)}
{R(Sr.B)} {R(Marge)}
>
>
>
>
>
>
>
>
>
>

{Sr.B/x} {Marge/x}
Figura 3.4: Resolu cao com uma questao do tipo quem ou qual.
3.3. O SISTEMA SEM

ANTICO 169
Transformando as premissas para a forma clausal, obtemos as seguintes
clausulas:
{Pessoa(x), M ae(m(x), x)} (3.94)
{M ae(x, y), Mulher(x)} (3.95)
{Pessoa(Bart)} (3.96)
{Mulher(x), R(x)}. (3.97)
Note-se que m e uma fun cao de Skolem em que m(x) representa a m ae de
x.
Usando o princpio da resolucao podemos obter a seguinte prova:
1 {Pessoa(x), M ae(m(x), x)} Prem
2 {M ae(x, y), Mulher(x)} Prem
3 {Pessoa(Bart)} Prem
4 {Mulher(x), R(x)} Prem
5 {M ae(m(Bart), Bart)} Res, (1, 3), {Bart/x}
6 {Mulher(m(Bart))} Res, (2, 5), {m(Bart)/x, Bart/y}
7 {R(m(Bart))} Res, (4, 6), {m(Bart)/x}
Desta prova concluimos que a unica mulher conhecida e a mae do Bart, cujo
nome n ao esta explicitado nas premissas. `
3.2.3 Propriedades do sistema dedutivo
O sistema dedutivo da l ogica de primeira ordem apresenta as mesmas pro-
priedades que enunci amos na Seccao 2.2.4 para a l ogica proposicional. As
demonstracoes sao identicas.
3.3 O sistema semantico
3.3.1 A semantica da logica de primeira ordem
O sistema semantico especica em que condicoes as fbfs da nossa linguagem
sao verdadeiras ou falsas. Recorde-se que uma fbf e apenas uma sequencia de
smbolos, combinados segundo determinadas regras sint acticas. Assim, para
determinar a verdade ou falsidade de uma fbf sera necessario, em primeiro
lugar, interpretar cada um dos seus smbolos constituintes por forma a
170 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Figura 3.5: Situa cao do mundo.
atribuir um signicado `a fbf. O passo seguinte sera vericar se o signicado
atribudo `a fbf esta de acordo com o mundo ou com a situacao que pretende-
mos descrever. Em caso armativo diremos que a fbf e verdadeira, em caso
contr ario diremos que a fbf e falsa.
Exemplo 3.3.1 Suponhamos que desejavamos descrever a situa cao repre-
sentada na Figura 3.5, usando o seguinte conjunto de fbfs:
17

Arvore(a
1
) (3.98)

Arvore(a
2
) (3.99)
Casa(c
1
) (3.100)
Casa(c
2
) (3.101)
Adjacente(c
2
, a
1
) (3.102)
Adjacente(a
1
, a
2
) (3.103)
Adjacente(a
2
, c
1
) (3.104)
Adjacente(c
2
, esquerda de(a
2
)) (3.105)
Juntamente com fbfs que relacionam alguns dos predicados utilizados nas
f ormulas:
x, y[Adjacente(x, y) Adjacente(y, x)] (3.106)
x, y, z[(Adjacente(x, y) Adjacente(y, z) x = y) Entre(x, y, z)]
(3.107)
17
Propositadamente n ao apresentamos o signicado intuitivo destas relac oes.
3.3. O SISTEMA SEM

ANTICO 171
A fbf Adjacente(a
1
, a
2
) so far a sentido se atribuirmos um signicado aos
smbolos Adjacente, a
1
e a
2
. Suponhamos que fornecemos um signicado
para estes smbolos, de modo a que a fbf Adjacente(a
1
, a
2
) signica a arvore
de copa preta e adjacente `a arvore de copa branca. De acordo com esta
intrepreta cao, a fbf Adjacente(a
1
, a
2
) e verdadeira. `
Este processo para determinar se uma fbf e verdadeira ou falsa vai ser usado
nesta sec cao, mas precisa de ser formalizado para ter qualquer utilidade
num sistema l ogico. Com efeito, h a pelo menos dois aspectos que n ao sao
aceitaveis nos passos que seguimos no Exemplo 3.3.1. Em primeiro lugar,
o signicado da fbf foi dado por uma frase em lngua natural, com todas
as ambiguidades que da podem decorrer (por exemplo, o signicado da
relacao Adjacente e ambguo; sera que a arvore de copa branca tambem
seria adjacente `a arvore de copa preta se entre estas duas entidades existisse
uma casa?). Em segundo lugar, a descri cao da situacao em causa foi feita
atraves de uma gura, que n ao pode, como e obvio, ser considerada uma
descricao formal, embora seja muito util.
Assim, o que faremos e denir formalmente, como determinar se uma fbf e
verdadeira ou falsa. Comecaremos por ver como descrever um mundo ou
situacao. Esta descricao designa-se por conceptualiza cao.
Dene-se uma conceptualiza cao como um triplo (D, F, R) em que:
1. D e o conjunto das entidades que constituem o mundo sobre o qual
vamos falar, o chamado universo de discurso. No universo de discurso
denimos todas as entidades que poderemos considerar (note-se que
estas entidades correspondem a um subconjunto de todas as entida-
des do mundo real; elas correspondem apenas `aquelas entidades que
nos interessa considerar). Estas poder ao ser entidades concretas (por
exemplo, o planeta Venus, a cidade de Lisboa, Vasco da Gama ou um
conjunto de blocos), abstractos (por exemplo, o conceito de beleza ou
o conjunto dos n umeros naturais) ou ccionais (por exemplo, Sherlock
Holmes ou a Branca de Neve).
2. F e o conjunto das fun coes que podem ser aplicadas `as entidades do
universo de discurso. Tal como na explicita cao do universo de discurso
em que apenas consideramos um subconjunto de todas as entidades
existentes (aquele subconjunto de entidades que nos interessa para
uma dada aplicacao), aqui, entre todas as possveis fun coes sobre as
entidades do universo de discurso, apenas iremos considerar um sub-
172 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


conjunto. Por exemplo, se o universo de discurso inclusse os n umeros
naturais, uma das fun coes que poderamos considerar, seria a fun cao
sucessor; se o universo de discurso contivesse as entidades represen-
tadas na Figura 3.5, uma das fun coes que poderamos considerar seria
a fun cao direita de.
Recorde-se que uma fun cao de aridade n e representada por um con-
junto de (n + 1)-tuplos de entidades do universo de discurso. Por
exemplo, se a situa cao a descrever fosse a situacao representada na
Figura 3.5 em que apenas existiam 4 entidades, , , e , a fun cao
direita de referida atr as, seria denida por {( , ), ( , ), ( , )}.
Note-se que uma fun cao pode ser parcial, ou seja, pode n ao estar de-
nida para todos os elementos do universo de discurso, como e o caso
da fun cao direita de.
3. R e o conjunto das rela coes ou predicados que podem ser aplicados `as
entidades do universo de discurso. Novamente, entre todas as rela coes
possveis envolvendo as entidades do universo de discurso, apenas con-
sideramos aquelas que consideramos relevantes. Por exemplo, se o
universo inclusse os n umeros naturais, uma das possveis relacoes se-
ria a relacao Menor; se o universo de discurso contivesse as enti-
dades representadas na Figura 3.5, uma das relacoes que poderamos
considerar seria a relacao Casa.
Recorde-se que uma relacao de aridade n e denida por um conjunto
de n-tuplos de entidades do universo de discurso. Por exemplo, se o
universo de discurso fossem os n umeros naturais de 1 a 3, a rela cao
Menor seria denida por {(1, 2), (1, 3), (2, 3)}.
Denicao 3.3.1 (Conceptualizacao) Uma conceptualiza cao e um triplo
(D, F, R) em que De o conjunto das entidades que constituem o mundo sobre
o qual vamos falar, F e o conjunto das fun coes que podem ser aplicadas `as
entidades de D, e R e o conjunto das rela coes ou predicados que podem ser
aplicados `as entidades de D.
Uma conceptualizacao descreve formalmente uma situacao ou um mundo.

E
importante notar que, dada uma situacao, n ao existir a apenas uma concep-
tualiza cao que a descreve. A escolha de uma determinada conceptualiza cao
depender a dos aspectos relevantes para a aplica cao em vista.
Exemplo 3.3.2 Consideremos novamente a situacao representada na Fi-
gura 3.5. Podemos criar a seguinte conceptualizacao:
3.3. O SISTEMA SEM

ANTICO 173
1. Universo de discurso.
D ={ , , , }
2. Conjunto de funcoes. Consideramos apenas duas fun coes:
f
1
= {( , ), ( , ), ( , )}
f
2
= {( , ), ( , ), ( , )}
Por conseguinte:
F = {{( , ), ( , ), ( , )}, {( , ), ( , ), ( , )}}
3. Conjunto de rela coes. Iremos considerar quatro relacoes:
R
1
= {( ), ( )}
R
2
= {( ), ( )}
R
3
= {( , ), ( , ), ( , ), ( , ), ( , ), ( , )}
R
4
= {( , , ), ( , , )}
Ent ao:
R = {{( ), ( )}, {( ), ( )},
{( , ), ( , ), ( , ), ( , ), ( , ), ( , )},
{( , , ), ( , , )}}
`
Uma vez denido o conceito de conceptualiza cao, podemos passar `a deni cao
de um conceito fundamental em semantica, o conceito de interpreta cao. Uma
interpretacao e uma funcao, I, cujo domnio sao as entidades da linguagem
e o contradomnio sao as entidades da conceptualizacao. O facto de uma
interpreta cao ser uma fun cao das entidades da linguagem para as entida-
des da conceptualiza cao signica, entre outras coisas, que cada constante
da linguagem e associada apenas a uma entidade da conceptualiza cao mas
tambem que v arias constantes da linguagem podem ser associadas `a mesma
entidade da conceptualizacao. Sendo uma entidade da linguagem, e habi-
tual escrever I() para representar o resultado da aplicacao da interpreta cao
I `a entidade .
Neste captulo apenas nos preocupamos em fornecer interpretacoes para
fbfs fechadas.
18
18
Um tratamento de interpreta c oes envolvendo variaveis livres pode ser consultado em
[Mendelson 87, p aginas 46 a 51].
174 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Denicao 3.3.2 (Interpreta cao versao 2) Dada uma conceptualiza cao
(D, F, R), uma interpreta cao, I, deve obedecer `as seguintes condi coes:
1. Cada constante individual f
0
i
e associada com uma entidade do uni-
verso de discurso D;
2. Cada letra de fun cao f
n
i
e associada a uma fun cao de F. Se f
n
i
e
uma letra de funcao com aridade n, correspondendo `a fun cao I(f
n
i
)
da conceptualiza cao, e se t
1
, . . ., t
n
sao termos, ent ao f
n
i
(t
1
, . . . , t
n
)
corresponde `a entidade I(f
n
i
)(I(t
1
), . . . , I(t
n
)) da conceptualiza cao;
3. A cada letra de predicado P
n
i
e associada uma rela cao de R.
Exemplo 3.3.3 Considerando os exemplos 3.3.1 e 3.3.2, podemos fornecer
a seguinte interpretacao:
I(a
1
)
I(a
2
)
I(c
1
)
I(c
2
)
I(esquerda de) {( , ), ( , ), ( , )}
I(direita de) {( , ), ( , ), ( , )}
I(

Arvore) {( ), ( )}
I(Casa) {( ), ( )}
I(Adjacente) {( , ), ( , ), ( , ), ( , ), ( , ), ( , )}
I(Entre) {( , , ), ( , , )} `
Denicao 3.3.3 (Satisfacao versao 2) Dada uma fbf , e uma inter-
pretacao I, diz-se que I satisfaz nas seguintes condi coes:
1. Se for uma fbf at omica, ou seja, uma fbf da forma P
n
i
(t
1
, . . . , t
n
), a
interpreta cao I satisfaz se e so se o n-tuplo (I(t
1
), . . . , I(t
n
)) for um
elemento da relacao I(P
n
i
).
2. A interpretacao I satisfaz a fbf se e so se I n ao satiszer .
3.3. O SISTEMA SEM

ANTICO 175
3. A interpreta cao I satisfaz a fbf se e so se I satiszer ambas as
fbfs, e .
4. A interpreta cao I satisfaz a fbf se e so se I satiszer pelo menos
uma das fbfs, ou .
5. A interpretacao I satisfaz a fbf se e so se I n ao satiszer ou
I satiszer .
6. A interpreta cao I satisfaz a fbf x[] se e so se, para toda a substitui cao
{a/x}, em que a e qualquer constante individual, I satiszer
{a/x}.
7. A interpretacao I satisfaz a fbf x[] se e so se existir uma substitui cao
{a/x}, em que a e uma constante individual, tal que I satisfaz
{a/x}.
Exemplo 3.3.4 Considerando os exemplos 3.3.1 a 3.3.3, a interpreta cao I
satisfaz as fbfs

Arvore(a
1
)
e
Adjacente(c
2
, esquerda de(a
2
)).
Com efeito,
1.

Arvore(a
1
).
O tuplo (I(a
1
)) = ( ) pertence `a rela cao I(

Arvore) = {( ), ( )};
2. Adjacente(c
2
, esquerda de(a
2
)).
O tuplo
(I(c
2
), I(esquerda de(a
2
))) = ( , I(esquerda de)(I(a
2
))) =
= ( , I(esquerda de)( )) = ( , )
pertence `a rela cao
I(Adjacente) = {( , ), ( , ), ( , ), ( , ), ( , ), ( , )}.
`
176 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Denicao 3.3.4 (F ormula verdadeira segundo uma interpreta cao)
Dizemos que a fbf e verdadeira segundo a interpretacao I, se e so se I sa-
tiszer ; em caso contr ario, diremos que e falsa segundo a interpretacao
I (ou que a interpreta cao I falsica a fbf ).
Se for verdadeira segundo a interpreta cao I escreveremos |=
I
.
Denicao 3.3.5 Analogamente ao que denimos em l ogica proposicional,
dada uma fbf , dizemos que:
e satisfazvel se existe uma interpreta cao que satisfaz ;
e contraditoria ou nao satisfazvel se nenhuma interpreta cao satisfaz
;
e tautol ogica se todas as interpreta coes satisfazem ;
e falsic avel se existe uma interpreta cao que nao satisfaz .
Denicao 3.3.6 (Modelo) Uma interpreta cao que satisfaz todas as fbfs de
um conjunto de fbfs, chama-se um modelo dessas fbfs.
Denicao 3.3.7 Caso exista um modelo para um conjunto de fbfs estas
dizem-se satisfazveis. Denem-se analogamente os conceitos de conjunto de
fbfs nao satisfazveis (ou contraditorias), tautol ogicas e falsic aveis.
Exemplo 3.3.5 Nos exemplos 3.3.1 a 3.3.4, a interpreta cao I satisfaz todas
as fbfs do seguinte conjunto (expressoes 3.98 a 3.107):
{

Arvore(a
1
),

Arvore(a
2
), Casa(c
1
), Casa(c
2
), Adjacente(c
2
, a
1
),
Adjacente(a
1
, a
2
), Adjacente(a
2
, c
1
), Adjacente(c
2
, esquerda de(a
2
)),
x, y[Adjacente(x, y) Adjacente(y, x)],
x, y, z[(Adjacente(x, y) Adjacente(y, z) x = y) Entre(x, y, z)]}.
Portanto, esta interpreta cao e um modelo destas fbfs. `
Exemplo 3.3.6 Se considerarmos, contudo, a interpreta cao J, denida do
seguinte modo:
J(a
1
)
J(a
2
)
J(c
1
)
3.3. O SISTEMA SEM

ANTICO 177
J(c
2
)
J(esquerda de) {( , ), ( , ), ( , )}
J(direita de) {( , ), ( , ), ( , )}
J(

Arvore) {( ), ( )}
J(Casa) {( ), ( )}
J(Adjacente) {( , ), ( , ), ( , ), ( , ), ( , ), ( , )}
J(Entre) {( , , ), ( , , )}
As fbfs Adjacente(c
2
, a
1
) e Adjacente(a
2
, c
1
), por exemplo, tem o valor falso
pelo que J n ao e um modelo das fbfs anteriores. `
Denicao 3.3.8 (Consequencia logica) Seja um conjunto de fbfs fe-
chadas e seja uma fbf fechada, diz-se que e uma consequencia l ogica
de , escrito |= , se todas as interpreta coes que sejam modelos de
tambem sao modelos de .
Teorema 3.3.1 Seja um conjunto de fbfs fechadas e seja uma fbf fe-
chada, ent ao e uma consequencia l ogica de se e so se {} n ao e
satisfazvel.
Demonstrac ao:
Se e uma consequencia l ogica de ent ao {} n ao e satisfazvel.
Suponhamos que e uma consequencia l ogica de . Seja I um modelo
de . Por deni cao, I tambem e um modelo de . Ent ao I n ao e um
modelo de {}, pelo que este conjunto n ao e satisfazvel.
Se {} n ao e satisfazvel ent ao e uma consequencia l ogica de .
Seja I uma interpretacao. Suponhamos que I e um modelo de . Como
{} n ao e satisfazvel, I n ao pode ser um modelo de {}. Ent ao
qualquer modelo de e tambem um modelo de .

3.3.2 O metodo de Herbrand


Uma das questoes essenciais para a Informatica e conhecida pelo problema
da decisao. De uma forma simples, o enunciado geral do problema de decisao
178 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Frases da linguagem
Frases demonstraveis
como contradicoes
Frases correspondentes
a contradicoes
Frases demonstraveis
como tautologias
Frases correspondentes
a tautologias
Figura 3.6: Representa cao do teorema da incompletude de G

odel.
corresponde, a partir de um conjunto innito de entidades C pertencentes a
uma linguagem formal, tentar saber se e possvel escrever um programa (um
procedimento mecanico) que recebe uma frase da linguagem, f , e e capaz
de decidir, ap os um n umero nito de passos, se f C ou se f C. Se tal
programa for provado existir o problema diz-se decidvel, em caso contr ario,
o problema diz-se indecidvel. Dentro da classe dos problemas indecidveis,
pode acontecer que seja garantido que existe um procedimento mecanico que
ap os um n umero nito de passos e capaz de decidir se f C, mas que pode
nunca terminar se f C. Neste caso, o problema diz-se semi-decidvel.
Os principais resultados relacionados com a decidibilidade foram demons-
trados por Kurt G odel (19061978), o qual provou que dentro de determina-
dos ramos da matematica, existir a sempre um conjunto de arma coes que
n ao podem ser provadas como verdadeiras ou como falsas, usando as re-
gras e os axiomas desse ramo das matematicas. Este resultado e conhecido
pelo teorema da incompletude de G

odel (Figura 3.6). Uma consequencia


deste resultado e que todas as teorias matematicas com uma complexidade
interessante sao incompletas, ou seja, cada uma contem mais armacoes
verdadeiras do que e possvel provar com as regras da teoria.
Um outro resultado, conhecido pelo teorema da indecidibilidade de G

odel,
arma que em certas classes de teorias matematicas n ao existe um algoritmo
para decidir se uma frase arbitraria e um teorema da teoria.
A aplicacao de um problema de decisao `a l ogica corresponde a determinar
se e possvel escrever um programa que decide se |= se verica, sendo
uma fbf arbitr aria. Para l ogica proposicional, sabemos do Captulo 2 que este
3.3. O SISTEMA SEM

ANTICO 179
procedimento existe. Infelizmente, um procedimento equivalente n ao pode
ser desenvolvido para a l ogica de primeira ordem. Este resultado negativo,
demonstrado por Alonzo Church em 1936, e traduzido pelo seguinte teorema
que apresentamos sem demonstracao:
Teorema 3.3.2 (Indecidibilidade da logica de primeira ordem)
N ao existe um algoritmo para decidir se uma frase arbitr aria de L
LPO
e uma
tautologia.
Contudo, a l ogica de primeira ordem e semi-decidvel, ou seja, existe um
algoritmo que e garantido terminar num n umero nito de passos, demons-
trando que um conjunto de f ormulas n ao e satisfazvel, mas que pode nunca
terminar se o conjunto de f ormulas n ao for n ao satisfazvel. Nesta seccao
consideramos um metodo para determinar se um determinado conjunto de
clausulas e n ao satisfazvel, ou seja que n ao existe nenhum modelo que sa-
tisfaca todas as clausulas do conjunto. Os resultados que apresentamos sao
conhecidos pelo metodo de Herbrand.
19
Recordemos que o objectivo da l ogica e determinar os argumentos que sao
v alidos, ou seja, os argumentos (, ) tais que |= . Do Teorema 3.3.1, sa-
bemos que provar que |= corresponde a provar que o conjunto {}
n ao e satisfazvel. Ou seja, teremos que provar que n ao existe nenhuma in-
terpreta cao que satisfaz o conjunto, o que parece ser um problema muito
complicado. No entanto, existe uma classe muito mais simples de inter-
pretacoes, as interpretacoes de Herbrand, aplic aveis a conjuntos de clausulas,
as quais correspondem a tudo que e necessario investigar para determinar a
n ao satisfazibilidade.
Denicao 3.3.9 (Universo de Herbrand) Seja um conjunto de clau-
sulas. O universo de Herbrand dene-se atraves dos seguintes conjuntos:
1. Seja U
0
o conjunto de todas as constantes existentes em .
Se n ao existirem constantes em , ent ao U
0
sera constitudo por uma
unica constante, por exemplo, U
0
= {a}.
2. Para i 0, seja U
i+1
a uni ao de U
i
com o conjunto de todos os termos
da forma f
n
(t
1
, . . . , t
n
) para todas as fun coes n-arias (n i) existentes
em , nos quais t
1
, . . ., t
n
sao elementos de U
i
.
19
Em honra do matem atico frances Jacques Herbrand (19081931), que o inventou.
180 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Cada um dos conjuntos U
i
chama-se o conjunto das constantes de Herbrand
de ao nvel i.
O conjunto U

= lim
i
U
i
chama-se o universo de Herbrand para .
O universo de Herbrand e o conjunto de todos os termos fechados que e
possvel construir a partir do conjunto de clausulas . Se contem um
smbolo de fun cao, por exemplo, a fun cao de um argumento f, ent ao o
universo de Herbrand e innito uma vez que f(f(. . . f(a) . . .)) U

.
Exemplo 3.3.7 Seja = {{P(x, a)}, {Q(b, y)}}. Ent ao
U
0
= {a, b}
U

= {a, b} `
Exemplo 3.3.8 Seja = {{P(a)}, {P(x), Q(f(x))}}. Ent ao
U
0
= {a}
U
1
= {a, f(a)}
U
2
= {a, f(a), f(f(a))}
.
.
.
U

= {a, f(a), f(f(a)), f(f(f(a))), . . .} `


Exemplo 3.3.9 Seja = {{P(f(x), a, g(y), b)}}. Ent ao
U
0
= {a, b}
U
1
= {a, b, f(a), f(b), g(a), g(b)}
U
2
= {a, b, f(a), f(b), g(a), g(b), f(f(a)), f(f(b)), f(g(a)), f(g(b)), g(f(a)),
g(f(b)), g(g(a)), g(g(b))}
.
.
.
`
Denicao 3.3.10 (Base de Herbrand) Seja um conjunto de clausulas.
O conjunto de todas as fbfs at omicas da forma P
n
(t
1
, . . . , t
n
) para todos os
predicados n-arios, P
n
(n 0), existentes em , em que t
1
, . . . , t
n
perten-
cem ao universo de Herbrand para tem o nome de base de Herbrand para
3.3. O SISTEMA SEM

ANTICO 181
e e representado por

.
20

A base de Herbrand para um conjunto de clausulas e o conjunto de to-


das as fbfs at omicas fechadas
21
que e possvel construir com as letras de
predicado em e com os termos em U

.
Notemos que poderamos ter denido, tanto o universo de Herbrand como
a base de Herbrand para um conjunto arbitr ario de fbfs . No entanto,
se n ao fosse um conjunto de clausulas mas sim um conjunto arbitr ario
de fbfs, a base de Herbrand n ao conteria todos os termos fechados que e
possvel construir a partir de . Para perceber esta armacao, consideremos
a fbf P(a) x[P(x)]. Usando a Deni cao 3.3.9, o universo de Herbrand
apenas continha a constante a, no entanto, sera possvel construir termos a
partir da fbf x[P(x)]. A transforma cao da fbf original em forma clausal
origina as clausulas {{P(a)}, {P(b)}}, nas quais b e uma constante de
Skolem e o universo de Herbrand sera {a, b}.
Exemplo 3.3.10 Considerando o Exemplo 3.3.7, em que = {{P(x, a)},
{Q(b, y)}}, a base de Herbrand para e

= {P(a, a), P(a, b), P(b, a), P(b, b), Q(a, a), Q(a, b), Q(b, a), Q(b, b)}.
Note-se a ausencia de literais negativos, resultante directamente da denicao
de base de Herbrand. Note-se tambem que para qualquer letra de predicado
n ao mencionada em , por exemplo, R, n ao e possvel gerar a partir de
uma cl ausula que contenha a letra de predicado R, e da a sua n ao inclus ao
na base de Herbrand para . `
Exemplo 3.3.11 Considerando o Exemplo 3.3.8, em que = {{P(a)},
{P(x), Q(f(x))}}. Ent ao, a base de Herbrand para e

= {P(a), Q(a), P(f(a)), Q(f(a)), P(f(f(a))), Q(f(f(a))), . . .}.


`
Iremos considerar interpreta coes sobre um universo de discurso que corres-
ponde ao universo de Herbrand, as interpreta coes de Herbrand. Seja um
conjunto de clausulas. Uma interpreta cao sobre o universo de Herbrand de
e uma atribui cao de constantes e fun coes a U

e de rela coes `as entidades


existentes em .
20
Utilizamos uma letra gregra mai uscula, , pelo facto da base de Herbrand ser um
conjunto de fbfs.
21
Note-se que, neste caso, todas as fbfs sao tambem ch as.
182 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Denicao 3.3.11 (Interpreta cao de Herbrand) Seja um conjunto de
clausulas, U

o universo de Herbrand de e I
H
uma interpreta cao de
sobre U

(ou seja, uma interpreta cao cujo universo de discurso e U

).
A interpreta cao I
H
diz-se uma interpretacao de Herbrand de se satisfaz
as seguintes condi coes:
1. A interpretacao I
H
transforma todas as constantes em si pr oprias.
c U
0
I
H
(c) c.
2. Sendo f
n
uma letra de fun cao de aridade n e h
1
, . . . , h
n
elementos
de U

, a interpreta cao I
H
associa f
n
a uma fun cao que transforma o
n-tuplo (h
1
, . . . , h
n
), um elemento de U

, em f
n
(h
1
, . . . , h
n
), outro
elemento de U

.
I
H
(f
n
(h
1
, . . . , h
n
)) f
n
(I
H
(h
1
), . . . , I
H
(h
n
)).
3. Nao existem restricoes quanto `a associa cao de letras de predicado em
.
Exemplo 3.3.12 Seja = {{P(x, a)}, {Q(b, y)}}, ent ao
I
H
(a) a
I
H
(b) b
Sabemos do Exemplo 3.3.10 que a base de Herbrand de e

= {P(a, a), P(a, b), P(b, a), P(b, b), Q(a, a), Q(a, b), Q(b, a), Q(b, b)}.
Suponhamos que
I
H
(P) = {(a, a), (b, a)}
e que
I
H
(Q) = { }
Isto signica que tanto P(a, a) como P(b, a) sao satisfeitas por esta inter-
pretacao e que tanto Q(b, a) como Q(b, b), por exemplo, n ao sao satisfeitas
por esta interpretacao. Ou seja, a interpreta cao I
H
e um modelo do conjunto
{P(a, a), P(b, a), Q(b, a), Q(b, b)}. `
3.3. O SISTEMA SEM

ANTICO 183
Seja {P
1
, P
2
, . . . , P
n
, . . .} a base de Herbrand de . Uma interpreta cao de
Herbrand pode ser representada por um conjunto {Q
1
, Q
2
, . . . , Q
n
, . . .}, em
que cada um dos Q
i
e ou P
i
ou P
i
. O signicado desta interpreta cao e que,
se Q
i
= P
i
, ent ao P
i
tem o valor verdadeiro e se Q
i
= P
i
, ent ao P
i
tem
o valor falso. Por abuso de linguagem, representamos uma interpretacao
de Herbrand por um subconjunto da base de Herbrand correspondente `as
fbfs que ela satisfaz, ou seja, n ao representamos as fbfs que ela n ao satisfaz.
Uma vez que numa interpreta cao de Herbrand as associacoes `as constantes
e `as fun coes de sao determinadas `a partida, e possvel identicar uma
interpretacao de Herbrand com um subconjunto da base de Herbrand. Para
qualquer interpreta cao de Herbrand, o conjunto correspondente da base de
Herbrand e o conjunto de todos os literais que sao satisfeitos pela inter-
pretacao.
Exemplo 3.3.13 A interpreta cao de Herbrand do Exemplo 3.3.12 sera re-
presentada por I
H
= {P(a, a), P(b, a)}. `
Exemplo 3.3.14 Seja
= {{P(x), Q(x)}, {R(f(y))}}.
O universo de Herbrand de e
U

= {a, f(a), f(f(a)), f(f(f(a))), . . .}.


A base de Herbrand e

= {P(a), Q(a), R(a), P(f(a)), Q(f(a)), R(f(a)),


P(f(f(a))), Q(f(f(a)))R(f(f(a))),
P(f(f(f(a)))), Q(f(f(f(a)))), R(f(f(f(a)))), . . .}.
Algumas das interpreta coes de Herbrand para este conjunto sao:
I
H
1
= {P(a), Q(a), R(a), P(f(a)), Q(f(a)), R(f(a)), . . .}.
I
H
2
= {R(a), R(f(a)), . . .}.
I
H
3
= {P(a), Q(a), P(f(a)), Q(f(a)), . . .}.
`
184 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Denicao 3.3.12 (Modelo de Herbrand) Um modelo de Herbrand para
um conjunto de clausulas e uma interpreta cao de Herbrand, I
H
, que
satisfaz todas as clausulas de .
Denicao 3.3.13 Dada uma interpreta cao, I, sobre um universo de dis-
curso D, uma interpreta cao de Herbrand, I
H
, correspondente a I e uma
interpretacao de Herbrand que satisfaz as seguintes condi coes:
1. Cada elemento h
i
U

e transformado num elemento d


i
D.
2. Se P
n
(d
1
, . . . , d
n
) e satisfeito (respectivamente, n ao satisfeito) pela
interpreta cao I, ent ao P
n
(h
1
, . . . , h
n
) e tambem satisfeito (respectiva-
mente, n ao satisfeito) pela interpretacao I
H
.
Teorema 3.3.3 Seja um conjunto de clausulas. O conjunto tem um
modelo se e so se tem um modelo de Herbrand.
Demonstrac ao:
Se tem um modelo, ent ao tem um modelo de Herbrand.
Seja I um modelo de . Seja I
H
a interpretacao de Herbrand denida
do seguinte modo
I
H
= {P
n
(t
1
, . . . , t
n
) : (I
H
(t
1
), . . . , I
H
(t
n
)) I(P
n
)},
em que P
n
e um predicado de aridade n pertencente `a base de Herbrand.
Esta interpreta cao de Herbrand contem todas as fbfs at omicas ch as que
pertencem `a base de Herbrand e que sao satisfeitas pela interpreta cao
I. Falta-nos mostrar que I
H
e um modelo de .
Recordemos que um conjunto de clausulas e uma fbf fechada que cor-
responde a uma conjun cao de disjun coes de literais. Esta fbf pode ter
vari aveis, as quais estao quanticadas universalmente. Para mostrar
que I
H
e um modelo de , bastar a mostrar que para qualquer atri-
bui cao de elementos do universo de Herbrand `as vari aveis existentes em
, pelo menos um literal em cada disjun cao pertence ao conjunto I
H
.
Uma vez que I e um modelo do conjunto de clausulas , a clausula re-
sultante de qualquer atribuicao de constantes `as vari aveis em satisfaz
a interpretacao I
H
, portanto I
H
e um modelo de .
Se tem um modelo de Herbrand, ent ao tem um modelo.
Dado que um modelo de Herbrand e um modelo, esta demonstra cao e
trivial.

3.3. O SISTEMA SEM

ANTICO 185
. . . . . . . . . . . . . . . . . . . . . . . .
P(b, a) P(b, a)
. . .
P(b, a) P(b, a)
P(a, b) P(a, b)
P(a, a)
Figura 3.7:

Arvore de decisao para o conjunto = {{P(x, a)}, {Q(b, y)}}.
Corolario 3.3.1 Seja um conjunto de clausulas. Ent ao e n ao satis-
fazvel se e so se n ao tem nenhum modelo de Herbrand.
Demonstrac ao: Resulta directamente do Teorema 3.3.3.
Com o metodo de Herbrand conseguimos transformar o problema de saber se
um dado conjunto de clausulas e n ao satisfazvel no problema de determinar
que n ao existe nenhum modelo de Herbrand que satisfaca esse conjunto de
clausulas. Esta arma cao parece n ao corresponder a um grande progresso,
no entanto, como a base de Herbrand e constituda por fbfs ch as, estamos
pr oximos de uma situacao an aloga `a da l ogica proposicional, pois n ao temos
que lidar com vari aveis. Dada uma base de Herbrand, podemos construir
uma arvore de decisao bin aria para os modelos das clausulas subjacentes a
essa base de Herbrand.
Exemplo 3.3.15 Consideremos o Exemplo 3.3.10. Na Figura 3.7 mos-
tramos, parcialmente, a arvore de decisao para determinar os modelos de
= {{P(x, a)}, {Q(b, y)}}. Esta arvore de decisao tem 8 nveis, o n umero
de elementos da base de Herbrand, indicando as suas folhas com r otulo V
as interpreta coes que tornam todas as clausulas do conjunto verdadeiras. `
Quando a base de Herbrand e um conjunto innito, a arvore de decisao
correspondente e tambem innita.
Notemos que, em qualquer n o da arvore de decisao, o caminho desde a raiz
186 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


. . . . . . . . . . . . . . . . . . . . . . . .
P(b, a) P(b, a)
. . .
P(b, a) P(b, a)
P(a, b) P(a, b)
P(a, a)
Figura 3.8: N o para o qual se considera uma interpreta cao parcial.
ate esse n o determina uma interpretacao parcial associada `a base de Her-
brand, pois determina os valores l ogicos dos elementos da base de Herbrand
ate esse n o. Esta interpreta cao diz-se parcial pois n ao estao determinados
todos os valores para as fbfs at omicas.
Exemplo 3.3.16 Consideremos novamente o Exemplo 3.3.15. O n o indi-
cado dentro de um rectangulo na Figura 3.8 corresponde a uma interpreta cao
parcial na qual P(a, a) e verdadeira e P(a, b) e falsa. Neste n o, ainda n ao
foram tomadas decisoes em relacao aos valores l ogicos dos restantes literais
da base de Herbrand, por exemplo, ainda nada se sabe quanto ao valor l ogico
do literal P(b, b). `
A import ancia das interpreta coes parciais resulta do facto de estas permi-
tirem determinar que uma dada interpretacao n ao satisfaz um conjunto de
clausulas.
Denicao 3.3.14 (No falhado) Dada uma arvore de decisao para um
conjunto de clausulas , dizemos que um n o desta arvore e um no falhado
se a interpreta cao parcial correspondente a esse n o falsica alguma clausula
em (e consequentemente falsica ). Um n o falhado e representado gra-
camente por uma cruz.
Notemos que ao encontrar um n o falhado, n ao interessa continuar a explorar
a arvore abaixo desse n o, pois j a sabemos que todos os ramos abaixo dele
n ao ir ao satisfazer o conjunto de clausulas.
3.3. O SISTEMA SEM

ANTICO 187
P(a)
X Q(f(a))
X X
Figura 3.9:

Arvore de decisao fechada.
Denicao 3.3.15 (

Arvore de decisao fechada) Dada uma arvore de de-


cisao para um conjunto de clausulas , dizemos que esta arvore e fechada
se todos os ramos da arvore terminarem em n os falhados.
Exemplo 3.3.17 Consideremos o conjunto de clausulas
= {{P(x)}, {P(x), Q(f(x))}, {Q(f(a))}}.
Para este conjunto de clausulas, temos a seguinte base de Herbrand:

= {P(a), Q(a), P(f(a)), Q(f(a)), P(f(f(a))), Q(f(f(a))), . . .}.


Consideremos a arvore de decisao fechada representada na Figura 3.9. Note-
mos que o n o da esquerda corresponde `a interpretacao parcial na qual P(a)
e falsa. Esta interpreta cao parcial falsica a clausula {P(x)}, falsicando
todo o conjunto de clausulas. O n o Q(f(a)), indicado na gura, corresponde
`a interpretacao parcial na qual P(a) e verdadeira. Neste caso, se Q(f(a))
for verdadeira, a clausula {Q(f(a))} e falsicada e se Q(f(a)) for falsa, a
clausula {P(x), Q(f(x))} e falsicada, pelo que ambos os n os abaixo deste
n o sao n os falhados.
Repare-se que neste caso, apesar da base de Herbrand ser innita, consegui-
mos determinar, num n umero nito de passos, que o conjunto de clausulas
e n ao satisfazvel. Isto e uma consequencia da semi-decidibilidade da l ogica
de primeira ordem. `
O teorema de Herbrand, directamente relacionado com o Corol ario 3.3.1,
serve de base para grande n umero de resultados associados com o raciocnio
188 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


autom atico. O Corol ario 3.3.1 arma que se um conjunto de clausulas n ao
tem nenhum modelo de Herbrand (ou seja se n ao e satisfeito por nehuma
interpretacao de Herbrand) ent ao podemos concluir que e n ao satisfazvel.
Uma vez que normalmente existem muitas interpretacoes de Herbrand para
um conjunto de clausulas (possivelmente um n umero innito), devemos ex-
plor a-las de um modo sistematico. Este modo sistematico pode corresponder
a uma arvore de decisao.
Teorema 3.3.4 (Teorema de Herbrand) Um conjunto de clausulas
e n ao satisfazvel se e so se um conjunto nito de inst ancias fechadas de
clausulas de e n ao satisfazvel.
Demonstrac ao:
Se conjunto de clausulas e n ao satisfazvel ent ao um conjunto nito
de inst ancias fechadas de clausulas de e n ao satisfazvel.
Suponhamos que o conjunto de clausulas e n ao satisfazvel. Seja T
uma arvore de decisao para . Para cada ramo, r, de T , seja I
r

o
conjunto de todas as fbfs at omicas correspondentes `as decisoes tomadas
ao longo desse ramo. Claramente I
r

corresponde a uma interpreta cao


para . Uma vez que e n ao satisfazvel, I
r

deve falsicar uma


clausula

. Uma vez que

e um conjunto nito, existe um n o


falhado no ramo r (situado a uma profundidade nita). Seja T

a arvore
de decisao fechada obtida a partir de T considerando os n os falhados
de cada ramo. Seja

o conjunto de todas as clausulas em que sao


falsicadas por todos os n os falhados em T

. O conjunto

e nito
uma vez que T

contem um n umero nito de n os falhados. Uma vez
que todas as clausulas de

sao falsas em todas as interpreta coes de

, o conjunto

e n ao satisfazvel.
Se um conjunto nito de inst ancias fechadas de clausulas de e n ao
satisfazvel, ent ao o conjunto de clausulas e n ao satisfazvel.
Suponhamos que um conjunto nito de inst ancias fechadas de clausulas
de ,

, e n ao satisfazvel. Uma vez que cada interpreta cao I de


contem uma interpreta cao I

de

, se I

falsica

, ent ao I tambem
falsica

. Consequentemente

e falsicado por cada interpreta cao,


I de . Portanto e n ao satisfazvel.

O teorema anterior transforma o problema da n ao satisfazibilidade em l ogica


de primeira ordem no problema de encontrar um conjunto apropriado de
termos fechados e vericar a sua nao satisfazibilidade utilizando a l ogica
proposicional.
3.4. SOLIDEZ E COMPLETUDE 189
Exemplo 3.3.18 Seja
= {{P(x), Q(f(x), x)}, {P(g(b))}, {Q(y, z)}}.
22
Este conjunto de clausulas e n ao satisfazvel, dado que n ao e satisfeito pelo
seguinte conjunto de inst ancias de clausulas fechadas:
{{P(g(b)), Q(f(g(b)), g(b))}, {P(g(b))}, {Q(f(g(b)), g(b)}}.
`
O teorema de Herbrand permite-nos delinear o seguinte procedimento que
fornece um processo de decisao para a validade das f ormulas da l ogica de
primeira ordem:
1. Negar a fbf;
2. Transformar o resultado em forma clausal;
3. Gerar um conjunto nito de clausulas fechadas;
4. Vericar se esse conjunto de clausulas n ao e satisfazvel.
Note-se que este procedimento e garantido terminar se a fbf corresponde a
uma tautologia mas que pode nunca terminar se a fbf n ao for uma tautologia.
3.4 Solidez e completude

E possvel provar as seguintes propriedades para a l ogica de primeira ordem,


as propriedades correspondentes `as apresentadas na Seccao 2.4 para a l ogica
proposicional. A sua demonstra cao esta fora do ambito deste livro.
Teorema 3.4.1 (Solidez) A l ogica de primeira ordeme solida. Para quais-
quer fbfs
1
, . . .,
k
e , se {
1
, . . .,
k
} ent ao {
1
, . . .,
k
} |= .
Teorema 3.4.2 (Completude) A l ogica de primeira ordem e completa.
Para quaisquer fbfs
1
, . . .,
n
e , se {
1
, . . .,
n
} |= ent ao {
1
, . . .,
n
}
.
22
Exemplo de [Chang e Lee 73, p agina 62].
190 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


3.5 Notas bibliogracas
A metodologia apresentada neste captulo para determinar a verdade ou
falsidade de fbfs foi proposta por Alfred Tarski em 1936. Uma tradu cao
inglesa do artigo original pode ser consultada em [Corcoran 83].
A completude da l ogica de primeira ordem foi demonstrada por Kurt G

odel
(19061978) [G

odel 30].
A tentativa de encontrar um procedimento para determinar se uma fbf de
l ogica de primeira ordem e tautol ogica (ou se e inconsistente) foi inicialmente
abordada por Libniz (16461716), tendo sido considerada por Giuseppe Pe-
ano (18581932) e pela escola de David Hilbert (18621943). Em 1936,
de uma forma independente, tanto Alonzo Church (19031995) [Church 36]
como Alan Turing (19121954) [Turing 36] demonstraram a impossibilidade
de escrever tal procedimento. Uma abordagem importante para determi-
nar se uma interpreta cao pode falsicar uma fbf foi introduzida por Jacques
Herbrand em 1930, sendo a base para a materia apresentada na Seccao 3.3.2.
3.6 Exerccios
1. Seja f
n
i
(t
1
, . . . , t
n
) um termo. Suponha que este termo e tambem um
termo fechado. Ser a que f
n
i
(t
1
, . . . , t
n
) e um termo ch ao? Justique a
sua resposta.
2. Seja P
n
i
(t
1
, . . . , t
n
) uma fbf at omica. Suponha que esta fbf e fechada.
Ser a que P
n
i
(t
1
, . . . , t
n
) e tambem uma fbf ch a? Se sim, justique a
sua resposta, se n ao de um contra-exemplo.
3. Usando dedu cao natural, prove que as seguintes fbfs sao teoremas:
(a) x [P(x) P(x)]
(b) P(a) x [P(x)]
(c) (P(a) Q(a)) (x [P(x)] y [Q(y)])
(d) x [P(x)] y [P(y) Q(y)]
(e) (P(a) x [P(x) Q(x)]) Q(a)
(f) (x [P(x) R(x)] y [P(y)]) z [R(z)]
(g) x [P(x) Q(x)] x [P(x) Q(x)]
3.6. EXERC

ICIOS 191
4. Usando deducao natural, prove que as seguintes fbfs sao teoremas.
Estas fbfs correspondem `as regras de De Morgan para quanticadores,
tambem conhecidas por segundas leis de De Morgan.
(a) x[P(x)] x[P(x)]
(b) x[P(x)] x[P(x)]
5. Considere os seguintes predicados:
>(x, y) = x e maior do que y
=(x, y) = x e igual a y
N(x) = x e um n umero natural.
Considere tambem as seguintes fun coes:
s(x) = o sucessor do n umero natural x
+(x, y) = a soma de x com y.
Represente em l ogica de primeira ordem as seguintes proposicoes:
(a) Para qualquer n umero natural, existe outro que e maior do que
ele.
(b) N ao existe nenhum n umero de que zero seja o sucessor.
(c) Qualquer n umero tem um e apenas um sucessor.
(d) O sucessor de um n umero corresponde `a soma desse n umero com
um.
6. Considere os seguintes predicados:
P(x) = x e um ponto
R(x) = x e uma recta
Em(x, y) = o ponto x pertence `a recta y
L(x, y, z) = a recta x passa pelos pontos y e z
I(x, y) = x e igual a y.
Represente em l ogica de primeira ordem as seguintes proposicoes:
(a) Dados dois pontos, existe uma recta que passa por esses pontos.
(b) Para qualquer recta, existe pelo menos um ponto que n ao lhe
pertence (a recta n ao passa por esse ponto).
192 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


(c) Dados tres pontos quaisquer, n ao e verdade que exista uma recta
que passa por esses pontos.
(d) Dados dois pontos diferentes, existe exactamente uma recta que
passa por esses pontos.
(e) Usando os predicados anteriores, dena um predicado que arma
que os seus argumentos sao rectas paralelas, ou seja, rectas que
n ao tem nenhum ponto em comum.
7. Uma das tecnicas para utilizar l ogica proposicional para lidar com
domnios em mudan ca, corresponde a utilizar nos argumentos dos pre-
dicados um termo adicional, o identicador de uma situacao, que as-
socia cada predicado a uma situacao do mundo.
Assim, sendo Limpo um predicado que indica se um bloco nao tem
outro bloco em cima e Sobre um predicado que indica que um bloco
esta sobre outro, podemos escrever as seguintes fbfs sobre o seguinte
estado do mundo, que designamos por situa cao s
0
:
Limpo(A, s
0
)
Limpo(D, s
0
)
Sobre(A, B, s
0
)
Sobre(B, C, s
0
)
Nmero: Pg. 7 de 7
9. (1.0) Uma das tcnicas para utilizar lgica proposicional para lidar com domnios
em mudana, corresponde a utilizar nos argumentos dos predicados um termo adi-
cional, o identicador de uma situao, que associa cada predicado a uma situao
do mundo.
Assim, sendo Limpo um predicado que indica se um bloco no tem outro bloco
em cima e Sobre um predicado que indica que um bloco est sobre outro, podemos
escrever as seguintes fbfs sobre o seguinte estado do mundo, que designamos por
situao s
0
:
Limpo(A, s
0
)
Limpo(D, s
0
)
Sobre(A, B, s
0
)
C
B
A
D
T
C
B A
D
T
Situao s
0
Situao s
1
A evoluo do estado do mundo feita atravs de sucessivas situaes que resul-
tam da execuo de aces, por exemplo sendo s
1
= resultado(move, A, B, D, s
0
) a
situao que resulta de movimentar o bloco A de B para D, partindo da situao s
0
,
podemos escrever as seguintes fbfs:
Limpo(A, resultado(move, A, B, D, s
1
))
Limpo(D, resultado(move, A, B, D, s
1
))
Sobre(A, D, resultado(move, A, B, D, s
1
))
Escreva fbfs que traduzem, de um modo genrico, os resultados de mover um ob-
jecto de um local para outro. Estas fbfs devem ter a forma de uma implicao do
seguinte tipo x, y, z, s [(<requisitos>Move(x, y, z, s)) <resultados>]
Nmero: Pg. 7 de 7
9. (1.0) Uma das tcnicas para utilizar lgica proposicional para lidar com domnios
em mudana, corresponde a utilizar nos argumentos dos predicados um termo adi-
cional, o identicador de uma situao, que associa cada predicado a uma situao
do mundo.
Assim, sendo Limpo um predicado que indica se um bloco no tem outro bloco
em cima e Sobre um predicado que indica que um bloco est sobre outro, podemos
escrever as seguintes fbfs sobre o seguinte estado do mundo, que designamos por
situao s
0
:
Limpo(A, s
0
)
Limpo(D, s
0
)
Sobre(A, B, s
0
)
C
B
A
D
T
C
B A
D
T
Situao s
0
Situao s
1
A evoluo do estado do mundo feita atravs de sucessivas situaes que resul-
tam da execuo de aces, por exemplo sendo s
1
= resultado(move, A, B, D, s
0
) a
situao que resulta de movimentar o bloco A de B para D, partindo da situao s
0
,
podemos escrever as seguintes fbfs:
Limpo(A, resultado(move, A, B, D, s
1
))
Limpo(D, resultado(move, A, B, D, s
1
))
Sobre(A, D, resultado(move, A, B, D, s
1
))
Escreva fbfs que traduzem, de um modo genrico, os resultados de mover um ob-
jecto de um local para outro. Estas fbfs devem ter a forma de uma implicao do
seguinte tipo x, y, z, s [(<requisitos>Move(x, y, z, s)) <resultados>]
Situa cao s
0
Situa cao s
1
A evolu cao do estado do mundo e feita atraves de sucessivas situa coes
que resultam da execucao de accoes, por exemplo sendo
s
1
= resultado(move, A, B, D, s
0
),
a situa cao que resulta de movimentar o bloco A de B para D, partindo
da situacao s
0
, podemos escrever as seguintes fbfs:
Limpo(A, resultado(move, A, B, D, s
0
))
3.6. EXERC

ICIOS 193
Limpo(D, resultado(move, A, B, D, s
0
))
Sobre(A, D, resultado(move, A, B, D, s
0
))
Escreva fbfs que traduzem, de um modo generico, os resultados de
mover um objecto de um local para outro. Estas fbfs devem ter a
forma de uma implicacao do seguinte tipo
x, y, z, s [(< requisitos > Move(x, y, z, s)) < resultado >].
8. Identique as vari aveis livres nas seguintes fbfs:
(a) x [P(x, y) z [Q(z, x)]]
(b) Q(z) x, y [P(x, y, a)]
(c) x [P(x)] y [Q(x, y)]
9. Transforme as seguintes fbfs em forma clausal:
(a) x [P(x)] x [Q(x)]
(b) x [P(x) y [Q(x, y)]]
(c) x [(y [P(x, y) z [Q(z) R(x)]])]
(d) x [y [z [P(x, y, z) u [Q(x, u) v [Q(y, v)]]]]]
(e) x [y [z [P(x, y, z) (u [Q(x, u)] v [Q(y, v)])]]]
10. Sendo s
1
, s
2
e s
3
substitui coes, demonstre que:
(a) s
1
= s
1
= s
1
(b) (s
1
s
2
) s
3
= s
1
(s
2
s
3
)
11. Seja s = {a/x, b/y, g(x, y)/z} e = P(h(x), z). Determine s.
12. Seja s
1
= {a/x, f(x)/y, y/z} e s
2
= {b/x, z/y, g(x)/z}. Calcule s
1
s
2
.
13. Siga o funcionamento do Algoritmo 3.1 para calcular o unicador mais
geral das clausulas {P(x, y), Q(f(x))} e {P(a, b), Q(z)}.
14. Utilize o algoritmo de unica cao para determinar quais dos seguintes
conjuntos sao unic aveis, e, no caso de o serem, determine o unicador
mais geral.
(a) = {Q(a), Q(b)}
(b) = {Q(a, x), Q(a, a)}
194 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


x y f(x, y)




Tabela 3.1: Fun cao f.
x P(x)
V
F
x y Q(x, y)
F
V
F
V
Tabela 3.2: Relacoes P e Q.
(c) = {Q(a, x, f(x), Q(a, y, y)}
(d) = {Q(x, y, z), Q(u, h(v, v), u)}
(e) = {P(f(a), g(x)), P(y, y)}
(f) = {P(f(a), g(x)), P(y, g(f(z)))}
(g) = {P(x
1
, g(x
1
), x
2
, h(x
1
, x
2
), x
3
, k(x
1
, x
2
, x
3
)),
P(y
1
, y
2
, e(y
2
), y
3
, f(y
2
, y
3
), y
4
)}
15. Considere o conjunto de fbfs = {x[P(x)], y[Q(y, f(y, a))]} e a
seguinte conceptualiza cao:
23
D = {, }
F = {{(, , ), (, , ), (, , ), (, , )}}
R = {{()},
{(, ), (, )}}
Justique que a seguinte interpreta cao e um modelo de .
I(a)
I(f) {(, , ), (, , ), (, , ), (, , )}
I(P) {()}
23
Para facilitar a compreensao, a fun c ao e as relac oes envolvidas sao apresentadas nas
Tabelas 3.1 e 3.2.
3.6. EXERC

ICIOS 195
I(Q) {(, ), (, )}
16. Considere a seguinte conceptualizacao:
Universo de discurso. D = {, }
Conjunto de funcoes. F = {{(, ), (, )}}
Conjunto de rela coes. R = {{(, ), (, )}}
Suponha que as seguintes fbfs se referem a uma situacao relativa a esta
conceptualizacao:
P(a, f(a)) P(b, f(b)) (3.108)
P(a, a) (3.109)
x[y[P(x, y)]] (3.110)
x, y[P(x, y) P(f(x), f(y))] (3.111)
Diga, justicando, quais das fbfs anteriores sao satisfeitas pela seguinte
interpreta cao:
I(a)
I(b)
I(f) {(, ), (, )}
I(P) {(, ), (, )}
17. Considere a situa cao representada na Figura 3.10 e a seguinte inter-
preta cao:
I(a) A
I(b) B
I(c) C
I(t) M
I(sob) {(A, B), (B, M), (C, M)}
I(Limpo) {A, C}
I(Empilhados) {(A, B)}
Diga, justicando, quais das seguintes fbfs sao satisfeitas por esta in-
terpreta cao:
Limpo(a) (3.112)
Limpo(c) (3.113)
Limpo(sob(a)) (3.114)
Empilhados(a, b) (3.115)
196 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


A
B C
M
Figura 3.10: Situa cao no mundo dos blocos.
18. Volte a responder `a pergunta anterior considerando a interpreta cao:
J(a) A
J(b) B
J(c) C
J(t) M
J(sob) = {(B, A)}
J(Limpo) = {B}
J(Empilhados) = {(A, B)}
19. Calcule o universo de Herbrand e a base de Herbrand para os seguintes
conjuntos de clausulas:
(a) {{P(a)}, {P(x), P(f(x))}}
(b) {{P(x), Q(x)}, {R(y)}, {S(z), T(z)}}
20. Considere o conjunto de clausulas:
= {{P(x)}, {P(f(y))}}.
(a) Calcule o universo de Herbrand para .
(b) Calcule a base de Herbrand para .
(c) Ser a possvel encontrar uma interpreta cao que satisfaz ? Se
sim, apresente essa interpreta cao, se n ao explique a razao da im-
possibilidade.
21. Considere o conjunto de clausulas:
= {{P(x)}, {P(x), Q(x, a)}, {Q(y, a)}}.
(a) Calcule a base de Herbrand para .
3.6. EXERC

ICIOS 197
(b) Produza uma arvore de decisao para .
(c) Produza uma arvore de decisao fechada para .
22. Considere o conjunto de clausulas:
= {{P(x, a, g(x, b))}, {P(f(y), z, g(f(a), b))}}.
Calcule um conjunto n ao satisfazvel de inst ancias de cl ausulas em .
23. Considere o conjunto de clausulas:
= {{P(x)}, {Q(x, f(x)), P(x)}, {Q(g(y), z)}}.
Calcule um conjunto n ao satisfazvel de inst ancias de cl ausulas em .
24. Utilizando o teorema de Herbrand, mostre que os seguintes conjuntos
de clausulas sao n ao satisfazveis:
(a) {{P(x)}, {P(x), P(x, a)}, {Q(y, a)}}
(b) {{P(x), Q(f(x))}, {P(a), R(x, y)}, {R(a, x)}, {Q(f(a))}}
198 CAP

ITULO 3. L

OGICA DE PRIMEIRA ORDEM


Captulo 4
Fundamentos da
Programa cao em Logica
In solving a problem of this sort, the
grand thing is to be able to reason
backward. That is a very useful accom-
plishment, and a very easy one, but pe-
ople do not practise it much. In the
everyday aairs of life it is more useful
to reason forward, and so the other co-
mes to be neglected.
Sherlock Holmes, A Study in Scarlet
A programa cao em l ogica e um paradigma de programa cao no qual um
programa corresponde `a especicacao de um problema de uma forma de-
clarativa, o que contrasta com os outros paradigmas de programa cao em
que sao os detalhes correspondendes ao algoritmo que denem a solucao do
problema.
Sob o ponto de vista tradicional, o desenvolvimento de um programa pode
ser visto como uma sequencia de fases atraves das quais as descri coes de
um sistema se tornam progressivamente mais detalhadas. Comecando com
a an alise do problema que d a enfase ao que tem que ser feito, a descricao e
progressivamente renada para a descricao de como o problema e resolvido
de um modo mecanico. Para isso, na fase do desenvolvimento da solucao
descreve-se rigorosamente como o problema vai ser resolvido, sem se entrar,
no entanto, nos pormenores inerentes a uma linguagem de programa cao. Na
200 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
fase da programa cao da solucao, o algoritmo desenvolvido e escrito recor-
rendo a uma linguagem de programa cao. Em resumo, durante a sequencia
de fases seguida no desenvolvimento de um programa, a caracterizacao de o
que tem que ser feito transforma-se progressivamente numa especica cao de
como vai ser feito.
As fases do desenvolvimento de programas que levam dos requisitos iniciais
ao desenvolvimento de codigo executavel sao guiadas por metodos adequados
e sistematicos que sao estudados na area cientca da engenharia do software
ou engenharia da programacao. Contudo, muitas destas fases n ao podem ser
automatizadas e exigem tecnicas de engenharia e de criatividade por parte
da equipa de programadores envolvida no desenvolvimento. A tarefa desta
equipa pode ser olhada como a transforma cao dos requisitos iniciais em
codigo executavel. Esta transforma cao e um processo que consome recursos
e que esta sujeito a erros.
Um dos modos de evitar estes problemas consiste em tornar as especicacoes
directamente executaveis, consequentemente evitando os passos de tradu cao
das especicacoes para a codica cao. A programa cao em l ogica tem este
objectivo. De um modo simples (e ideal) podemos denir o paradigma
da programa cao em l ogica do seguinte modo: o programador descreve as
propriedades l ogicas que caracterizam o problema a resolver. Esta descri cao
e utilizada pelo sistema para encontrar uma solu cao do problema a resolver
(ou para inferir a solucao para o problema).
4.1 Clausulas de Horn
A designa cao programa cao em l ogica refere-se `a combina cao de uma re-
presentacao de um subconjunto das formulas da l ogica de primeira ordem
atraves de clausulas de Horn com uma estrategia de resolucao conhecida por
resolucao SLD.
Denicao 4.1.1 (Clausula de Horn) Uma cl ausula de Horn
1
e uma clau-
sula que contem, no maximo, um literal positivo.
Numa clausula de Horn, o literal positivo (se existir) e chamado a cabeca
da clausula e os literais negativos (se existirem) sao chamados o corpo da
1
Em honra do matem atico americano Alfred Horn (19182001) que descobriu a sua
importancia, a qual e descrita no artigo [Horn 51].
4.1. CL

AUSULAS DE HORN 201


clausula.
Exemplo 4.1.1 Sendo C, P
1
e P
2
smbolos de proposicao,
2
as seguintes
clausulas sao clausulas de Horn:
{C, P
1
, P
2
} (4.1)
{C} (4.2)
{P
1
, P
2
} (4.3)
{} (4.4)
`
Dada a equivalencia entre e a clausula de Horn {, }, e vulgar
escrever clausulas de Horn sem as chavetas, escrevendo a cabeca da clausula
em primeiro lugar, separada do corpo da clausula pelo smbolo . Usando
esta nota cao, a clausula vazia e representada pelo smbolo .
Exemplo 4.1.2 (Notacao para clausulas de Horn) As clausulas de Horn
do exemplo 4.1.1 sao escritas do seguinte modo:
C P
1
, P
2
(4.5)
C (4.6)
P
1
, P
2
(4.7)
(4.8)
`
As clausulas de Horn sao divididas em quatro tipos:
1. Regras ou implicacoes, que correspondem a clausulas em que tanto a
cabe ca como o corpo contem literais, por exemplo, a Clausula 4.5.
2. Armacoes ou factos, que correspondem a clausulas em que o corpo
n ao contem literais (ou seja, e vazio) mas a cabeca contem um literal,
por exemplo, a Clausula 4.6.
2
Por uma questao de simplicidade, utilizamos a logica proposicional.
202 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
3. Objectivos, que correspondem a clausulas em que a cabeca n ao contem
um literal (ou seja, e vazia) mas o corpo contem pelo menos um literal,
por exemplo, a Cl ausula 4.7. Cada um dos literais que constituem o
corpo de um objectivo tem o nome de sub-objectivo.
4. A clausula vazia.
Denicao 4.1.2 (Clausula determinada) As clausulas do tipo 1 e 2 (ou
seja, as regras e as arma coes) tem o nome de cl ausulas determinadas (do
ingles denite clauses).
Exemplo 4.1.3 Usando a nota cao para clausulas de Horn, as clausulas 3.84
a 3.88 apresentadas no Captulo 3 sao escritas da seguinte forma:
Ant(x, y) AD(x, y) (4.9)
Ant(x, z) Ant(x, y), AD(y, z) (4.10)
AD(Marge, Bart) (4.11)
AD(Sr.B, Marge) (4.12)
Ant(Sr.B, Bart) (4.13)
As clausulas 4.9 e 4.10 sao regras, as clausulas 4.11 e 4.12 sao arma coes e a
Clausula 4.13 e um objectivo. Note-se o signicado intuitivo das designacoes
atribudas `as clausulas: as clausulas 4.9 e 4.10 sao tipicamente usadas para
produzir novas clausulas; as clausulas 4.11 e 4.12 fazem arma coes sobre
entidades do universo de discurso; e a Cl ausula 4.13 corresponde ao objectivo
que desejamos provar. As clausulas 4.9 a 4.12 sao clausulas determinadas.
`
Usando a resolu cao com clausulas de Horn, um dos resolventes e obriga-
toriamente uma clausula determinada (uma regra ou uma armacao) pois
estas sao as unicas cl ausulas que contem literais positivos (correspondentes
`a cabe ca da clausula). Assumindo que o literal unica com o literal
i
,
sendo s o unicador mais geral destes dois literais, o caso geral da aplicacao
da regra da resolu cao a clausulas de Horn e o seguinte:
n
1
, . . . ,
m
m
1
, . . . ,
i1
,
i
,
i+1
, . . . ,
n
m+ 1 (
1
, . . . ,
i1
,
1
, . . . ,
m
,
i+1
, . . . ,
n
) s Res, (n, m)
4.2. PROGRAMAS 203
Exemplo 4.1.4 Utilizando clausulas de Horn, a demonstra cao apresentada
na p agina 166 do Captulo 3 ter a a seguinte forma:
1 Ant(x, y) AD(x, y) Prem
2 Ant(x, z) Ant(x, y), AD(y, z), Prem
3 AD(Marge, Bart) Prem
4 AD(Sr.B, Marge) Prem
5 Ant(Sr.B, Bart) Prem
6 Ant(Sr.B, Marge) Res, (1, 4), {Sr.B/x, Marge/y}
7 Ant(Sr.B, z) AD(Marge, z) Res, (2, 6), {Sr.B/x, Marge/y}
8 Ant(Sr.B, Bart) Res, (3, 7), {Bart/z}
9 Res, (5, 8),
`
4.2 Programas
Em programa cao em l ogica consideramos que qualquer conjunto de clausulas
determinadas e um programa e que um objectivo corresponde a uma clausula
cujas inst ancias se pretendem derivar a partir desse programa.
Denicao 4.2.1 (Programa) Um programa e qualquer conjunto nito de
clausulas determinadas.
Exemplo 4.2.1 Considerando o Exemplo 4.1.3, o conjunto constitudo pe-
las seguintes clausulas determinadas e um programa.
Ant(x, y) AD(x, y)
Ant(x, z) Ant(x, y), AD(y, z)
AD(Marge, Bart)
AD(Sr.B, Marge)
`
Denicao 4.2.2 (Denicao de um predicado) Num programa, o con-
junto de todas as clausulas cuja cabe ca corresponde a um literal contendo a
letra de predicado P, diz-se a denicao de P.
204 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
Exemplo 4.2.2 No programa do Exemplo 4.2.1, a deni cao de Ant e dada
pelo conjunto formado pelas clausulas:
Ant(x, y) AD(x, y)
e
Ant(x, z) Ant(x, y), AD(y, z).
No mesmo programa, a deni cao de AD e dada pelo conjunto:
{AD(Marge, Bart) , AD(Sr.B, Marge) }.
`
Denicao 4.2.3 (Base de dados) Uma deni cao de um predicado que
contenha apenas clausulas fechadas chama-se uma base de dados.
Exemplo 4.2.3 No programa do Exemplo 4.2.1, o conjunto
{AD(Marge, Bart) , AD(Sr.B, Marge) }
e uma base de dados para AD. `
Denicao 4.2.4 (Resposta de um programa a um objectivo) Sendo
um programa e um objectivo,
3
uma resposta de ao objectivo e uma
substitui cao s para as vari aveis de .
Sendo s uma substitui cao e {x
1
, . . . , x
m
} um conjunto de vari aveis, dene-se
a restri cao de s ao conjunto de vari aveis {x
1
, . . . , x
m
}, escrita, s |
{x
1
,...,x
m
}
,
como sendo o conjunto
s |
{x
1
,...,x
m
}
= {t
i
/x
i
s : x
i
{x
1
, . . . , x
m
}}.
Representando por v a fun cao de clausulas para vari aveis tal que v() cor-
responde `as vari aveis em , uma resposta de a e uma substituicao
s |
v()
.
Denicao 4.2.5 (Resposta correcta de um programa) Uma resposta
s de ao objectivo diz-se correcta se |= ( s).
3
Note-se que um programa e um conjunto de clausulas de Horn, que por sua vez sao
fbfs e que um objectivo e uma unica clausula de Horn, que por sua vez e uma fbf. Por
esta raz ao, utilizamos, respectivamente, letras gregas mai usculas e min usculas, para os
representar.
4.3. RESOLUC

AO SLD 205

E f acil vericar que s e uma resposta correcta de a se { s} for


contradit orio.
Exemplo 4.2.4 Dado o programa do Exemplo 4.2.1, a substitui cao vazia,
, e uma resposta correcta deste programa ao objectivo Ant(Sr.B, Bart).
`
4.3 Resolucao SLD
Como as clausulas de Horn sao clausulas, podemos aplicar o princpio da
resolucao para derivar novas clausulas a partir de um programa, tal como o
zemos no nal da Seccao 4.1.
Sabemos que a utiliza cao do princpio da resolucao origina um processo n ao
determinstico: n ao estao denidas quais a cl ausulas a resolver, nem estao
determinados quais os literais a resolver depois de escolhidas duas clausulas
para aplica cao do princpio da resolu cao. Sabemos tambem que o algoritmo
de unica cao (Algoritmo 3.2) n ao e determinstico.
As estrategias de resolucao apresentadas na Seccao 2.2.5 resolvem parcial-
mente este problema. Para o resolver na totalidade precisamos de introduzir
os conceitos de fun cao de seleccao (ou regra de computa cao) e de regra de
procura.
4
Denicao 4.3.1 (Fun cao de seleccao) Uma fun cao de seleccao, S, e uma
regra para escolher um literal numa clausula objectivo como candidato `a
aplicacao do princpio da resolucao. Esta e uma fun cao do conjunto dos ob-
jectivos para o conjunto dos literais, tal que S(
1
, . . . ,
n
) {
1
, . . . ,
n
}.

A resolu cao SLD (do ingles, SLD-resolution ou SL-resolution with De-


nite clauses ou, ainda, Linear resolution with Selection function and
Denite clauses) e uma estrategia de resolu cao linear
5
aplic avel a clausulas
determinadas, conjuntamente com uma fun cao de seleccao, a qual, dentro
dos possveis literais aplic aveis com a regra da resolucao escolhe um literal
de um modo determinstico.
4
Este aspecto e apresentado mais tarde.
5
Ver p agina 74 da Sec c ao 2.2.5.
206 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
De um modo n ao rigoroso, a resolucao SLD encontra a resposta de um
programa a um objectivo, substituindo sucessivamente (com a substitui cao
apropriada), cada literal no objectivo pelo corpo de uma clausula cuja cabeca
seja unicavel com o objectivo escolhido. Este processo e sucessivamente re-
petido ate que n ao existam mais sub-objectivos ou quando nenhum dos res-
tantes sub-objectivos for unic avel com a cabeca de nenhuma das clausulas
do programa.
Exemplo 4.3.1 Considerando, de novo, o programa do Exemplo 4.2.1 e o
objectivo
Ant(Sr.B, Bart),
mostramos na Figura 4.1 uma prova utilizando resolucao linear correspon-
dente a este objectivo, seguindo a estrategia informal que apresent amos e a
fun cao de seleccao que escolhe o ultimo literal no objectivo. Note-se que a
resposta calculada e
({Sr.B/x, Bart/z} {Marge/y} {Sr.B/x, Marge/y} ) |
{}
= .
`
Denicao 4.3.2 (Prova SLD) Seja um programa, um objectivo e
S uma fun cao de seleccao. Uma prova SLD para e uma sequencia de
objectivos, [
0
,
1
, . . .], satisfazendo as seguintes propriedades:
1.
0
= ;
2. Para cada
i
da sequencia (i 0), se

i
=
1
, . . . ,
k1
,
k
,
k+1
, . . . ,
j
,

k
= S(
1
, . . . ,
k1
,
k
,
k+1
, . . . ,
j
)
e se existe uma clausula,
6

l

1
, . . . ,
p
, em , tal que
k
e
l
sao
unic aveis, sendo s
i
o seu unicador mais geral, ent ao
(
i+1
=
1
, . . . ,
k1
,
1
, . . . ,
p
,
k+1
, . . . ,
j
) s
i

6
Na realidade, numa prova SLD, iremos utilizar variantes de clausulas, clausulas em
que as variaveis sao substitudas por variavies cujo nome nunca apareceu antes na prova.
Esta utilizac ao de variantes de clausulas garante que nao existem unicac oes acidentais.
4.3. RESOLUC

AO SLD 207
Ant(Sr.B, Bart) Ant(x, z) Ant(x, y), AD(y, z)
>
>
>
>
>
>
>
>
>
>
{Sr.B/x, Bart/z}
Ant(Sr.B, y), AD(y, Bart) AD(Marge, Bart)
>
>
>
>
>
>
>
>
>
>
{Marge/y}
Ant(Sr.B, Marge) Ant(x, y) AD(x, y)
>
>
>
>
>
>
>
>
>
>
{Sr.B/x, Marge/y}
AD(Sr.B, Marge)
AD(Sr.B, Marge)
>
>
>
>
>
>
>
>
>
>

Figura 4.1: Exemplo de refuta cao SLD.


208 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
R(a, c) R(x, y) R(x, z), R(z, y)
>
>
>
>
>
>
>
>
>
>
{a/x, c/y}
R(a, z), R(z, c) R(a, b)
>
>
>
>
>
>
>
>
>
>
{b/z}
R(b, c)
R(b, c)
>
>
>
>
>
>
>
>
>
>

Figura 4.2: Demonstra cao por refuta cao SLD para o Exemplo 4.3.2.
Denicao 4.3.3 (Resposta calculada) No caso de uma prova SLD ser
nita, [
0
,
1
, . . . ,
n
], a composicao das substitui coes s
0
, s
1
, . . . , s
n1
res-
tringida `as vari aveis que ocorrem em , (s
0
s
1
. . . s
n1
) |
v()
, diz-se
uma resposta calculada de a . Diz-se tambem que n e o comprimento
da prova SLD.
Denicao 4.3.4 (Refutacao SLD) Uma prova SLDe uma refuta cao SLD
se e so se a prova for nita e o seu ultimo elemento
n
e tal que
n
= .
Exemplo 4.3.2 Consideremos o seguinte programa:
R(a, b) (4.14)
R(b, c) (4.15)
R(x, y) R(x, z), R(z, y) (4.16)
Suponhamos que a funcao de seleccao escolhia o primeiro literal no objectivo.
A escolha da clausula do programa a utilizar sera feita sem justica cao
4.3. RESOLUC

AO SLD 209
R(a, c) R(x, y) R(x, z), R(z, y)
>
>
>
>
>
>
>
>
>
>
{a/x, c/y}
R(a, z), R(z, c) R(b, c)
>
>
>
>
>
>
>
>
>
>
{b/z}
R(a, b)
R(a, b)
>
>
>
>
>
>
>
>
>
>

Figura 4.3: Demonstra cao por refuta cao SLD para o Exemplo 4.3.3.
formal. Na Figura 4.2 apresentamos uma demonstra cao por refuta cao para
o objectivo R(a, c).
7
Nesta demonstracao, temos:

0
= R(a, c)

1
= R(a, z), R(z, c)

2
= R(b, c)

3
=
Em que a resposta calculada e ({a/x, c/y} {b/z} ) |
{}
= . `
Exemplo 4.3.3 Suponhamos que a fun cao de seleccao escolhia o ultimo
literal no objectivo. Na Figura 4.3 apresentamos uma demonstra cao por
refuta cao para o objectivo R(a, c).
Nesta demonstracao, temos:

0
= R(a, c)
7
Nesta gura e nas seguintes, as substituic oes apresentadas correspondem ao unicador
mais geral das clausulas utilizadas na aplicac ao da resoluc ao.
210 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
R(a, c) R(x, y) R(x, z), R(z, y)
>
>
>
>
>
>
>
>
>
>
{a/x, c/y}
R(a, z), R(z, c) R(x
1
, y
1
) R(x
1
, z
1
), R(z
1
, y
1
)
>
>
>
>
>
>
>
>
>
>
{z/x
1
, c/y
1
}
R(a, z), R(z, z
1
), R(z
1
, c)
R(x
2
, y
2
) R(x
2
, z
2
), R(z
2
, y
2
)
>
>
>
>
>
>
>
>
>
>
{z/x
2
, c/y
2
}
.
.
.
Figura 4.4: Exemplo de deriva cao SLD innita.

1
= R(a, z), R(z, c)

2
= R(a, b)

3
=
Em que a resposta calculada e ({a/x, c/y} {b/z} ) |
{}
= . `
Exemplo 4.3.4 Suponhamos que a fun cao de seleccao escolhia o ultimo li-
teral no objectivo e que a estrategia escolhia a clausula denida com maior
n umero de literais no corpo. Na Figura 4.4 apresentamos uma prova SLD
para o objectivo R(a, c), usando esta estrategia. Neste caso temos uma
derivacao innita. Note-se que utiliz amos, pela primeira vez numa demons-
tra cao, variantes de clausulas. `
Este exemplo mostra a import ancia da escolha da clausula denida para
aplicar o princpio da resolucao.
Uma regra de procura, P, e uma regra que, dado um literal correspondente
a um objectivo, escolhe uma clausula denida num programa para aplicar o
princpio da resolucao com o objectivo dado.
4.4.

ARVORES SLD 211
Denicao 4.3.5 (Regra de procura) Uma regra de procura e uma fun cao
do conjunto dos literais e do conjunto dos programas para o conjunto das
clausulas denidas, tal que P(, ) .
4.4

Arvores SLD
Como vimos, mesmo com a mesma fun cao de seleccao, existem alternativas
para a constru cao de uma refuta cao SLD, consoante a clausula do programa
escolhida. Uma arvore SLD permite mostrar todas estas alternativas em
simult aneo.
Denicao 4.4.1 (

Arvore SLD) Seja um programa, um objectivo e


S uma fun cao de seleccao, a arvore SLD de via S e uma arvore rotulada,
construda do seguinte modo:
1. O r otulo de cada n o e um objectivo;
2. O r otulo da raiz e ;
3. Cada n o com r otulo
1
, . . . ,
n
tem um ramo por cada clausula

1
, . . . ,
p
cuja cabeca seja unic avel com S(
1
, . . . ,
n
).
O r otulo da raiz deste ramo corresponde ao resolvente entre as duas
clausulas.
Um ramo cuja folha tem o r otulo diz-se um n o bem sucedido; um ramo
cuja folha tem um r otulo que n ao corresponda `a clausula vazia diz-se um n o
falhado; os restantes ramos dizem-se ramos innitos.
Exemplo 4.4.1 Consideremos o programa
P(x, z) Q(x, y), P(y, z) (4.17)
P(x, x) (4.18)
Q(a, b) (4.19)
e o objectivo
P(x, b) (4.20)
Seja S
1
a fun cao de seleccao tal que S
1
(
1
, . . . ,
n
) =
1
.
212 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
P(x, b)


`
`
`
`
`
`
``
P(x
1
, z
1
) Q(x
1
, y
1
), P(y
1
, z
1
)
{x/x
1
, b/z
1
}
P(x
2
, x
2
)
{b/x
2
, b/x}
Q(x, y
1
), P(y
1
, b)
Q(a, b)
{a/x, b/y
1
}
P(b, b)

P(x
3
, x
3
)
{b/x
3
}
Q(b, y
4
), P(y
4
, b)
P(x
4
, z
4
) Q(x
4
, y
4
), P(y
4
, z
4
)
{b/x
4
, b/z
4
}
Figura 4.5:

Arvore SLD correspondente ao Exemplo 4.4.1.
Na Figura 4.5 mostramos a arvore SLD deste programa e objectivo, via a
fun cao de seleccao S
1
. Para facilitar a compreensao, apresentamos, como
anota coes dentro de rectangulos, a clausula com que foi feita a unica cao e
a substitui cao utilizada:
1. O ramo mais `a direita corresponde a uma refuta cao SLD com resposta
{b/x} pois o objectivo P(x, b) unica com a arma cao P(x
2
, x
2
)
(uma variante da clausula P(x, x) ).
2. O ramo mais `a esquerda corresponde a uma refuta cao SLD com res-
posta {a/x}. Neste ramo, o objectivo P(x, b) unica com a clausula
determinada P(x
1
, y
1
) Q(x
1
, y
1
), P(y
1
, z
1
). A resposta do programa
e obtida atraves de (({x/x
1
, b/z
1
} {a/x, b/y
1
}) {b/x
3
}) |
x
= {a/x}.
3. O n o com o r otulo Q(b, y
4
), P(y
4
, b) e um n o falhado. `
Exemplo 4.4.2 Consideremos o mesmo programa e objectivo do Exem-
plo 4.4.1, mas com uma fun cao de seleccao S
2
tal que S
2
(
1
, . . . ,
n
) =

n
.
Na Figura 4.6 mostramos a arvore SLD deste programa e objectivo, via a
fun cao de seleccao S
2
. Novamente, para facilitar a compreensao, apresenta-
4.4.

ARVORES SLD 213
P(x, b)

P(x
1
, z
1
) Q(x
1
, y
1
), P(y
1
, z
1
)
{x/x
1
, b/z
1
}
P(x
2
, x
2
)
{b/x
2
, b/x}
Q(x, y
1
), P(y
1
, b)

P(x
3
, z
3
) Q(x
3
, y
3
), P(y
3
, z
3
)
{y
1
/x
3
, b/z
3
}
P(x
4
, x
4
)
{b/x
4
, b/y
1
}
Q(x, b)

Q(x, y
1
), Q(y
1
, y
3
), P(y
3
, b)

P(x
5
, z
5
) Q(x
5
, y
5
), P(y
5
, z
5
)
{y
3
/x
5
, b/z
5
}
P(x
6
, x
6
)
{b/x
6
, b/y
3
}
Q(a, b)
{a/x}
Q(x, y
1
), Q(y
1
, b)
Q(a, b)
{a/y
1
}
Q(x, a)
Q(x, y1), Q(y
1
, y
3
), Q(y
3
, y
5
), P(y
5
, b)

.
.
.
.
.
.
Figura 4.6:

Arvore SLD correspondente ao Exemplo 4.4.2.
mos, como anota coes, dentro de rectangulos, a clausula com que foi feita a
unica cao e a substituicao utilizada:
1. O ramo da direita corresponde a uma refuta cao SLD com resposta
{b/x}, pela mesma razao do Exemplo 4.4.1.
2. O ramo da esquerda leva-nos ao objectivo Q(x, y
1
), P(y
1
, b) tal
como no exemplo anterior. A partir deste n o da arvore, a situacao
comeca a diferir do exemplo anterior:
(a) No ramo da direita, a unica cao de P(y
1
, b) com a arma cao
P(x
4
, x
4
) d a origem ao objectivo Q(x, b), para o qual se
encontra a resposta {a/x}.
(b) No ramo da esquerda, a unica cao de P(y
1
, b) com a clausula
P(x
3
, z
3
) Q(x
3
, y
3
), P(y
3
, z
3
) origina o objectivo Q(x, y
1
),
214 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
Q(y
1
, y
3
), P(y
3
, b), o qual por sua vez originara um ramo falhado,
unicando com P(x
6
, x
6
) e ramos innitos.
Podemos concluir que a arvore tem ramos innitos e tambem um n umero
innito de n os falhados. `
Observe-se, no entanto, que o n umero de ramos bem sucedidos e o mesmo
nas duas arvores e que as respostas calculadas sao tambem as mesmas. Este
facto e geral como se estabelece no seguinte teorema:
Teorema 4.4.1 Seja um programa e um objectivo. Ent ao, indepen-
dentemente da fun cao de seleccao, todas as arvores SLD de e tem o
mesmo n umero (nito ou innito) de ramos bem sucedidos.
Demonstrac ao: Ver [Lloyd 87, p agina 52].
Em termos computacionais, este resultado arma que a qualidade de uma
implementacao da resolu cao SLD e independente da fun cao de selec cao esco-
lhida, pelo menos, no que diz respeito `as respostas que podem ser calculadas.
4.5 Semantica da programa cao em l ogica
4.5.1 Semantica declarativa
O corol ario 3.3.1, que arma que um conjunto de clausulas e n ao satis-
fazvel se e so se n ao tem nenhum modelo de Herbrand, e essencial para se
conseguir reduzir o problema de determinar se um programa implica logica-
mente um objectivo ao problema da existencia de um modelo de Herbrand
para a uniao do programa com a negacao do objectivo.
Denicao 4.5.1 (Modelo de Herbrand mnimo) O modelo de Her-
brand mnimo de um programa , representado por M

e a interseccao de
todos os modelos de Herbrand de .
Teorema 4.5.1 Para um programa
M

= {

: |= }
4.6. ADEQUAC

AO COMPUTACIONAL 215
Teorema 4.5.2 Seja um programa,
1
, . . . ,
n
um objectivo e s uma
resposta de a
1
, . . . ,
n
tal que (
1
. . .
n
) s e uma fbf fechada.
Ent ao as seguintes arma coes sao equivalentes:
1. A resposta s e uma resposta correcta de a
1
, . . . ,
n
.
2. Todo o modelo de Herbrand de e um modelo de (
1
. . .
n
) s.
3. M

e um modelo de (
1
. . .
n
) s.
4.5.2 Semantica procedimental
Nesta seccao descreve-se a semantica procedimental da programa cao em
l ogica. Como o nome sugere, trata-se de uma interpretacao computacional,
com a qual e possvel calcular as respostas de um programa a um objectivo.
O processo computacional foi apresentado na Sec cao 4.3.
Denicao 4.5.2 (Conjunto de sucessos de ) Seja um programa, se-
ja

a base de Herbrand correspondente a e seja S uma fun cao de se-


leccao. O conjunto de sucessos de via S e o conjunto dos literais

para os quais existe uma refuta cao SLD de via S.


Teorema 4.5.3 Sejam um programa, um objectivo e S uma fun cao de
seleccao, ent ao, toda a resposta calculada de a via S e uma resposta
correcta de a .
Teorema 4.5.4 Sejam um programa, um objectivo e S uma fun cao
de selec cao. Se existe uma refuta cao SLD de a via S ent ao o conjunto
{} e contradit orio.
4.6 Adequa cao computacional
Para alem do interesse intrnseco da programa cao em l ogica, demonstra-se
que utilizando programa cao em l ogica e possvel escrever qualquer fun cao
comput avel atraves de um algoritmo. Tendo em atencao a hip otese de
Church-Turing, a classe das fun coes parciais recursivas corresponde `a classe
das fun coes efectivamente comput aveis por algum algoritmo.
Demonstra-se que a classe das fun coes parciais recursivas e equivalente `a
classe dos programas, tais como denidos neste captulo.
216 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
4.7 Notas bibliogracas
O termo resolucao SLD foi introduzido por Maarten van Emden para
designar uma regra de inferencia proposta por Robert Kowalski [Kowalski
74] com base na resolucao SL de [Kowalski e Kuehner 71].
A colectanea de volumes [Gabbay, Hogger e Robinson 93, 94, 98] apresenta
uma excelente perspectiva do campo da programa cao em l ogica e dos seus
fundamentos teoricos.
4.8 Exerccios
1. Considere o seguinte programa:
P(x) Q(x), R(x)
Q(a)
R(x) S(x)
S(a)
Desenhe uma arvore SLD que calcula a resposta deste programa ao
objectivo P(x), usando as seguintes funcoes de seleccao:
(a) S(
1
, . . . ,
n
) =
1
.
(b) S(
1
, . . . ,
n
) =
n
.
2. Considere o seguinte programa:
P(x, z) P(x, y), P(y, z)
P(x, y) P(y, x)
P(a, b)
P(c, b)
Desenhe uma arvore SLD que calcula a resposta deste programa ao
objectivo P(a, c), usando as seguintes funcoes de seleccao:
(a) S(
1
, . . . ,
n
) =
1
.
(b) S(
1
, . . . ,
n
) =
n
.
3. Considere o seguinte programa:
P(x, y) Q(x), R(y)
4.8. EXERC

ICIOS 217
Q(x) S(x)
R(x) T(x)
P(b, a)
Q(b)
Q(a)
T(b)
Usando uma arvore de resolu cao SLD e uma fun cao de seleccao que
escolha para unicar o ultimo literal do objectivo, mostre todas as
solucoes para o seguinte objectivo:
P(x, y), Q(b).
Pode usar a estrategia de procura que preferir. No nal indique expli-
citamente todas as solucoes.
4. Considere o seguinte programa:
P(y) Q(x, y), R(y)
P(x) Q(x, x)
Q(x, x) S(x)
R(b)
S(a)
S(b)
Usando uma arvore de resolu cao SLD e uma fun cao de seleccao que
escolha para unicar o primeiro literal do objectivo, mostre todas as
solucoes para o seguinte objectivo:
P(x).
Pode usar a estrategia de procura que preferir. No nal indique expli-
citamente todas as solucoes.
218 CAP

ITULO 4. PROGRAMAC

AO EM L

OGICA
Captulo 5
Prolog: Programa cao em
Logica em Pratica
It is not really dicult to construct a series of
inferences, each dependent upon its predeces-
sor and each simple in itself. If, after doing
so, one simply knocks out all the central infe-
rences and presents ones audience with the
starting point and the conclusion, one may
produce a startling, though possibly a mere-
tricious, eect.
Sherlock Holmes The Dancing Men
O paradigma da programa cao em l ogica esta muito associado `a linguagem
prolog (do frances, programmation en logique). Esta linguagem nas-
ceu associada `a resolucao de problemas em Inteligencia Articial, mas actu-
almente apresenta um grande leque de aplicacoes que transcendem a Inte-
ligencia Articial. O prolog tem sido utilizado para a deni cao de traduto-
res de linguagens, interpretadores e compiladores, bases de dados dedutivas
e interfaces em lngua natural, entre outras aplica coes.
O prolog apenas satisfaz parcialmente a descricao que apresent amos no
captulo anterior relativamente `a programa cao em l ogica. Para tornar a
execucao dos programas ecientes, foram introduzidos um certo n umero
de compromissos na linguagem que diluem o aspecto da programa cao em
219
220 CAP

ITULO 5. PROLOG
l ogica pura. Isto signica que o programador tem de se preocupar com mais
aspectos do que apenas a especicacao daquilo que o programa e suposto
fazer. Neste sentido, existem aspectos n ao declarativos que podem ser vistos
como indica coes dadas pelo programador ao mecanismo dedutivo. De um
modo geral, estes aspectos reduzem a clareza das descri coes do programa,
pois misturam a descricao do problema com preocupa coes de implementacao.
Um programa em prolog e constitudo por uma sequencia de frases decla-
rativas em l ogica, juntamente com um conjunto de indica coes procedimen-
tais que controlam a utiliza cao dessas frases declarativas. Por esta razao,
um programa e considerado como uma combina cao de l ogica e de controlo,
traduzida na conhecida expressao
Programa = L ogica + Controlo,
a qual contrasta com a vis ao imperativa de um programa, traduzida pela
expressao
Programa = Algoritmo + Dados.
5.1 Componentes basicos
5.1.1 Termos
Dadas as suas razes em l ogica de primeira ordem, um dos conceitos impor-
tantes emprolog e o conceito de termo. Um termo pode ser uma constante,
uma vari avel ou um termo composto (correspondente `a aplicacao de uma
fun cao ao n umero apropriado de argumentos):
<termo> ::= <constante> <variavel> <termo composto>
Constantes. Uma constante em prolog pode ser um atomo ou um n u-
mero:
<constante> ::= <atomo> <n umero>
Um atomo e qualquer sequencia de caracteres que comece com uma letra
min uscula, ou qualquer cadeia de caracteres (uma sequencia de caracteres
delimitados por plicas) ou ainda um conjunto individualizado de smbolos,
os atomos especiais:
5.1. COMPONENTES B

ASICOS 221
<atomo> ::= <min uscula> <subsequente>*
<cadeia de caracteres>
<atomo especial>
<min uscula> ::= a b c d e f g h i j k l m n o
p q r s t u v w x y z
<subsequente> ::= <letra> <dgito> <smbolo especial>
<letra> ::= A B C D E F G H I J K L M N O P Q
R S T U V W X Y Z a b c d e f g
h i j k l m n o p q r s t u v w x
y z
<dgito> ::= 1 2 3 4 5 6 7 8 9 0
<smbolo especial> ::=
1
<cadeia de caracteres> ::= <caracteres>
<caracteres> ::= <caracter> <caracter> <caracteres>
<caracter> ::=
2
<subsequente>
<atomo especial> ::= ! [ ] ; { } + - * / **
Os atomos especiais [ e ], e { e } apenas sao considerados atomos se apa-
recerem aos pares, ou seja sob a forma [ <qualquer coisa> ] e { <qualquer
coisa> }. Este aspecto n ao e capturado por uma gramatica BNF.
Exemplo 5.1.1 S ao exemplos de atomos, ad, ant, factorial, srB, sr.b,
SrB e atomo com brancos; n ao sao exemplos de atomos, sr.b (contem
um ponto) e SrB (comeca por uma mai uscula). `
Numa cadeia de caracteres, os caracteres que se encontram entre plicas
dizem-se o nome do atomo.
O conceito de n umero depende muito da implementacao do prolog, exis-
tindo n umeros inteiros em todas as implementacoes, n umeros reais (n umeros
com parte decimal) na maioria das implementacoes, e algumas implementa-
coes apresentam tambem n umeros em nota cao cientca. Neste livro, ape-
nas consideramos n umeros inteiros, pelo que a deni cao de n umero utilizada
neste livro sera:
1
Existem outros smbolos especiais que n ao sao considerados neste livro. Uma descric ao
completa destes smbolos pode ser consultada em [Deransart, Ed-Dbali e Cervoni 96].
2
O espaco em branco.
222 CAP

ITULO 5. PROLOG
<n umero> ::= <dgitos> -<dgitos>
<dgitos> ::= <dgito> <dgito> <dgitos>
Variaveis. Em prolog, uma vari avel e qualquer sequencia de caracteres
que comece com uma letra mai uscula ou que comece com o caracter :
<variavel> ::= <incio var> <subsequente>*
<incio var> ::= A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z
Exemplo 5.1.2 S ao exemplos de vari aveis, X, X menos 1, factorial, A380
e . N ao sao exemplos de vari aveis, 5a (comeca por um dgito), factorial
(comeca por uma letra min uscula). `
A vari avel correspondente ao smbolo chama-se vari avel anonima. Uma
vari avel an onima e utilizada sempre que numa expressao (termo, literal ou
clausula) o valor da vari avel n ao tenha interesse. M ultiplas ocorrencias
de vari aveis an onimas numa mesma expressao sao consideradas vari aveis
distintas.
Termos compostos. Um termo composto corresponde `a aplica cao de uma
letra de fun cao (em prolog, designada por um functor) ao n umero apro-
priado de argumentos. Um functor e representado por um atomo.
<termo composto>::= <atomo>(<termos>)
<termo> <operador> <termo>
<functor> ::= <atomo>
<operador> ::= <atomo>
<termos> ::= <termo> <termo>, <termos>
Note-se que a deni cao de termo composto, para alem da utiliza cao de le-
tras de fun cao como estamos habituados a usar em l ogica, permite a uti-
lizacao de um operador em nota cao inxa.
3
Os operadores sao discutidos
na Seccao 5.8.
4
3
O nome da opera c ao e escrita entre os operandos.
4
Existem mais duas possibilidades para a denic ao de termos compostos, correspon-
dendo ` a utilizac ao de operadores em posic ao prexa ou em posic ao suxa, as quais sao
discutidas na Sec c ao 5.8.
5.1. COMPONENTES B

ASICOS 223
Exemplo 5.1.3 S ao exemplos de termos compostos mae(marge), mae( ),
mae(mae(marge)), o meu functor(o meu atomo, X), +(5, X) e 5 +
X. `
Tal como em l ogica, cada functor tem um certo n umero de argumentos
e deve ser utilizado com o n umero apropriado de argumentos. Contudo,
o prolog permite que o mesmo atomo correspondente a um functor seja
utilizado com diferentes n umeros de argumentos, sendo estes tratados como
functores diferentes.
Notemos tambem que existem certos atomos especiais em prolog que cor-
respondem a fun coes fun coes pre-denidas (tambem conhecidas por fun coes
de sistema), por exemplo, +, * e /. Na Sec cao 5.7 voltamos a abordar este
aspecto.
5.1.2 Literais
Um literal correspondente `a aplicacao de um predicado ao n umero apropri-
ado de termos. Note-se que a aplica cao de um predicado com aridade zero
corresponde a um atomo.
5
<literal> ::= <atomo>
<predicado>(<termos>)
<unica cao de termos>
<compara cao de termos>
<opera cao rel. numerica>
<avalia cao>
<opera cao condicional>
<predicado> ::= <atomo>
A unica cao de termos e discutida na Sec cao 5.4. A comparacao de termos
e discutida na Seccao 5.5. As operacoes relacionais numericas, que imp oem
a condi cao adicional de que os termos a que sao aplicados correspondam a
n umeros, sao apresentadas na Seccao 5.7. Na Sec cao 5.7 tambem e apre-
sentada a avaliacao, uma caracterstica n ao pura do prolog. A operacao
condicional e apresentada na Seccao 5.14.
5
Existem mais tres possibilidades para a denic ao de literais, correspondendo ` a uti-
lizac ao de operadores em posic ao prexa, em posic ao inxa ou em posic ao suxa, as quais
sao discutidas na Sec c ao 5.8.
224 CAP

ITULO 5. PROLOG
Em prolog n ao existe diferen ca sint actica entre um termo composto e um
literal. Ou seja, em prolog tanto as letras de funcao como as letras de
predicado sao representadas por atomos.

E da responsabilidade do pro-
gramador a separacao entre letras de predicado e letras de fun cao e a sua
utiliza cao apropriada. Tal como em l ogica, cada predicado tem um certo
n umero de argumentos e deve ser utilizado com o n umero apropriado de
argumentos.
Exemplo 5.1.4 S ao exemplos de literais, ad(mae(srB), marge), ad(marge,
srB), ad(X, Y), ad(srB, ) e pai. `
Tal como acontece com as letras de fun cao, o prolog permite que a mesma
letra de predicado seja utilizada com diferentes n umeros de argumentos,
correspondendo a predicados diferentes.
Exemplo 5.1.5 Podemos utilizar simultaneamente, no mesmo programa, o
predicado de um argumento, pai, com o signicado pai(X) especica que
X e pai e o predicado de dois argumentos, pai, com o signicado pai(X,
Y) especica que X e o pai de Y. O mecanismo de unica cao permite distin-
guir cada um destes casos, tratando-o como o predicado apropriado. Estes
predicados sao designados pelo prolog, respectivamente, por pai/1 e por
pai/2. De um modo geral, a designacao <pred>/<n>, em que pred e o
nome de um predicado e n e um inteiro, especica que o predicado pred tem
n argumentos. `
5.1.3 Programas
Um programa em prolog e constitudo por uma sequencia de clausulas de-
terminadas, ou seja, armacoes e regras. Note-se aqui j a uma diferen ca entre
a deni cao de programa apresentada no Captulo 4, a qual correspondia a
um conjunto de clausulas determinadas.
<programa> ::= <clausulas>

<clausulas> ::= <arma coes> <clausulas>


<regras> <clausulas>
<arma coes> ::= <arma cao> <arma cao> <arma coes>
<regras> ::= <regra> <regra> <regras>
5.1. COMPONENTES B

ASICOS 225
5.1.4 Clausulas
Armacoes. Uma arma cao corresponde a uma clausula em que o corpo
n ao contem literais (ou seja, e vazio) mas a cabeca contem um literal. Em
prolog, as arma coes sao tambem designadas por cl ausulas unit arias ou
por factos.
Uma arma cao e denida sintacticamente do seguinte modo:
<arma cao> ::= <literal>.
Exemplo 5.1.6 Considerando o Exemplo 4.1.3, as arma coes
AD(marge, bart)
AD(srB, marge)
sao escritas do seguinte modo em prolog:
ad(marge, bart).
ad(srB, marge). `
Regras. Uma regra corresponde a uma clausula em que tanto a cabeca
como o corpo contem literais. Em prolog, as regras sao conhecidas como
cl ausulas nao unit arias, adoptando-se a terminologia das clausulas de Horn
que distingue a cabe ca da clausula e o corpo da clausula.
Em prolog, uma regra e denida sintacticamente do seguinte modo:
<regra> ::= <literal> :- <literais>.
<literais> ::= <literal> <literal>, <literais> (<literais>)
A ultima alternativa para a deni cao de literais apenas arma que podemos
colocar parenteses antes e depois de literais.
Exemplo 5.1.7 Considerando o Exemplo 4.1.3, as regras
Ant(x, y) AD(x, y)
Ant(x, z) Ant(x, y), AD(y, z)
sao escritas do seguinte modo em prolog:
226 CAP

ITULO 5. PROLOG
ant(X, Y) :- ad(X, Y).
ant(X, Z) :- ant(X, Y), ad(Y, Z). `
Note-se que no Exemplo 5.1.7, a deni cao do predicado ant corresponde
a dizer que ant(X, Y) se ad(X, Y) ou se ant(X, Y) e ad(Y, Z). O pro-
log permite fazer esta arma cao numa unica regra recorrendo ao smbolo
l ogico ou, representado, em prolog, por ;:
ant(X, Y) :- ad(X, Y); (ant(X, Y), ad(Y, Z)).
No entanto, por uma quest ao de facilidade de leitura dos programas, a regra
anterior deve ser considerada como uma abreviatura sint atica de
ant(X, Y) :- ad(X, Y).
ant(X, Z) :- ant(X, Y), ad(Y, Z).
Por uma questao de estilo de programa cao, a utiliza cao da disjun cao no
corpo de regras deve ser evitada.
Tendo em atencao a possibilidade de utilizar disjuncoes, a deni cao de lite-
rais e alterada para:
<literais> ::= <literal>
<literal>, <literais>
<literal>; <literais>
(<literais>)
Denicao 5.1.1 (Clausula iterativa versao 1) Uma clausula cujo cor-
po apenas contem um literal, usando o mesmo predicado que o utilizado na
cabe ca da clausula, chama-se uma cl ausula iterativa.
6

Exemplo 5.1.8 A seguinte regra corresponde a uma clausula iterativa:


liga(X, Y) :- liga(Y, X). `
6
A raz ao da designac ao clausula iterativa pode parecer estranha. Poderamos esperar
a designac ao de clausula recursiva. No entanto, a utilizac ao de clausulas iterativas leva-nos
` a constru c ao de programas que geram processos iterativos, como se discute na p agina 281,
e da a designac ao de clausulas iterativas.
5.2. A SEM

ANTICA DO PROLOG 227


5.1.5 Objectivos
Um objectivo corresponde a uma clausula em que a cabeca n ao contem um
literal (ou seja, e vazia) mas o corpo contem pelo menos um literal.
Em prolog, um objectivo e denido sintacticamente do seguinte modo:
<objectivo> ::= ?- <literais>.
Exemplo 5.1.9 Considerando o Exemplo 4.1.3, o objectivo
Ant(srB, bart)
e escrito do seguinte modo em prolog:
?- ant(srB, bart). `
O smbolo ?- corresponde ao caracter de pronto
7
do prolog, pelo que
numa interaccao com o prolog um objectivo n ao deve ser antecedido por
este smbolo (ver Apendice B).
5.2 A semantica do prolog
Em prolog um programa e uma sequencia de clausulas determinadas,
sequencia essa que corresponde `a ordem pela qual as clausulas aparecem
no programa. Note-se, novamente, a diferen ca em relacao ao modelo teorico
da programacao em l ogica em que um programa e um conjunto de clausulas
determinadas.
Para provar um objectivo (uma sequencia de literais), o prolog recorre
a uma refuta cao SLD com uma fun cao de seleccao que escolhe o primeiro
literal na clausula objectivo e com uma regra de procura que escolhe a
primeira clausula unic avel com o literal seleccionado da clausula objectivo
na sequencia de clausulas que corresponde ao programa.
Tal como na programa cao em l ogica, podemos considerar dois aspectos na
semantica do prolog, a semantica declarativa e a semantica procedimental.
7
Do ingles, prompt character.
228 CAP

ITULO 5. PROLOG
Semantica declarativa. A sem antica declarativa preocupa-se com aquilo
que estamos a tentar obter com um programa. Sob esta perspectiva, a regra
ant(X, Z) :- ant(X, Y), ad(Y, Z).
pode ser vista como a arma cao que diz que se ant(X, Y) e se ad(Y,
Z) se vericarem (ou seja, se forem verdadeiras) para determinada substi-
tui cao para as vari aveis X, Y e Z ent ao podemos concluir que ant(X, Z) (e
verdadeira) para essa substitui cao das vari aveis X e Z.
Por outras palavras, em prolog um objectivo e verdadeiro se este unica
com a cabe ca de uma variante de uma clausula
8
e se cada um dos objectivos
correspodentes aos literais existentes no corpo dessa clausula for (recursiva-
mente) verdadeiro.
Semantica procedimental. A sem antica procedimental preocupa-se com
o modo como provar um objectivo com um determinado programa. Sob esta
perspectiva, a regra
ant(X, Z) :- ant(X, Y), ad(Y, Z).
pode ser lida do seguinte modo para provar uma inst ancia de ant(X, Z)
devemos primeiro provar uma inst ancia de ant(X, Y) e depois, com as subs-
titui coes adequadas para X, Y e Z, provar uma inst ancia de ad(Y, Z).
Denicao 5.2.1 (Execu cao de um objectivo) Em prolog, o processo
gerado durante a prova de um objectivo e conhecido pela execu cao do ob-
jectivo.
Neste livro utilizamos as designacoes prova de um objectivo e execu cao
de um objectivo como sin onimos.
Tendo em aten cao a fun cao de selec cao e a regra de procura utilizadas pelo
prolog, a semantica procedimental do prolog pode ser denida do se-
guinte modo.
Dado um programa P e um objectivo O (no caso geral, O = O
1
, . . . , O
k
),
para responder ao objectivo O, o seguinte processo de inferencia e seguido,
8
Recorde-se que uma variante de uma clausula corresponde a uma clausula com va-
riac oes alfabeticas das variaveis existentes na clausula.
5.2. A SEM

ANTICA DO PROLOG 229


Programa
C
1
:- B
1
1
, ..., B
1
n
1
.
.
.
.
C
i
:- B
i
1
, ..., B
i
n
i
.
.
.
.
C
m
:- B
m
1
, ..., B
m
n
m
.
regra de procura Objectivo
O
1
, ..., O
k
.
fun cao de seleccao
(B
i
1
, ..., B
i
n
i
, ..., O
k
)
1
.
1. cl ausula unicavel
encontrada: C
i
unica
com O
1
com a subs-
tituicao
1
2. passo de inferencia:
substitui-se O
1
pelo
corpo da cl ausula C
i
,
aplicando-se
1
.
.
.
.
.
.
Fim da inferencia:
se a clausula e obtida: Yes, devolve =
1
. . .
p
.

se n ao se encontra nenhuma clausula unic avel: No.


Pode acontecer que o programa n ao termine.
retrocesso: um dos
objectivos posterio-
res falhou
Figura 5.1: Diagrama da semantica procedimental do prolog.
comecando com uma substitui cao calculada que corresponde `a substitui cao
vazia (este processo esta representado esquematicamente na Figura 5.1):
1. Se o objectivo corresponde `a clausula vazia, o processo termina com a
resposta Yes, devolvendo-se a substitui cao que corresponde `a restri cao
da substitui cao calculada `as vari aveis existentes em O.
2. Selecciona-se o primeiro sub-objectivo (literal) do objectivo a provar.
Seja este sub-objectivo designado por O
c
(o objectivo corrente).
3. Procura-se uma clausula unic avel, percorrendo as clausulas do pro-
grama P, comecando pela primeira clausula, ate encontrar uma clau-
sula, designada por C
c
(a clausula corrente), cuja cabe ca unica com
230 CAP

ITULO 5. PROLOG
O
c
.
4. Encontrada a clausula C
c
, aplica-se um passo de inferencia:
(a) Gera-se uma variante da clausula C
c
n ao contendo nenhuma va-
ri avel utilizada durante o processo de inferencia, originando a
clausula C

c
.
(b) Sendo
c
o unicador mais geral de O
c
e C

c
, cria-se um novo ob-
jectivo, O
n
(objectivo novo), correspondente `a aplicacao da subs-
titui cao
c
ao objectivo que se obtem de O, substituindo O
c
pelo
corpo da clausula C

c
.
(c) Repete-se o processo de inferencia com o objectivo O
n
e o pro-
grama P, utilizando uma nova substitui cao calculada que corres-
ponde `a composicao de
c
com a substitui cao calculada.
5. N ao se encontrando uma clausula unic avel, diz-se que o objectivo
falhou. Neste caso,
(a) Se durante o processo de inferencia foi seleccionada uma clausula
unic avel, volta-se ao ponto em que foi feita a ultima seleccao
(passo 3), continuando-se a procura de uma nova clausula uni-
cavel a partir da clausula que corresponde `a ultima clausula
seleccionada. A substitui cao calculada e reposta no valor corres-
pondente ao existente neste ponto da inferencia. Ao processo de
voltar a considerar um objectivo anterior, ap os atingir um objec-
tivo que falhou, chama-se retrocesso.
i. Se uma nova clausula unic avel e encontrada, recomeca-se o
processo a partir do passo 4.
ii. Atingindo o m do programa sem se encontrar uma clausula
unic avel, o processo termina com a resposta No.
(b) Se durante o processo de inferencia n ao foi feita nenhuma escolha
de uma clausula unic avel, o processo termina com a resposta No.
O Algoritmo 5.1 apresenta de um modo formal a estrategia utilizada pelo
prolog para responder a um objectivo. Neste algoritmo, um objectivo e
uma sequencia de literais e um programa como uma sequencia de clausulas.
A resposta de um programa, P, a um objectivo, O e originada pela invoca cao
resposta(O, P). Este programa recorre a uma vari avel global, prog completo,
cujo valor corresponde ao programa original. Esta vari avel e utilizada para
repor o programa original, P, no seguimento de um retrocesso.
5.2. A SEM

ANTICA DO PROLOG 231


Algoritmo 5.1 resposta(obj, prog)
prog completo := prog { Vari avel global contendo o programa original }
resposta := resposta aux(obj, prog, {})
if resposta = No then
return resposta
else
return filtra vars(resposta, vars de(obj))
end if
O procedimento vars de(obj) recebe como argumento um objectivo, obj e
devolve um conjunto com as vari aveis existentes nesse objectivo.
O procedimento filtra vars(subst, conj vars) recebe como argumentos uma
substitui cao, subs, e um conjunto de vari aveis, conj vars, e devolve a res-
tri cao da substitui cao subst con conjunto de vari aveis conj vars.
Consideramos que as seguintes operacoes estao denidas para sequencias:
9
junta : sequ encia sequ encia sequ encia
junta(seq
1
, seq
2
) tem como valor a sequencia que resulta de juntar a
sequencia seq
2
no nal da sequencia seq
1
.
primeiro : sequ encia elemento
primeiro(seq) tem como valor o elemento que se encontra na primeira
posi cao da sequencia seq. Se a sequencia n ao tiver elementos, o valor
desta operacao e indenido.
resto : sequ encia sequ encia
resto(seq) tem como valor a sequencia que resulta de remover o pri-
meiro elemento da sequencia seq. Se a sequencia n ao tiver elementos,
o valor desta operacao e indenido.
subsequ encia : elemento sequ encia sequ encia
subsequ encia(el, seq) tem como valor a subsequencia de seq contendo
todos os elementos que se encontram ap os o elemento el. Se o elemento
n ao pertencer `a sequencia, o valor desta operacao e indenido.
9
Estas n ao sao todas as opera c oes para sequencias, mas apenas aquelas que nos inte-
ressam. Nesta descric ao, elemento corresponde ao tipo dos elementos da sequencia.
232 CAP

ITULO 5. PROLOG
Algoritmo 5.2 resposta aux(obj, prog, subst)
if sequ encia vazia?(obj) then
return subst
else
objectivo escolhido := primeiro(obj)
cl a usar := escolhe(objectivo escolhido, prog)
if cl a usar := Nenhuma then
return No
else
cl a usar

:= renomeia(cl a usar)
s := unifica(objectivo escolhido, cabec
,
a(cl a usar

))
novo obj := aplica subst(junta(corpo(cl a usar

), resto(obj)),
s)
nova subst := comp oe subst(subst, s)
nova resposta := resposta aux(novo obj,
prog completo,
nova subst)
if nova resposta = No then
return nova resposta
else {Verica-se retrocesso}
prog a usar := subsequ encia(cl a usar, prog)
resposta aux(obj, prog a usar, subst)
end if
end if
end if
sequ encia vazia? : sequ encia l ogico
sequ encia vazia?(seq) tem o valor verdadeiro se a sequencia seq e a
sequencia vazia e tem o valor falso em caso contr ario.
O Algoritmo 5.2 assume que existem os selectores cabec
,
a e corpo, denidos,
para clausulas, do seguinte modo:
10
cabec
,
a(A B
1
, . . . , B
n
) = A
corpo(A B
1
, . . . , B
n
) = B
1
, . . . , B
n
Os procedimentos aplica subst e comp oe subst utilizados pelo Algoritmo 5.2
sao tais que:
10
Consideramos que B
1
, . . . , B
n
e uma sequencia.
5.3. EXEMPLOS INICIAIS 233
Algoritmo 5.3 escolhe(obj, prog)
if sequ encia vazia?(prog) then
return Nenhuma
else
if unifica(obj, cabec
,
a(primeiro(prog))) then
return primeiro(prog)
else
escolhe(obj, resto(prog))
end if
end if
aplica subst(seq, subst) recebe uma sequencia, seq, e uma substitui cao,
subst, e devolve a sequencia correspondente a aplicar a substitui cao a
cada um dos elementos ds sequencia;
comp oe subst(subst
1
, subst
2
) recebe duas substitui coes, subst
1
e subst
2
,
e devolve a composicao da substitui cao subst
1
com a substitui cao
subst
2
.
Finalmente, o procedimento renomeia(cl), recebe como argumento uma
clausula e devolve uma variante dessa clausula com todas as suas vari aveis
substitudas por vari avies que nunca foram utilizadas antes.
5.3 Exemplos iniciais
Nesta seccao apresentamos alguns exemplos simples que ilustram a semantica
procedimental do prolog e que permitem mostrar a diferen ca desta em
relacao `a semantica declarativa.
Exemplo 5.3.1 (Antepassados e ascendentes directos) Consideremos
o seguinte programa em prolog:
ad(marge, bart).
ad(srB, marge).
ant(X, Y) :- ad(X, Y).
ant(X, Z) :- ant(X, Y), ad(Y, Z).
234 CAP

ITULO 5. PROLOG
ant(srB, bart)
ant(X1, Y1) :- ad(X1, Y1)
{srB/X1, bart/Y1}
ad(srB, bart)
X
Figura 5.2: Parte da arvore SLD para o Exemplo 5.3.1.
Com este programa, para provar o objectivo ant(srB, bart), o prolog en-
contra a regra ant(X, Y) :- ad(X, Y), a primeira clausula do programa
cuja cabeca unica com o objectivo. O prolog vai usar uma variante
desta regra, ant(X1, Y1) :- ad(X1, Y1),
11
estabelecendo o novo objec-
tivo ad(srB, bart). Este novo objectivo n ao unica com a cabeca de ne-
nhuma clausula, por isso, a sua prova falha. Dizemos que este objectivo
gerou um n o falhado.
De acordo com a semantica procedimental, ap os atingir o n o falhado, o
prolog volta ao objectivo ant(srB, bart), tentanto uma nova unica cao
para este objectivo. Este aspecto e ilustrado na Figura 5.2, na qual uma
cruz e utilizada para representar um n o falhado e uma linha a tracejado
indica um retrocesso para um objectivo anterior.
Para facilitar a compreensao deste exemplo, na Figura 5.2 mostramos, dentro
de um rectangulo, a variante da clausula encontrada e mostramos tambem
dentro de outro rectangulo o unicador utilizado.
Ap os o retrocesso, o objectivo ant(srB, bart) unica com a regra
ant(X, Z) :- ant(X, Y), ad(Y, Z),
dando origem ao novo objectivo:
12
11
Neste captulo, decidimos que as variantes da clausulas usam nomes de variaveis
que correspondem aos nomes originais das variaveis nas clausulas mas sao seguidas por
um n umero inteiro. O prolog utiliza, para variantes de clausulas, variaveis da forma
L<inteiro> ou G<inteiro>.
12
Note-se que foi utilizada outra variante da regra.
5.3. EXEMPLOS INICIAIS 235
ant(srB, bart)
ad(srB, bart)
ant(X2, Z2) :- ant(X2, Y2), ad(Y2, Z2)
{srB/X2, bart/Z2}
ant(srB, Y2), ad(Y2, bart)
ant(X3, Y3) :- ad(X3, Y3)
{srB/X3, Y2/Y3}
X ad(srB, Y2), ad(Y2, bart)
ad(srB, marge)
{marge/Y2}
ad(marge, bart)
ad(marge, bart)

Figura 5.3:

Arvore SLD para o Exemplo 5.3.1.
ant(srB, Y2), ad(Y2, bart).
Na Figura 5.3 mostra-se a toda arvore de refuta cao gerada, para respon-
der ao objectivo ant(srB, bart), a qual tem um n o sucesso, permitindo
responder armativamente ao objectivo solicitado.
Numa interaccao com o prolog, todo este processo e resumido pelas se-
guintes duas linhas:
?- ant(srB, bart).
Yes `
Exemplo 5.3.2 Considerando o programa do Exemplo 5.3.1, podemos tam-
bem obter a seguinte interac cao, utilizando vari aveis:
?- ant(srB, X).
X = marge
Yes
?- ant(X, bart).
236 CAP

ITULO 5. PROLOG
X = marge
Yes
?- ant(X, Y).
X = marge,
Y = bart
Yes
Note-se que, nesta interaccao, o prolog apenas fornece a primeira resposta
ao objectivo solicitado.
Finalmente, utilizando vari aveis an onimas, obtemos a seguinte interaccao:
?- ant(srB, _).
Yes
?- ant(_, bart).
Yes
Como exerccio, o leitor devera construir as arvores SLD correspondentes `as
respostas a estes objectivos e vericar as respostas fornecidas pelo prolog.
`
`
A capacidade do prolog poder fornecer v arios tipos de interaccao com o
mesmo predicado, como se apresenta nos Exemplos 5.3.1 e 5.3.2, d a-se o
nome de polimodalidade.
Denicao 5.3.1 (Polimodalidade) A polimodalidade corresponde `a ca-
pacidade de utilizar m ultiplos modos de interac cao com um programa.
Exemplo 5.3.3 (Antepassados e ascendentes directos versao 2)
Consi

deremos de novo o programa do Exemplo 5.3.1, e suponhamos que


pergunt avamos se a Eva e um antepassado do Bart. Obtemos a interaccao,
?- ant(eva, bart).
ERROR: Out of local stack
Exception: (371,520) ant(eva, _L4086766)
a qual indica que foi gerado um caminho innito na arvore SLD.
5.3. EXEMPLOS INICIAIS 237
ant(eva, bart)
ad(eva, bart) ant(eva, Y2), ad(Y2, bart)
X ant(eva, Y3), ad(Y3, Y2),
ad(Y2, bart)
ad(eva, Y3),
ad(Y3, Y2),
ad(Y2, bart)
.
.
.
X
ad(eva, Y2),
ad(Y2, bart)
X
Figura 5.4:

Arvore SLD innita.
Na realidade, a regra ant(X, Z) :- ant(X, Y), ad(Y, Z) sera usada um
n umero innito de vezes, como se mostra na Figura 5.4, na qual j a n ao indi-
camos a variante da clausula com que e feita a unica cao nem o unicador
utilizado.
Suponhamos agora que o nosso programa era alterado do seguinte modo:
13
ad(marge, bart).
ad(srB, marge).
ant(X, Y) :- ad(X, Y).
ant(X, Z) :- ad(Y, Z), ant(X, Y).
13
Agrade co ao Daniel Santos a sugestao desta alternativa.
238 CAP

ITULO 5. PROLOG
ant(eva, bart)
ad(eva, bart) ad(Y2, bart), ant(eva, Y2)
X ant(eva, marge)
ad(eva, marge)
X
Figura 5.5:

Arvore SLD corresponente ao novo programa.
A segunda regra tem a mesma semantica declarativa que a regra corres-
pondente do programa anterior (pois a conjun cao e comutativa), mas tem
uma semantica procedimental diferente: se quisermos saber que X e um
antepassado de Z, tentemos primeiro encontrar um ascendente directo de Z
e depois tentemos saber se este e um antepassado de X.
Com este novo programa obtemos a seguinte interac cao (cuja arvore SLD se
apresenta na Figura 5.5):
?- ant(srB, bart).
Yes
?- ant(eva, bart).
No
Convem fazer dois coment arios a este resultado:
1. Evit amos o ciclo innito, fazendo com que o programa tente primeiro
encontrar arma coes e so depois recorra `a utiliza cao de regras. Este
5.3. EXEMPLOS INICIAIS 239
exemplo ilustra bem a diferen ca entre a semantica declarativa e a
semantica procedimental do prolog.
2. Notemos que o prolog n ao conseguiu derivar que a Eva e um ante-
passado do Bart, tendo respondido nao `a nossa pergunta em lugar
de nao sei.
Esta abordagem e chamada hipotese do mundo fechado e corresponde a
assumir que todo aquilo que n ao e explcita ou implicitamente armado
no programa, e falso. Ou seja, corresponde a assumir que tudo o
que e verdade sobre o mundo pode ser inferido a partir do no nosso
programa, e da a designacao de mundo fechado. `
Tendo em atencao os resultados apresentados no Exemplo 5.3.3, podemos
sugerir as seguintes regras empricas para a escrita de programas em pro-
log:
Devemos evitar a utilizacao de clausulas que originam a recursao no
primeiro literal, a chamada recurs ao `a esquerda.
Devemos escrever as arma coes relativas a um predicado antes das
regras que denem esse predicado.
Exemplo 5.3.4 Consideremos o seguinte programa em prolog:
f(a).
f(b).
f(c).
g(a).
g(b).
g(c).
h(b).
h(c).
r(X) :- f(X), g(X), h(X).
Com este programa, pedindo ao prolog para provar o objectivo r(X), ob-
temos a interaccao:
?- r(X).
X=b
240 CAP

ITULO 5. PROLOG
r(X)
f(X), g(X), h(X)
g(a), h(a)
h(a)
X
Figura 5.6: Retrocesso ap os o n o falhado.
Tal como no Exemplo 5.3.1, verica-se um retrocesso para o objectivo f(X),
g(X), h(X). Na realidade, o primeiro sub-objectivo do objectivo f(X),
g(X), h(x) unica com f(a), dando eventualmente origem a um ramo fa-
lhado e ao retrocesso para o objectivo f(X), g(X), h(X) (Figura 5.6).
A segunda unica cao do sub-objectivo f(X), com f(b), d a origem a um
sucesso e da a resposta obtida na interaccao anterior. Na Figura 5.7 mos-
tramos a arvore SLD para esta interaccao. `
Em prolog existe a possibilidade de solicitar mais do que uma resposta
ao mesmo objectivo. Para isso, utiliza-se a disjun cao ;, intoduzida ime-
diatamente a seguir `a resposta fornecida pelo prolog. A utiliza cao da
disjun cao ap os uma resposta fornecida pelo prolog origina um n o falhado
como resultado da prova do objectivo anterior.
Exemplo 5.3.5 (M ultiplas respostas) Consideremos novamente o pro-
grama do Exemplo 5.3.4. Utilizando a disjun cao para obter m ultiplas res-
postas, podemos obter a seguinte interaccao, cuja representacao em arvore
SLD se apresenta na Figura 5.8.
5.3. EXEMPLOS INICIAIS 241
r(X)
f(X), g(X), h(X)
g(a), h(a)
h(a)
X
g(b), h(b)
h(b)

Figura 5.7:

Arvore SLD para o Exemplo 5.3.4.
?- r(X).
X = b ;
X = c ;
No `
Exemplo 5.3.6 (Ligacoes em grafos) Consideremos o grafo apresentado
na Figura 5.9. Representaremos os arcos deste grafo atraves do predicado
liga/2. A expressao liga(X, Y) que arma que existe um arco que liga
directamente o n o X ao n o Y.
O seguinte programa em prolog dene o conceito de ligacao indirecta en-
tre dois n os do grafo (correspondente ao predicado liga ind/2). Neste
programa apresentamos tambem o modo de escrever coment arios em pro-
log. Um comentario e todo o texto que se encontra entre os smbolos /* e
*/.
14
14
Como alternativa, um coment ario pode tambem ser o texto que se encontra entre o
smbolo % e o car acter de m de linha.
242 CAP

ITULO 5. PROLOG
r(X)
f(X), g(X), h(X)
g(a), h(a)
h(a)
X
g(b), h(b)
h(b)

;
g(c), h(c)
h(c)

;
Figura 5.8: Retrocesso ap os solicitacao de novas respostas.
/* arcos existentes no grafo */
liga(a, h).
liga(a, b).
liga(b, c).
liga(b, d).
liga(d, e).
liga(e, f).
liga(f, c).
liga(h, i).
liga(i, g).
/* definic~ao de liga c~ ao indirecta */
liga_ind(X, Y) :- liga(X, Y).
5.3. EXEMPLOS INICIAIS 243
a
i
b c
d f
g
e h
Figura 5.9: Grafo correspondente `a situa cao do Exemplo 5.3.6.
liga_ind(X, Z) :- liga(X, Y), liga_ind(Y, Z).
Com este programa podemos obter a seguinte interaccao:
?- liga_ind(a, X).
X = h ;
X = b ;
X = i ;
X = g ;
X = c ;
X = d ;
X = e ;
X = f ;
X = c ;
No
Note-se que o prolog apresenta respostas repetidas correspondendo ao
mesmo resultado obtido atraves de derivacoes diferentes. `
Exemplo 5.3.7 (Inteiros) Consideremos o seguinte programa em pro-
log:
244 CAP

ITULO 5. PROLOG
inteiro(0).
inteiro(s(X)) :- inteiro(X).
Este programa arma que zero e um inteiro e que o sucessor de um inteiro
(representado pelo functor s/1) e um inteiro. Com este programa obtemos a
interaccao (na Figura 5.10 mostramos parte da arvore SLD gerada por esta
interaccao):
?- inteiro(0).
Yes
?- inteiro(s(0)).
Yes
?- inteiro(X).
X = 0 ;
X = s(0) ;
X = s(s(0)) ;
X = s(s(s(0))) ;
X = s(s(s(s(0)))) ;
X = s(s(s(s(s(0))))) ;
X = s(s(s(s(s(s(0)))))) ;
X = s(s(s(s(s(s(s(0))))))) ;
X = s(s(s(s(s(s(s(s(0)))))))) ;
X = s(s(s(s(s(s(s(s(s(0)))))))))
Yes

E importante notar que o prolog n ao sabe, por exemplo, que s(0) e 1,


pois nada lhe foi dito sobre isso; no entanto o prolog sabe que s(0) e
um inteiro. Voltamos a abordar este aspecto na Seccao 5.7. `
5.3. EXEMPLOS INICIAIS 245
inteiro(x)
inteiro(0)

;
inteiro(s(X))
inteiro(X)
inteiro(0)

;
inteiro(s(s(X)))
inteiro(s(X)) .
.
.
inteiro(X)
inteiro(0)

;
Figura 5.10: Parte da arvore SLD gerada pelo Exemplo 5.3.7.
246 CAP

ITULO 5. PROLOG
Predicado Signicado
O predicado de unicacao.
= O literal <t
1
> = <t
2
>, alternativamente =(<t
1
>, <t
2
>),
tem sucesso apenas se os termos <t
1
> e <t
2
> podem ser
unicados.
A negacao do predicado de unicacao.
\= O literal <t
1
> \= <t
2
>, alternativamente \=(<t
1
>, <t
2
>),
tem sucesso apenas se os termos <t
1
> e <t
2
> n ao podem ser
unicados.
Tabela 5.1: Predicados de unica cao de termos.
5.4 Unica cao de termos
Em prolog existem predicados pre-denidos para efectuar a unica cao de
termos. Um predicado pre-denido, ou seja um predicado que j a existe
quando comecamos a usar o prolog, e tambem conhecido por predicado de
sistema.
A unica cao de termos corresponde a um literal cuja sintaxe e denida do
seguinte modo:
<unica cao de termos>::=<op. unica cao>(<termo>, <termo>)
<termo> <op. unica cao> <termo>
<op. unica cao> ::= = \=
Na deni cao de unica cao de termos, o prolog permite a utiliza cao da
opera cao de unica cao, quer como um predicado normal, quer como um
operador bin ario escrito em nota cao inxa. Neste livro, para a unica cao
de termos, utilizamos apenas a nota cao inxa. Quando utilizamos um pre-
dicado em nota cao inxa dizemos que estamos perante a utiliza cao de um
operador. Os operadores sao discutidos na Sec cao 5.8.
O signicado dos predicados de unica cao de termos e apresentado na Ta-
bela 5.1.
O predicado de unicacao efectua a unica cao dos termos que sao seus ar-
gumentos, reportando, ou que a unica cao n ao e possvel (e consequente-
mente, falhando), ou produzindo substitui coes apropriadas para as vari aveis
que aparecem nos termos.
5.4. UNIFICAC

AO DE TERMOS 247
Exemplo 5.4.1 Consideremos a seguinte interac cao:
15
?- a = b.
No
?- f(X, a) = f(b, Y).
X = b,
Y = a
Yes
?- X = a.
X = a
Yes
?- X = X.
Yes
?- X = Y.
X = Y
Yes
?- f(X, a) = f(b, X).
No
?- ant(srB, bart) = ant(X, Y).
X = srB,
Y = bart
Yes
?- f(_, X, _) = f(a, b, c).
X = b
Yes
O pen ultimo objectivo, ant(srB, bart) = ant(X, Y), pode-nos parecer
estranho. Na realidade, temos utilizado ant como um predicado e n ao como
um functor. No entanto, quer ant(srB, bart), quer ant(X, Y), corres-
pondem sintacticamente a termos (e tambem a literais).
O ultimo objectivo mostra que m ultiplas ocorrencias da vari avel an onima
numa mesma expressao sao tratadas como vari aveis distintas. `
15
Deixamos como exerccio a explicacao dos resultados obtidos nesta interacc ao.
248 CAP

ITULO 5. PROLOG
Predicado Signicado
O predicado de identidade.
== O literal <t
1
> == <t
2
>, alternativamente ==(<t
1
>, <t
2
>),
tem sucesso apenas se os termos <t
1
> e <t
2
> sao identicos.
A negacao do predicado de identidade.
\== O literal <t
1
> \== <t
2
>, alternativamente \==(<t
1
>, <t
2
>),
tem sucesso apenas se os termos <t
1
> e <t
2
> n ao sao identicos.
Tabela 5.2: Predicados de compara cao de termos.
5.5 Compara cao de termos
Em prolog existem predicados pre-denidos para efectuar a compara cao
de termos. A comparacao de termos corresponde a um literal cuja sintaxe e
denida do seguinte modo:
<compara cao de termos>::=<op. compara cao>(<termo>, <termo>)
<termo> <op. compara cao> <termo>
<op. compara cao> ::= == \==
Analogamente `as opera coes de unica cao, as operacoes de comparacao de
termos podem ser utilizadas, quer quer como predicados normais, quer em
nota cao inxa, caso em que se dizem operadores. Os operadores sao discu-
tidos na Seccao 5.8. Neste livro, em relacao `as operacoes de comparacao de
termos, limitamo-nos `a sua utiliza cao como operadores, ignorando proposi-
tadamente a possibilidade da sua utilizacao como predicados normais.
O signicado dos predicados de comparacao de termos e apresentado na
Tabela 5.2.
O predicado de identidade testa se dois termos sao iguais, n ao instanciando
vari aveis, e tendo sucesso apenas se os dois termos sao identicos.
Exemplo 5.5.1 Consideremos a seguinte interac cao:
?- a == a.
Yes
?- a == a.
Yes
5.6. A UTILIZAC

AO DE PREDICADOS PR

E-DEFINIDOS 249
?- a == b.
No
?- X == Y.
No
?- X == a.
No
?- X = a, X == a.
X = a
Yes
Em rela cao `a segunda linha deste exemplo, note-se que o atomo a tem
o mesmo nome que o atomo a, sendo estes dois atomos considerados
identicos.
Na ultima linha deste exemplo, notemos que a unica cao da vari avel X e feita
pelo operador de unica cao, pelo que, quando o operador de compara cao e
utilizado, a vari avel X j a esta associada com o atomo a. `
5.6 A utiliza cao de predicados pre-denidos
Nas seccoes 5.4 e 5.5 apresent amos alguns predicados pre-denidos do pro-
log. Os predicados pre-denidos podem ser utilizados como qualquer pre-
dicado denido pelo programador, com duas excepcoes:
1. Os predicados pre-denidos n ao podem ser usados como predicados
numa arma cao.
2. Os predicados pre-denidos n ao podem ser utilizados como predicados
na cabeca de uma clausula.
Na realidade, qualquer destas utiliza coes levaria a uma alteracao na deni cao
de um predicado pre-denido, o que o prolog n ao permite fazer.
250 CAP

ITULO 5. PROLOG
Opera cao Signicado
+ <t
1
> + <t
2
>, alternativamente +(<t
1
>, <t
2
>),
corresponde `a soma de <t
1
> com <t
2
>.
- <t
1
> - <t
2
>, alternativamente -(<t
1
>, <t
2
>),
corresponde ao resultado de subtrair <t
2
> a <t
1
>.
- -<t> corresponde ao simetrico de <t>.
* <t
1
> * <t
2
>, alternativamente *(<t
1
>, <t
2
>),
corresponde ao produto de <t
1
> por <t
2
>.
/ <t
1
> / <t
2
>, alternativamente /(<t
1
>, <t
2
>),
corresponde ao resultado de dividir <t
1
> por <t
2
>.
** <t
1
> ** <t
2
>, alternativamente **(<t
1
>, <t
2
>),
corresponde `a potencia com base <t
1
> e expoente <t
2
>.
<t
1
> // <t
2
>, alternativamente //(<t
1
>, <t
2
>),
// corresponde ao resultado da divis ao inteira entre <t
1
>
e <t
2
>.
mod <t
1
> mod <t
2
>, alternativamente mod(<t
1
>, <t
2
>),
corresponde ao resto da divis ao inteira entre <t
1
> e <t
2
>.
round round(<t>) corresponde ao resultado de arredondar
<t> para o inteiro mais pr oximo.
sqrt sqrt(<t>) corresponde `a raiz quadrada de <t>.
abs abs(<t>) corresponde ao valor absoluto de <t>.
Tabela 5.3: Algumas operacoes aritmeticas em prolog.
5.7 Aritmetica em prolog
Opera coes aritmeticas. Como em outras linguagens de programa cao,
em prolog existe um conjunto de operacoes aritmeticas que a partir de
dois termos correspondentes a n umeros, geram um termo correspondente `a
aplicacao da operacao sobre esses n umeros. Na Tabela 5.3 apresentamos
algumas destas opera coes.
16
Algumas das opera coes aritmeticas apresentam duas nota coes, a nota cao
correspondente `a aplica cao de um fuctor, e a nota cao inxa. A notacao
inxa, corresponde a uma representa cao externa que permite a utiliza cao da
opera cao tal como o fazemos no dia-a-dia. Quando utilizamos uma letra de
fun cao em nota cao inxa dizemos que estamos perante a utiliza cao de um
operador. Os operadores sao discutidos na Sec cao 5.8.
16
A descric ao de todas as opera c oes artimeticas existentes em prolog pode ser consul-
tada em [Deransart, Ed-Dbali e Cervoni 96].
5.7. ARITM

ETICA EM PROLOG 251


Exemplo 5.7.1 Considerando as operacoes de unica cao de termos (Ta-
bela 5.1) e as opera coes aritmeticas apresentadas na Tabela 5.3, podemos
gerar as seguintes interacoes:
?- 2 + 3 = +(2, 3).
Yes
?- 2 + 3 = +(3, 2).
No
Note-se que embora 2 + 3 e +(2, 3) tenham uma representacao externa
diferente, estes dois termos correspondem internamente `a mesma entidade,
+(2, 3), e da o resultado armativo da unica cao. Por outro lado, note-se
que os termos 2 + 3 e +(3, 2) n ao unicam.
?- X = +(2, 3).
X = 2 + 3
Yes
Note-se que X unica com o termo +(2, 3) e n ao com o seu valor (5),
dado que o predicado = efectua a unica cao. O resultado da unica cao e
apresentado utilizando a representacao externa para a adi cao.
Analogamente, obtemos a seguinte interaccao:
?- 2 + X = Y + 3.
X = 3,
Y = 2
Yes
`
Opera coes relacionais numericas. O prolog possui um conjunto de
predicados pre-denidos que relacionam termos correspondentes a expressoes
aritmeticas. A utiliza cao de opera coes relacionais numericas d a origem a li-
terais cuja sintaxe e denida do seguinte modo:
<opera cao rel. numerica>::=<op. rel. numerico>(<termo>, <termo>)
<termo> <op. rel. numerico> <termo>
252 CAP

ITULO 5. PROLOG
Predicado Signicado
O predicado de igualdade aritmetica.
=:= O literal <n
1
> =:= <n
2
>, alternativamente =:=(<n
1
>, <n
2
>),
tem sucesso apenas se <n
1
> e <n
2
> correspondem ao mesmo
inteiro.
A negacao do predicado de igualdade aritmetica.
=\= O literal <n
1
> =\= <n
2
>, alternativamente =\=(<n
1
>, <n
2
>),
tem sucesso apenas se <n
1
> e <n
2
> n ao correspondem ao
mesmo inteiro.
O predicado maior.
> O literal <n
1
> > <n
2
>, alternativamente >(<n
1
>, <n
2
>),
tem sucesso apenas se <n
1
> e maior que <n
2
>.
O predicado menor.
< O literal <n
1
> < <n
2
>, alternativamente <(<n
1
>, <n
2
>),
tem sucesso apenas se <n
1
> e menor que <n
2
>.
O predicado menor ou igual.
=< O literal <n
1
> =< <n
2
>, alternativamente =<(<n
1
>, <n
2
>),
tem sucesso apenas se <n
1
> e menor ou igual a <n
2
>.
O predicado maior ou igual.
>= O literal <n
1
> >= <n
2
>, alternativamente >=(<n
1
>, <n
2
>),
tem sucesso apenas se <n
1
> e maior ou igual a <n
2
>.
Tabela 5.4: Predicados relacionais numericos em prolog.
<op. rel. numerico> ::= =:= =\= > < =< >=
Tal como no caso dos outros predicados pre-denidos, as operacoes relaci-
onais numericas podem ser utilizadas, quer como um predicado normal em
l ogica, quer em nota cao inxa, caso a que correspondem a um operador.
Neste livro restringimo-nos `as sua utiliza cao como operadores.
As operacoes relacionais numericas, e o seu signicado, sao apresentadas na
Tabela 5.4.
As opera coes relacionais numericas apresentam um comportamento que di-
fere do mecanismo de unica cao utilizado ate aqui no prolog. As opera coes
relacionais numericas for cam a avaliacao de cada um dos termos envolvidos,
antes da aplica cao da operacao relacional. Por esta razao, estas operacoes
correspondem a um aspecto n ao puro do prolog.
Dado que estas operacoes for cam a avalia cao dos seus argumentos, convem
denir o modo como uma expressao aritmetica e avaliada em prolog. A
avalia cao de um termo correspondente a uma expressao aritmetica e denida
5.7. ARITM

ETICA EM PROLOG 253


do seguinte modo:
1. A avaliacao de um n umero produz o pr oprio n umero.
2. A avaliacao de um termo composto cuja opera cao principal corres-
ponde ao functor f de n argumentos consiste na avaliacao de cada
um dos argumentos do termo (por qualquer ordem) e na aplica cao da
opera cao correspondente ao functor f aos valores que correspondem
ao resultado da avalia cao.
Exemplo 5.7.2 Consideremos a seguinte interac cao:
?- 5 < 7.
Yes
?- 3 + 5 > 12.
No
?- 3 + 5 >= +(4, +(2, 2)).
Yes
?- X > 12.
ERROR: >/2: Arguments are not sufficiently instantiated
Note-se que o ultimo objectivo d a origem a um erro pois a vari avel X n ao
esta ligada a nenhum valor. `
Avaliacao de uma expressao Oprolog fornece o predicado pre-denido,
is, que permite a avaliacao de uma expressao aritmetica. A utilizacao
deste predicado e denida sintacticamente do seguinte modo:
17
<avalia cao> ::= is(<valor>, <expressao>)
<valor> is <expressao>
<valor> ::= <variavel> <n umero>
<expressao> ::= <termo composto>
O predicado is imp oe a restri cao adicional que o resultado da avaliacao
da expressao tem que ser um n umero.
17
Novamente, note-se a possibilidade da utilizacao como um predicado normal ou como
um operador.
254 CAP

ITULO 5. PROLOG
A avaliacao e considerada um literal (ver Sec cao 5.1.2) que tem uma regra
especial de avaliacao: ao avaliar um literal da forma v is exp, se a expressao
exp e avaliada sem erros, produzindo um valor, ent ao se este valor e unic avel
com v a avalia cao tem sucesso devolvendo a substitui cao adequada; em caso
contr ario, a avalia cao falha.
Exemplo 5.7.3 Usando a avalia cao, podemos gerar a seguinte interac cao:
18
?- 45 is 40 + 5.
Yes
?- 50 is 40 + 5.
No
?- X is 5 + 7 * 4.
X = 33
Yes
Note-se a diferen ca entre a utiliza cao da avalia cao e a utiliza cao do predicado
de unica cao:
?- X = 5 + 7 * 4.
X = 5+7*4
Yes
`

E tambem importante notar que uma vez que num literal correspondente
a uma avaliacao se avalia o termo antes da liga cao do seu valor `a vari avel,
as vari aveis que eventualmente existam no termo devem estar instanciadas
no momento da sua avalia cao. Isto signica que com a introdu cao da ava-
liacao, perdemos o aspecto da polimodalidade ate aqui existente nos nossos
programas.
Exemplo 5.7.4 Consideremos o predicado soma 5 e duplica/2. A ex-
pressao soma 5 - e duplica(X, Y) arma que Y e gual a 2 * (X + 5). Este
predicado e denido em prolog do seguinte modo:
18
A avaliacao da terceira expressao utiliza as diferentes prioridades entre os operadores,
as quais sao discutidas na Sec c ao 5.8.
5.7. ARITM

ETICA EM PROLOG 255


soma 5 e duplica(X, Y) :- Y is 2 * (X + 5).
Com este predicado, obtemos a interaccao:
?- soma_5_e_duplica(10, Y).
Y = 30
Yes
?- soma_5_e_duplica(10, 30).
Yes
?- soma_5_e_duplica(X, 30).
ERROR: is/2: Arguments are not sufficiently instantiated
^ Exception: (8) 30 is 2* (_G180+5)
A ultima linha desta interacao ilustra o aspecto que discutimos. Uma vez
que a vari avel X n ao esta instanciada, a avaliacao da expressao 2 * (X +
5) origina um erro. `
Exemplo 5.7.5 (Factorial) Com a introdu cao da avalia cao podemos es-
crever um programa para o calculo da fun cao factorial:
n! =

1 se n = 1
n.(n 1)! se n > 1
Seja factorial um predicado de dois argumentos que arma que o segundo
argumento e o factorial do primeiro argumento, ou seja factorial(N, F)
signica que N! tem o valor F. Podemos escrever o seguinte programa:
factorial(1,1).
factorial(N,F) :-
N > 1,
N_menos_1 is N-1,
factorial(N_menos_1, F_N_menos_1),
F is N * F_N_menos_1.
Note-se que a utiliza cao do literal N > 1 bloqueia os calculos para o caso de
N ser menor ou igual a zero.
Com este programa podemos obter a seguinte interaccao:
256 CAP

ITULO 5. PROLOG
?- factorial(4, X).
X = 24
Yes
Notemos ainda que devido `a utiliza cao da avalia cao no programa factorial
o objectivo factorial(X, 24) dar a origem a um erro. `
5.8 Operadores
O prolog permite-nos escrever expressoes utilizando predicados e functores
numa nota cao que difere da nota cao tradicional da l ogica. Nas expressoes
em l ogica de primeira ordem, tanto as letras de predicado como as letras de
fun cao sao escritas imediatamente `a esquerda da lista dos respectivos argu-
mentos. Na nossa utiliza cao quotidiana de opera coes aritmeticas utilizamos
a nota cao inxa, em que o nome da operacao e escrito entre os argumentos
dessa operacao. O prolog dene o conceito de operador, uma letra de pre-
dicado ou uma letra de fun cao (um functor), cuja utiliza cao pode ser feita
recorrendo a uma nota cao inxa, prexa ou suxa.
A aplica cao de um operador e sintacticamente denida do seguinte modo:
19
<aplica cao de operador>::=<termo> <operador> <termo>
<operador> <termo>
<termo> <operador>
<operador> ::= <atomo>
A primeira linha da deni cao de aplicacao de operador dene a nota cao
inxa, a segunda, a nota cao prexa e a terceira, a nota cao suxa.
Um operador e simplesmente denido como um atomo, pois este pode cor-
responder quer a um functor quer a uma letra de predicado, casos em que a
aplica cao do operador corresponde, respectivamente, a um termo ou a um
literal.
A utiliza cao de um operador obriga-nos a considerar tres aspectos, a priori-
dade, a posicao e a associatividade.
19
Esta denic ao estende as denic oes de termo composto e de literal, apresentadas,
respectivamente, nas p aginas 222 e 223.
5.8. OPERADORES 257
Prioridade. A prioridade e uma grandeza relativa `a precedencia do ope-
rador face `as precedencias dos outros operadores existentes numa expressao.
Em prolog a prioridade e denida atraves de classes de prioridades, as
quais est ao associadas a valores inteiros. Quanto menor for o inteiro corres-
pondente `a classe de prioridade de um operador, mais fortemente o operador
se liga aos operandos.
Exemplo 5.8.1 Se a prioridade do operador op1 for menor do que a pri-
oridade do operador op2, ent ao a expressao a op1 b op2 c e interpretada
como (a op1 b) op2 c. `
Evidentemente, a utiliza cao de parenteses pode ser usada para alterar a
ordem de aplica cao de operadores.
Em prolog, as classes de prioridades correspondem a valores inteiros entre
1 e 1200. Cada operador pre-denido esta associado a uma dada classe de
prioridades. Na Tabela 5.6 apresentamos as classes de prioridades para os
operadores existentes em prolog.
Exemplo 5.8.2 Consultando a Tabela 5.6, vericamos que o operador *
tem a prioridade 400, que o operador + tem a prioridade 500 e que o operador
is tem a prioridade 700. Estas classes de prioridades sao as responsaveis
pelo resultado obtido na interaccao:
?- X is 3 + 2 * 5.
X = 13
Yes
Na realidade, o operador de prioridade mais baixa e *, sendo aplicado em pri-
meiro lugar, seguido da aplicacao do operador + e, nalmente, da aplica cao
do operador is. `
Posicao. A posicao especica a representa cao externa da utiliza cao do
operador, a qual pode ser prexa, inxa ou suxa. Numa opera cao com
representacao prexa o operador aparece antes do operando, como e o caso
do operador n umero simetrico, por exemplo, -5; numa operacao com repre-
sentacao inxa o operador aparece entre os operandos, que apenas podem
ser dois, como e o caso do operador de adi cao, por exemplo, 5 + 2; e numa
opera cao com representacao suxa o operador aparece depois do operando,
como e o caso do operador factorial, por exemplo, 3!.
258 CAP

ITULO 5. PROLOG
Em prolog a posi cao de um operador e denida atraves do recurso a um
conjunto de designacoes, representadas pelos atomos fx, fy, xf, yf, xfx, xfy
e yfx. Estas designacoes podem ser vistas como padr oes em que f designa
o operador e x e y designam os operandos:
As designacoes fx e fy especicam que o operador e un ario e e escrito
em nota cao prexa. A diferen ca entre elas refere-se `a associatividade
da operacao.
As designacoes xf e yf especicam que o operador e un ario e e escrito
em nota cao suxa. A diferen ca entre elas refere-se `a associatividade
da operacao.
As designa coes xfx, xfy e yfx especicam que o operador e bin ario,
e e escrito em nota cao inxa. A diferen ca entre elas refere-se `a associ-
atividade da operacao.
Associatividade. A associatividade de um operador dene como e que o
operador se combina consigo pr oprio ou com outros operadores com a mesma
classe de prioridade. A associatividade e importante quando numa expressao
aparecem v arias utilizacoes do mesmo operador ou aparecem v arias uti-
lizacoes de operadores com a mesma classe de prioridade. Consideremos,
por exemplo, a expressao 10 5 2. Qual a ordem da avalia cao desta ex-
pressao? Ser a que a expressao e equivalente a (105)2, ou que a expressao
e equivalente a 10 (5 2)? A resposta a esta questao e dada atraves da
associatividade dos operadores.
A associatividade de um operador e denida atraves da utiliza cao dos atomos
x ou y juntamente com a especicacao da posicao do operador:
A utiliza cao de um y signica que o operando correspondente pode
conter operadores com a mesma classe de prioridade ou com classe de
prioridade mais baixa do que a classe de prioridade correspondente ao
operador f.
A utiliza cao de um x signica que cada operador existente no operando
deve ter uma prioridade estritamente mais baixa do que a classe de
prioridade correspondente ao operador f.
5.8. OPERADORES 259
Exemplo 5.8.3 Seja um operador bin ario em prolog
20
e consideremos
a expressao a b c. Esta expressao pode ter duas leituras distintas,
(a b) c
ou
a (b c),
nas quais a utiliza cao de parenteses for ca uma das possveis leituras.
1. Supondo que o operador e denido por yfx, ent ao apenas a primeira
leitura e considerada, pois a designacao yfx n ao permite que o segundo
operando contenha um operador com a mesma classe de prioridade que
. Ou seja, a designacao yfx for ca a associatividade ` a esquerda.
2. Supondo que o operador e denido por xfy, ent ao apenas a segunda
leitura e considerada, pois a designa cao xfy n ao permite que o primeiro
operando contenha um operador com a mesma classe de prioridade que
. Ou seja, a designacao xfy for ca a associatividade ` a direita.
3. Supondo que o operador e denido por xfx, ent ao nenhuma das
leituras e considerada. Ou seja, a designacao xfx n ao permitre a
associatividade. `
Exemplo 5.8.4 Seja um operador un ario do tipo prexo em prolog
21
e consideremos a expressao a. Esta expressao estara sint acticamente
correcta, tendo o signicado ((a)), se o operador for denido por fy,
mas sera uma expressao ilegal se este operador for denido por fx. `
Na Tabela 5.5 apresentamos um resumo das possveis especica coes para a
posi cao e a associatividade de um operador. Na Tabela 5.6 apresentamos
a prioridade e o tipo de todos os operadores pre-denidos existentes em
prolog.
22
Existe um predicado pre-denido, current op/3, que estabelece a relacao
entre a prioridade, a associatividade e o nome da cada operador existente
20
Propositadamente utilizamos um smbolo que n ao corresponde a nenhum operador
existente em prolog.
21
Ibid.
22
Uma descric ao completa do signicado dos operadores que n ao sao abordados neste
livro pode ser consultada em [Deransart, Ed-Dbali e Cervoni 96].
260 CAP

ITULO 5. PROLOG
Especicacao Tipo de Associatividade
operador
fx prexo Nao associativo
fy prexo Associatividade `a direita
xfx inxo Nao associativo
xfy inxo Associatividade `a direita
yfx inxo Associatividade `a esquerda
xf suxo Nao associativo
yf suxo Associatividade `a esquerda
Tabela 5.5: Possveis especicacoes de posicao e de associatividade.
em prolog. A expressao current op(P, A, Op) arma que o operador Op
tem prioridade P e associatividade A.
Exemplo 5.8.5 Consideremos a seguinte interac cao:
?- current_op(Prioridade, Associatividade, *).
Prioridade = 400,
Associatividade = yfx
Yes
?- current_op(Prioridade, Associatividade, -).
Prioridade = 200,
Associatividade = fy ;
Prioridade = 500,
Associatividade = yfx ;
No
A interaccao anterior mostra que o operador - tem duas possveis uti-
lizacoes, ou em nota cao prexa, com classe de prioridade 200, como na
expressao -5, ou em nota cao inxa, com prioridade 500, como na expressao
5 - 2.
?- current_op(Prioridade, Associatividade, is).
Prioridade = 700,
Associatividade = xfx ;
No
5.9. INSTRUC

OES DE LEITURA E DE ESCRITA 261
Prioridade Tipo Operador
1200 xfx -->, :-
1200 fx :-, ?-
1100 xfy ;, |
1050 xfy ->, op*->
1000 xfy ,
954 xfy \
900 fy \+
900 fx ~
700 xfx <, =, =.., =@=, =:=, =<, ==, =\=,
>, >=, @<, @=<, @>, @>=, \=, \==, is
600 xfy :
500 yfx +, -, /\, \/, xor
500 fx +, -, ?, \
400 yfx *, /, //, rdiv, <<, >>, mod, rem
200 xfx **
200 xfy ^
Tabela 5.6: Prioridade dos operadores existentes em prolog.
A interaccao anterior mostra que o operador is apenas pode ser utilizado
em nota cao inxa. Este aspecto n ao invalida que utilizemos o predicado
is como um predicado normal, como o mostra a seguinte interac cao:
?- is(X, 2 + 3).
X = 5
Yes
`
5.9 Instruc oes de leitura e de escrita
Como qualquer linguagem de programacao, o prolog apresenta instru coes
de leitura e de escrita. Estas instrucoes correspondem a predicados. Os
predicados de leitura e de escrita correspondem a aspectos n ao puros do
prolog.
262 CAP

ITULO 5. PROLOG
Instru coes de leitura. O predicado pre-denido, read/1, unica o termo
que e escrito no teclado com o termo que e seu argumento. Se a unica cao
tem suceso, o literal tem sucesso, em caso contr ario falha. Esta descri cao
signica que ao encontrar o literal read(X) se a vari avel X j a estiver instan-
ciada e n ao unicar com o termo escrito no teclado, o literal falha. Para que
a operacao de leitura tenha lugar, o termo que e escrito no teclado deve ser
terminado com um ponto e ser seguido de return.
23
Exemplo 5.9.1 A seguinte interaccao mostra a utiliza cao do predicado
read:
?- read(X).
|: a.
X = a
Yes
Note-se que o caracter de pronto da leitura corresponde a |:.
?- read(b).
|: a.
No
?- X=b, read(X).
|: a.
No
O objectivo read(b) falha pois o termo que e fornecido, a, n ao unica com
o seu argumento; o objectivo read(X) falha pois a vari avel esta instanciada
e o valor fornecido n ao unica com a vari avel.
?- read(X).
|: 3 + 2.
X = 3+2
Yes
Note-se que a vari avel X unica com o termo 3 + 2.
?- read(X).
|: 3 mais 2.
ERROR: Stream user_input:0:78 Syntax error: Operator expected
23
Note-se que e possivel ler de um cheiro embora isso n ao seja abordado neste livro.
5.9. INSTRUC

OES DE LEITURA E DE ESCRITA 263
Este objectivo origina um erro pois o prolog n ao conhece o operador mais.
`
O predicado read apresenta um comportamento especial, no sentido que
um objectivo utilizando este predicado apenas pode ser executado uma vez,
ou seja um objectivo com o predicado read tem sucesso no maximo uma
vez, falhando em qualquer tentativa que seja feita posteriormente para o
satisfazer.
Exemplo 5.9.2 Considremos o programa em prolog
leitura(Y) :- read(Y).
e consideremos a interaccao
?- leitura(Z).
|: a.
Z = a ;
No
Note-se que ao tentarmos obter uma resposta alternativa, este programa
falha, pois essa alternativa envolvia a tentativa de satisfazer o objectivo
read(Y) mais do que uma vez. `
Instru coes de escrita. O predicado pre-denido, write/1, escreve no
terminal o valor do termo que e seu argumento. O predicado pre-denido,
nl/0, origina um salto para a pr oxima linha do terminal.
24
Os predicados
write e nl apresentam um comportamento semelhante ao do predicado read
no sentido em que nao podem ser satisfeitos mais do que uma vez.
Exemplo 5.9.3 A seguinte interaccao ilustra o comportamento das ins-
tru coes de escrita:
?- write(a), write(b).
ab
Yes
?- write(a), nl, write(b).
24
Note-se que e possivel escrever para um cheiro embora isso n ao seja abordado neste
livro.
264 CAP

ITULO 5. PROLOG
a
b
Yes
?- X = 3, write(X = ), write(X), nl.
X = 3
X = 3 ;
No
?- write(+(2, 3)).
2+3
Yes
Note-se que o predicado write conhece os operadores, mostrando o resul-
tado recorrendo `a sua deni cao. `
Exemplo 5.9.4 (Torre de Hanoi) Apresentamos um programa para a
solucao do puzzle chamado a Torre de Han oi.
25
A Torre de Hanoi e cons-
tituda por 3 postes verticais, nos quais podem ser colocados discos de
di ametros diferentes, furados no centro, variando o n umero de discos de
puzzle para puzzle. O puzzle inicia-se com todos os discos num dos postes
(o poste da esquerda), com o disco menor no topo e com os discos ordena-
dos, de cima para baixo, por ordem crescente dos respectivos di ametros, e
a nalidade e movimentar todos os discos para um outro poste (o poste da
direita), tambem ordenados por ordem crescente dos respectivos di ametros,
de acordo com as seguintes regras: (1) apenas se pode movimentar um disco
de cada vez; (2) em cada poste, apenas se pode movimentar o disco de cima;
(3) nunca se pode colocar um disco sobre outro de di ametro menor.
Na Figura 5.11 apresentamos um exemplo das conguracoes inicial e nal
para a Torre de Han oi com tres discos.
Suponhamos que pretendamos escrever um programa para resolver o puzzle
da Torre de Han oi para um n umero n de discos (o valor de n sera fornecido
ao programa). Para resolvermos o puzzle da Torre de Han oi com n discos
(n > 1), teremos de efectuar basicamente tres passos: (1) movimentar n1
discos do poste da esquerda para o poste do centro (utilizado como poste
auxiliar); (2) movimentar o disco do poste da esquerda para o poste da
direita; (3) movimentar os n 1 discos do poste do centro para o poste da
25
A descric ao deste exemplo foi adaptada de [Martins e Cravo 2007], p ags. 105110.
5.9. INSTRUC

OES DE LEITURA E DE ESCRITA 265

Figura 5.11: Torre de Han oi com tres discos.

Figura 5.12: Solucao da Torre de Han oi com tres discos.


direita. Estes passos encontram-se representados na Figura 5.12 para o caso
de n = 3.
Podemos escrever seguinte programa para resolver a torre de Hanoi. Este
programa utiliza o predicado move/4 para movimentar n discos. Este predi-
cado recebe uma indica cao explcita de quais os postes de origem e destino
dos discos, bem como qual o poste que deve ser usado como poste auxiliar (e
representa o poste da esquerda, d represenra o poste da direita e c representa
o poste do centro).
hanoi :-
write(Quantos discos quer considerar? ),
266 CAP

ITULO 5. PROLOG
nl,
read(N),
number(N),
inicio(N),
move(N, e, d, c).
inicio(N) :-
write(Soluc~ao da Torre de Hanoi para ),
write(N),
write( discos: ),
nl.
move(1, Origem, Destino, _) :-
write(Origem),
write( -> ),
write(Destino),
nl.
move(N, Origem, Destino, Aux) :-
N>1,
M is N-1,
move(M, Origem, Aux, Destino),
move(1, Origem, Destino, _),
move(M, Aux, Destino, Origem).
Utilizando este programa obtemos a seguinte interaccao:
?- hanoi.
Quantos discos quer considerar?
|: 3.
Soluc~ ao da Torre de Hanoi para 3 discos:
e -> d
e -> c
d -> c
e -> d
c -> e
c -> d
e -> d
Yes
5.10. ESTRUTURAS 267
data
A M D
Figura 5.13: Representa cao da estrutura data.
`
5.10 Estruturas
Ate agora temos trabalhado com arma coes, com regras e com objectivos
que utilizam tipos de dados elementares. Os tipos de dados utilizados tem-se
limitado a atomos, por exemplo, bart ou srB, ou, eventualmente, a n umeros.
Sabemos que os tipos de dados elementares podem ser combinados para
construir tipos de dados estruturados. Em prolog, o conceito de termo
composto e o tipo de informa cao b asico para a constru cao de novos tipos
de informa cao. Nesta seccao consideramos a cria cao de tipos de informa cao
estruturados que sao denidos com base em termos compostos. O resultado e
a criacao de tipos de dados que sao genericamente designados por estruturas.
Suponhamos que queramos construir um tipo de informa cao correspondente
a uma data, agregando um dia, um mes e um ano. Da metodologia dos tipos
abstractos de informa cao, sabemos que deveremos denir os construtores,
os selectores, os reconhecedores e os testes. Seja faz data o construtor para
o tipo data, e sejam ano de, mes de e dia de os selectores para este tipo de
informa cao.
26
Podemos imaginar que uma data e representada em prolog por um termo
de tres argumentos, correspondente ao functor data e cujos argumentos
representam respectivamente o ano, o mes e o dia dessa data. Esta estru-
tura pode ser considerada como uma arvore cuja raz contem o nome do
functor e cujas folhas contem o ano, o mes e o dia da data correspondente
(Figura 5.13).
26
Deixamos como exerccio a denic ao e a constru c ao dos reconhecedores e dos testes.
268 CAP

ITULO 5. PROLOG
Com base nesta representacao, podemos denir os seguintes predicados:
27
1. Construtor:
faz data(A, M, D, data(A, M, D)).
2. Selectores:
ano de(data(A, , ), A).
mes de(data( , M, ), M).
dia de(data( , , D), D).
Suponhamos tambem que desejavamos denir os modicadores muda ano,
muda mes e muda dia que, a partir de uma dada data, modicavam, respec-
tivamente, o ano, o mes e o dia dessa data. Com base na nossa representacao,
podemos denir os seguintes predicados:
3. Modicadores:
muda ano(A, data( , M, D), data(A, M, D)).
muda mes(M, data(A, , D), data(A, M, D)).
muda dia(D, data(A, M, ), data(A, M, D).
Consideremos agora o seguinte programa que a partir de uma data, Hoje,
cria a data equivalente do pr oximo ano, Futuro:
prox_ano(Hoje, Futuro) :-
ano_de(Hoje, A),
Prox_ano is A + 1,
muda_ano(Prox_ano, Hoje, Futuro).
Exemplo 5.10.1 (O problema das tres casas) Consideremos o seguinte
puzzle:
Existe uma rua com tres casas, todas com cores diferentes, uma casa e azul,
outra e vermelha e outra e verde. Em cada casa vive uma pessoa com uma
nacionalidade diferente da das pessoas que vivem nas outras casas. Em cada
casa existe um animal de estimacao e os animais de estimacao sao diferentes
27
Note-se que em linguagens funcionais estas operac oes b asicas correspondem a fun c oes
e que em prolog estas sao transformadas em literais.
5.10. ESTRUTURAS 269
em todas as casas. O ingles vive na casa vermelha. O animal de estimacao
do espanhol e um piriquito. O japones vive na casa `a direita da pessoa que
tem um peixe. A pessoa que tem um peixe vive `a esquerda da casa azul.
Quem tem uma tartaruga?
Antes de resolver este puzzle em prolog comecamos por representar a
informa cao envolvida. Para isso, iremos denir duas estruturas, rua e
defcasa, do seguinte modo:
A estrutura rua corresponde a um termo composto de tres argumentos.
A expressao rua(C1, C2, C3) representa uma rua na qual existem
tres casas, C1, C2 e C3, casas essas que aparecem, na rua, pela ordem
em que sao indicadas na estrutura.
Iremos agora denir um predicado, casa, de dois argumentos. O li-
teral casa(C, R) arma que a casa, C, que e seu primeiro argumento
pertence `a rua, R, que e seu segundo argumento. Se C for uma casa,
teremos:
casa(C, rua(C, , )).
casa(C, rua( , C, )).
casa(C, rua( , , C)).
Denimos tambem um predicado posicao de tres argumentos. O lite-
ral posicao(R, C1, C2) arma que na rua R, a casa C1 esta `a esquerda
da casa C2, ou, o que e o mesmo, que a casa C2 esta `a direita da casa
C1. Se E e D forem casas, teremos:
posicao(rua(E, D, ), E, D).
posicao(rua( , E, D), E, D).
A estrutura defcasa corresponde a um termo composto de tres argu-
mentos. A expressao defcasa(C, N, A) representa uma casa de cor
C, habitada pela pessoa com a nacionalidade N e que tem o animal de
estimacao A.
Temos agora denir tres predicados de dois argumentos cor, nacio-
nalidade e animal cujos signicados sao traduzidos pelas seguintes
arma coes:
cor(defcasa(C, , ), C).
nacionalidade(defcasa( , N, ), N).
animal(defcasa( , , A), A).
270 CAP

ITULO 5. PROLOG
Consideremos agora a representacao das pistas fornecidas pelo puzzle:
O ingles vive na casa vermelha:
casa(I, Rua), cor(I, vermelha), nacionalidade(I, ingles).
O animal de estimacao do espanhol e um piriquito:
casa(E, Rua), animal(E, piriquito), nacionalidade(E, espan-
hol).
O japones vive na casa `a direita da pessoa que tem um peixe:
casa(J, Rua), casa(P1, Rua), nacionalidade(J, japones), ani-
mal(P1, peixe), posicao(Rua, P1, J).
A pessoa que tem um peixe vive `a esquerda da casa azul:
casa(P1, Rua), casa(P2, Rua), animal(P1, peixe), cor(P2,
azul), posicao(Rua, P1, P2).
Pretende-se saber qual a nacionalidade da pessoa que tem uma tartaruga, ou
seja, determinar a casa (casa(X, Rua)), cujo animal de estimacao e uma
tartaruga (animal(X, tartaruga)), e cuja nacionalidade do habitante e
Nac (nacionalidade(X, Nac)).
O seguinte programa em prolog apresenta uma solu cao para este puzzle:
resolve :- pistas(Rua), pergunta(Rua).
pistas(Rua) :-
casa(I, Rua),
cor(I, vermelha),
nacionalidade(I, ingles),
casa(E, Rua),
animal(E, piriquito),
nacionalidade(E, espanhol),
casa(J, Rua),
casa(P1, Rua),
nacionalidade(J, japones),
animal(P1, peixe),
posicao(Rua, P1, J),
casa(P2, Rua),
cor(P2, azul),
5.11. LISTAS 271
posicao(Rua, P1, P2).
pergunta(Rua) :-
casa(X, Rua),
animal(X, tartaruga),
nacionalidade(X, Nac),
write( O ),
write(Nac),
write( tem a tartaruga.),
nl.
cor(defcasa(C, _, _), C).
nacionalidade(defcasa(_, N, _), N).
animal(defcasa(_, _, A), A).
posicao(rua(E, D, _), E, D).
posicao(rua(_, E, D), E, D).
casa(X, rua(X, _, _)).
casa(X, rua(_, X, _)).
casa(X, rua(_, _, X)).
Com este programa obtemos a interaccao:
?- resolve.
O japones tem a tartaruga.
Yes
`
5.11 Listas
O prolog apresenta a lista como um tipo estruturado de informa cao pre-
denido. Internamente, as listas sao representadas por uma estrutura cuja
fun cao principal e o ponto (escrito .), uma fun cao de dois argumentos.
Uma estrutura com a funcao ponto e semelhante a um par em Scheme e a
uma celula cons em lisp. A lista sem elementos e representada pelo atomo
[]. Na Figura 5.14 mostramos a representa cao interna da lista com os
272 CAP

ITULO 5. PROLOG
. . .
[]
a
b
c
Figura 5.14: Representa cao interna da lista com os elementos a, b e c.
elementos a, b e c.
A representacao externa das listas emprolog e feita atraves de uma sequencia
de elementos, separados por virgulas, e delimitada pelos smbolos [ e ]:
<lista> ::= [] [ <elementos> ]
<elementos> ::= <elemento> <elemento>, <elementos>
<elemento> ::= <termo> <lista>
Uma lista sem elementos chama-se uma lista vazia.
Exemplo 5.11.1 As seguintes entidades sao listas em prolog:
[]
[a, b, c]
[[], [a, b], c, d]
[X, r(a, b, c), 6]
Note-se que a segunda lista deste exemplo corresponde `a representacao in-
terna apresentada na Figura 5.14. `
Uma lista n ao vazia pode ser considerada como constituda por duas enti-
dades, o primeiro elemento da lista e o resto da lista. O prolog fornece um
operador, | que permite separar estes dois constituintes da lista. Assim, o
padr ao [P | R] identica duas vari aveis P e R (de primeiro e de resto), que
ao ser unicado com uma lista associa a variavel P com o primeiro elemento
da lista e a vari avel R com o resto da lista.
Exemplo 5.11.2 A seguinte interacao mostra a utiliza cao do operador |:
5.11. LISTAS 273
?- [a, b] = [X | Y].
X = a,
Y = [b]
Yes
?- [a] = [X | Y].
X = a,
Y = []
Yes
?- [] = [X | Y].
No
Note-se que numa lista apenas com um elemento, o resto e a lista vazia e
que uma lista vazia n ao tem primeiro elemento nem resto. `
Exemplo 5.11.3 (O predicado membro) Suponhamos que queremos es-
crever um programa que testa se um dado elemento pertence a uma lista.
Vamos assumir que o predicado membro/2 e verdadeiro apenas no caso do
seu primeiro argumento pertencer `a lista que e seu segundo argumento. Po-
demos escrever o seguinte programa:
membro(X, [X | R]).
membro(X, [P | R]) :- membro(X, R).
Este programa e constitudo por uma arma cao que diz que um elemento
e membro de uma lista cujo primeiro elemento e esse mesmo elemento
(membro(X, [X | R])). Para alem disto, este programa contem uma regra
que arma que um elemento e membro de uma lista cujo primeiro elemento
e diferente desse elemento, se for membro do resto da lista (membro(X, [P
| R]) :- membro(X, R)).
Com este programa obtemos a seguinte interac cao:
?- membro(4, [3, 4, 5]).
Yes
?- membro(2, [3, 4, 5]).
No
274 CAP

ITULO 5. PROLOG
?- membro(4, []).
No
?- membro([a, b], [a, [a, b], c]).
Yes
A interaccao apresentada corresponde ao que poderamos esperar de um
programa tradicional que utiliza listas, a decisao sobre se um dado elemento
pertence ou n ao a uma dada lista.
Contudo, devido `a polimodalidade apresentada pela programa cao em l ogica,
podemos usar vari aveis em qualquer dos argumentos de um objectivo que
envolva o predicado membro. A seguinte interac cao mostra os elementos que
sao membros de uma lista.
?- membro(X, [a, b, c]).
X = a ;
X = b ;
X = c ;
No
A pr oxima interaccao corresponde ao objectivo de saber quais sao as listas
de que um dado elemento e membro.
?- membro(a, X).
X = [a | _G252] ;
X = [_G251, a | _G258] ;
X = [_G251, _G257, a | _G264] ;
X = [_G251, _G257, _G263, a | _G270] ;
X = [_G251, _G257, _G263, _G269, a | _G276]
Yes
A primeira resposta obtida diz-nos que a e membro de uma lista cujo pri-
meiro elemento e a e cujo resto e uma vari avel (representada por G252).
A segunda resposta, diz-nos que a e membro de uma lista cujo primeiro
elemento e uma vari avel (representada por G251), cujo segundo elemento e
a e cujo resto e uma vari avel (representada por G258). `
A interaccao nal do Exemplo 5.11.3 mostra-nos que, na realidade, o ope-
rador | faz mais do que separar o primeiro elemento de uma lista do seu
5.11. LISTAS 275
resto. Este operador pode ser utilizado para separar elementos de uma lista.
Por exemplo a lista [X, Y | R] corresponde a (unica com) qualquer lista
que tenha um primeiro elemento X, um segundo elemento Y e um resto R.
Exemplo 5.11.4 A seguinte interac cao mostra algumas utiliza coes do ope-
rador |:
?- [a, b, c] = [_, Y | Z].
Y = b,
Z = [c]
Yes
?- [a, b, c] = [_, _, Y | Z].
Y = c,
Z = []
Yes
`
Note-se ainda que na primeira clausula do programa do Exemplo 5.11.3,
a vari avel R n ao tem qualquer utilidade. Neste caso, poderemos utilizar
uma vari avel an onima, tomando a clausula a forma membro(X, [X | ]).
Analogamente, na segunda clausula do mesmo programa, a vari avel P n ao
tem utilidade, pelo que esta pode tambem ser substituda por uma vari avel
an onima. Assim, o programa do Exemplo 5.11.3 pode ser escrito do seguinte
modo:
membro(X, [X | _]).
membro(X, [_ | R]) :- membro(X, R).
Exemplo 5.11.5 (Juncao de listas) Consideremos que a jun cao de duas
listas corresponde `a lista que contem todos os elementos da primeira lista
(e na mesma ordem) seguidos por todos os elementos da segunda lista (e na
mesma ordem).
Vamos assumir que o predicado junta/3 e verdadeiro apenas no caso da
lista que e seu terceiro argumento corresponder `a juncao da lista que e seu
primeiro argumento com a lista que e seu segundo argumento. Ou seja,
junta(X, Y, Z) signica que Z e o resultado de juntar X e Y.
276 CAP

ITULO 5. PROLOG
junta([c, b], [a], L)
junta([P1|R1], L11, [P1|L21]):-junta(R1, L11, L21)
{c/P1, [b]/R1, [a]/L11, [c|L21]/L}
junta([b], [a], L21)
junta([P2|R2], L12, [P2|L22]):-junta(R2, L12, L22)
{b/P2, []/R2, [a]/L12, [b|L22]/L21}
junta([], [a], L22)
junta([], L1, L1)
{[a]/L1, [a]/L22}

Figura 5.15: Sequencia de objectivos em junta([c, b], [a], L).


Consideremos o seguinte programa para juntar duas listas:
junta([], L, L).
junta([P | R], L1, [P | L2]) :- junta(R, L1, L2).
Com este programa produzimos a interac cao:
?- junta([], [a, b], L).
L = [a, b]
Yes
?- junta([c, b], [a], L).
L = [c, b, a]
Yes
?- junta([a, b], X, [a, b, c, d]).
X = [c, d]
Yes
?- junta(X, Y, [1, 2, 3]).
X = [],
5.11. LISTAS 277
Y = [1, 2, 3] ;
X = [1],
Y = [2, 3] ;
X = [1, 2],
Y = [3] ;
X = [1, 2, 3],
Y = [] ;
No
?-
Na Figura 5.15 apresentamos a sequencia de objectivos gerados para res-
ponder ao objectivo junta([c, b], [a], L). Nesta gura, apresentamos
dentro de um rectangulo a variante da clausula utilizada e, dentro de ou-
tro rectangulo, a substitui cao utilizada. Recorde-se que a resposta a este
objectivo corresponde `a substitui cao gerada para a vari avel L. `
Exemplo 5.11.6 (Inversao de listas processo recursivo) Supon-
hamos que queremos escrever um programa que inverte a ordem dos elemen-
tos de uma lista. Por exemplo, a lista [a, b, c] origina a seguinte lista
invertida [c, b, a].
O seguinte predicado, inverte/2, efectua a inversao de listas. Note-se que
este utiliza o predicado junta do Exemplo 5.11.5.
inverte([], []).
inverte([P | R], I) :-
inverte(R, I1), junta(I1, [P], I).
278 CAP

ITULO 5. PROLOG
inverte([a, b, c], X)
inverte([b, c], X1), junta(X1, [a], X)
inverte([c], X2), junta(X2, [b], X1), junta(X1, [a], X)
inverte([], X3), junta(X3, [c], X2),
junta(X2, [b], X1), junta(X1, [a], X)
junta([], [c], X2), junta(X2, [b], X1), junta(X1, [a], X)
junta([c], [b], X1), junta(X1, [a], X)
junta([c, b], [a], X)

Figura 5.16: Sequencia de objectivos em inverte([a, b, c]), X).


5.11. LISTAS 279
Com este programa obtemos a interaccao:
?- inverte([a, b, c], X).
X = [c, b, a]
Yes
?- inverte(X, [a, b, c]).
X = [c, b, a]
Yes
Na Figura 5.16 mostramos a sequencia de objectivos gerada pelo objec-
tivo inverte([a, b, c]), X), n ao expandindo os objectivos gerados por
junta.
Podemos observar que durante a resposta a este objectivo, o calculo da
substitui cao para a vari avel X e sucessivamente adiado, devido `a existencia
de objectivos para os quais ainda n ao existe resposta (ou seja, objectivos
que estao suspensos). Por esta razao, dizemos que este programa gera um
processo recursivo. `
Exemplo 5.11.7 (Inversao de listas processo iterativo)
Suponhamos, que desejavamos escrever um programa para inversao de listas
utilizando um processo iterativo. Como e f acil de retirar o primeiro elemento
de uma lista e como tambem e f acil adicionar um elemento no incio de uma
lista, podemos usar um acumulador que funciona do seguinte modo:
Lista Acumulador
[a, b, c] []
[b, c] [a]
[c] [b, a]
[] [c, b, a]
Utilizando este princpio de calculo, denimos o predicado inverte 2/3 do
seguinte modo:
inverte_2([], I, I).
inverte_2([P | R], Ac, I) :-
inverte_2(R, [P | Ac], I).
280 CAP

ITULO 5. PROLOG
inverte 2([a, b, c], X)
inverte 2([a, b, c], [], X)
inverte 2([b, c], [a], X)
inverte 2([c], [b, a], X)
inverte 2([], [c, b, a], X)

Figura 5.17: Sequencia de objectivos em inverte 2([a, b, c]), X).


Como o predicado inverte 2/3 nos obriga a pensar explicitamente no acu-
mulador, podemos denir o predicado inverte 2/2 que esconde a uti-
lizacao do acumulador:
inverte_2(L, I) :- inverte_2(L, [], I).
Notemos a utiliza cao de dois predicados com o mesmo nome, inverte 2/2
e inverte 2/3.
Com este predicado, obtemos a interaccao
?- inverte_2([a, b, c], X).
X = [c, b, a]
Yes
Na Figura 5.17 mostramos a sequencia de objectivos gerada pelo objectivo
5.11. LISTAS 281
inverte 2([a, b, c]), X). Podemos observar que durante a resposta a
este objectivo, n ao existem substitui coes adiadas. Cada objectivo contem,
por si so, toda a informa cao necessaria para responder `a pergunta inicial.
Por esta razao, este programa gera um processo iterativo. `
Denicao 5.11.1 (Clausula iterativa versao 2) Na Deni cao 5.1.1,
dissemos que uma clausula iterativa era uma clausula cujo corpo apenas
continha um literal, usando o mesmo predicado que o utilizado na cabe ca
da clausula. Aqui, estendemos esta deni cao autorizando zero ou mais uti-
lizacoes de predicados pre-denidos, antes da utiliza cao da clausula iterativa.

Denicao 5.11.2 (Programa iterativo) Um programa em prolog em


que todas as clausulas sao ou clausulas unit arias ou clausulas iterativas,
diz-se um programa iterativo.
Exemplo 5.11.8 (Programa iterativo) O seguinte programa e um pro-
grama iterativo:
inverte_2([], I, I).
inverte_2([P | R], Ac, I) :-
inverte_2(R, [P | Ac], I).
`
Exemplo 5.11.9 (Seleccao de um elemento de uma lista) Considere-
mos o predicado escolhe/3 com o seguinte signicado: escolhe(L1, E,
L2) signica que L2 e a lista que se obtem de L1 retirando-lhe o elemento E.
Este predicado pode ser escrito em prolog do seguinte modo:
escolhe([P | R], P, R).
escolhe([P | R], E, [P | S]) :- escolhe(R, E, S).
Com o predicado escolhe, podemos obter a seguinte interac cao:
?- escolhe([a, b, c], a, X).
X = [b, c] ;
No
282 CAP

ITULO 5. PROLOG
?- escolhe([a, b, c], X, Y).
X = a,
Y = [b, c] ;
X = b,
Y = [a, c] ;
X = c,
Y = [a, b] ;
No
O predicado escolhe parece n ao ser muito interessante, no entanto, a sua
import ancia revela-se no Exemplo 5.11.10. `
Exemplo 5.11.10 (Permutacoes de uma lista) O seguinte programa
em prolog efectua as permuta coes de uma lista. O predicado perm/2 signi-
ca que os seus argumentos correspondem a listas com os mesmos elementos
mas com os elementos por ordem diferente.
perm([], []).
perm(L, [P | R]) :- escolhe(L, P, L1), perm(L1, R).
O predicado perm utiliza o predicado escolhe, com o predicado perm pode-
mos obter a interaccao:
?- perm([a, b, c], X).
X = [a, b, c] ;
X = [a, c, b] ;
X = [b, a, c] ;
X = [b, c, a] ;
X = [c, a, b] ;
X = [c, b, a] ;
No
Note-se o papel do predicado escolhe, associado `a semantica procedimental
do prolog. `
Exemplo 5.11.11 (Problema das 8 rainhas) O problema das oito rai-
nhas consiste em dispor 8 rainhas num tabuleiro de xadrez (com 8 linhas e
5.11. LISTAS 283
Figura 5.18: Solu cao para o problema das 8 rainhas.
8 colunas) de tal modo que estas n ao se ataquem. No jogo de xadrez, as
rainhas atacam-se (e movimentam-se) quer na horizontal, quer na vertical,
quer ao longo das diagonais. Para resolver o problema das 8 rainhas, devem-
se colocar as rainhas no tabuleiro de tal modo que duas rainhas n ao podem
estar na mesma coluna, nem na mesma linha nem na mesma diagonal. Na
Figura 5.18
28
mostra-se uma das possveis solucoes para o problema das 8
rainhas.
Consideremos o predicado perm do Exemplo 5.11.10. Uma permuta cao de
uma lista de n elementos inteiros (entre 1 e n) pode ser considerada como
uma representacao da colocacao das rainhas num tabuleiro de n por n, em
que se o elemento na posicao k da lista e n
k
, ent ao existe uma rainha colocada
na posicao (k, n
k
) do tabuleiro, visto como um referencial cartesiano.
Para resolver o problema das 8 rainhas, n ao temos mais do que gerar as per-
muta coes da lista [1, 2, 3, 4, 5, 6, 7, 8] e vericar se a permuta cao
gerada corresponde a uma coloca cao de rainhas sem ataques:
rainhas8(R) :-
perm([1, 2, 3, 4, 5, 6, 7, 8], R),
sem_ataques(R).
O predicado sem ataques tera que vericar, para cada rainha, se n ao existe
28
Figura obtida de www.stetson.edu/~efriedma/mathmagic/0201.html.
284 CAP

ITULO 5. PROLOG
1 2 3 4 5 6 7 8 X
Y
...
Figura 5.19: Argumentos iniciais de sem ataque direita.
nenhuma outra rainha que a ataque. Note-se que como estamos a trabalhar
com as permuta coes de uma lista, n ao temos que vericar se existem duas
rainhas na mesma linha nem na mesma coluna.
O predicado sem ataque direita/2 tem o seguinte signicado: a expressao
sem ataque direita(X, T), arma que a rainha que esta colocada na co-
luna X n ao ataca nenhuma das rainhas colocadas nas colunas `a direita da
sua coluna, no tabuleiro T.
Na Figura 5.19 mostramos esquematicamente a situacao na execucao do ob-
jectivo sem ataque direita(1, P) relativamente `a solu cao apresentada na
Figura 5.18. O primeiro argumento corresponde `a indica cao que estamos a
considerar a coluna 1 e o segundo argumento indica o tabuleiro em consi-
deracao, o qual pode ser separado na primeira coluna e no tabuleiro `a sua
direita. Este literal ir a considerar sucessivamente todas as colunas.
O predicado sem ataque individual/4 tem o seguinte signicado: a ex-
pressao sem - ataque individual(X1, Y1, X2, R), arma que a rainha
que esta colocada na coluna X1 e na linha Y1, n ao ataca nenhuma das rai-
nhas colocadas a partir da coluna X2 no tabuleiro R. Para isso, este predicado
verica individualmente se n ao existe ataque, predicado nao se atacam/4,
entre a rainha em X1, Y1 e a rainha em cada uma das colunas.
5.11. LISTAS 285
A expressao nao se atacam(X1, Y1, X2, Y2), arma que a rainha que esta
colocada na coluna X1 e na linha Y1 n ao ataca a rainha que esta colocada
na coluna X2 e na linha Y2. Dadas as circunst ancias do nosso problema,
para isso, basta vericar que as duas rainhas n ao se encontram na mesma
diagonal.
sem_ataques(P) :- sem_ataque_direita(1, P).
sem_ataque_direita(_, []).
sem_ataque_direita(X1, [Y1 | R]) :-
X2 is X1 + 1,
sem_ataque_individual(X1, Y1, X2, R),
sem_ataque_direita(X2, R).
sem_ataque_individual(_, _, _, []).
sem_ataque_individual(X1, Y1, X2, [Y2 | R]) :-
nao_se_atacam(X1, Y1, X2, Y2),
NovoX2 is X2 + 1,
sem_ataque_individual(X1, Y1, NovoX2, R).
nao_se_atacam(X1, Y1, X2, Y2) :-
abs(X1 - X2) =\= abs(Y1 - Y2).
Com este programa, obtemos a seguinte interac cao:
?- rainhas8(X).
X = [1, 5, 8, 6, 3, 7, 2, 4] ;
X = [1, 6, 8, 3, 7, 4, 2, 5] ;
X = [1, 7, 4, 6, 8, 2, 5, 3] ;
X = [1, 7, 5, 8, 2, 4, 6, 3] ;
X = [2, 4, 6, 8, 3, 1, 7, 5] ;
X = [2, 5, 7, 1, 3, 8, 6, 4] ;
X = [2, 5, 7, 4, 1, 8, 6, 3] ;
X = [2, 6, 1, 7, 4, 8, 3, 5] ;
X = [2, 6, 8, 3, 1, 4, 7, 5] ;
X = [2, 7, 3, 6, 8, 5, 1, 4] ;
X = [2, 7, 5, 8, 1, 4, 6, 3] ;
...
286 CAP

ITULO 5. PROLOG
`
Exemplo 5.11.12 (Caminhos em grafos) Consideremos o grafo repre-
sentado na Figura 5.9. Suponhamos que desej avamos escrever um programa
que recebia dois n os de um grafo e que calculava os possveis caminhos entre
esses dois n os.
Denimos o predicado caminho/3 com o seguinte signicado: caminho(X,
Y, C) e verdadeiro se C for um caminho no grafo entre X e Y. Um caminho e
uma lista de n os, comecando com o n o X, terminando no n o Y e tal que para
quaisquer dois elementos consecutivos da lista, M e N, existe um arco que os
liga (liga(M, N)).
Este problema e resolvido com a seguinte deni cao do predicado caminho:
caminho(X, Y, [X, Y]) :- liga(X, Y).
caminho(X, Y, [X | Z]) :-
liga(X, W),
caminho(W, Y, Z).
Com este programa, e com os dados referentes `a Figura 5.9, podemos obter
a seguinte interaccao:
?- caminho(a, c, C).
C = [a, b, c] ;
C = [a, b, d, e, f, c] ;
No
`
Exemplo 5.11.13 (Comprimento de uma lista) Suponhamos que que-
ramos escrever um programa para calcular o comprimento de uma lista.
Utilizando a opera cao de adi cao, podemos ser tentados a escrever o seguinte
programa, o qual arma que o comprimento de uma lista vazia e zero e que
o comprimento de uma lista n ao vazia sera um mais o comprimento do seu
resto.
comprimento([], 0).
comprimento([_ | R], +(C, 1)) :- comprimento(R, C).
5.11. LISTAS 287
Com este programa obtemos a interaccao:
?- comprimento([], X).
X = 0
Yes
?- comprimento([a, b, c], X).
X = 0+1+1+1
Yes
Este programa apresenta um comportamento semelhante ao do programa do
Exemplo 5.3.7, ou seja, indica que o comprimento da lista e 0+1+1+1 mas
n ao calcula o resultado desta expressao.
O problema com este exemplo e que o programa funciona exclusivamente
com base na unica cao de predicados, o que corresponde `aquilo que podemos
chamar de programa cao em l ogica pura. `
Exemplo 5.11.14 (Comprimento de uma lista versao recursiva)
A operacao de avaliacao permite-nos for car a avaliacao de uma expressao,
desviando-nos do mecanismo exclusivo de unica cao. Voltemos a considerar
o Exemplo 5.11.13, utilizando agora a avalia cao de expressoes. A seguinte
deni cao corresponde a uma alternativa para um programa para calcular o
comprimento de uma lista:
comprimento([], 0).
comprimento([_ | R], C) :-
comprimento(R, C_sub),
C is C_sub+1.
A segunda clausula deste programa tem a seguinte interpretacao procedi-
mental para calcular o comprimento de uma lista n ao vazia, calcule-se o
comprimento da sub-lista que corresponde ao resto da lista e adicione-se 1
ao resultado.
Com este programa, obtemos a interaccao:
?- comprimento([a, b, c], X).
X = 3
Yes
288 CAP

ITULO 5. PROLOG
`
Exemplo 5.11.15 (Comprimento de uma lista versao iterativa)
O seguinte programa corresponde a uma versao iterativa para o calculo do
comprimento de uma lista:
comprimento(L, C) :- comprimento(L, 0, C).
comprimento([], Ac, Ac).
comprimento([_|R], Ac, C) :-
Ac_N is Ac + 1,
comprimento(R, Ac_N, C).
Com este programa, obtemos a interaccao:
?- comprimento([a, b, c], X).
X = 3
Yes
`
Exemplo 5.11.16 (Remocao de elementos repetidos) Suponhamos
que queramos escrever em prolog um predicado de dois elementos cha-
mado remove repetidos. A expressao remove repetidos(L1, L2) signi-
ca que a lista L2 tem os mesmos elementos, e pela mesma ordem, que a
lista L1 mas sem elementos repetidos.
Podemos pensar em escrever o seguinte programa
remove_repetidos_errado([], []).
remove_repetidos_errado([P | R], L) :-
membro(P, R),
remove_repetidos_errado(R, L).
remove_repetidos_errado([P | R], [P | L]) :-
remove_repetidos_errado(R, L).
em que membro e o predicado denido no Exemplo 5.11.3.
Com este predicado obtemos a interaccao:
5.12. O OPERADOR DE CORTE 289
remove_repetidos_errado([a, c, c, a, b, c], X).
X = [a, c, b]
Yes
que parece indicar que o nosso programa esta correcto. No entanto, se
pedirmos respostas alternativas, obtemos a interac cao:
?- remove_repetidos_errado([a, c, c, a, b, c], X).
X = [a, b, c] ;
X = [c, a, b, c] ;
X = [a, b, c] ;
X = [c, a, b, c] ;
X = [c, a, b, c] ;
X = [c, c, a, b, c] ;
X = [a, a, b, c] ;
X = [a, c, a, b, c] ;
X = [a, a, b, c] ;
X = [a, c, a, b, c] ;
X = [a, c, a, b, c] ;
X = [a, c, c, a, b, c] ;
No
Este programa, embora produza a resposta correcta, produz v arias respos-
tas de que n ao estavamos `a espera. O problema com o nosso programa
e que o mecanismo de retrocesso vai fazer com que a regra com cabeca
remove repetidos errado([P | R], [P | L]) e com corpo remove repe-
tidos errado(R, L) seja usada mesmo no caso em que P e membro de R.
`

E possvel dizer ao prolog que a partir de certo ponto n ao deve procurar


mais solucoes. Esta indica cao e feita atraves do operador de corte.
5.12 O operador de corte
O operador de corte e utilizado para alterar a semantica procedimental do
prolog, reduzindo o espaco de procura de solucoes atraves de um controle
explcito sobre o mecanismo de retrocesso.
290 CAP

ITULO 5. PROLOG
A vantagem do operador de corte e a possibidade de indicar que num pro-
grama, certos ramos da arvore SLD que se sabe que n ao produzem solucoes,
n ao devem ser explorados. A desvantagem do operador de corte e a possibi-
lidade de alterar inadvertidamente a semantica declarativa de um programa.
O operador de corte, representado por !, e um atomo especial, utilizado
como um literal numa clausula. O objectivo ! tem sempre sucesso, no en-
tanto, como efeito secundario, a avaliacao deste atomo origina a introdu cao
de uma barreira no ramo da arvore SLD em que a clausula com o opera-
dor de corte aparece, barreira essa que n ao pode ser ultrapassada durante o
processo de retrocesso.
Exemplo 5.12.1 (remocao de elementos repetidos versao 2) Con-
sideremos a seguinte varia cao do programa do Exemplo 5.11.16. Este pro-
grama utiliza o operador de corte para evitar o retrocesso ap os a descoberta
de que um elemento esta repetido na lista.
remove_repetidos([], []).
remove_repetidos([P | R], L) :-
membro(P, R),
!,
remove_repetidos(R, L).
remove_repetidos([P | R], [P | L]) :-
remove_repetidos(R, L).
Com este programa, obtemos o resultado esperado:
?- remove_repetidos([a, c, c, a, b, c], X).
X = [a, b, c] ;
No
`
Exemplo 5.12.2 (Ligacoes em grafos versao 2) Consideremos no-
vamente o Exemplo 5.3.6 e suponhamos que escrevamos o seguinte pro-
grama:
5.12. O OPERADOR DE CORTE 291
liga ind(a, X)
(ver Figura 5.21)
liga ind(X1, Y1) :- liga(X1, Y1)
{a/X1, X/Y1}
liga(a, X)

liga(a, h)
{h/X}
liga(a, b)
{b/X}
;
Figura 5.20: Retrocessos ate liga ind(a, X).
liga_ind(X, Y) :- liga(X, Y).
liga_ind(X, Z) :-
liga(X, Y),
!,
liga_ind(Y, Z).
Este programa difere do programa do Exemplo 5.3.6 na segunda clausula,
na qual o operador de corte e colocado entre os literais liga(X, Y) e
liga ind(Y, Z).
De acordo com a semantica do operador de corte, esta clausula tem a se-
guinte semantica procedimental para tentar provar se X se liga indirecta-
mente a Z, encontre-se uma ligacao directa entre X e Y, esta sera a unica
liga cao directa a utilizar (a consequencia do operador de corte), seguida-
mente, tente-se encontrar liga coes indirectas entre Y e Z.
Com este programa, e com as arma coes apresentadas no Exemplo 5.3.6,
obtemos a seguinte interaccao:
?- liga_ind(a, X).
X = h ;
X = b ;
X = i ;
292 CAP

ITULO 5. PROLOG
X = g ;
No
Note-se a diferen ca dos resultados obtidos relativamente ao Exemplo 5.3.6.
Na Figura 5.20 mostramos o processo de inferencia e de retrocesso originado
pela produ cao das duas primeiras respostas (X = h e X = b). Para facilitar
a compreensao, nesta gura indicam-se, dentro de rectangulos, as variantes
de clausulas e as substitui coes utilizadas.
Ap os os retrocessos indicados na Figura 5.20, a clausula
liga ind(X, Z) :- liga(X, Y), !, liga ind(Y, Z)
e seleccionada, originando o processo de inferencia que se apresenta nas Fi-
guras 5.21 e 5.22. O literal liga(a, X) unica com liga(a, h), originando
o objectivo
!, liga ind(h, Z)
O literal ! tem sucesso, originando-se o objectivo liga ind(h, Z). Ime-
diatamente ap os o sucesso do operador ! gera-se uma barreira na arvore
SLD que n ao permite o retrocesso a partir desse ponto (ver Figura 5.21).
Continuando a explora cao da arvore, geram-se mais duas respostas, X =
i (ver Figura 5.21) e X = g (ver Figura 5.22). A geracao de respostas
adicionais obrigaria a ultrapassar a barreira introduzida pelo operador de
corte, pelo que o processo termina. No Exemplo 5.3.6, como n ao existe o
operador de corte sao produzidas respostas adicionais correspondendo a um
retrocesso para alem da barreira que n ao existe nesse exemplo. `
5.12. O OPERADOR DE CORTE 293
liga ind(a, X)
liga(a, X)
(ver Figura 5.20)
liga ind(X2, Z2) :- liga(X2, Y2), !, liga ind(Y2, Z2)
{a/X2, X/Z2}
liga(a, Y2), !, liga ind(Y2, X)
liga(a, h)
{h/Y2}
!, liga ind(h, X)
retrocesso
liga ind(h, X)
liga ind(X3, Y3) :- liga(X3, Y3)
{h/X3, X/Y3}
liga ind(X4, Z4) :- liga(X4, Y4), !, liga ind(Y4, Z4)
{h/X4, X/Z4}
liga(h, X)
liga(h, i)
{i/X}

;
liga(h, Y4), !, liga ind(Y4, X)
liga(h, i)
{i/Y4}
!, liga ind(i, X)
liga ind(i, X)
liga(h, i)
{i/Y4}
!, liga ind(i, X)
liga ind(i, X)
(ver Figura 5.22)
retrocesso
Figura 5.21: Retrocessos ap os liga ind(a, X) (parte 1).
294 CAP

ITULO 5. PROLOG
(ver Figura 5.21)
liga ind(i, X)
liga ind(X5, Y5) :- liga(X5, Y5)
{i/X5, X/Y5}
liga ind(X6, Z6) :- liga(X6, Y6), !, liga ind(Y6, Z6)
{i/X6, X/Z6}
liga(i, X)
liga(i, g)
{g/X}

;
liga(i, Y6), !, liga ind(Y6, X)
liga(i, g)
{g/Y6}
!, liga ind(g, X)
liga ind(g, X)
liga ind(X8, Z8) :- liga(X8, Y8), ...
{g/X8, X/Z8}
liga(g, Y8), !, liga ind(Y8, X)
X
retrocesso
liga(g, X)
liga ind(X7, Y7) :- liga(X7, Y7)
{g/X7, X/Y7}
X
X
Figura 5.22: Retrocessos ap os liga ind(a, X) (parte 2).
5.12. O OPERADOR DE CORTE 295
Antes de prosseguir, convem claricar a semantica do operador de corte.
Seja G um objectivo que utiliza uma clausula C cujo corpo contem o ope-
rador de corte. O operador de corte compromete o prolog com todas as
escolhas que foram feitas desde a unicac cao com a clausula C ate ao ope-
rador de corte. O operador compromete tambem o prolog com a escolha
de C para responder ao objectivo G. Note-se que e possvel explorar outras
alternativas utilizando o objectivo G como o seguinte exemplo mostra.
Exemplo 5.12.3 (Utilizacao do operador de corte) Consideremos o
seguinte programa:
a(X, Y) :- q(X, Y).
a(0, 0).
q(X, Y) :- i(X), !, j(Y).
q(5, 5).
i(1).
i(2).
j(1).
j(2).
j(3).
Com este programa obtemos a interaccao, cuja arvore SLD correspondente
se mostra na Figura 5.23.
?- a(X, Y).
X = 1,
Y = 1 ;
X = 1,
Y = 2 ;
X = 1,
Y = 3 ;
X = 0,
Y = 0 ;
No
Note-se que o operador de corte aparece na clausula cuja cabeca e q(X, Y),
sendo possvel o retrocesso para o objectivo a(X, Y). `
296 CAP

ITULO 5. PROLOG
a(X, Y)
a(X1, Y1) :- q(X1, Y1)
{X/X1, Y/Y1}
a(0, 0)
{0/X, 0/Y}

q(X, Y)
q(X2, Y2) :- i(X2), !, j(Y2)
{X/X2, Y/Y2}
i(X), !, j(Y)
i(1)
{1/X}
!, j(Y)
retrocesso
j(Y)
j(1)
{1/Y}

;
j(2)
{2/Y}
j(3)
{3/Y}

;
X
Figura 5.23: Retrocessos para clausula que utilizou outra com o corte.
Exemplo 5.12.4 (Divisao de uma lista) Suponhamos que queremos
escrever um programa que recebe um inteiro e uma lista de inteiros e que a
divide em duas listas, vericando as duas seguintes condi coes: (1) todos os
elementos da primeira lista sao menores que o inteiro recebido; (2) todos os
elementos da segunda lista sao maiores ou iguais ao elemento recebido.
Seja parte um predicado de quatro elementos com o seguinte signicado:
sendo N um inteiro, e L, L1 e L2 listas de inteiros, parte(L, N, L1, L2)
arma que todos os elementos da lista L1 sao menores do que N e pertencem `a
lista L e todos os elementos da lista L2 sao maiores ou iguais a N e pertencem
`a lista L.
5.12. O OPERADOR DE CORTE 297
Consideremos o programa:
parte([], _, [], []).
parte([P | R], N, [P | R1], L2) :-
P < N,
parte(R, N, R1, L2).
parte([P | R], N, L1, [P | R2]) :-
P >= N,
parte(R, N, L1, R2).
Com o qual obtemos a interac cao:
?- parte([2, 3, 5, 7], 4, L1, L2).
L1 = [2, 3],
L2 = [5, 7]
Yes
?- parte(L, 4, [1, 3], [6, 7, 8]).
L = [1, 3, 6, 7, 8]
Yes
Note-se, no entanto, que se a segunda clausula tem sucesso, a terceira
clausula n ao o pode ter, visto ambas terem predicados complementares.
Analisando o nosso programa, podemos concluir que ap os garantir que P <
N na segunda clausula, n ao vale a pena fazer retrocesso. O prolog n ao e
capaz de inferir este facto, pelo que podemos modicar o nosso programa
do seguinte modo com a introducao do operador de corte:
parte([], _, [], []) :- !.
parte([P | R], N, [P | R1], L2) :-
P < N,
!,
parte(R, N, R1, L2).
parte([P | R], N, L1, [P | R2]) :-
P >= N,
298 CAP

ITULO 5. PROLOG
!,
parte(R, N, L1, R2).
A utilizacao do operador de corte na terceira clausula (ap os P >= N) nao e
necessaria,
29
sendo utilizado apenas por uma questao de simetria entre as
duas ultimas clausulas.
Analisando a nossa ultima versao do programa parte, podemos ser tentados
a pensar que o teste P >= N na ultima clausula tambem n ao e necessario,
escrevendo assim, a seguinte versao errada de parte.
parte_com_erro([], _, [], []).
parte_com_erro([P | R], N, [P | R1], L2) :-
P < N,
!,
parte_com_erro(R, N, R1, L2).
parte_com_erro([P | R], N, L1, [P | R2]) :-
parte_com_erro(R, N, L1, R2).
A seguinte interaccao mostra o erro no nosso ultimo programa:
?- parte_com_erro([4, 8, 1, 10], 7, [], [4, 8, 1, 10]).
Yes
Na realidade, sendo o terceiro argumento a lista vazia, esta nunca vai unicar
com [P | R1] na segunda clausula. N ao existindo nenhum teste na ultima
clausula, esta vai ser sempre utilizada, dando origem ao resultado errado.
`
Exemplo 5.12.5 (Juncao de listas ordenadas) Suponhamos que que-
remos juntar duas listas de inteiros, ambas ordenadas por ordem crescente
dos seus elementos, numa unica lista ordenada.
Iremos considerar o predicado junta ord/3 que arma que o terceiro ele-
mento e uma lista ordenada que corresponde `a jun cao das listas ordenadas
que aparecem no primeiro e segundo argumentos deste predicado.
Consideremos o seguinte programa:
29
Ficando como exerccio a vericac ao desta arma c ao.
5.12. O OPERADOR DE CORTE 299
junta_ord(L, [], L).
junta_ord([], L, L).
junta_ord([P1 | R1], [P2 | R2], [P1 | R]) :-
P1 < P2,
junta_ord(R1, [P2 | R2], R).
junta_ord([P1 | R1], [P2 | R2], [P1 | R]) :-
P1 = P2,
junta_ord(R1, R2, R).
junta_ord([P1 | R1], [P2 | R2], [P2 | R]) :-
P1 > P2,
junta_ord([P1 | R1], R2, R).
Com este programa obtemos a interaccao:
?- junta_ord([1, 3, 5], [2, 4, 6], L).
L = [1, 2, 3, 4, 5, 6]
Yes
Analogamente ao que aconteceu com o Exemplo 5.12.4, podemos introduzir
as seguintes inst ancias do operador de corte para aumentar a eciencia do
programa:
junta_ord(L, [], L) :- !.
junta_ord([], L, L) :- !.
junta_ord([P1 | R1], [P2 | R2], [P1 | R]) :-
P1 < P2,
!,
junta_ord(R1, [P2 | R2], R).
junta_ord([P1 | R1], [P2 | R2], [P1 | R]) :-
P1 = P2,
!,
junta_ord(R1, R2, R).
300 CAP

ITULO 5. PROLOG
junta_ord([P1 | R1], [P2 | R2], [P2 | R]) :-
P1 > P2,
!,
junta_ord([P1 | R1], R2, R).
`
Exemplo 5.12.6 (Quick sort) Utilizando os predicados parte e junta
ord, podemos escrever o seguinte programa que ordena os elementos de uma
lista, contendo n umeros, utilizando o Quick sort:
quicksort([], []).
quicksort([P | R], LO) :-
parte(R, P, Menores, Maiores),
quicksort(Menores, Omenores),
quicksort(Maiores, Omaiores),
junta_ord(Omenores, [P | Omaiores], LO).
`
Exemplo 5.12.7 (Os perigos do corte caso 1) Consideremos predi-
cado, menor/3. A expressap menor(V1, V2, V3) arma que V3 e o menor
dos elementos V1 e V2. Este predicado pode ser denido trivialmente do
seguinte modo:
menor(X, Y, X) :- X =< Y.
menor(X, Y, Y) :- X > Y.
Tendo em atencao que a primeira e a segunda clausula deste programa abor-
dam situacoes complementares, somos levados a introduzir o operador de
corte, produzindo a seguinte versao do mesmo programa:
menor_1(X, Y, X) :- X =< Y, !.
menor_1(X, Y, Y) :- X > Y.
5.12. O OPERADOR DE CORTE 301
Podemos agora ser tentados a seguir o seguinte raciocnio: se a primeira
clausula n ao tem sucesso, ent ao isso signica que X > Y, pelo que o teste
da segunda clausula e desnecessario. Produzimos assim, a seguinte versao
errada do programa menor:
menor_2\_com_erro(X, Y, X) :- X =< Y, !.
menor_2_com_erro(_, Y, Y).
O problema com este programa torna-se patente com a seguinte interaccao:
?- menor_2_com_erro(5, 10, 10).
Yes
Na realidade, a primeira clausula falha, n ao porque a condi cao X =< Y falha,
mas sim porque n ao existe unica cao com a cabeca da clausula. Para evitar
a necessidade do teste X > Y precisamos de alterar o programa do seguinte
modo:
menor_3(X, Y, Z) :-
X =< Y,
!,
Z = X.
menor_3(_, Y, Y).
`
Exemplo 5.12.8 (Os perigos do corte caso 2) Consideremos o seguinte
programa:
p :- a, b.
p :- c.
Considerando o signicado de clausulas de Horn, o predicado p e equivalente
`a seguinte fbf:
(a b) c
Suponhamos que o programa era modicado com a introdu cao do operador
de corte do seguinte modo:
302 CAP

ITULO 5. PROLOG
p :- a, !, b.
p :- c.
O operador de corte mudou o signicado do predicado p para a seguinte fbf:
(A B) (A C)
`
5.13 O falhan co forcado
Com o operador de corte, e util poder armar que um dado predicado n ao
tem sucesso. Esta opera cao pode ser feita recorrendo ao predicado fail/0
que for ca a gera cao de um n o falhado.
5.14 A opera cao condicional
O prolog fornece a operacao condicional que permite traduzir para a pro-
gramacao em l ogica as instru coes ifthen e ifthenelse existentes em
linguagens imperativas e em linguagens funcionais.
A operacao condicional corresponde `a utiliza cao do predicado pre-denido
->/2, o qual pode tambem ser utilizado como um operador. A combina cao
do predicado -> com a disjun cao (;) permite criar uma clausula que corres-
ponde a um ifthenelse.
A sintaxe da operacao condicional e a seguinte:
<opera cao condicional>::= ->(<literal>, <literais>)
<literal> -> <literais>
;(->(<literal>, <literais>), <literais>)
<literal> -> <literais> ; <literais>
A segunda e a quarta linhas desta denicao correspondem `a utiliza cao de
operadores. Na nossa explicacao apenas utilizaremos apenas a nota cao in-
xa.
Ao encontrar um literal da forma teste -> literais
1
; literais
2
, o prolog come-
ca por executar o literal teste. Se o literal teste tem sucesso, o prolog com-
promete-se com a substitui cao obtida, proibindo o retrocesso a partir da
5.14. A OPERAC

AO CONDICIONAL 303
(tal como no caso da utiliza cao do operador de corte) e executa os literais
literais
1
. Se o literal teste n ao tem sucesso, o prolog executa os literais
literais
2
. O mecanismo de retrocessso pode gerar solucoes alternativas para
literais
1
ou para literais
2
, mas n ao pode gerar solu coes alternativas para teste.
Um literal da forma teste -> literais e equivalente a teste -> literais ; fail.

E importante notar a equivalencia entre os programas


s :- Teste, !, Literal1.
s :- Literal2.
e
s :- Teste -> Literal1 ; Literal2.
Esta equivalencia mostra que a opera cao condicional n ao e mais do que
acucar sint actico para uma combinacao do operador de corte e de alter-
nativas para a mesma clausula.
Exemplo 5.14.1 O predicado menor do Exemplo 5.12.7, poder a ser escrito
do seguinte modo utilizando o operador condicional:
menor(X, Y, Z) :- X =< Y -> Z = X ; Z = Y. `
Exemplo 5.14.2 (Factorial versao 2) Consideremos a denicao de fac-
torial do Exemplo 5.7.5. Utilizando o operador condicional, podemos es-
crever a seguinte versao alternativa deste programa:
factorial(N, F) :-
N = 1
->
F is 1
;
Nmenos1 is N - 1,
factorial(Nmenos1, FNmenos1),
F is FNmenos1 * N.
`
304 CAP

ITULO 5. PROLOG
5.15 A nega cao em prolog
Recordemos do Exemplo 5.3.1 que o prolog assume a hipotese do mundo
fechado, tudo aquilo que n ao e possvel derivar das arma coes e regras exis-
tentes no programa e falso. A combina cao da hip otese do mundo fechado
com o operador de corte permite introduzir um tipo de negacao chamada
negacao por falhan co.
A nega cao por falhan co permite tratar, de um modo limitado, regras com
excepcoes, regras essas que sao utilizadas na nossa vida quotidiana e que
estao associadas a frases do tipo:
Normalmente, A e verdadeiro;
Tipicamente, A;
Regra geral, A;
Se n ao houver informa cao contr aria, assumir A.
Por exemplo, dada a frase normalmente as aves voam, ao tomarmos co-
nhecimento da existencia de uma dada ave, digamos Piupiu, poderemos ser
levados a concluir que o Piupiu voa, embora exista um n umero innd avel de
excepcoes: avestruzes, pinguins, aves recem-nascidas, aves mortas, etc.

E
importante notar o facto de que a conclusao de que o Piupiu voa baseou-se
n ao so na informa cao de que normalmente as aves voam e de que o Piupiu e
uma ave, como tambem na suposicao de que o Piupiu e uma ave normal no
que diz respeito a voar. Esta suposicao, por sua vez, baseia-se na ausencia
de informa cao sobre a n ao normalidade do Piupiu. Por esta razao, se vier-
mos a saber mais tarde que por algum motivo o Piupiu n ao e normal no que
diz respeito a voar, teremos de retirar a conclusao de que o Piupiu voa.
Note-se a diferen ca que existe entre a frase anterior e uma frase quanticada
universalmente, como por exemplo, todas as aves sao mortais; neste caso,
se soubermos que o Piupiu e uma ave, podemos inferir que o Piupiu e mortal,
e esta conclusao n ao e revisvel: por muita nova informa cao que nos chegue,
nunca abandonaremos a conclusao de que o Piupiu e mortal.
A negacao por falhan co e usada em prolog atraves do metapredicado \+,
lido nao (e cujo grasmo e originado no smbolo de n ao derivabilidade, ),
o qual pode ser denido do seguinte modo:
\+(P) :- P, !, fail.
\+(P).
5.15. A NEGAC

AO EM PROLOG 305
Note-se que \+ e um metapredicado pois este aplica-se a predicados, ou
seja, \+ e um predicado de segunda ordem.
A semantica procedimental do programa anterior arma o seguinte: para
responder ao objectivo \+(P), tente-se provar P, no caso de sucesso, n ao se
retroceda a partir deste ponto e retorne-se insucesso; em caso contr ario, ou
seja, se P n ao for satisfeito pela clausula anterior, ent ao \+P e verdadeiro.
Exemplo 5.15.1 (Entidades voadoras) Consideremos o seguinte progra-
ma em prolog:
voa(P) :- ave(P), \+ pinguim(P).
ave(gelido).
ave(piupiu).
pinguim(gelido).
Este programa especica que uma dada entidade voa se for uma ave que nao
seja um pinguim. Com este programa obtemos a interaccao:
?- voa(gelido).
No
?- voa(piupiu).
Yes
?- voa(X).
X = piupiu ;
No
?- \+ voa(X).
No
?- \+ pinguim(X).
No

E importante notar que o prolog n ao sabe quem sao as entidades que n ao


voam, nem quem sao as entidades que n ao sao pinguins, como o demonstram
as ultimas linhas da interaccao anterior. `
306 CAP

ITULO 5. PROLOG
5.16 Execucao forcada
Consideremos novamente a deni cao de uma regra apresentada na p agina 225:
<regra> ::= <literal> :- <literais>.
e suponhamos que consideramos a hip otese de um literal ser nada. A
regra
:- <literais>.
pode ser interpretada procedimentalmente como: para provar nada, prove
os literais a seguir ao smbolo :-. A expressao anterior e considerada como
um comando de execucao for cada dos literais que surgem ap os o smbolo
:-.
5.17 Denicao de novos operadores
Em prolog e possvel denir novos operadores, especicando se a sua uti-
lizacao utiliza a nota cao prexa, inxa ou suxa. Esta deni cao pode ser
realizada em relacao a termos ou em rela cao a predicados. Para a deni cao
novos operadores, o prolog fornece o predicado op com a seguinte sintaxe:
op(<prioridade>, <posi cao>, <nome>)
Esta expressao e lida como o operador nome e denido com a prioridade
prioridade e a posi cao posi cao. A prioridade dene a prioridade do operador,
tal como descrito na p agina 261, a posi cao especica o tipo do operador a
denir, prexo, inxo ou suxo, e a sua associatividade, tal como denido
nas p aginas 257 e 258, e o nome corresponde ao atomo que representa o
nome do operador a denir.
Exemplo 5.17.1 (Prioridade de operadores) As expressoes
:- op(1000, xfy, ou).
:- op(900, xfy, e).
denem dois operadores bin arios, com associatividade `a direita, cujos nomes
sao ou e e e as prioridades sao, respectivamente, 1000 e 900. Note-se que
estamos a utilizar a execucao for cada (ver Sec cao 5.16).
5.17. DEFINIC

AO DE NOVOS OPERADORES 307
Como sabemos, a diferen ca de prioridades signica que o operador e toma
precedencia sobre o operador ou, ou seja, por exemplo, que a expressao A e
B ou C e interpretada como (A e B) ou C.
Sabemos tambem que a associatividade `a direita signica que em expressoes
com o mesmo operador, as opera coes corresponentes sao executadas da es-
querda para a direita, ou seja, por exemplo, que a expressao A e B e C e
avaliada como (A e B) e C. `
Exemplo 5.17.2 (Avaliacao de opera coes logicas) Consideremos ago-
ra o seguinte programa em prolog para a avalia cao de expressoes l ogicas.
Neste programa sao denidos quatro operadores nao, e, ou e implica, per-
mitido a forma cao e a avalia cao de opera coes com estes operadores.
O predicado tv <op> dene a tabela de verdade para o operador op, repre-
sentando v e f, respectivamente, os valores l ogicos verdadeiro e falso.
Os predicados atomic/1 e var/1, sao predicados pre-denidos em prolog e
signicam, respectivamente, que o seu argumento e um termo at omico ou
um n umero e que o seu argumento e uma vari avel.
:- op(1000, xfy, ou).
:- op(1000, xfy, implica).
:- op(900, xfy, e).
:- op(600, fy, nao).
tv_nao(v, f).
tv_nao(f, v).
tv_e(v, v, v).
tv_e(v, f, f).
tv_e(f, v, f).
tv_e(f, f, f).
tv_ou(v, v, v).
tv_ou(v, f, v).
tv_ou(f, v, v).
tv_ou(f, f, f).
avalia(A, A) :- atomic(A), !.
308 CAP

ITULO 5. PROLOG
avalia(A, A) :- var(A), !.
avalia(A e B, C) :-
!,
avalia(A, A1),
avalia(B, B1),
tv_e(A1, B1, C).
avalia(A ou B, C) :-
!,
avalia(A, A1),
avalia(B, B1),
tv_ou(A1, B1, C).
avalia(nao A, C) :-
!,
avalia(A, A1),
tv_nao(A1, C).
avalia(A implica B, C) :- avalia(nao(A) ou B, C).
Com este programa obtemos a seguinte interac cao:
?- avalia(v e X, Y).
X = v,
Y = v ;
X = f,
Y = f ;
No
?- avalia(nao(X), Y).
X = v,
Y = f ;
X = f,
Y = v ;
No
?- avalia(nao X, Y).
X = v,
Y = f ;
5.17. DEFINIC

AO DE NOVOS OPERADORES 309
X = f,
Y = v ;
No
?- avalia((A e B) ou C, f).
A = v,
B = f,
C = f ;
A = f,
B = v,
C = f ;
A = f,
B = f,
C = f ;
No
?- avalia(X implica Y, v).
X = v,
Y = v ;
X = f,
Y = v ;
X = f,
Y = f ;
No
A diferen ca entre as prioridades dos operadores e ilustrada pela seguinte
interaccao:
?- avalia(f e f ou v, X).
X = v ;
No
?- avalia(f ou f e v, X).
X = f ;
No
`
310 CAP

ITULO 5. PROLOG
5.18 Compara cao com outras linguagens
Sob o ponto de vista de uma linguagem de programa cao, podemos considerar
numa linguagem os mecanismos de controle das instru coes e os mecanismos
de deni cao de manipula cao de dados.
Sob o ponto de vista dos mecanismos de controle, o prolog e semelhante a
uma linguagem convencional, desde que n ao exista retrocesso. A invoca cao
de objectivos corresponde a uma invoca cao de procedimento, utilizando pas-
sagem de par ametros por referencia e a ordem das clausulas numa regra
corresponde `a ordem pela qual os procedimentos sao invocados.
A regra
c(<args>) :- o
1
(<args>), ..., o
n
(<args>)
pode ser olhada como o procedimento:
Procedimento c(<args>)
o
1
(<args>)
...
o
n
(<args>)
m
A diferen ca em rela cao a outras linguagens de programa cao, surge no mo-
mento do retroceso. Numa linguagem convencional, se um processo compu-
tacional n ao pode prosseguir, gera-se um erro de execucao. Em prolog o
processo computacional retrocede para o ultimo ponto de decisao em que
existe uma alternativa e o processo continua atraves de um caminho dife-
rente.
No que respeita a estruturas de informa cao, o prolog e uma linguagem
sem declaracao de tipos, utilizando estruturas de informacao de modo muito
exvel e sem declaracao previa.
5.19 Notas bibliogracas
Na sequencia do trabalho de [Herbrand 30], Paul C. Gilmore [Gilmore 59]
apresentou a primeira implementacao do algoritmo de Herbrand.
Em 1965, J. Alan Robinson publica o algoritmo de unica cao [Robinson 65],
5.20. EXERC

ICIOS 311
o que leva Donal W. Loveland a utilizar o princpio da resolu cao linear com
uma fun cao de seleccao [Loveland 72].
Os primeiros passos em direccao `a Programa cao em Logica foram dados
por Robert Kowalski que apresentou a semantica procedimental para as
clausulas de Horn [Kowalski e Kuehner 71], [Kowalski 74] e por Alain Colme-
rauer que desenvolveu, em 1972, o primeiro interpretador de prolog [Col-
merauer e Roussel 1993].
O livro de [Sterling e Shapiro 94] apresenta de uma forma detalhada e pro-
funda a linguagem prolog e a sua utiliza cao, correspondendo a um exce-
lente complemento a este livro.
5.20 Exerccios
1. Suponha que o programa do Exemplo 5.3.6 era escrito do seguinte
modo:
liga(a, b).
liga(b, c).
liga(b, d).
liga(d, e).
liga(f, g).
liga(d, h).
liga(h, i).
liga(i, e).
liga_ind(X, Y) :- liga(X, Y).
liga_ind(X, Z) :- liga_ind(X, Y), liga(Y, Z).
Ser a que este programa tem o mesmo comportamento que o programa
do Exemplo 5.3.6? Justique a sua resposta.
2. Considere as seguintes tabelas que representam, respectivamente, a
lista de fornecedores e as cidades em que estao localizados, os produtos
existentes, e as quantidades de produtos existentes em cada fornecedor.
312 CAP

ITULO 5. PROLOG
Codigo do Nome Actividade Cidade
fornecedor
F001 Ze dos Parafusos Fabricante Carregado
F002 Branquinho Importador Lisboa
F003 Lar Ideal Importador Lisboa
Codigo do Descricao
produto
P001 Parafuso
P002 Broca
P003 Lavat orio
P004 Sabonete
P005 Detergente
Codigo do Codigo do Quantidade
fornecedor produto
F001 P001 30000
F001 P002 500
F002 P003 25
F002 P004 50000
F002 P005 50000
F003 P001 1000
F003 P002 50
F003 P003 5
F003 P005 500
(a) Represente num programa em prolog a informa cao anterior.
(b) Escreva expressoes para responder `as seguintes perguntas:
i. Quais os fornecedores de parafusos?
ii. Quais os fornecedores de parafusos localizados em Lisboa?
iii. Quais sao as localiza coes (cidades) dos fornecedores de de-
tergentes?
iv. Quais os produtos disponveis no Carregado?
3. Produza a arvore gerada pelo seguinte programa em prolog:
j(a, b).
r(X) :- m(X, Y).
m(b, a) :- j(a, b).
m(X, Y) :- j(X, Y).
?- r(X).
5.20. EXERC

ICIOS 313
4. Considerando a estrutura data apresentada na Seccao 5.10, escreva
programas em prolog para:
(a) Determinar se uma data e correcta (o reconhecedor para o tipo
data). Tenha em atencao a possibilidade de um ano ser bissexto.
(b) Determinar se duas datas sao iguais (o teste para o tipo data).
(c) Calcular a data do dia seguinte a uma dada data. Tenha em
atencao a possibilidade de um ano ser bissexto.
5. Escreva um programa em prolog para calcular a diferenca entre duas
listas.
6. Considere a deni cao dos n umeros de Fibonacci:
fib(n) =

0 se n = 0
1 se n = 1
fib(n 1) +fib(n 2) se n > 1
Seja fib o predicado com o seguinte signicado: fib(N, V) arma
que o N-esimo n umero de Fibonacci e V.
(a) Escreva um programa em prolog que implementa o predicado
fib.
(b) Qual a resposta do seu programa ao objectivo fib(X, 21)? Jus-
tique a sua resposta.
7. Considere a deni cao da fun cao de Ackermann:
A(m, n) =

n + 1 se m = 0
A(m1, 1) se m > 0 e n = 0
A(m1, A(m, n 1)) se m > 0 e n > 0
Seja a o predicado com o seguinte signicado: a(M, N, V) arma que
o valor da fun cao de Ackermann para os argumentos M e N e V. Escreva
um programa em prolog que implementa o predicado a.
8. Escreva um programa emprolog para responder a perguntas relativas
a relacoes familiares. O seu programa devera ser capaz de identicar
as seguintes relacoes:
Filho / lha
Irmao / irm a
314 CAP

ITULO 5. PROLOG
Primos direitos
Cunhado / cunhada
Tio / tia
Pai / mae
Av o / av o
Tios av os
Antepassado
Descendente
9. Escreva um programa em prolog para resolver o seguinte puzzle:
30
O Homem Livre conhece cinco mulheres: Ada, Bea, Cyd, Deb e Eve.
(a) As mulheres pertencem a duas faixas etarias, tres mulheres tem
mais de 30 anos e as outras duas tem menos de 30 anos.
(b) Duas das mulheres sao professoras e as outras tres sao secretarias.
(c) A Ada e a Cyd pertencem `a mesma faixa etaria.
(d) A Deb e a Eve pertencem a faixas etarias diferentes.
(e) A Bea e a Eve tem a mesma pross ao.
(f) A Cyd a a Deb tem pross oes diferentes.
Das cinco mulheres, o Homem Livre vai casar-se com a professora com
mais de 30 anos. Com que se vai casar o Homem Livre?
10. Escreva emprolog o predicado duplica elementos/2 com o seguinte
signicado: duplica elementos(L1, L2) arma que a lista L2, cons-
tituda apenas por n umeros, se obtem a partir da lista L1 duplicando
o valor de todos os seus elementos. Por exemplo:
?- duplica_elementos([2, 4, 6], X).
X = [4, 8, 12]
Yes
11. Escreva em prolog o predicado soma elementos/2 com o seguinte
signicado: soma elementos(L, N) arma que a soma de todos os
elementos da lista L, constituda apenas por n umeros, e N.
30
De [Summers 72, p agina 6].
5.20. EXERC

ICIOS 315
a
i
b c
d f
g
e h
Figura 5.24: Grafo cclico.
12. Escreva em prolog o predicado intersecta/3 com o seguinte signi-
cado: a expressao intersecta(L1, L2, L3) signica que a lista L3
contem apenas os elementos comuns `as listas L1 e L2. O seu programa
deve evitar que o retrocesso produza respostas erradas.
13. Escreva em prolog o predicado substitui/4 com o seguinte signi-
cado: a expressao substitui(L1, De, Para, L2) signica que a lista
L2 e obtida a partir da lista L1, substituindo todas as ocorrencias de
De por Para. Com este predicado podemos obter a interaccao:
?- substitui([a, b, e, d, b], b, f, X).
X = [a, f, e, d, f]
Yes
?- substitui([a, b, e, d, b], X, Y, [a, f, e, d, f]).
X = b,
Y = f
Yes
14. Modique o programa do Exemplo 5.11.12 de modo que este consiga
lidar com grafos contendo ciclos. Teste o seu programa com o grafo
apresentado na Figura 5.24.
15. Considere o seguinte programa em prolog:
a_1(X, Y) :- b(X), c(Y).
316 CAP

ITULO 5. PROLOG
a_2(X, Y) :- !, b(X), c(Y).
a_3(X, Y) :- b(X), !, c(Y).
a_4(X, Y) :- b(X), c(Y), !.
b(0).
b(1).
c(2).
c(3).
Diga quais as respostas dadas pelo prolog aos seguintes objectivos:
(a) a 1(X, Y).
(b) a 2(X, Y).
(c) a 3(X, Y).
(d) a 4(X, Y).
16. Explique qual o papel da quarta clausula do programa do Exem-
plo 5.12.5. Sugest ao: analise o comportamento da seguinte mo-
dica cao desse programa, no qual as duas ultimas clausulas sao juntas
numa unica clausula.
junta_ord(L, [], L) :- !.
junta_ord([], L, L) :- !.
junta_ord([P1 | R1], [P2 | R2], [P1 | R]) :-
P1 < P2,
!,
junta_ord(R1, [P2 | R2], R).
junta_ord([P1 | R1], [P2 | R2], [P2 | R]) :-
P1 >= P2,
!,
junta_ord([P1 | R1], R2, R).
17. Considere o seguinte programa em prolog:
5.20. EXERC

ICIOS 317
voa(P) :- \+ pinguim(P), ave(P).
ave(gelido).
ave(piupiu).
pinguim(gelido).
Qual a resposta fornecida pelo prolog `a questao Voa(X)? Discuta
qual a diferen ca desta resposta em relacao `a resposta obtida no Exem-
plo 5.15.1.
318 CAP

ITULO 5. PROLOG
Apendice A
Sumario da Regras de
Inferencia
My dear fellow, you know my methods.
Sherlock Holmes, The Stockbrokers Clerk
Apresentamos neste apendice o sumario das regras de inferencia do sistema
de dedu cao natural.
Nome Regra
Premissa
n Prem
Hipotese
n Hip
n + 1 . . .
Repeti cao
n
.
.
.
.
.
.
m Rep, n
Re-iteracao
n
.
.
.
.
.
.
m Rei, n
320 SUM

ARIO DAS REGRAS DE INFER

ENCIA
Introducao Elimina cao

n Hip
.
.
.
.
.
.
m
m + 1 I, (n, m)
n
m
m + 1 E, (n, m)

n
n + 1
n + 2 I, (n, n + 1)
n
n + 1 E, n
and
n
n + 1 E, n

n
n + 1 I, n
and
n
n + 1 I, n
n
o Hip
.
.
.
.
.
.
p
r Hip
.
.
.
.
.
.
s
m E, (n, (o, p), (r, s))

n Hip
.
.
.
.
.
.
m
m + 1
m + 2 I, (n, (m, m + 1))
n
n + 1 E, n
SUM

ARIO DAS REGRAS DE INFER

ENCIA 321
Introduc ao Elimina cao

n x
0
.
.
.
.
.
.
m (x) {x
0
/x}
m + 1 x[(x)] I, (n, m)
n x[(x)]
n + 1 (x) {t/x} E, n

n (t)
n + 1 x[(x)] I, n
n x[(x)]
m x
0
(x) {x
0
/x} Hip
.
.
.
.
.
.
k
k + 1 E, (n, (m, k))
322 SUM

ARIO DAS REGRAS DE INFER

ENCIA
Apendice B
Manual de Sobrevivencia em
Prolog
I have come for advice.
That is easily got.
And help.
That is not always so easy.
Sherlock Holmes, The Five Orange Pips
B.1 Obten cao do Prolog
A versao do prolog utilizada neste livro (o SWI-Prolog) e um programa de
domnio p ublico, produzido pelo grupo HCS da Universidade de Amsterdao
e que pode ser obtido em:
1
http://www.swi-prolog.org/download.html
1
A utilizac ao deste endereco podera corresponder a uma versao mais recente da lingua-
gem do que a utilizada neste livro. A linguagem e as guras apresentadas correspondem
` a versao 5.6.48, disponvel em Dezembro de 2007. Carregamentos posteriores a essa data
podem corresponder a uma nova versao do SWI-Prolog. O endereco da p agina de carre-
gamento do SWI-Prolog podera tambem, eventualmente, ser alterado.
324 SOBREVIV

ENCIA EM PROLOG
Figura B.1: Janela de carregamento do SWI-Prolog.
Figura B.2: Op coes de acordo com o sistema operativo a utilizar.
SOBREVIV

ENCIA EM PROLOG 325


Na p agina correspondente a este endere co (Figura B.1), atraves da entrada
stable release, pode ser escolhido o sistema operativo e a versao a utilizar
(Figura B.2).
Ap os o carregamento do codigo fonte do SWI-Prolog, este deve ser devida-
mente instalado, de acordo com as indica coes fornecidas no cheiro que e
carregado. Estas instru coes dependem do sistema operativo utilizado. Toda
a discussao apresentada no resto deste apendice pressup oe que o SWI-Prolog
esta instalado.
B.2 Incio de uma sessao
Ao iniciar uma sessao com o SWI-Prolog, surge a seguinte mensagem:
Welcome to SWI-Prolog (Multi-threaded, Version 5.6.34)
Copyright (c) 1990-2007 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free
software, and you are welcome to redistribute it under certain
conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?-
O smbolo ?- corresponde ao caracter de pronto do prolog, devendo todos
os comandos ser fornecidos ao SWI-Prolog a partir dele.
B.3 Cria cao a altera cao de programas
No SWI-Prolog os programas sao criados e modicados como cheiros de
texto (cheiros ASCII) com o recurso a qualquer editor de texto.
Tal como em qualquer linguagem de programa cao, em prolog existe um
conjunto de regras de estilo cuja utiliza cao e recomendada para facilitar a
leitura dos programas. Estas regras contem regras gerais de boas pr aticas
na escrita de programas e regras especcas para o prolog.
326 SOBREVIV

ENCIA EM PROLOG
Regras gerais.
1. Devemos escolher nomes apropriados para as nossas vari aveis, cons-
tantes, functores e nomes de predicados.
2. Devemos inserir coment arios em pontos relevantes do programa. Os
coment arios sao frases em linguagem natural que aumentam a facili-
dade de leitura do programa, explicando o signicado dos nomes, os
objectivos de partes do programa, certos aspectos do algoritmo, etc.
Os coment arios podem tambem ser expressoes matematicas provando
propriedades sobre o programa.
Em prolog, os coment arios sao delimitados pelos smbolos /* e
*/. Sempre que se escreve um coment ario deve ter-se em atencao
a indica cao do m do coment ario. Se nos esquecermos de assinalar
o m do coment ario (isto e, se nos esquecermos de escrever */), o
prolog considerar a algumas das clausulas do nosso programa como
fazendo parte do coment ario (todas as clausulas que precedem a pri-
meira ocorrencia de */).
Um coment ario que apenas ocupa parte de uma linha pode tambem
ser iniciado com o caracter %, terminando este coment ario no m
da linha respectiva. Neste caso, n ao existe nenhum smbolo explcito
para terminar o coment ario.
Regras especcas do prolog.
1. As clausulas sao separadas por uma ou mais linhas em branco.
2. Devemos escrever apenas um literal por linha, com a possvel excepcao
dos literais em algumas regras muito curtas.
3. As regras devem ser paragrafadas de modo a que cada literal que
perten ca ao corpo uma regra sejam paragrafado da mesma maneira.
Este aspecto tem o efeito de mostrar as clausulas de um programa de
modo que as clausulas que sao normalmente consideradas como uma
unidade aparecam como uma unidade.
4. Devemos inserir um espaco em depois de cada vrgula num termo
composto ou num predicado.
Estes aspectos sao ilustrados nos programas que apresentamos no Captulo 5.
SOBREVIV

ENCIA EM PROLOG 327


B.4 Carregamento e utiliza cao de programas
Uma sessao tpica em prolog consiste no carregamento de um programa,
de modo a incluir na linguagem novos predicados denidos pelo utilizador,
seguido da execucao de objectivos.
O carregamento de qualquer cheiro correspondente a um programa em
prolog e feito atraves do comando
consult(<atomo correspondente ao nome do cheiro>).
A execucao deste comando causa a compila cao do cheiro designado e o
seu carregamento na presente sessao. Ap os este carregamento, todos os
predicados denidos no programa passam a ser conhecidos pelo prolog.
Uma sessao em prolog corresponde a um ciclo interpretado do tipo le-
avalia-escreve, no qual o prolog le um objectivo que se deseja provar,
efectua a prova desse objectivo, ou, dito de uma modo diferente, executa esse
objectivo (este aspecto correspondente `a parte avalia do ciclo) e escreve o
resultado obtido.
Exemplo B.4.1 Dependendo do sistema operativo em utiliza cao, os se-
guintes comandos correspondem a accoes de carregamento de cheiros:
?- consult(teste).
?- consult(membro.pl).
?- consult(usr/jpm/prolog/membro.pl).
?- consult(\\jpm\\prolog\\membro.pl).
?- consult(lib:membro.pl).
Note-se a utiliza cao de plicas para a cria cao de nomes de atomos que contem
caracteres especiais. Note-se tambem a existencia de um ponto no nal da
linha. `
Alternativamente, o carregamento de um cheiro correspondente a um pro-
grama em prolog pode ser feito atraves do comando:
[<atomo correspondente ao nome do cheiro>].
Exemplo B.4.2 O seguinte comando carrega o cheiro cujo nome e membro.pl,
existente no direct orio de onde sao carregados os cheiros por omissao:
328 SOBREVIV

ENCIA EM PROLOG
?- [membro.pl].
% membro.pl compiled 0.00 sec, 15,820 bytes
Yes
`
B.5 Informa cao sobre predicados
Durante a interaccao com o prolog e comum ter-se a necessidade de con-
sultar a deni cao de um predicado. O prolog fornece o meta-predicado
listing/1 que aceita como argumento o nome de um predicado denido no
nosso programa e que tem como efeito mostrar a deni cao desse predicado
no monitor.
2
Exemplo B.5.1 Considerando o programa do Exemplo 5.3.1, podemos ob-
ter a seguinte interaccao:
?- listing(ant).
ant(A, B) :-
ad(A, B).
ant(A, C) :-
ant(A, B),
ad(B, C).
Yes
`
B.6 Rastreio de predicados
O prolog apresenta v arios mecanismos para a depura cao de programas,
alguns dos quais sao apresentados nesta seccao.
Para compreender o rastreio da execu cao de predicados em prolog e im-
portante come car por discutir os v arios eventos que tem lugar quando o
2
Este predicado tambem pode mostrar o conte udo completo de um cheiro, se o argu-
mento que lhe e fornecido corresponder ao nome de um cheiro.
SOBREVIV

ENCIA EM PROLOG 329


obj
Redo
Call
Fail
Exit
Figura B.3: Eventos associados `a prova do objectivo obj.
prolog esta a tentar provar um objectivo. Distinguem-se quatro eventos
durante a tentativa de provar um objectivo (apresentados na Figura B.3):
Call. Este evento ocorre no momento em que o prolog inicia a
prova de um objectivo. Este evento corresponde `a passagem por um
n o da arvore SLD no sentido de cima para baixo. O objectivo indicado
corresponde ao primeiro literal do objectivo em considera cao.
Exit. Este evento ocorre no momento em que o prolog consegue
provar o objectivo, ou seja, quando o objectivo tem sucesso.
Redo. Este evento ocorre no momento em que o prolog, na sequencia
de um retrocesso, volta a considerar a prova de um objectivo.
Fail. Este evento ocorre no momento em que o prolog falha na
prova de um objectivo.
O meta-predicado de sistema trace/1, aceita como argumento o nome de
um outro predicado e permite seguir o rasto da avaliacao do predicado es-
pecicado.
Exemplo B.6.1 Consideremos o programa do Exemplo 5.3.1:
ad(marge, bart).
ad(srB, marge).
ant(X, Y) :- ad(X, Y).
ant(X, Z) :- ant(X, Y), ad(Y, Z).
Recorrendo ao predicado trace/1 para solicitar o rastreio dos predicados
ad e ant:
330 SOBREVIV

ENCIA EM PROLOG
?- trace(ad).
% ad/2: [call, redo, exit, fail]
Yes
[debug] ?- trace(ant).
% ant/2: [call, redo, exit, fail]
Yes
a resposta do prolog a estas solicitacoes indica-nos que os quatro even-
tos associados `a execucao de predicados (call, redo, exit e fail) serao
mostrados. O indicador [debug] ?- diz-nos que o prolog se encontra em
modo de depura cao.
Ao seguir o rasto da execu cao de um predicado, o prolog associa cada
execucao de um objectivo com um identicador numerico unvoco, chamado
o n umero da invocac ao, o qual e apresentado, entre parenteses, sempre que
o rastreio de um predicado esta a ser utilizado.
Pedindo agora ao prolog para provar que ant(srB, bart), obtemos a
seguinte interac cao:
[debug] ?- ant(srB, bart).
T Call: (7) ant(srB, bart)
T Call: (8) ad(srB, bart)
T Fail: (8) ad(srB, bart)
T Redo: (7) ant(srB, bart)
T Call: (8) ant(srB, _L172)
T Call: (9) ad(srB, _L172)
T Exit: (9) ad(srB, marge)
T Exit: (8) ant(srB, marge)
T Call: (8) ad(marge, bart)
T Exit: (8) ad(marge, bart)
T Exit: (7) ant(srB, bart)
Yes
As duas primeiras linhas do rastreio destes predicados:
T Call: (7) ant(srB, bart)
T Call: (8) ad(srB, bart)
indicam-nos que se iniciou uma prova do objectivo ant(srB, bart), a qual
originou a prova do objectivo ad(srB, bart). Este aspecto e apresentado
SOBREVIV

ENCIA EM PROLOG 331


ant(srB, bart)
Call (7)
ad(srB, bart)
Call (8)
Figura B.4: Invocacoes para provar ant(srB, bart) e ad(srB, bart).
ant(srB, bart)
ad(srB, bart)
Fail (8)
Figura B.5: Falhan co da primeira tentativa de provar o objectivo inicial.
esquematicamente na Figura B.4, a qual devera sem comparada com a arvore
SLD originada para este objectivo e apresentada na Figura 5.2. Na Fi-
gura B.4, se um rectangulo correspondente a uma invoca cao de um predi-
cado, e desenhado dentro de um rect angulo correspondente a uma outra
invocacao, estao, isso signica que o objectivo que corresponde `a invoca cao
apresentada no rectangulo exterior originou a invoca cao do objectivo que
esta representada no rectangulo interior.
O objectivo ad(srB, bart) falha, o que e traduzido pela seguinte linha do
rastreio do predicado
T Fail: (8) ad(srB, bart)
(Figura B.5), o que faz com que uma nova prova para o objectivo ant(srB,
bart) seja tentada. Este facto e ilustrado pelas seguintes linhas apresenta-
das no rastreio dos predicados e cujos efeitos se ilustram na Figura B.6.
T Redo: (7) ant(srB, bart)
T Call: (8) ant(srB, _L172)
T Call: (9) ad(srB, _L172)
Nesta tentativa, e utilizada a variante da clausula: ant(srB, bart) :-
ant(srB, L172), ad( L172, bart). Esta nova tentativa de prova corres-
ponde ao ramo da arvore SLD que se mostra na Figura 5.3.
332 SOBREVIV

ENCIA EM PROLOG
ant(srB, bart)
Redo (7)
ant(srB, L172)
Call (8)
ad(srB, L172)
Call (9)
Figura B.6: Segunda tentativa de provar o objectivo inicial.
ant(srB, bart)
ant(srB, marge)
Exit (8)
ad(srB, marge)
Exit (9)
Figura B.7: Resultado da prova do objectivo ant(srB, L172).
O objectivo ad(srB, L172) unica com ad(srB,marge) o que origina a
seguinte informacao durante o rastreio (correspondendo `a Figura B.7):
T Exit: (9) ad(srB, marge)
T Exit: (8) ant(srB, marge)
Tendo provado o primeiro literal no corpo da clausula ant(srB, bart) :-
ant(srB, L172), ad( L172, bart) com a substitui cao {marge/ L172}, o
prolog tenta agora provar o segundo literal, com sucesso como o indicam
as seguintes linhas do rastreio dos nossos predicados (Figura B.8):
T Call: (8) ad(marge, bart)
T Exit: (8) ad(marge, bart)
T Exit: (7) ant(srB, bart)
Yes
`
Quando se solicita ao prolog que siga o rasto da execucao de um ou mais
SOBREVIV

ENCIA EM PROLOG 333


ant(srB, bart)
Exit (7)
ant(marge, bart)
Exit (8)
ad(marge, bart)
Exit (9)
Figura B.8: Resultado da prova do objectivo inicial.
predicados, este entra em modo de depura cao, mudando o indicador para
[debug] ?-. O modo de depura cao pode ser terminado atraves da execucao
do predicado nodebug/0.
Para alem do predicado de sistema trace/1, o prolog fornece outros predi-
cados pre-denidos que auxiliam a tarefa de depura cao. Apresentamos mais
alguns destes predicados:
spy/1. Este meta-predicado tem o efeito de efectuar o rastreio do pre-
dicado que e seu argumento. A diferen ca entre spy/1 e trace/1 reside
no facto do meta-predicado spy/1 originar um rastreio interactivo: no
nal de cada evento de execucao, e solicitado ao utilizador que forne ca
uma indica cao sobre o modo de prosseguir com a tarefa de rastreio.
Algumas das possveis indica coes sao apresentadas na Tabela B.1.
3
trace/0. Este predicado tem o efeito de ligar o mecanismo de rastreio.
A partir do momento da execu cao deste predicado, todas as execucoes
de todos os predicados denidos no nosso programa sao mostradas.
Exemplo B.6.2 Considerando, de novo, o programa do Exemplo 5.3.1, po-
demos gerar a seguinte interac cao:
?- spy(ant).
% Spy point on ant/2
Yes
[debug] ?- ant(X, bart).
Call: (7) ant(_G312, bart) ? creep
3
Indicac oes adicionais podem ser consultadas no manual do prolog.
334 SOBREVIV

ENCIA EM PROLOG
Indica cao Signicado
return siga para o pr oximo passo
da execucao (creep)
s continue a execucao sem mostrar o
rastreio de predicados ate `a pr oxima
execucao do predicado neste
objectivo
a aborta a execucao
i ignora o presente objectivo, fazendo
com que este tenha sucesso
n termina o modo de depura cao,
continuando a prova
? mostra as indica coes disponveis
Tabela B.1: Indica coes possveis durante o rastreio interactivo.
Call: (8) ad(_G312, bart) ? creep
Exit: (8) ad(marge, bart) ? skip
Exit: (7) ant(marge, bart) ? creep
X = marge ;
Redo: (8) ad(_G312, bart) ? skip
Redo: (8) ad(_G312, bart) ? skip
Redo: (7) ant(_G312, bart) ? creep
Call: (8) ant(_G312, _L172) ? creep
Call: (9) ad(_G312, _L172) ? creep
Exit: (9) ad(marge, bart) ? creep
Exit: (8) ant(marge, bart) ? creep
Call: (8) ad(bart, bart) ? creep
Fail: (8) ad(bart, bart) ? creep
Redo: (9) ad(_G312, _L172) ? creep
Exit: (9) ad(srB, marge) ? creep
Exit: (8) ant(srB, marge) ? creep
Call: (8) ad(marge, bart) ? creep
Exit: (8) ad(marge, bart) ? creep
Exit: (7) ant(srB, bart) ? creep
X = srB
Yes
SOBREVIV

ENCIA EM PROLOG 335


`
B.7 Informa cao de ajuda
Durante uma sessao com o prolog e possvel obter informa cao de ajuda
sobre v arios t opicos. Para alem do predicado pre-denido listing apresen-
tado na seccao B.5, existem dois outros predicados uteis, help e apropos:
O meta-predicado pre-denido help/1, cujo argumento corresponde `a
entidade sobre a qual se pretende onter informacao, permite consultar
o manual do prolog sobre predicados, fun coes e operadores existentes
na linguagem.
Exemplo B.7.1 (Utilizacao de help)
?- help(is).
-Number is +Expr
True if Number has successfully been unified with the number Expr
evaluates to. If Expr evaluates to a float that can be represented
using an integer (i.e, the value is integer and within the range
that can be described by Prologs integer representation), Expr is
unified with the integer value.
Note that normally, is/2 should be used with unbound left operand.
If equality is to be tested, =:=/2 should be used. For example:
?- 1 is sin(pi/2). Fails!. sin(pi/2) evaluates
to the float 1.0, which does
not unify with the integer 1.
?- 1 =:= sin(pi/2). Succeeds as expected.
Yes
`
O meta-predicado pre-denido apropos/1, aceita como argumento um
t opico sobre o qual desejamos saber informa cao e mostra a informa cao
existente no manual do prolog relacionada com o t opico indicado.
Exemplo B.7.2 (Utilizacao de apropos)
336 SOBREVIV

ENCIA EM PROLOG
?- apropos(trace).
guitracer/0 Install hooks for the graphical debugger
noguitracer/0 Disable the graphical debugger
gtrace/0 Trace using graphical tracer
gdebug/0 Debug using graphical tracer
gspy/1 Spy using graphical tracer
trace/0 Start the tracer
tracing/0 Query status of the tracer
notrace/0 Stop tracing
guitracer/0 Install hooks for the graphical debugger
noguitracer/0 Disable the graphical debugger
trace/1 Set trace-point on predicate
trace/2 Set/Clear trace-point on ports
notrace/1 Do not debug argument goal
spy/1 Force tracer on specified predicate
leash/1 Change ports visited by the tracer
visible/1 Ports that are visible in the tracer
chr_trace/0 Start CHR tracer
chr_notrace/0 Stop CHR tracer
prolog_trace_interception/4 library(user) Intercept the Prolog tracer
prolog_skip_level/2 Indicate deepest recursion to trace
prolog_list_goal/1 Hook (user) Intercept tracer L command
Section 12-2 Intercepting the Tracer
Yes
`
Apendice C
Solu c oes de Exerccios
Seleccionados
A formidable array of bottles and test-tubes, with the
pungent cleanly smell of hydrochloric acid, told me
that he had spent his day in the chemical work which
was so dear to him.
Well, have you solved it? I asked as I entered.
Yes. It was the bisulphate of baryta.
Sherlock Holmes, A Case of Identity
C.1 Exerccios do Captulo 1
4
C.2 Exerccios do Captulo 2
1. (f ) Provamos, separadamente, cada uma das implicacoes:
1. (P Q) (P Q)
338 SOLUC

OES DE EXERC

ICIOS
1 P Q Hip
2 P Q Hip
3 P Q Rei, 1
4 P E, 3
5 P Hip
6 P Rei, 5
7 Q Hip
8 P Hip
9 P Q Rei, 3
10 Q E, 9
11 Q Rei, 7
12 P I, (8, (10, 11))
13 P E, 12
14 P E, (2, (5, 6), (7, 13))
15 (P Q) I, (2, (14, 4))
16 (P Q) (P Q) I, (1, 15)
?? Exemplo C.2.1 Como segundo exemplo, apresentamos a prova de (P
SOLUC

OES DE EXERC

ICIOS 339
Q) (P Q):
1 P Q Hip
2 P Hip
3 P Q Hip
4 P Rei, 2
5 P E, 3
6 (P Q) I, (3, (4, 5))
7 Q Hip
8 P Q Hip
9 Q Rei, 7
10 Q E, 8
11 (P Q) I, (8, (9, 10))
12 (P Q) E, (1, (2, 6), (7, 11))
13 (P Q) (P Q) I, (1, 12)
`
?? Atencao `as PREMISSAS FOI INTROFUZIDA A CONJUNC

AO
340 SOLUC

OES DE EXERC

ICIOS
1 P Q Prem
2 P Q Hip
3 P Hip
4 P Rep, 3
5 Q Hip
6 P Hip
7 Q Rei, 2
8 Q Rep, 5
9 P I, (6, (7, 8))
10 P E, 9
11 P E, (2, (3, 4), (5, 10))
12 P Rei, 1
13 (P Q) I, (2, (11, 12))
15.
(a) Todos os modelos de sao modelos de .
(b) Os modelos podem ser extrados dos caminhos que comecam na
raiz e terminam em folhas V . Se ao passar por uma letra de
predicado P o caminho seguir pelo ramo a cheio, isso signica
que nesse modelo o valor dessa letra de predicado e V ; em caso
contr ario o valor e F. Se o caminho n ao passar por alguma letra
de predicado, isso signica que o seu valor n ao e relevante, isto e,
que existir a um modelo em que e V e outro em que e F.
(c) Os tres modelos possveis sao caracterizados pelas seguintes inter-
preta coes:
R Q
V V
V F
F V
(d) Tendo em atencao o seguinte resultado:
SOLUC

OES DE EXERC

ICIOS 341
P
Q
F V
P
F V
P
Q
V F
Todos os caminhos do OBDD da fbf P (P Q) que terminem
em V , depois de passar por qualquer n o de r otulo Q, terao de
seguir pelo ramo a cheio.
C.3 Exerccios do Captulo 3
3. (a)
1 x
0
(P(x
0
) P(x
0
)) Hip
2 P(x
0
) Hip
3 P(x
0
) P(x
0
) I, 2
4 (P(x
0
) P(x
0
)) Rei, 1
5 P(x
0
) I, (2, (3, 4))
6 P(x
0
) P(x
0
) I, 5
7 (P(x
0
) P(x
0
)) Rep, 1
8 (P(x
0
) P(x
0
)) I, (1, (6, 7))
9 P(x
0
) P(x
0
) E, 8
10 x[P(x) P(x)] I, (1, 9)
342 SOLUC

OES DE EXERC

ICIOS
??
(a) x, y [(P(x) P(y)) z [R(z) L(z, x, y)]]
(b) x [R(x) y [P(y) Em(y, x)]]
(c) x, y, z [(P(x) P(y) P(z))

r[R(r) Em(x, r) Em(y, r) Em(z, r)]]


(d) x, y [(P(x) P(y))

r [R(r) L(r, y, y) s [(R(s) L(s, x, y)) I(r, s)]]]


7. x, y, z, s [(Limpo(x, s) Sobre(x, y, s) Limpo(z, s) Move(x, y, z, s))

Sobre(x, y, resultado(move, x, y, z, s)]


x, y, z, s [(Limpo(x, s) Sobre(x, y, s) Limpo(z, s) Move(x, y, z, s))

Sobre(x, z, resultado(move, x, y, z, s)]


x, y, z, s [(Limpo(x, s) Sobre(x, y, s) Limpo(z, s) Move(x, y, z, s))

Limpo(x, resultado(move, x, y, z, s)]


x, y, z, s [(Limpo(x, s) Sobre(x, y, s) Limpo(z, s) Move(x, y, z, s))

Limpo(y, resultado(move, x, y, z, s)]


x, y, z, s [(Limpo(x, s) Sobre(x, y, s) Limpo(z, s) Move(x, y, z, s))

Limpo(z, resultado(move, x, y, z, s)]


C.4 Exerccios do Captulo 4
??
SOLUC

OES DE EXERC

ICIOS 343
P(x, y), Q(b)
P(x, y) P(x, y), S(b)
X

(x = b,
y = a)
Q(x), R(y)
Q(x), T(y)
Q(x)

(x = a,
y = b)

(x = b,
y = b)
S(x)
X
Solu coes encontradas: x = b, y = a;
x = b, y = b;
x = a, y = b.
??
344 SOLUC

OES DE EXERC

ICIOS
P(x)
Q(x, y), R(y) Q(x, x)
S(x)

(x = a)

(x = b)
Q(x, x), R(x)
S(x), R(x)
R(a)
X
R(b)

(x = b)
Solu coes encontradas: x = b;
x = a;
x = b.
C.5 Exerccios do Captulo 5
?? a
fib(0, 0).
fib(1, 1).
fib(X, Fib_X) :-
X_menos_1 is X - 1,
fib(X_menos_1, Fib_X_menos_1),
X_menos_2 is X - 2,
fib(X_menos_2, Fib_X_menos_2),
SOLUC

OES DE EXERC

ICIOS 345
Fib_X is Fib_X_menos_1 + Fib_X_menos_2.
b
?- fib(X, 21).
ERROR: is/2: Arguments are not sufficiently instantiated
^ Exception: (8) _L134 is _G180-1
O operador is necessita que todas as vari aveis da expressao a
avaliar estejam instanciadas.
xxx
a(0, N, V) :- V is N + 1.
a(M, 0, V) :-
M > 0,
M_menos_1 is M -1,
a(M_menos_1, 1, V).
a(M, N, V) :-
M > 0,
N > 0,
M_menos_1 is M -1,
N_menos_1 is N -1,
a(M, N_menos_1, V1),
a(M_menos_1, V1, V).
9
resolve :-
universo(Mulheres),
pistas(Mulheres),
pergunta(Mulheres).
universo(Mulheres) :-
restr_idades(Mulheres),
restr_profs(Mulheres),
restr_nomes(Mulheres).
restr_idades(Mulheres) :-
mulher(M1, Mulheres),
mulher(M2, Mulheres),
346 SOLUC

OES DE EXERC

ICIOS
mulher(M3, Mulheres),
mulher(M4, Mulheres),
mulher(M5, Mulheres),
idade_de(M1, u30),
idade_de(M2, u30),
idade_de(M3, o30),
idade_de(M4, o30),
idade_de(M5, o30).
restr_profs(Mulheres) :-
mulher(M1, Mulheres),
mulher(M2, Mulheres),
mulher(M3, Mulheres),
mulher(M4, Mulheres),
mulher(M5, Mulheres),
profissao_de(M1, prof),
profissao_de(M2, prof),
profissao_de(M3, sec),
profissao_de(M4, sec),
profissao_de(M5, sec).
restr_nomes(Mulheres) :-
mulher(M1, Mulheres),
mulher(M2, Mulheres),
mulher(M3, Mulheres),
mulher(M4, Mulheres),
mulher(M5, Mulheres),
nome_de(M1, ada),
nome_de(M2, bea),
nome_de(M3, cid),
nome_de(M4, eva),
nome_de(M5, deb).
pistas(Mulheres) :-
mulher(M1, Mulheres),
mulher(M2, Mulheres),
nome_de(M1, ada),
nome_de(M2, cid),
idade_de(M1, I),
idade_de(M2, I),
SOLUC

OES DE EXERC

ICIOS 347
mulher(M3, Mulheres),
mulher(M4, Mulheres),
nome_de(M3, deb),
nome_de(M4, eva),
idade_de(M3, I1),
idade_de(M4, I2),
I1 \== I2,
mulher(M5, Mulheres),
mulher(M6, Mulheres),
nome_de(M5, bea),
nome_de(M6, eva),
profissao_de(M5, P),
profissao_de(M6, P),
mulher(M7, Mulheres),
mulher(M8, Mulheres),
nome_de(M7, cid),
nome_de(M8, deb),
profissao_de(M7, P1),
profissao_de(M8, P2),
P1 \== P2.
pergunta(Mulheres) :-
write(O Homem livre vai casar com a ),
mulher(X, Mulheres),
profissao_de(X, prof),
idade_de(X, o30),
nome_de(X, Y),
write(Y),
write(, a professora com mais de 30 anos.),
nl.
nome_de(defmulher(N, _, _), N).
profissao_de(defmulher(_, P, _), P).
idade_de(defmulher(_, _, I), I).
mulher(X, mulheres(X, _, _, _, _)).
mulher(X, mulheres(_, X, _, _, _)).
mulher(X, mulheres(_, _, X, _, _)).
mulher(X, mulheres(_, _, _, X, _)).
mulher(X, mulheres(_, _, _, _, X)).
348 SOLUC

OES DE EXERC

ICIOS
??
duplica_elementos([], []).
duplica_elementos([P | R], [Pd | Res2]) :-
Pd is P * 2,
duplica_elementos(R, Res2).
??
substitui([], _, _, []).
substitui([Elem | R1], Elem, Por, [Por | R2]) :-
substitui(R1, Elem, Por, R2),
!.
substitui([P | R1], Elem, Por, [P | R2]) :-
substitui(R1, Elem, Por, R2).
Bibliograa
[Allen e Kautz 87] Allen J.F. e Kautz H.A., Logicism is alive and well, Com-
putational Intelligence 3, pp. 161162, 1987.
[Ben-Ari 03] Ben-Ari M., Mathematical Logic for Computer Science, 2
a
Edi cao,
Londres, UK: Springer-Verlag, 2003.
[Birnbaum 91] Birnbaum L., Rigor Mortis: A Response to Nilssons Logic and
Articial Intelligence, Articial Intelligence 47, No. 13, pp. 5777, 1991.
[Blasius e B urckert 89] Blasius K. e B urckert H.-J., Deduction Systems in Ar-
ticial Intelligence, Chicester , UK: Ellis Horwood, 1989.
[Boole 54] Boole G., An Investigation of the Laws of Thought, New York, N.Y.:
Dover, 1854.
[Boyer e Moore 72] Boyer R.S. e Moore J.S., The Sharing of Structures in
Theorem-Proving Programs, in Machine Intelligence 7, Meltzer and Michie
(eds.), Edinburgh, UK: Edinburgh University Press, pp. 101116, 1972.
[Branquinho 01] Branquinho J., Implica cao, em Enciclopedia de Termos Lo-
gico-Filos ocos, Branquinho e Murcho (eds), pp. 377379, Lisboa: Gradiva,
2001.
[Bryant 86] Bryant R., Graph-based Algorithms for Boolean Function Manipu-
lation, IEEE Transactions on Computers, C-35, pp. 677691, 1986.
[Chang e Lee 73] Chang C-L., e Lee R.C-T., Symbolic Logic and Mechanical
Theorem Proving, New York, N.Y.: Academic Press, 1973.
[Church 36] Church A., An unsolvable problem of number theory, American
Journal of Mathematics 58, pp. 345363, 1936.
[Church 56] Church A., Introduction to Mathematical Logic, Vol. 1, Princeton,
N.J.: Princeton University Press, 1956.
[Colmerauer e Roussel 1993] Colmerauer A. e Roussel P., The birth of Pro-
log, History of Programming Languages, The second ACM SIGPLAN con-
ference on History of programming languages, pp. 3752, ACM, 1993.
350 BIBLIOGRAFIA
[Corcoran 72] Corcoran J., Conceptual Structure of Classical Logic, Philo-
sophy and Phenomenological Research 33, pp. 2547, 1972.
[Corcoran 83] Corcoran J. (ed.), Logic, Semantics, Metamatemathics, Indiana-
polis, IN: Hackett Publishing Co., 2nd Edition, 1983.
[Cormen, Leiserson e Rivest 90] Cormen T.H., Leiserson C.E. e Rivest R.L.,
Introduction to Algorithms, Cambridge, MA: The MIT Press, 1990.
[Deransart, Ed-Dbali e Cervoni 96] Deransart P., Ed-Dbali A. e Cervoni L.,
Prolog: The Standard, Reference Manual, Berlin, Alemanha: Springer-Verlag,
1996.
[Fitch 52] Fitch F., Symbolic Logic: An Introduction, New York: The Ronald
Press Company, 1952.
[Gabbay, Hogger e Robinson 93] Gabbay D.M., Hogger C.J. e Robinson J.A.
(eds.), Handbook of Logic in Articial Intelligence and Logic Programming,
Vol. 1, Logical Foundations, Oxford, UK: Claredon Press, 1993.
[Gabbay, Hogger e Robinson 94] Gabbay D.M., Hogger C.J. e Robinson J.A.
(eds.), Handbook of Logic in Articial Intelligence and Logic Programming,
Vol. 2, Deduction Methodologies, Oxford, UK: Claredon Press, 1994.
[Genesereth e Nilsson 87] Genesereth M.R. e Nilsson N.J., Logical Foundations
of Articial Intelligence, Los Altos, CA: Morgan Kaufmann Publishers Inc.,
1987.
[Gentzen 69] Gentzen G., Collected Papers of Gerhard Gentzen, Amsterdam, The
Netherlands: North-Holland, 1969.
[Gilmore 59] Gilmore, P.C., A program for the production from axioms, of pro-
ofs for theorems derivable within the rst order predicate calculus, IFIP
Congress, pp. 265272, 1959.
[Godel 30] G

odel K.,

Uber die Vollsst

andigkeit des Logikkalk

uls, Ph.D. Thesis,


Vienna, Austria: University of Vienna, 1930.
[Godel 31] G odel, K.

Uber Formal Unentscheidbare S atze der Principia Mathe-


matica und Verwandter Systeme, I, Monatshefte f ur Math. u. Physik 38,
pp. 173198, 1931.
[Haack 78] Haack S., Philosophy of Logics, Cambridge, UK: Cambridge Univer-
sity Press, 1978.
[van Heijenhoort 67] van Heijenhoort J. (ed.), From Frege to G

odel, Harvard,
MA: Harvard University Press, 1967.
[Henschen 87] Henschen L., Reasoning, em Encyclopedia of Articial Intelli-
gence, Vol.2, Shapiro (ed.), p ags 822827, New York, N.Y.: John Wiley and
Sons, Inc., 1987.
BIBLIOGRAFIA 351
[Herbrand 71] Herbrand J., Recherches sur la theorie de la demonstration, in
Logical Writings, Goldfarb (ed.), Cambridge, MA: Harvard University Press,
1971.
[Hofstadter 79] Hofstadter D.R., G odel, Escher, Bach: an Eternal Golden Braid,
New York: Vintage Books, 1979.
[Horn 51] Horn A., On sentences which are true of direct unions of algebras,
Journal of Symbolic Logic 16, p ags 1421, 1951.
[Hursel 70] Hursel E., Logical Investigations, London, UK: Routledge, 1970.
[Huth and Ryan 04] Huth M. and Ryan M., Logic in Computer Science: Mo-
delling and Reasoning about Systems, Cambridge, UK: Cambridge University
Press, 2004.
[Israel 93] Israel D., The role(s) of logic in articial intelligence, in Gabbay,
Hogger, and Robinson (eds.), Handbook of Logic in Articial Intelligence
and Logic Programming, Vol. 1, Oxford, UK: Claredon Press, pp. 129, 1993.
[Jalote 97] Jalote P., An Integrated Approach to Software Engineering, Heidel-
berg, Germany: Springer-Verlag, 1997.
[Jaskowski 34] Jaskowski S., On the Rules of Supposition in Formal Logic,
Studia Logica 1, 1934.
[Jereys 42] Jereys H., Does a Contradiction Entail Every Proposition?, Mind
51, 1942.
[Kleene 52] Kleene S.C., Introduction to Metamathematics, New York: American
Elsevier Publishing Co, Inc., 1952.
[Kline 72] Kline M., Mathematical Thought: From Ancient to Modern Times,
Oxford, UK: Oxford University Press, 1972.
[Kneale and Kneale 88] Kneale W. and Kneale M., The Development of Logic,
Oxford, UK: Clarendon Press, 1988.
[Kowalski 74] Kowalski, R., Predicate Logic as Programming Language, Pro-
ceedings IFIP Congress, pp. 569574, North Holland Publishing Co., 1974.
Tambem em Computers for Articial Intelligence Applications, Wah, B. e
Li, G.-J. (comps.), pp. 6873, Los Angeles, CA: IEEE Computer Society
Press,1986.
[Kowalski 75] Kowalski R., A Proof Procedure Using Connection Graphs, Jour-
nal of the ACM 22, pp. 573595, 1975.
[Kowalski 79] Kowalski R., Logic for problem Solving, New York: North-Holland,
1979.
[Kowalski e Kuehner 71] Kowalski R. e Kuehner D., Linear Resolution with
Selection Function, Articial Intelligence 2, No. 3/4, pags. 227-260, 1971.
Tambem em Anthology of Automated Theorem-Proving Papers, Vol. 2, pp.
542577, Heidelberg, Alemanha: Springer-Verlag, 1983.
352 BIBLIOGRAFIA
[Lemmon 78] Lemmon E.J., Beginning Logic, Indianapolis, IN: Hackett Publishing
Co., 1978.
[Lewis 18] Lewis C.I., A Survey of Symbolic Logic, Berkeley, CA: University of
California Press, 1918.
[Lloyd 87] Lloyd J.W., Foundations of Logic Programming, Heidelberg, Alema-
nha: Springer-Verlag, 2
a
Edi cao, 1987.
[Loveland 72] Loveland D.W., A Unifying View of Some Linear Herbrand Pro-
cedures, Journal of the ACM 19, No. 2, pp. 366384, 1972.
[Loveland 83] Loveland D.W., A Linear Format for Resolution, Proc. IRIA
Symposium on Automatic Deduction, pags. 147-162, New York, N.Y.: Sprin-
ger-Verlag, 1970. Tambem em Automation of Reasoning 2: Classical Papers
on Computational Logic 1967-1970, Siekmann e Wrightson (eds.), pags. 399-
415, Heidelberg, Alemanha: Springer-Verlag, 1983.
[Luckham 83] Luckham D., Renements in Resolution Theory, Proc. IRIA
Symposium on Automatic Deduction, pags. 163-190, New York, N.Y.: Sprin-
ger-Verlag, 1970. Tambem em Automation of Reasoning 2: Classical Papers
on Computational Logic 1967-1970, Siekmann e Wrightson (eds.), pags. 435-
463, Heidelberg, Alemanha: Springer-Verlag, 1983.
[Martins e Cravo 07] Martins J.P. e Cravo M.R., Programac ao em Scheme: In-
trodu cao `a Programacao com M ultiplos Paradigmas, Lisboa: IST Press, 2
a
Edi cao, 2007.
[Mendelson 87] Mendelson E., Introduction to Mathematical Logic, Belmont, CA:
Wadsworth Publishing Co., 1987.
[Metakides e Nerode 96] Metakides G. e Nerode A., Principles of Logic and
Logic Programming, Amsterdao, Holanda: Elsevier Science, 1996.
[Nilsson 71] Nilsson N., Problem Solving Methods in Articial Intelligence, New
York: McGraw-Hill Book Co., 1971.
[Nilsson 91] Nilsson N., Logic and Articial Intelligence, Articial Intelligence
47, No. 13, pp. 3156, 1991.
[Oliveira 91] Oliveira A.F., Logica e Aritmetica: Uma Introdu cao Informal aos
Metodos Formais, Lisboa: Gradiva, 1991.
[Paterson and Wegman 78] Paterson M.S. and Wegman M.N., Linear Uni-
cation, Journal of Computer and System Sciences 16, No. 2, pp. 158167,
1978.
[Post 43] Post E., Formal Reductions of the General Combinatorial Problem,
American Journal of Mathematics 65, pp. 197268, 1943.
[Priest, Routley, and Norman 89] Priest G., Routley R., and Norman, J. (eds.)
Paraconsistent Logic: Essays on the Inconsistent, Munich, Germany: Phi-
losophia Verlag, 1989.
BIBLIOGRAFIA 353
[Priest 02] Priest G. Paraconsistent Logic, Handbook of Philosophical Logic,
2nd Edition, Vol. 6, Gabbay and Guenthner (eds.), pp. 287393, Dordrecht,
Netherlands: Kluwer Academic Publishers, 2002.
[Quine 86] Quine W.V., Philosophy of Logic, Cambridge, MA: Harvard University
Press, 2nd Edition, 1986.
[Ramsay 88] Ramsay A., Formal Methods in Articial Intelligence, Cambridge,
UK: Cambridge University Press, 1988.
[Rapaport 92a] Rapaport W.J., Logic, in Encyclopedia of Articial Intelli-
gence, Shapiro (ed.), 2nd Edition, New York: John Wiley and Sons, pp.
851853, 1992.
[Rapaport 92b] Rapaport W.J., Predicate Logic, in Encyclopedia of Articial
Intelligence, Shapiro (ed.), 2nd Edition, New York: John Wiley and Sons,
pp. 866873, 1992.
[Robinson 65] Robinson J.A., A Machine-Oriented Logic Based on the Resolu-
tion Principle, Journal of the ACM 12, No. 1, pp. 2341, 1965. Tambem em
Automation of Reasoning 1: Classical Papers on Computational Logic 1957-
1966, Siekmann e Wrightson (eds.), pags. 397-415, Heidelberg, Alemanha:
Springer-Verlag, 1983.
[Robinson e Wos 69] Robinson G.A. e Wos L., Paramodulation and Theorem-
Proving in First-Order Theories with Equality, Machine Intelligence 4,
Meltzer e Michie (eds.), pags. 135-150, Edinburgh, Escocia: Edinburgh Uni-
versity Press, 1969. Tambem em Automation of Reasoning 1: Classical Pa-
pers on Computational Logic 1967-1970, Siekmann e Wrightson (eds.), pags.
298- 313, Heidelberg, Alemanha: Springer-Verlag, 1983.
[Rosen 07] Rosen K. H., Discrete Mathematics and its Applications, New York,
NY: McGraw-Hill, 2007.
[Salus 98] Salus P.H. (ed.), Handbook of Programming Languages: Functional and
Logic Programming Languages, Vol. 4, Indianapolis, IN: Macmillan Technical
Publishing, 1998.
[Sanford 80] Sanford D.M., Using Sophisticated Models in Resolution Theorem
Proving, Heidelberg, Alemanha: Springer-Verlag, 1980.
[Shapiro McKay, Martins, and Morgado 81] Shapiro S.C., McKay D.P.,
Martins J.P., and Morgado E.J., SNePSLOG, a Higher Order Logic Pro-
gramming Language, presented at Workshop on Logic Programming for In-
telligent Systems, R.M.S. Queen Mary, Long Beach, CA, 1981.
[Sickel 76] Sickel S., A Search Technique for Clause Interconnectivity Graphs,
IEEE Transactions on Computers, Vol. C-25, No. 8, pp. 823835, 1976.
[Siekmann e Wrightson 83a] Siekmann J. e Wrightson G., Automation of Re-
asoning 1: Classical Papers on Computational Logic 1957-1966, Heidelberg,
Alemanha: Springer-Verlag, 1983.
354 BIBLIOGRAFIA
[Siekmann e Wrightson 83b] Siekmann J. e Wrightson G., Automation of Re-
asoning 2: Classical Papers on Computational Logic 1967-1970, Heidelberg,
Alemanha: Springer-Verlag, 1983.
[Slagle e Gini 87] Slagle J. e Gini M., Pattern Matching, em Encyclopedia of
Articial Intelligence, Vol.1, Shapiro (ed.), pags 716-720, New York, N.Y.:
John Wiley and Sons, Inc., 1987.
[Sterling e Shapiro 94] Sterling L. e Shapiro E., The Art of Prolog: Advanced
Programming Techniques, 2
a
Edi cao, Cambridge, MA: The MIT Press, 1994.
[Summers 72] Summers G.J., Test Your Logic: 50 Puzzles in Deductive Reaso-
ning, New York, N.Y.: Dover Publications Inc., 1972.
[Tarski 65] Tarski A., Introduction to Logic and to the Methodology of Deductive
Sciences, New York: Oxford University Press, 1965.
[Thayse 88] Thayse A., From Standard Logic to Logic Programming, Chichester,
UK: John Wiley and Sons, 1988.
[Turing 34] Turing A., On computational numbers with an application to the
entscheindungs-problem, Proc. London Mathematical Society 42, pp. 230
265, 1936.
[Whitehead and Russell 10] Whitehead A.N. and Russell B., Principia Mathe-
matica, Cambridge, UK: Cambridge University Press, 1910 (2nd Edition,
1987).
[Wolfram 89] Wolfram S., Philosophical Logic, An Introduction, London, UK:
Routledge, 1989.
[Wos, Overbeek, Lusk e Boyle 84] Wos L., Overbeek R., Lusk E. e Boyle J.,
Automated Reasoning: Introduction and Applications, Englewood Clis, N.J.:
Prentice-Hall, 1984.
[Wos, Robinson, e Carson 65] Wos L., Robinson G., e Carson D., Eciency
and Completeness of the Set of Support Strategy in Theorem Proving, Jour-
nal of the ACM 12, pags. 536- 541, 1965.
[Wos, Robinson, Carson e Shalla 67] Wos L., Robinson G., Carson D. e Shalla
L., The Concept of Demodulation in Theorem Proving, Journal of the
ACM 14, pags. 698-709, 1967.
Glossario
-, 250
->, 302
!, 290
*, 250
**, 250
., 271
/, 250
//, 250
;, 226
[], 271
\+, 304
\=, 246
\==, 248
|, 272
+, 250
<, 252
=, 246
=:=, 252
=\=, 252
=<, 252
==, 248
>, 252
>=, 252
, 201
, 136
, 135
, 48
|=, 21, 80
, 15, 29
, 16, 29
, 141
, 20, 38
, 14, 29
, 12, 29
abs, 250
armacao, 201, 225
aplica cao da resolucao, 67
aplica cao de substitui cao, 142
argumento, 4, 18
arvore de decisao, 81
associatividade (de operador), 258
atomic, 307
atomo, 220
axioma, 20
base de Herbrand, 181
BDD, 86
Call, 329
clausula, 62
cabe ca de, 200
corpo de, 201
em prolog, 224
de Horn, 200
determinada, 202
iterativa, 226, 281
n ao unit aria, 62, 225
unit aria, 225
vazia, 67
vazia (nota cao de Horn), 201
composi cao de substitui coes, 159
conceptualizacao, 171
conclusao, 4
conjun cao, 12, 29
conjunto das fun coes, 171
conjunto das rela coes, 172
conjunto de sucessos, 215
conjunto unic avel, 160
consequencia l ogica, 21, 80
356 GLOSS

ARIO
constante, 136
contra-argumento, 10
deni cao de operadores, 306
deni cao de predicado, 203
demonstracao por refuta cao, 68
derivabilidade, 20
diagrama de decisao bin ario, 86
disjun cao, 14, 29
domnio de um quanticador, 140
eliminacao da
conjun cao, 34
disjun cao, 42
equivalencia, 48
implicacao (derivada), 46
implicacao, 38
negacao, 41
quanticacao existencial, 152
quanticacao universal, 150
equivalencia, 48
estrategia de procura, 210
estrutura, 267
execucao for cada, 306
Exit, 329
expressao proposicional, 134
expresssao designat oria, 133
facto, 201, 225
Fail, 329
fbf, 18, 138
at omica, 29, 138
contradit oria, 79, 176
falsa, 78, 176
falsic avel, 78, 176
satisfazvel, 78, 176
tautol ogica, 78, 176
verdadeira, 78, 176
fbfs satisfazveis, 176
forma
Prenex normal, 157
clausal, 62, 154
conjuntiva normal, 64, 158
de um argumento, 8
f ormula
bem formada, 18, 138
de insercao, 45
deriv avel, 20
fechada, 141
fun cao, 132
booleana, 76
de seleccao, 205
de sistema, 223
de valora cao, 76
pre-denida, 223
functor, 222
Hip, 35
hip otese, 35
hip otese do mundo fechado, 239
implicacao, 16, 29
implica logicamente, 21
interpreta cao, 21, 76, 173
introdu cao da
conjun cao, 34
disjun cao, 42
dupla negacao (derivada), 46
equivalencia, 48
implicacao, 37
negacao, 40
quanticacao existencial, 152
quanticacao universal, 150
invalidade, 4
is, 253
letra de fun cao, 136
letra de predicado, 136
lista, 271
literal, 62, 223
mencao, 2
meta-linguagem, 31
metapredicado, 305
mgu, 160
GLOSS

ARIO 357
mod, 250
modelo de Herbrand mnimo, 214
modelo de um conjunto de fbfs, 176
Modus tollens, 47
MT, 47
nl, 263
negacao, 15, 29
negacao por falhan co, 304
n o
bem sucedido, 211
falhado, 211
n umero da invoca cao, 330
OBDD, 95
objectivo, 202, 227
execucao de, 228
opera cao condicional, 302
operador de corte, 289
operador, 256
associatividade, 258
posi cao, 257
prioridade, 261
poder expressivo, 27
polimodalidade, 236
posi cao (de operador), 257
predicado de sistema, 246, 249
predicado pre-denido, 246, 249
Prem, 32
premissa, 32
premissas, 4
princpio da forma, 8
princpio da resolu cao, 66, 164
prioridade (de operador), 261
processo
iterativo, 281
recursivo, 279
programa, 203
programa cao em l ogica, 200
proposi cao, 3
prova, 20
categorica, 37
contingente, 37
hipotetica, 35
por absurdo, 40
prova SLD, 206
quanticacao
existencial, 136
universal, 135
Redo, 329
ramo innito, 211
read, 262
re-iteracao, 36
refuta cao SLD, 208
regra de inferencia, 19
regra de inferencia derivada, 46
regra de procura, 210
regra
clausula de Horn, 201
em prolog, 225
Reit, 36
relacao de ordem total, 95
relacao, 134
Rep, 33
repeti cao, 33
Res, 67
resolucao SLD, 205
resolvente, 66, 164
resposta
calculada, 208
correcta, 204
de um programa, 204
retrocesso, 230
round, 250
semantica,
declarativa, 214, 228
procedimental, 215 228
smbolo l ogico, 11
sistema de dedu cao natural, 32
sistema dedutivo, 19
sistema semantico, 21
sqrt, 250
358 GLOSS

ARIO
sub-objectivo, 202
substitui cao, 141
ch a, 142
vazia, 141
tabela de verdade, 77
tautologia, 78
Teo, 45
teorema, 38
teorema (regra de inferencia), 45
termo, 136, 220
composto, 222
fechado, 137
livre para vari avel, 143
unica cao, 159
unicador mais geral, 160
universo de discurso, 171
universo de Herbrand, 180
uso, 2
validade, 4
valor l ogico, 3
var, 307
variante de uma clausula, 206, 228
vari avel, 133
an onima, 222
ligada, 140
livre, 140
write, 263

Você também pode gostar