Escolar Documentos
Profissional Documentos
Cultura Documentos
Alexandre Scalzitti
João Inácio da Silva Filho
Introdução à Lógica
para a
Ciência da Computação
1
Jair Minoro Abe
Alexandre Scalzitti
João Inácio da Silva Filho
Introdução à Lógica
para a
Ciência da Computação
2.001
2001, by Editora Arte & Ciência
Direção Geral
Henrique Villibor Flory
Editor e Projeto Gráfico
Aroldo José Abreu Pinto / Karel H. Langermans
Editoração Eletrônica
Alain Ferreira do Nascimento
Capa
Karel H. Langermans
O tomo que vem a lume é apenas uma primeira versão que pretende-
mos futuramente aprimorá-lo e enriquecê-lo. Para tanto, contamos com as
sugestões e críticas construtivas por parte dos leitores.
Os Autores.
7
SUMÁRIO
PREFÁCIO
1 – INTRODUÇÃO................................................................................................9
0.1– Nota Histórica......................................................................................9
0.2– O que é Lógica ?.................................................................................10
0.3– Ciência e Lógica.................................................................................11
0.4– Aspectos da lógica atual..................................................................13
2- O CÁLCULO DE PREDICADOS..................................................................117
2.1– Lógica e gramática...........................................................................117
2.2– Um sistema formal para a lógica de predicados..........................125
2.3– Estrutura dedutiva...........................................................................128
2.4– Semântica..........................................................................................138
3.1– Introdução........................................................................................145
3.2– A proposta da programação em lógica........................................146
3.3– Cláusula de Horn.............................................................................147
3.4– Considerações preliminares...........................................................148
3.5– Cláusula............................................................................................151
9
3.6– Cláusula de programa.....................................................................153
3.7- Cláusula de programa condicional.................................................154
3.8- Cláusula de programa incondicional.............................................155
3.9– Cláusula gol......................................................................................156
3.10- Cláusula vazia..................................................................................157
3.11- Cláusula de Horn.............................................................................157
3.12– Programs lógicos e teoremas.......................................................159
3.13– Computação de gols......................................................................161
3.14– Substituições e unificadores........................................................170
3.15– Substituições..................................................................................171
3.16– Instância de uma substituição...........................................................
3.17– Composição de substituições.....................................................172
3.18– Variante...........................................................................................172
3.19– Proposições....................................................................................173
3.20- Substituição mais geral.......................................................................
.3.21– Unificadores...................................................................................173
3.22– Unificador mais geral – umg........................................................174
3.23– Algoritmo de unificação.....................................................................
3.24– Resolvente......................................................................................180
3.25– SLD-derivação.................................................................................182
3.26– SLD-refutação.................................................................................183
3.27– Um pouco de PROLOG.................................................................190
3.28– A notação PROLOG.......................................................................190
3.29– A estratégia PROLOG...................................................................192
3.30– Interpretador PROLOG.................................................................193
3.31– Assuntos relacionados à programação em lógica....................196
4– CIRCUITOS LÓGICOS DE CHAVEAMENTO
4.1– A álgebra da lógica.........................................................................199
4.2– Negação lógica – circuito não......................................................202
4.3– Conjunção lógica – circuito E.......................................................204
4.4- Disjunção lógica – circuito OR......................................................205
4.5– Exemplos de aplicações.................................................................207
5– PORTAS LÓGICAS.......................................................................................215
5.1– As portas lógicas básicas..............................................................216
5.2– Porta lógica inversora.....................................................................216
5.3– Porta lógica E...................................................................................217
5.4– Porta lógica NÃO-E (NAND)........................................................217
5.5– Porta lógica OU...............................................................................218
5.6– Porta lógica NÃO-OU (NOR)........................................................219
5.7– Combinação de portas lógicas......................................................220
5.8– Exemplos de aplicação...................................................................207
APÊNDICE
1.Algumas estruturas algébricas...........................................................233
2.Lógica proposicional e álgebra de Boole..........................................235
3.Modelos de Herbrand..........................................................................236
4.A lógica clássica .................................................................................240
REFERÊNCIAS BIBLIOGRÁFICAS.....................................................245
10
1 INTRODUÇÃO
1.1 - Nota Histórica
A Lógica, ao que tudo indica, foi descoberta por Aristóteles (384-322
a.C.). Os registros se encontram em seu famoso livro “ da Metafísica”.
Após sua descoberta, ela permaneceu praticamente intacta por mais de dois
mil anos, sendo retocada em detalhes de pouca importância. E. Kant chegou
mesmo a asseverar que a ciência descoberta pelo Estagirita se constituía
numa ciência acabada: a lógica não havia dado nenhum passo para diante e
nenhum para trás (desde sua introdução).
Não obstante, grandes mudanças começaram a ocorrer notadamente
com G. Boole (1815-1864), A. De Morgan (1806-1871) e contemporâneos com
a introdução da simbolização na Lógica. Boole, na realidade, estava estu-
dando as “Leis do Pensamento Humano”. Houve, porém, alguns precurso-
res dessa mudança, como G. Leibniz (1646-1716) e J.H. Lambert (1728-1777).
Outras investigações de caráter mais filosófico foram efetuadas por G. Frege
(1848-1925), contribuindo enormemente para o desenvolvimento da lógica
de predicados. Porém, o grande avanço propriamente dito foi estabelecido
com a publicação da monumental obra “Principia Mathematica”, em três
volumes, de A. N. Whitehead e B. Russell no alvorecer deste século. Pode-
se mesmo dizer que a moderna Lógica Matemática teve início com a publica-
ção da referida obra. Aliás, não seria exagero, se afirmarmos, como A. N.
Whitehead disse, que a lógica atual está para a lógica aristotélica como a
matemática moderna está para a aritmética das tribos primitivas.
No entanto, as décadas posteriores aguardavam mais novidades. K.
Gödel, na época um jovem lógico austríaco, mostrou que não pode haver
uma sistematização completa da Aritmética. Isto quer dizer que, intuitiva-
mente e sem rigor, há proposições aritméticas que dizem: “sou verdadeiro,
porém indemonstrável”. Desse resultado, Gödel deduziu outro: que, se a
Aritmética for consistente, sua consistência não pode ser demonstrada “den-
tro” da teoria, ou seja, há que se recorrer à teorias que a englobem, mais
gerais, e, portanto, mais inseguras que a original. Tais resultados são conhe-
cidos como “teoremas de incompleteza de Gödel”. Como se sabe, os resulta-
dos de Gödel representaram o limiar de uma nova era na moderna Lógica
Matemática. Suas reflexões são de longo alcance, deixando muitas questões
sobre os fundamentos da disciplina para as décadas posteriores.
Outra contribuição de envergadura foi efetuada pelo lógico polonês
A. Tarski. Constitui na matematização do conceito de verdade como corres-
pondência. Tal concepção de verdade remonta Aristóteles: “dizer do que
não é que é, e dizer do que é, que não é, é falso. E, dizer do que não é, que não
11
é, e dizer do que é, que é, é verdadeiro”. Noutras palavras, verdade é aquilo
que é e falso, aquilo que não é. Note que o conceito de verdade repousa no
verbo ser. Antes de Tarski, a idéia de verdade era utilizado livremente no
discurso matemático e inúmeras contradições haviam aparecido nas teorias
matemáticas.
Outra enorme revolução que a lógica experimentou neste século foram
alguns resultados de independência de certos postulados da teoria dos
conjuntos obtidas por P. Cohen. No início da década de sessenta, Cohen
mostrou, por exemplo, que um dos axiomas mais discutidos, o Axioma da
Escolha, era independente dos demais postulados da teoria dos conjuntos.
Também Cohen demonstrou a independência de outros postulados signifi-
cativos da teoria dos conjuntos. Cohen foi agraciado com a medalha “Fields”
(o prêmio de maior prestígio em Matemática) por suas perquirições.
Como a Matemática constitui prolongamento natural da teoria dos
conjuntos, segue-se que há patentemente Matemáticas alternativas em rela-
ção à Matemática Clássica. Grosso modo, teorias dos conjuntos em que
valem certos postulados como o Axioma da Escolha, Hipótese do Contínuo,
e outros denominam-se Teoria dos Conjuntos Cantorianas. Teorias em que
não valem essas condições, chamam-se Não-Cantorianas. Logo, podemos
falar em Matemáticas Cantorianas e Não-Cantorianas. As Matemáticas Não-
Cantorianas ganharam relevo sobretudo com os resultados de Solovay na
década de setenta. Solovay considerou um modelo de teoria dos conjuntos
no qual não vale a forma geral do Axioma da Escolha e, se obtém resultados
que diferem muito da Matemática Cantoriana. Por exemplo, prova-se que na
reta real, todo subconjunto é Lebesgue mensurável (intuitivamente que todo
conjunto de números reais pode ser “medido”), ou, que num espaço de
Hilbert, todo operador é limitado, e por conseguinte, contínuo. Porém, esses
resultados modificam profundamente a maneira de se ver as teorias físicas,
pois, como é sabido, teorias físicas têm, em sua maioria, bases em certas
estruturas conjuntistas. Advém, então, a indagação: qual a teoria dos con-
juntos que melhor retrata as teorias físicas? Além disso, qual é o significado
físico quando uma mesma teoria física é considerada em teorias de conjun-
tos distintas?
Todas essas questões estão sendo pesquisadas intensamente. Tal
situação se mostra absolutamente nova, pois, o investigador que vai aplicar
a Lógica possui em mãos agora Matemáticas alternativas, situação esta muito
distinta de um passado recente. Aliás, a Matemática que era una até então,
cederá fatalmente à diversidade.
12
sentido, tais contextos são inadequados quando tratamos do termo “lógi-
ca” que adquire hodiernamente. Uma definição popular de lógica é: Lógica é
o estudo das inferências (raciocínios) válidos. Tal definição não está incor-
reta, porém, ela não é adequada se observarmos o que a Lógica é
modernamente. Por exemplo, a Teoria dos Modelos, um ramo importante da
Lógica atualmente, dificilmente se enquadraria nessa definição. Outra defini-
ção que encontramos em algumas obras de Lógica é a seguinte: Lógica é o
estudo do raciocínio feito pelos matemáticos... Comentamos uma definição
que nos parece mais adequada: Lógica é o que os lógicos cultivam ou o que
está nos tratados de Lógica. Ou seja, para bem compreendermos o que é
lógica, é necessário seu cultivo sistemático. O leitor deve ter percebido que
não existe uma definição satisfatória de Lógica. Tal questão pertence à Filo-
sofia que trata, entre outras coisas, de temas que não possuem resposta
cabal. Esta situação se afigura constrangedora, pois vamos estudar Lógica
sem poder saber exatamente o que ela é ...
13
Mas afinal, perguntaríamos novamente, o que é razão? Não pretende-
mos abusar da paciência do leitor, mas responder tal questão não é simples,
sendo porém necessário que consideremos um importante aspecto da ques-
tão. A questão fundamental a ser percebida, para a nossa discussão, é que a
razão humana se materializa, se corporifica sempre em algum contexto
lingüístico. Poderíamos praticamente dizer que não há razão sem linguagem,
o que ilustra a importância da Teoria da Linguagem para a ciência. Pois bem,
perguntemos neste ponto, ao biólogo, que linguagem estará ele utilizando
para investigar seu objeto de estudo, as mosquinhas? Talvez ele se surpre-
enda com a pergunta, mas provavelmente dirá, a língua portuguesa, ou seja,
a linguagem natural que aprendemos desde tenra idade. Talvez muitos dos
cientistas diriam o mesmo: a linguagem natural!
Voltemos aos lógicos e perguntemos a eles: qual é a porção da reali-
dade que o lógico busca compreender? Que linguagem estará ele empregan-
do para isso? Vejamos um objeto lógico que a maioria das pessoas certamen-
te conhece muito bem, os números naturais: 0, 1, 2, 3, ..., n, ... (sim! números
são entidades lógicas). Além dos números, a maioria das pessoas sabe so-
mar e multiplicar números, sabe também, comparar números, e assim por
diante.
Uma peculiaridade interessante numa investigação em Lógica. Um
biólogo que quer estudar as moscas, sabe onde ir buscá-las. Um médico
também sabe em que espaço se encontram as doenças que quer investigar,
em seres vivos. Mas, e quanto ao número 2, onde será que ele se encontra?
Uma questão como essa, que pode parecer irrelevante à primeira vista, tem
desdobramentos interessantes. Indague o leitor a si mesmo se o número 2
existe de fato ou não. Acreditamos que um matemático convencional não
poria dúvidas quanto à existência do número 2, mas certamente teria dificul-
dades em justificá-la. Para aguçarmos um pouco mais essa questão, o leitor
está certo de que este livro, que está diante dele, existe mesmo? É claro que
sim! diria. Se pedíssemos uma argumentação que justificasse essa certeza,
talvez uma resposta suficiente aos olhos do senso comum seria: Eu estou
vendo, tocando! Ou seja, justificaria a existência do livro pelos sentidos
usuais que os seres humanos são dotados. Infelizmente, não estaríamos
satisfeitos com essa argumentação. O tato pode falhar, a visão nos engana
freqüentemente. Logo, em termos racionais, os sentidos não são capazes de
nos fornecer fundamentos para a certeza absoluta da existência do livro. Se
o leitor aplicasse essa argumentação a ele próprio, as coisas ficariam ainda
piores. O leitor tem certeza absoluta que existe? O que pode parecer estra-
nho, mas inatacável, nessa linha de argumentação, é que não conseguimos
legitimar a existência das coisas somente por argumentos lógicos. Um dos
mais belos desenvolvimentos em cima desse argumento é devido ao mate-
mático e filósofo francês René Descartes, resumido na frase “penso, logo
existo”. Porém, o que podemos concluir daí é que existe pensamento, não o
ser.
Assim, necessitamos de uma postura para vermos as coisas. A maio-
ria absoluta dos lógicos e cientistas em geral adota a postura platônica
(muitas vezes inconscientemente). Grosso modo, Platão acredita na existên-
cia de dois mundos:
1) O mundo físico (em que vivemos) e
14
2) O mundo das entidades ideais.
Para nos familiarizarmos com o segundo mundo tomemos o exemplo
clássico da circunferência. Alguém consegue desenhar uma circunferência
perfeita? Acreditamos que o leitor tenha respondido não. Porém, para Platão
a circunferência perfeita existe, porém não no nosso mundo físico e sim no
mundo das entidades ideais. Além disso, Platão diz que as circunferências
do mundo físico são cópias imperfeitas da circunferência perfeita, do mundo
ideal. Todas as entidades lógicas estão no mundo das entidades ideais. Os
objetos são atemporais e não temos o conceito de espaço em tal mundo.
Nesse sentido, podemos dizer que o número 2 sempre existiu e sempre vai
existir independentemente da existência do homem e, além disso, não se
encontra em lugar algum.
Decorre daí, em particular, que a Lógica (ou Matemática) é a mesma
para todos. Platão nos diz também que o único acesso ao mundo das entida-
des ideais é feita através de nosso intelecto, e segundo ele, esta é a razão
pela qual poucos o conhecem, e que a nossa relação com tais entidades é de
descoberta (e não de criação, por exemplo). Os poucos que não seguem a
postura platônica são vistos como excêntricos, porém existem adeptos de
outras correntes, em número menor.
15
Todos os grandes computadores da atualidade (inicialmente projetados e
construídos por J. von Neumann por volta de 1950) são realizações físicas da
máquina de Turing. São conhecidos resultados deveras interessantes na
teoria da recursão; atualmente uma das questões mais atraentes é a investi-
gação do que é computável, em particular, o problema conhecido como P =
NP. Não convém falar dele aqui por ser demasiado técnico.
16
2. INTRODUÇÃO AO CÁLCULO
PROPOSICIONAL
2.1 - Introdução
Neste capítulo trataremos alguns conceitos elementares da lógica
proposicional, de uma maneira intuitiva. Isto não nos impede, entretanto, de
sermos rigorosos em nosso tratamento. O cálculo proposicional é o estudo
da linguagem proposicional. Ela estuda basicamente cinco símbolos:
1. Negação: ¬
2. Conjunção: ^
3. Disjunção: ∨
4. Implicação: →
5. Bi-implicação: ↔
2.2 Os paradoxos
Os paradoxos ou antinomias foram objeto de estudos e inquietações
por parte de filósofos e lógicos, desde os tempos da Antiga Grécia. Sem
muito rigor, os paradoxos podem ser classificados em paradoxos semânticos
e paradoxos lógicos. Vejamos alguns.
Paradoxos semânticos.
1)Paradoxo do mentiroso.
Dentre os paradoxos desta categoria, destaca-se aquele descoberto
pelo filósofo grego Eubúlides de Mileto (384-322 a.C.) conhecido popular-
mente como o paradoxo do mentiroso. Eubúlides foi professor de Demóstenes,
contemporâneo e declarado inimigo de Aristóteles.
Teçamos algumas considerações sobre esse assunto.
Inicialmente, trata-se do senso comum que toda sentença declarativa
da língua portuguesa ou é verdadeira ou é falsa, nunca ambas simultanea-
mente. Suponhamos, por exemplo, que, num quadro negro, se escreva a
seguinte (única) frase :
S1 : ‘A sentença escrita neste quadro contém oito palavras’.
17
sentença verdadeira, pois S1, contém efetivamente, oito palavras.
Consideremos agora esta outra sentença:
2) Paradoxo do cartão
Proposto pelo matemático britânico P. Jourdain, em 1913: suponha-se
que numa das faces de um cartão esteja escrita a frase
3) Paradoxo de Grelling
Proposto em 1908 por Leonhard Nelson e Kurt Grelling, da seguinte
maneira: definimos os adjetivos como autológicos, se a propriedade que ele
denota pode ser atribuída a ele mesmo. Assim, os adjetivos “curto” e
“proparoxítona” são autológicos, enquanto os adjetivos que não possuem
tal propriedade de denotarem atributos que não sejam aplicados a si própri-
os, chamam-se heterológicos. “Longo”, “oxítona” e “verde” são, portanto,
adjetivos heterológicos. Consideremos agora o adjetivo “heterológico”. Se
“heterológico” for heterológico, então ele é autológico. Se “heterológico”
18
não for heterológico, ou seja, autológico, ele é heterológico. Por conseguin-
te, o adjetivo “heterológico” é, simultaneamente, heterológico e não
heterológico.
4) Paradoxo de Berry
Proposto em 1906. Existe um número finito de símbolos (letras, sinais
de pontuação, etc.) na língua portuguesa. Então, existe um número finito de
expressões em nossa língua que contem menos de 200 símbolos, mesmo
contando as repetições. Há, portanto, um número finito de inteiros positivos
que podem ser denotados por expressões da língua portuguesa que contem
menos de 200 símbolos. Agora consideremos k como sendo “o menor intei-
ro positivo que não se consegue denotar numa expressão em português
com menos de 200 símbolos”. Ora, a expressão em itálico acima tem menos
de 200 símbolos, e é a própria expressão do inteiro positivo k.
5) Paradoxo do barbeiro.
Numa pequena cidade do interior vive um barbeiro, muito conhecido
dos moradores da cidade, que barbeia todas (e somente aquelas) pessoas
moradoras da cidade que não se barbeiam sozinhas. Ora, o barbeiro é um
morador da cidade. Coloca-se a questão: quem faz a barba do barbeiro ?
É óbvio que:
ou ele se barbeia,
ou ele não se barbeia.
Portanto, como o leitor se apercebe, um tal barbeiro se barbeia se e
somente se ele não se barbeia. Adotando-se a Lógica Clássica, tal barbeiro
não existe.
6) Paradoxo do exame
Numa segunda-feira, certa professora informa seus alunos de que eles
terão um exame nos próximos quatro dias, mas que não deverão saber o dia
exato, a não ser no momento de prestar o exame. Os alunos, então, raciocina-
ram assim: o exame não pode ocorrer na sexta-feira (o quarto dia), pois, em
caso contrário, eles saberiam de antemão, na quinta-feira, depois das aulas,
que ele seria na sexta-feira, quebrando-se, assim, o acordo de ser surpresa.
De modo análogo, não pode ser na quinta-feira. Nem na quarta-feira, nem na
terça-feira. Logo, não pode haver exame nas condições formuladas pela mes-
tre. Porém, esta, digamos na quarta-feira, pode aplicar o exame, satisfazendo
as condições impostas.
19
Paradoxo semiótico.
Seja A o conjunto dos números naturais de 1 a 12, inclusive, A = {1, 2,
..., 11, 12}. Imaginemos um sistema de notação N para eles. Usaremos os
numerais 1, 2, ... , 8 e 9 e sinais 0, 1, 2, ... , 9, 10, 11 e 12, para denotá-los, como
usualmente, e mais o signo j.
O signo j denotará o menor elemento de A que no sistema de notação
N não pode ser denotado por um único símbolo. N aparenta ser, sem sombra
de dúvida, um sistema de notação cordial. Porém, vejamos o que ocorre com
o número 10. Suponhamos que 10 seja denotável por um único símbolo de N;
então esse símbolo obviamente só pode ser j, e 10 não é denotável por um
único símbolo de N, de conformidade com a definição de j. Admitamos,
então, que 10 não seja denotável por um único símbolo de N; daí advém que
10 é o menor número de A que não pode ser denotado por um único símbolo
e que, em conseqüência, deve ser denotado por j. A conclusão é a de que 10
é denotável por um único símbolo de N se, e somente se, não o for. Adotan-
do-se a Lógica Clássica, o sistema notacional N não existe.
Paradoxos lógicos.
Os paradoxos desta categoria, diferentemente dos semânticos, envol-
vem certas noções lógicas, principalmente relacionadas coma teoria intuiti-
va das coleções.
1)Paradoxo de Russell1
Vejamos inicialmente o chamado Paradoxo de Russell. A exposição um
tanto quanto detalhada possui o fito de relembrar alguns conceitos funda-
mentais da teoria intuitiva de conjuntos.2
Dentro da posição platônica subjacente à teoria dos conjuntos, um
dos princípios básicos que regem essa teoria, de conteúdo bastante eviden-
te, é o seguinte:
Princípio da separação (ou da compreensão): Toda propriedade P
determina um certo conjunto, a saber, o conjunto formado pelos objetos que
possuem a propriedade P e apenas por eles.
Exemplo. Consideremos a propriedade de ser homem. Ela determina o
1 Descoberto independentemente por E. Zermelo.
2 Uma exposição da teoria elementar de conjuntos pode ser vista em [Abe &
Papavero 92] .
20
conjunto
{x | x é um homem} = conjunto dos homens.
21
Por um princípio da Lógica Clássica (Princípio do Terceiro Excluído),
ou R ∈ R ,
ou R ∉ R.
Se R ∈ R, concluímos que R ∉ R.
Se R ∉ R, concluímos que R ∈ R.
Logo, R ∈ R se e somente se R ∉ R.
2) Paradoxo de Cantor
Por exigir um resultado da Teoria dos Conjuntos, que é o Teorema de
Cantor, o paradoxo será apresentado de modo resumido, em suas idéias
principais. Mas, antes disso, cumpre colocar a idéia básica do Teorema de
Cantor, a de que o número de elementos de um conjunto qualquer é sempre
menor que o número de elementos do conjunto formado por todos os seus
subconjuntos. Em linguagem simbólica: #A < #2A. Vamos ao paradoxo, en-
tão: seja C o conjunto de todos os conjuntos. Portanto, cada subconjunto
de C é também um membro de C. Assim, o conjunto potência de C é
subconjunto de C. Em linguagem da teoria dos conjuntos, 2C ⊂ C. Mas, 2C
⊂ C implica em #2C ≤ #C, o que é absurdo, de acordo com o Teorema de
Cantor, segundo o qual, #C < #2C .
3) Paradoxo de Burali-Forti
Proposto em 1897, esse paradoxo exige uma familiarização do leitor
com a Teoria dos Números Ordinais. Em linhas gerais, ele é análogo ao
paradoxo de Cantor, visto acima. Não faria sentido apresentá-lo neste texto,
a não ser resumidamente, por tratar de um conteúdo por demais específico
da matemática. Em linhas gerais, o paradoxo seria o seguinte: dado qualquer
número ordinal, existe um outro número ordinal maior que ele. Mas o número
ordinal determinado pelo conjunto de todos os números ordinais é o maior
número ordinal existente.
L
Linguagem Objeto
Meta-linguagem
(Teoria dos conjuntos
L in
Linguagem Proposicional Cantoniana)
Figura 1
Logo, ao considerarmos uma linguagem-objeto, necessitamos de uma
espécie de pano de fundo. Mais pormenorizadamente, tal pano de fundo é
qualquer modelo (ou, o que dá no mesmo, a própria teoria) de teoria dos
conjuntos (Cantoriana). Mais ainda, freqüentemente utilizamos uma aritmé-
tica usual e, portanto, uma meta-matemática na meta-linguagem. O leitor
zeloso, notará então que o estudo feito em tais linguagens artificiais será
feito olhando-se de “fora”, ou seja, todos os resultados que puderem ser
observados, serão observados de um lugar que não é o mesmo onde eles
efetivamente ocorrem. Por conseguinte, tratar-se-ão de meta-teoremas. Uma
importante observação, feita a partir disso, é a de que quase sempre estamos
trabalhando e realizando meta-matemática. Daí, o que chamaríamos, licenci-
osamente, de uma equação fundamental:
Matemática = Meta-Matemática !!
Esta situação é ilustrada magnificamente por Nietzsche: “ ... a frontei-
23
ra da Ciência possui uma infinidade de pontos. Todo homem nobre e
talentoso, antes de atingir a metade de sua carreira, defronta-se com al-
gum ponto da fronteira que desafia sua compreensão, independentemente
de saber como a região pode ser inteiramente mapeada. Quando o pesqui-
sador, levado à periferia, compreende como a Lógica, neste lugar, curva-se
sobre si mesma e morde a própria cauda, fica perplexo com uma nova
espécie de percepção: uma percepção trágica que requer, para se tornar
tolerável, o remédio da arte.”
Por exemplo, havia você percebido que os Teoremas que aprendeu
sobre Geometria ou Cálculo Diferencial e Integral são, na realidade, meta-
teoremas?
24
Adotaremos neste texto a notação booleana:
“1” designa o valor-verdade “verdadeiro”
“0” designa o valor-verdade “falso”
1) Negação
Dada a proposição A podemos considerar a proposição ( A) denomi-
nada a negação de A. Como a proposição A ou é verdadeira ou falsa, a
tabela-verdade da negação toma então a seguinte forma:
Tabela-verdade da negação.
A ( ¬A)
1 0
0 1
Exemplo 2.
1. Seja A ≡ (2 + 2 = 4) (no caso, verdadeira). Então ( ¬A) ≡ ( ¬(2 + 2 = 4))
constitui uma sentença falsa. Na aritmética comum, costuma-se escrever a
última expressão como 2 + 2 ≠ 4.
2.Seja B ≡ (2 ∈ {1, 3, 5}) (no caso, falsa). Logo, (¬B) ≡ ( ¬(2 ∈ {1, 3, 5})
constitui uma sentença verdadeira. Na linguagem da Teoria dos Conjuntos
(ver [Abe & Papavero, 92]), a última expressão é usualmente escrita como 2
∉ {1, 3, 5}.
25
“Não é que todos os animais mamíferos são animais vertebrados”. Ou ainda,
“Existem animais mamíferos que não são animais vertebrados” ou “Há ani-
mais mamíferos que são animais invertebrados”.
26
j) Algumas vezes me engano. Todas as vezes me engano.
2) Conjunção
Dadas as proposições A e B podemos considerar a nova proposição
(A ∧ B), a conjunção de A e B.
Tabela-verdade da conjunção:
27
A B (A ∧ B)
1 1 1
1 0 0
0 1 0
0 0 0
28
3. Admitindo-se o senso comum, diga se são verdadeiras ou falsas.
a) O sol brilha e a nuvem é verde.
b) 2 + 2 = 4 e ¬ = {¬}
c) Curitiba é a capital do Paraná e Paris é a capital da França.
3) Disjunção
Dadas as proposições A e B podemos considerar a nova proposição
(A ∧ B), a conjunção de A e B.
Tabela-verdade da disjunção:
A B (A ∨ B)
1 1 1
1 0 1
0 1 1
0 0 0
29
Exercício 3. Faça a tabela-verdade da disjunção exclusiva.
3. Em que casos as sentenças abaixo são falsas? (Em cada item estude todas
as possibilidades)
a) Ela é mineira e ele é paraense.
b) Ela é mineira ou ele é paraense.
c) É falso que ela é mineira e ele é paraense.
d) É falso que ela é mineira e é falso que ele é paraense.
30
7. Em que casos as sentenças abaixo não são falsas? (Estude todas as
possibilidades)
a) A Terra gira e Maria gosta de José.
b) Passarei em lógica ou 2 + 2 = 4.
c) É falso que ela gosta dele e é falso que ele gosta dela.
d) É falso que ela gosta dele e ele gosta dela.
4) Implicação
Dadas as proposições A e B podemos considerar a nova proposi-
ção (A → B), a implicação de B por A.
A proposição A chama-se antecedente da implicação (A → B) e B
chama-se o conseqüente da implicação (A → B).
Postulamos que a proposição (A → B) é falsa se e somente se o
antecedente A é verdadeiro e o conseqüente B é falso. Nos demais casos, a
proposição (A → B) é verdadeira.
Tabela-verdade da implicação:
A B (A → B)
1 1 1
1 0 0
0 1 1
0 0 1
31
Observação. Teçamos algumas considerações sobre a tabela-verdade refe-
rente à implicação.
1. Sejam as sentenças
A ≡ “Este pote d’água for colocado no fogo no instante t0” e
B ≡ “A água congelará”.
2. Sejam as sentenças
A ≡ “Se sua sogra chegar em sua casa exatamente no instante t0” e
B ≡ “Você ficará mais inteligente”.
A sentença A só é falsa no caso de sua sogra não chegar em sua
casa exatamente no instante indicado (o que é muito provável). Suponha-
mos que ela venha antes do instante t0. Logo, A é falsa.
Consideremos a sentença
(A → B) ≡ “Se sua sogra chegar em sua casa exatamente no instante t0 então
você ficará mais inteligente”.
De acordo com a tabela-verdade da implicação, (A → B) é verdadei-
ra, independentemente do valor-verdade de B, o que configura uma situação
absurda (convenhamos) !
Consideremos a sentença:
Exemplo 8. A sentença ‘Se João Guimarães Rosa não tivesse escri-
to nenhuma obra literária, então não teria havido inflação em nenhuma época
em nosso país’ é admitidamente falsa, mesmo que o antecedente seja falso.
O mesmo se sucede com a sentença ‘Se Cabral não tivesse desco-
berto o Brasil, então homem não teria chegado á lua’.
32
sentença ((A ∧ B) → B) como verdadeira, quaisquer que sejam os valores-
verdade de A e B.
Assim, se A e B são ambas verdadeiras, (A ∧ B) é verdadeira, e, por
conseguinte, isto justifica a 1 a linha da tabela.
Se A é falsa e B verdadeira, então (A ∧ B) é falsa. Este caso
corresponde à 3a linha da tabela.
Se A e B são ambas falsas, então (A ∧ B) é falsa, o que correspon-
dente à última linha da tabela.
3) Esta observação é citada em [Iséki & Abe 01]: “Temos certeza que o leitor
está perplexo que o valor-verdade de 0 → 0 e 0 → 1 é 1. Uma explicação
adequada é dada no exemplo a seguir. Estamos acostumados a dizer a seguinte
sentença: “se x é divisível por 10, então x é divisível por 2”. Se escrevermos
em símbolos obtemos
x(x/10 → x/2).
(Aqui, a expressão x/a significa que x é divisível por a.) A expressão anterior
é amplamente aceita como verdadeira.. Como x é arbitrário, se fizermos x = 20,
temos 20/10 = 2 e 20/2 = 10 e, por conseguinte, como o antecedente e o
conseqüente são ambos verdadeiros, a expressão como um todo é verdadei-
ra (isto é, o valor verdade de 1 → 1 é associado 1). Se fizermos x = 8, o
antecedente é falso enquanto que o conseqüente é verdadeiro, ou seja temos
o caso 0 → 1; no entanto a expressão como um todo é verdadeira. Finalmen-
te, se fizermos x = 5, tanto o antecedente quanto o conseqüente são falsos,
porém a expressão como um todo é verdadeira.
Esta explicação é conhecida como interpretação do famoso lógico
polonês S. Lesniewski.
Convém ressaltar que nas considerações acima há uma questão
muito importante subjacente, ou seja, contém um problema de metodologia
matemática.
Questões da lógica proposicional levamos para uma estrutura ge-
neralizada denominada lógica de predicados, e ali podemos eleger respostas
adequadas.
Por exemplo, ainda sobre esse procedimento, sabemos que não
podemos efetuar subtrações quaisquer de números naturais. Porém, se es-
tendermos para os números inteiros , obtemos uma boa interpretação para a
subtração. Outro exemplo, o mesmo se dá quando uma equação quadrática
não é solúvel no conjunto dos reais, apelamos para o mundo dos números
complexos onde obtemos uma solução.
De modo geral, a observação importante é que ao considerarmos
uma estrutura básica, vários problemas têm uma resposta adequada em es-
truturas mais gerais.”
33
Exercício 6. Dizer se são verdadeiras ou falsas (adote o “bom sen-
so” nos juízos):
1. Se a neve é branca, então Paris é a capital da França.
2. Se Penha é um bairro de São Paulo, então o céu não contém estrelas.
3. Se os planetas giram em torno da terra, então inexistem extra-terráqueos.
4. Se o sol é um planeta inerte, então a terra é uma estrela.
5) Bi-implicação
Dadas as proposições A e B podemos considerar a nova proposi-
ção (A ↔ B), a bi-implicação de A e B.
Tabela-verdade da bi-implicação:
A B (A ↔ B)
1 1 1
1 0 0
0 1 0
0 0 1
34
2. Dentro do contexto da lógica proposicional, identifique as sentenças abai-
xo quanto a sua veracidade ou falsidade justificando devidamente cada res-
posta dada.
a) (5 + 4 = 9 ∧ 2 ≤ 4), b) (3 + 2 = 6 ∧ 2 + 2 = 4),
c) (5 + 3 = 7 ∨ 4 + 4 = 7), d) (4 + 3 = 7 ∨ 2 + 3 = 4),
e) (2 + 3 = 5 → 2 + 2 = 4), f) (3 + 3 = 5 → 32 ≤ 33),
g) (2 + 4 = 7 → 2 + 2 = 5), h) (3 + 2 = 5 → 2 + 2 = 5),
i) (6 + 2 = 8 ↔ 6 ≤ 8), j) (3 + 3 = 5 ↔ 2 + 2 = 3),
k) (2 + 2 = 3 ↔ 2 + 2 = 4), l) (3 + 4 = 6 ↔3 + 3 = 7),
m) (3 ≤ 2 → 4 ≤ 3), n) (32 ≤ 33 → 4 + 5 = 8),
o) (2 ≤ 3 → (2 + 2 = 4 ∧ 7 + 2 = 9)), l) ((3 ≤ 4 ∧ 4 ≤ 3) →3 + 3 = 7).
(¬A) Não A;
Não se dá que A;
Não é fato que A;
Não é verdade que A;
Não é que A;
Não se tem A.
(A ∧ B) A e B;
A, mas B;
A, embora B;
A, assim como B;
A e, além disso, B;
Tanto A como B;
A e também B;
Não só A, mas também B;
A, apesar de B.
(A ∨ B) A ou B ou ambos.
(A → B) se A, então B;
se A, isto significa que B;
tendo-se A, então B;
quando A, então B;
sempre que A, B;
B, sempre que se tenha A;
B, contanto que A;
A é condição suficiente para B;
B é condição necessária para A;
Uma condição suficiente para B é A;
Uma condição necessária para A é B;
B, se A;
35
B, quando A;
B, no caso de A;
A, só se B;
A, somente quando B;
A, só no caso de B;
A implica B,
A acarreta B,
B é implicada por A.
(A ↔ B) A se e só se B;
A se e somente se B;
A quando e somente quando B;
A eqüivale a B;
Uma condição necessária e suficiente
para A é B;
A é condição necessária e suficiente
para B
36
6. Simbolize as sentenças abaixo:
a) Ou Capitu é ou não é a criação mais notável de Machado de Assis.
b) Não é verdade que Machado de Assis escreveu ou não escreveu
poesias.
c) Se é fácil ler o que José da Silva escreveu, não é fácil ler o que escreveu
Guimarães Rosa.
37
B ≡ há motivação para o estudo,
C ≡o estudante aprende a matéria.
a) Se não há motivação para o estudo, então o estudante comete erros ou
não aprende a matéria.
b) Se o estudante comete erros, então, se não há motivação para o estudo,
o estudante não aprende a matéria.
c) O estudante comete erros; além disso, há motivação para o estudo e o
estudante aprende a matéria.
d) Não há motivação para o estudo se e somente se o estudante comete
erros e não aprende a matéria.
e) Se há motivação para o estudo e o estudante não comete erros, então o
estudante aprende a matéria se há motivação.
38
D ≡ “Ela é jovem”
E ≡ “Ela gosta de mim”
F ≡ “Quero casar com ela”
a) “Ela é pobre”
b) “Ela é rica ou jovem”
c) “Ela é inteligente e anciã”
d) “Não é que ela é burra”
e) “Se ela é rica, então quero casar com ela”
f) “Ela é inteligente, bonita, rica, jovem e ela gosta de mim”
g) “Quero casar com ela, mas ela não gosta de mim”
h) “Uma condição necessária para casar com ela é que ela seja bonita”
i) “Uma condição suficiente para casar com ela é que ela seja rica”
j) “Ela é feia, burra, pobre, anciã, mas quero casar com ela”
k) “Quero casar com ela só se ela gosta de mim”
l) “Se ela é jovem então ela é bonita”
m) “Uma condição necessária e suficiente para casar com ela é que ela
goste de mim”
n) “Quero casar com ela, exceto se ela é burra”
39
A cláusula 3 da definição acima é também conhecida como cláusula
maximal e, juntamente com as demais, permite-nos reconhecer quando uma
dada expressão se trata de uma fórmula ou não.
A B C D ...
(¬A) (A → B) (B ∧ C) (C ∨ D) (D ↔ D)
○ ○
○ ○
○
○ ○
○
○ ○
○ ○
○
○
○ ○ ○
○
○
1
No sentido de sentença indecomponível.
40
mos alguns conceitos para o enquadramento desta noção.
Vamos exibir um processo gráfico para determinar todas as
subfórmulas (i.e., intuitivamente, todas as fórmulas que compõe a fórmula
em questão) de uma dada fórmula. Tal processo faz uso de uma estrutura,
muito utilizada nas diversas áreas das ciências da computação, chamada
árvore, mais precisamente faremos uso somente de árvores binárias. A
seguir, apresentamos graficamente as componentes de uma árvore binária
qualquer, observamos que tal descrição, não tem nenhum caráter formal, é
apenas para nos familiarizarmos com os elementos dessa estrutura.
41
Observações:
1. Chamamos a estrutura acima de árvore binária, pois cada nó pode ter zero,
um ou no máximo dois filhos.
2. Podemos também classificar os nós como sucessores e ancestrais, por
exemplo:
A
3. Se S é uma fórmula do tipo e, então ela é composta por duas fórmulas A e
B de tal modo que S = (A ∧ B), logo teremos (A ∧ B).
A B
4. Se S é uma fórmula do tipo ou, então ela é composta por duas fórmulas A
e B de tal modo que S = (A ∨ B), daí teremos (A ∨ B)
A B
5. Se S é uma fórmula do tipo implica, então ela é composta por duas fórmu-
las A e B de tal modo que S é dado por (A → B), e teremos (A → B)
A B
6. Se S é uma fórmula do tipo bi-implica, então ela é composta por duas
fórmulas A e B de tal modo que S é dado por (A ↔ B), e teremos
42
(A ↔ B)
A B
Cada nó representa uma fórmula, em particular, cada nó “gera” uma
sub-árvore, isto é, cada nó pode ser considerada uma raiz de uma árvore
“menor” que tem como nós os sucessores do respectivo nó raiz.
A construção de uma árvore de subfórmulas a partir de uma fórmu-
la dada, termina quando todas as folhas contiverem somente letras
proposicionais.
Analisemos a fórmula:
1) [A → (B ∨ C)]
Podemos verificar sem dificuldade que ela foi obtida das fórmulas A
e (B ∨ C) pela aplicação do conectivo →. Portanto, este → foi o último
conectivo que foi aplicado à fórmula [A → (B ∨ C)]. Esquematizamos isso
assim:
[A → (B ∨ C)]
A (B ∨ C)
(B ∨ C)
B C
[A → (B ∨ C)]
A (B ∨ C)
B C
43
Notamos alguns passos importantes:
1. O primeiro conectivo aplicado é então ∨.
2. O último conectivo aplicado é →.
44
Analisemos separadamente:
(1) [(¬B) ∧ (¬(¬A))] foi obtida de (¬B) e (¬(¬A)) pela aplicação do conectivo
∧. Logo, ∧ foi o último conectivo aplicado na fórmula anterior.
(¬B) foi obtida de B pela aplicação do conectivo ¬. Logo, ¬ foi o último
conectivo aplicado na fórmula anterior.
(¬(¬A)) foi obtida de (¬A) pela aplicação do conectivo ¬. Logo, ¬ foi o
último conectivo aplicado na fórmula anterior.
(¬A) foi obtida de A pela aplicação do conectivo ¬. Logo, ¬ foi o último
conectivo aplicado na fórmula anterior.
(2) [¬(¬(B ∨ C))] foi obtida de (¬(B ∨ C)) pela aplicação do conectivo ¬.
Logo, ¬ foi o último conectivo aplicado na fórmula anterior.
(¬(B ∨ C)) foi obtida de (B ∨ C) pela aplicação do conectivo ¬. Logo, ¬ foi o
último conectivo aplicado na fórmula anterior.
(B ∨ C) por sua vez foi obtida das fórmulas atômicas B e C. Logo, ∨ foi o
último conectivo aplicado na fórmula anterior.
B (¬A) (B ∨ C)
A B C
3) {[(A → B) → A] → A}
Vemos 3 conectivos →. O último é a terceira ocorrência de →. O
tipo desta fórmula é então implicação.
Logo, a árvore de decomposição fica
45
{[(A → B) → A] → A}
[(A → B) → A] A
(A → B) A
A B
4) {A ∧ [C ∧ (A ∨ C)]}
Vemos 3 ocorrências de conectivos: ∧, ∧, ∨. O último é a primeira
ocorrência de ∧. O tipo desta fórmula é então conjunção. Logo, a árvore de
decomposição fica:
{A ∧ [C ∧ (A ∨ C)]}
A [C ∧ (A ∨ C)]
C (A ∨ C)
A C
( E → C) (A ∧ D) (E ↔ C) (A ∨ D)
E C A D E C A D
46
3. {¬[¬[¬[¬[(A → B) → B] → A]]]}
B C
Nesse caso a árvore constitui-se de três nós, o nó raiz contém a
fórmula (B ∧ C), a seguir vemos que a árvore divide-se em duas, a “quebra”
ocorre exatamente sobre o conectivo ∧ que determina o tipo da fórmula e que
“liga” as letras proposicionais B e C, repare que as letras proposicionais são
as folhas da árvore. Os parênteses mais externos de cada nó abaixo da raiz
são eliminados, e por fim, note que cada nó representa uma subfórmula da
fórmula dada.
4. Dada a fórmula (B ∨ C) teremos a seguinte árvore de subfórmulas:
(B ∨ C)
B C
A árvore compõe-se de três nós, na raiz temos a fórmula (B ∨ C), a
seguir vemos que a árvore divide-se em duas, a “quebra” ocorre exatamente
sobre o conectivo ∨ que faz a ligação das letras proposicionais B e C. As
letras proposicionais são as folhas da árvore, os parênteses mais externos
de cada nó abaixo da raiz são eliminados, e cada nó representa uma subfórmula
da fórmula dada.
5. Dada a fórmula (B → C) teremos a seguinte árvore de subfórmulas:
(B → C)
B C
Novamente, a árvore compõe-se de três nós, no nó raiz temos (B →
C), a seguir vemos que a árvore divide-se em duas, a “quebra” ocorre
exatamente sobre o conectivo → que faz a ligação das letras proposicionais
B e C. As letras proposicionais são as folhas da árvore, os parênteses mais
externos de cada nó abaixo da raiz são eliminados, e cada nó representa uma
subfórmula da fórmula dada.
6. Dada a fórmula (¬B) temos a seguinte árvore de sufórmulas:
47
(¬B)
B
Aqui a árvore compõe-se de dois nós, na raiz está a fórmula (¬B), a
seguir vemos que a árvore decompõe-se em uma parte, novamente a “quebra”
ocorre exatamente sobre o conectivo que determina o tipo da fórmula, aplicada
na fórmula atômica B. A fórmula atômica é a folha da árvore, os parênteses
mais externos de cada nó abaixo da raiz são eliminados, e cada nó representa
uma subfórmula da fórmula dada.
7. Considere a fórmula ((¬A) ∧ B) a sua árvore de formação é:
((¬A) ∧ B)
(¬A) B
A
Na raiz da árvore está a fórmula ((¬A) ∧ B) e a árvore é decomposta em
duas partes. A “quebra” ocorre exatamente sobre o conectivo ∧ que faz a
ligação das fórmulas (¬A) e B. A fórmula atômica r é uma das folhas da
árvore, os parênteses mais externos de cada nó abaixo da raiz são eliminados.
Uma das folhas da árvore acima contém (¬A), que não é uma fórmula atômica,
daí a necessidade de continuarmos o processo de decomposição. Novamente
os parênteses mais externos do nó filho de (¬A) são eliminados.
8. Considere a fórmula (A ∨ (¬B)) teremos a seguinte árvore de
decomposição:
(A ∨ (¬B))
A (¬B)
(A ∧ B) A
A B
Na raiz da árvore está a fórmula (A ∧ B) → A), a árvore é decomposta
em duas partes e a “quebra” ocorre exatamente sobre o conectivo → que faz
a ligação das fórmulas (A ∧ B) e A. A fórmula atômica A é uma das folhas da
árvore, os parênteses mais externos de cada nó abaixo da raiz são eliminados.
Uma das folhas da árvore acima contém (A ∧ B), que não é uma fórmula
atômica, daí a necessidade de continuarmos o processo de decomposição.
48
Novamente os parênteses mais externos dos nós filhos de (A ∧ B) são elimi-
nados. Note que apesar da árvore apresentar cinco nós a fórmula ((A ∧ B) →
A) tem somente quatro subfórmulas distintas, entre si, basta ver que dois
nós contém a uma mesma fórmula.
(A → B) C
A B
Temos na raiz a fórmula ((A → B) ∧ C), a seguir vemos que a árvore
é decomposta em duas partes, e a “quebra” ocorre exatamente sobre o
conectivo ∧ que faz a ligação das subfórmulas (A → B) e C. Os parênteses
mais externos de cada nó abaixo da raiz são eliminados, como as folhas da
árvore acima são (A → B) e C, que não são letras proposicionais temos a
necessidade de continuarmos o processo de decomposição. Fazendo a
decomposição da árvore até que todas as folhas sejam letras proposicionais
obteremos a árvore acima.
11. Considere a fórmula (C ∧ (B ∨ A)) teremos a seguinte árvore de
decomposição:
(C ∧ (B ∨ A))
C (B ∨ A)
B A
12. Seja dada a seguinte fórmula (A → (B → A)), vejamos a sua árvore de
subfórmulas.
(A → (B → A))
A (B → A)
B A
13. Dada a a fórmula ((A → C) ∧ (B ∨ A)) teremos a seguinte árvore de
decomposição:
((A → C) ∧ (B ∨ A))
49
(A → C) (B ∨ A)
A C B A
14. Considere a fórmula ((A → C) ∧ (B → D)) teremos:
((A → C) ∧ (B → D))
(A → C) (B → D)
A C B D
(A → B) C
A B
(A ∨ B) (¬C)
A B C
A (¬B) A
B
Exercício 2. 1) Determine todas as subfórmulas de cada uma das
fórmulas dadas a seguir, usando o conceito de árvore de decomposição.
1. ((A → C) → ((B → C) → ((A ∨ B) → C))).
50
2. (( A ∨ (A ∧ B)) ↔ A)
3. ((A ∧ (A ∨ B)) ↔ A)
4. ((A → (A → B)) ↔ (A → B))
5. (((A → B) ∧ (A → C)) ↔ (A → (B ∧ C)))
6. ((¬( A ∨ B)) ↔ ((¬A) ∧ (¬B)))
7. ((¬(A ∧ B)) ↔ ((¬A) ∨ (¬B)))
8. [[A → (B → C)] → [(A → B) → (A → C)]]
9. [[A → (B → C)] → [B → (A → C)]]
10. [(A ↔ B) → (A ∨ B)]
11. [((¬A) → B) → (B → A)]
2) Idem.
1. [(¬(A ∧ B)) ↔ (¬(A ∨ B))]
2. [(A → B) ↔ ((¬B) → (¬A))]
3. [(A → (B ∧ C))]
4. [(A → B) ∧ (A → C)]
5. [[(¬B) → (¬A)] → [(¬((¬B) → A)) → B]]
6. [[(¬¬B) ↔ (¬¬C)] ↔ (¬
¬A)]
P a sso s Instruções
51
P a sso s Instruções
1 Olhemos inicialmente todas as colunas das atômicas.
. Na primeira coluna, preenchemos a primeira metade com 1 e a outra
2
metade com 0.
N a s e g und a c o l una , p a r a c a d a m e t a d e d e 1 d a p r i m e i r a c o l una ,
preenchemos a primeira metade com 1 e a outra metade com 0. Na outra
3
metade 0, ai nda da pri mei ra coluna, preenchemos a pri mei ra metade
com 1 e a outra metade com 0.
Nas demais colunas, repete-se o processo anterior, para cada bloco de
4 1 e de 0, até chegar à última coluna que deve apresentar-se assim: 1, 0,
1, 0, etc.
Vejamos vários exemplos para que o leitor se familiarize com este conceito.
1. (¬(B ∧ C))
(B ∧ C) B C (B ∧ C) (¬(B ∧ C))
1 1 1 0
B C 1 0 0 1
0 1 0 1
0 0 0 1
2. ((¬B) ∧ C)
(¬B) C
B C (¬B ) (¬(B ∧ C))
1 1 0 0
1 0 0 0
0 1 1 1
0 0 1 0
52
3. (D → (¬E))
D (¬E)
D E (¬Ε) D →(¬Ε)
1 1 0 0
1 0 1 1
0 1 0 1
0 0 1 1
4. (A → (B ∧ A))
A (B ∧ A)
B A
A B (Β ∧ Α) A →(Β ∧ Α)
1 1 1 1
1 0 0 0
0 1 0 1
0 0 0 1
5. (A → (¬(B ∨ A)))
A (¬(B ∨ A))
(B ∨ A)
B A
53
A B (Β ∨ Α) (¬(B ∨ A)) (A → (¬(B ∨ A)))
1 1 1 0 0
1 0 1 0 0
0 1 1 0 1
0 0 0 1 1
(A → (B → A))
6.
A (B → A)
B A
A B (B → A) (A → (B → A)
1 1 1 1
1 0 1 1
0 1 0 1
0 0 1 1
7. ((A → B) → A)
(A → B) A
A B
A B (B → A) (B → A)A →)
1 1 1 1
1 0 0 1
0 1 1 0
0 0 1 0
54
8. ((A ↔ B) → A)
(A ↔ B) A
A B
A B (A ↔ B) ((A ↔ B) → A)
1 1 1 1
1 0 0 1
0 1 0 1
0 0 1 0
9. {A → [(¬B) ∧ C]}
A [(¬B) ∧ C]
(¬B) C
55
10. {(A ∨ B) → [B ∧ (B ↔ A)]}
(A ∨ B) [B ∧ (B ↔ A)]
A B B (B ↔ A)
B A
(A ∧ B) (¬A) (¬B)
A B A B
56
A B (A ∧ B) [¬(A ∧ B)] (¬A) (¬B) [(¬A) ∨ (¬B)]} {[¬(A ∧ B)] ↔ [(¬A) ∨ ¬B)]}
11 1 0 0 0 0 1
10 0 1 0 1 1 1
01 0 1 1 0 1 1
00 0 1 1 1 1 1
A (B ∧ C) (A ∨ B) (A ∧ C)
B C A B A C
(A ∧ B) (B ∧ A)
A B B A
57
A B (Α ∧ Β) (B ∧ A) [(A ∧ B) ↔ (B ∧ A)])
1 1 1 1 1
1 0 0 0 1
0 1 0 0 1
0 0 0 0 1
A A (B ∨ A)[(A ∨ B) → B]
B A (A ∨ B)B
A B
A (¬(B ↔ A))
(B ↔ A)
B A
58
A B (B ↔ A) (¬(B ↔ A)) (A → (¬(B ↔ A)))
1 1 1 0 0
1 0 0 0 1
0 1 0 1 1
0 0 1 0 1
(¬(A ↔ B)) A
(A ↔ B)
A B
(¬(A → B)) A
(A → B)
A B
59
A B (A ↔ B)) (¬(A ↔ B)) ((¬(A ↔ B)) → A)
1 1 1 0 1
1 0 0 0 1
0 1 0 1 0
0 0 1 0 1
(A → C) (B ↔ C)
A C B C
((A → C) ∨ (B ↔ C))
A B C (A → C) (B ↔ C)
1 1 1 1 1 1
1 1 0 0 0 0
1 0 1 1 0 1
1 0 0 0 1 1
0 1 1 1 1 1
0 1 0 1 0 1
0 0 1 1 0 1
0 0 0 1 1 1
(A → B) (G → (¬A))
A B G (¬A)
60
(G → (¬A)))
A B G (¬A) (A → B) ((A → B) ↔ (G → (¬A)))
1 1 1 1 1 1 1
1 1 0 0 1 1 1
1 0 1 1 0 1 0
1 0 0 0 0 1 0
0 1 1 1 1 0 0
(A → C) ((B ↔ C) → (B → C))
A C (B ↔ C) (B → C)
B C B C
A B C (A → C) (B → C) (B ↔ C) ((B ↔ C) → (B → C)) X
1 1 1 1 1 1 1 1
1 1 0 0 1 0 1 1
1 0 1 1 0 0 1 1
1 0 0 0 0 1 1 1
0 1 1 1 1 1 1 1
0 1 1 0 1 1
0 0 1 0 1 1
0 0 1 1 1 1
61
21. Y ≡ ((A → B) → ((C→ (¬B)) ↔ (¬D)))
C (¬B) D
62
22. Z ≡ ((A → (B → C)) → ((A → C) → (A → D)))
A (B → C) (A → C) (A → D)
B C A C A D
63
2) Fazer a árvore de subfórmulas das seguintes fórmulas e analisar o
respectivo valor-verdade.
1. [[(¬B) → (¬A)] → [((¬B) → A) → B]]
2. [[(¬B) ∧ (¬C)] ↔ (¬A)]
3. [¬[(A → B) ∧ (A ∨ (¬A))]]
4. [¬(A ∨ (¬A))]
5. [¬(A ∧ (¬A))]
6. [(¬B) ∧ (¬C)] ↔ (¬A)
7. [¬(( A → B) ∧ (A ∨ (¬A)))]
8. [[A → (B → C)] → [(A → B) → (A → C)]]
9. [[A → (B → C)] → [B → (A → C)]]
10. [(A ↔ B) → (A ∨ B)]
11. [((¬A) → B) → (B → A)]
3) Idem.
1. [(¬(A ∧ B)) ↔ (¬(A ∨ B))]
2. [(A → B) ↔ ((¬B) → (¬A))]
3. [(A→ (B ∧ C))]
4. [(A→ B) ∧ (A → C)]
5. [[(¬B) → (¬A)] → [(¬((¬B) → A)) → B]]
6. [[(¬B) ↔ (¬C)] ↔ (¬A)]
7. [¬[(¬(A → B)) ∧ (B ∨ (¬A))]]
8. [¬(A → (¬A))]
9. [¬(A ∧ (¬(¬A)))]
10. [[(¬B) ∧ (¬C)] ↔ (¬(¬A))]
11. [¬(( A → B) ↔ (A ↔ (¬A)))]
12. [[ A ↔ ( B → C)] → [( A ↔ B) → ( A ↔ C)]]
5) Idem.
1. [¬[A ∧ (¬A)]]
2. [[A → (B → C)] → [B → (A → C)]]
3. [[A → (B → C)] → [(A → B) → (A → C)]]
4. [¬[A ∧ (¬A)]]
64
5. [¬[(A → B) ∧ (A ∨ (¬A))]]
6. [[(¬B) ∧ (¬C)] ↔ (¬A)]
7. [[A → (B → C)] → [B → (A → C)]]
8. [[A → (B → C)] → [(A → B) → (A → C)]]
9. [[A → (B → C)] → [B → (A → C)]]
10. [[(¬B) → (¬A)] → [((¬B) → A) → B]]
11. [[(¬B) ∧ (¬C)] ↔ (¬A)]
12. [¬[(A → B) ∧ (A ∨ (¬A))]]
13. [¬[A ∧ (¬A)]]
14. [[A → (B → C)] → [B → (A → C)]]
7) Idem.
1. (A → (B → A)),
2. ((A ∧ B) → A),
3. ((A → B) → A),
4. (A → (¬(B ∨ A))),
5. ((¬(A ∧ B)) → A),
6. ((¬(A → B)) → A),
7. ((A → C) ∨ (B ∧ C)),
8. ((A → B) → (E → (¬C))),
9. ((A → C) → ((B → C) → ((A ∨ B) → C))),
10. ((A → B) → ((A → (¬B)) → (¬A))),
11. ((A → (B → C)) → ((A → B) → (A → C))).
9) Determine:
65
1. A Recíproca da Inversa de (A → B)
2. A Inversa da Contrapositiva de (A → B)
3. A Contrapositiva da Inversa de (A → B)
4. A Contrapositiva da Recíproca de (A → B)
5. A Recíproca da Inversa de “Se Antonio ganhar a causa, o assassino
será libertado”.
6. A Inversa da Contrapositiva de “Se o time tiver coragem, vencerá”.
7. A Contrapositiva da Inversa de “Se for um triângulo, será um triângulo
equilátero”.
8. A Contrapositiva da Recíproca de “Se o relógio estiver certo, estamos
atrasados”.
13) Em cada uma das sentenças abaixo, determine qual é a condição necessária
para a outra condição, e qual é a condição suficiente para a outra condição,
ou ambas, necessária e suficiente.
1. Se Marieta se casar com Chico, então ela gosta dele.
2. Gilberto virá, se não chover.
3. Quando ela está feliz, ela sorri, e quando ela sorri, ela está feliz.
4. Todo homem pode ler. (Considere “poder ler” como uma condição e “ser
66
homem” como outra.)
5. O homem é um animal racional.
2.9 - Tautologias
x1 x2 f(x1, x2)
1 1 0
1 0 0
0 1 0
0 0 1
67
Vimos na seção que a cada fórmula podemos associar uma função-verdade
correspondente.
(A ∧ B ) B
A B
A B (A ∧ B) ((A ∧ B) → B)
1 1 1 1
1 0 0 1
0 1 0 1
0 0 0 1
2. (¬(A ∧ (¬A)))
(A ∧ (¬A))
A (¬A)
68
3. S ≡ ((A → (B → C)) → ((A → B) → (A → C)))
A (B → C) (A → B) (A → C)
B C A B A C
69
2) Quais das seguintes fórmulas é implicada logicamente pela fórmula [(¬A)
→ B] ?
1. (¬A)
2. [A ∨ (¬B)]
3. (B ∨ (¬A))
70
A1 A2 (A1 ∧ A2) ((A1 ∧ A2) → A1)
1 1 1 1
1 0 0 1
0 1 0 1
0 0 0 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 0 1 1 0 0 1
1 0 1 1 0 0 1
0 1 1 1 0 0 1
0 1 0 0 0 0 1
0 0 1 1 0 0 1
0 0 0 0 0 0 1
é uma tautologia.
71
2.10 - Árvore de refutação
0 Falseamento
72
[(A ∧ B) → A)] Justificativa
0 Falseamento
1 0 Tab. →
0 Falseamento
1 0 Tab. →
1 1 Tab. ∧
0 Falseamento
1 0 Tab. →
1 1 Tab. ∧
Principais tautologias.
73
Leis comutativas
1. ((A ∨ B) ↔ (B ∨ A))
Demonstração. Como se trata do conectivo da bi-implicação, temos dois
casos:
1o caso:
((A ∨ B) ↔ (B ∨ A))
0
1 0
0 0
0 0
0
2o caso:
((A ∨ B) ↔ (B ∨ A))
0 1
1
0
0 0 0
0 0
2. ((A ∧ B) ↔ (B ∧ A))
3. ((A ↔ B) ↔ (B ↔ A))
4. (((A → (B → C)) ↔ (B → (A → C)))
Leis associativas
5 (((A ∨ B) ∨ C) ↔ (A ∨ (B ∨ C)))
Demonstração. Como se trata do conectivo da bi-implicação, temos dois
casos:
1o caso:
0
1 0
0 0
0 0
0 0
0 0
0
74
2o caso:
((A ∨ B) ∨ C) ↔ Α) ∨ Β) ∨ C))
0 1
0 1
0 0
0 0
0 0
0 0
0
6. (((A ∧ B) ∧ C) ↔ (A ∧ (B ∧ C)))
Leis distributivas
7. ((A ∧ (B ∨ C)) ↔ ((A ∧ B) ∨ (A ∧ C)))
Demonstração: como se trata do conectivo da bi-implicação, temos dois
casos:
1o caso:
0 1
1 0
1 1 0 0
1 1
0 0
0 0
0
o
2 caso: aqui temos a conjunção da “esquerda” falsa e a disjunção da “direita”
verdadeira. Desafortunadamente, ambas fórmulas possuem três casos a serem
analisados. Faremos o raciocínio na fórmula da “direita”, que é uma disjunção
verdadeira:
(((A ∧ (B ∨ C)) ↔ ((Α ∧ Β) ∨ (A ∧ C)))
0
0 1
1 0
1 1
1
0
1 0
1 1
1
75
2o sub-caso.
(((A ∧ (B ∨ C )) ↔ ((Α ∧ Β) ∨ (A ∧ C)))
0
0 1
0 1
1 1
1
0
1 1
1 1
1
3o sub-caso.
0
0 1
1 1
1 1 1 1
1 1
1 1
1
Leis idempotentes
9. ((A ∨ A) ↔ A)
Demonstração. Como se trata do conectivo da bi-implicação, temos dois
casos:
1o caso:
((A ∨ (A ↔ (A
0
1 0
0 0
0
76
2o caso:
((A ∨ (A ↔ (A
0
0 1
1 1
1
10. ((A ∧ A) ↔ A)
1o caso:
((A ↔ (¬ (¬ (A
0
1 0
1
0
2o caso:
((A ↔ (¬ (¬ A))
0
0 1
0
1
77
((A ∨ (¬ A))
0
0 0
1
Lei da não-contradição
13. (¬(A ∧ (¬A)))
Demonstração. Como se trata do conectivo da conjunção, temos que:
(¬ ((A ∧ (¬ A)))
0
1
1 1
0
78
((Α → Β) ∧ ((B → C)) → (A → C)
1 0 0
1 1 1 0
1 0
1 0
Leis da contraposição.
16. (((A → B) ↔ ((¬B) → (¬A)))
Demonstração. Como se trata do conectivo da bi-implicação, temos dois
casos:
1o caso:
((Α → Β) ↔ ((¬ Β) → (¬ A)))
0
1 0
1 0
0 1
1 0
0
2o caso:
((Α → Β) ↔ ((¬ Β) → (¬ A)))
0
0 1
1 0
0 1
1 0
0
Lei da exportação.
18. (((A ∧ B) → C) → (A → (B→C)))
Lei da importação.
19. ((A → (B → C)) → ((A ∧ B) → C))
79
Leis de absorção
21.(( A ∨ (A ∧ B)) ↔ A)
22. ((A ∧ (A ∨ B)) ↔ A)
23. ((A → (A → B)) ↔ (A → B))
24. (((A → B) ∧ (A → C)) ↔ (A → (B ∧ C)))
Leis de De Morgan
25.((¬( A ∨ B)) ↔ ((¬A) ∧ (¬B)))
26. ((¬(A ∧ B)) ↔ ((¬A) ∨ (¬B)))
Lei do destacamento
34.((( A ∧ (A → B)) → B)
Leis de simplificação
37. ((A ∧ B) → A)
38. ((A ∧ B) → B)
Leis de adição.
39.(A → (A ∨ B))
40. (B → (A ∨ B))
80
Lei de Peirce
45. (((A → B) → A) → A)
Esquema B
46. (A → (B → A))
Esquema C
47. ((A → (B → C)) → ((A → B) → (A → C)))
Lei da identidade
48. (A → A)
Exercício 3. Idem.
1. {¬[B ∧ (¬B)]}
2. {¬[A ∧ (¬B)]}
3. {[(¬A) ∨ (¬B)] ↔ (¬C)}
4. {¬[A ∨ (¬C)]}
5. {¬[(A → C) ∧ (A ∨ (¬B))]}
6. {[¬(A ∨ B)] ↔ [(¬A) ∧ (¬B)]}
7. {[(A → B) ∧ (A → C)] → (A → C)}
8. {(A → B) → [(B → C) → (A → C)]}
9. {¬[C ∧ (¬B)]}
10. {[(¬C) ∨ (¬B)] ↔ (¬C)}
11. {[¬[B ∨ (¬C)]] ∨ B}
12. {¬[(A → C) ∧ (A ∨ (¬B))]}
81
Exercício 4. Idem.
1. {(C → B) → [(B → A) → (C → A)]}
2. {[(B → C) ∧ (C → A)] → ( B → A)}
3. {[(¬A) ∧ (¬B)] ↔ [¬(A ∨ B)]}
4. {[¬[A ∨ (¬C)]] ∨ A}
5. {¬[(D → C) ∧ (D ∨ (¬B))]}
6. {¬[B ∧ (¬A)]}
7. {[(¬C) ∨ (¬A)] ↔ (¬C)}
8. [(A ∧ (¬A)) → B]
9. [(A ∧ (¬A)) → (¬B)]
10. [(A → (¬A)) → B]
11. [(A ↔ (¬A)) → B]
12. [(A ↔ (¬A)) → (¬B)]
13. [A → (¬(¬A))]
14. {((¬A) ∧ (A ∨ B)) → B}
15. {(A → B) → [(¬B) → (¬A)]}
16. [¬((¬A) ∧ (¬(¬A)))]
17. {[(A → (¬A)) → B] ∧ [B → (¬(¬B))]}
2.11 - Contradições
Exemplo 1.
1. (A ∧ (¬A))
A (¬A)
A (¬A) (A ∧ (¬A))
1 0 0
0 1 0
82
2. ((A ∧ B) ∧ (¬A))
(A ∧ B) (¬A)
A B A
[¬ ((A ∧ Β) → A)]
1
0
1 0
1 0
2. [¬(A → (B → A))]
83
[¬ (A → (Β → A))]
1
0
1 0
1 0
84
verdadeiras.
A
B
ou
1. Premissa maior: (A → B)
2. Premissa menor: A
3. Conclusão: B
Outros exemplos:
1. {(¬A) → B} Premissa maior
85
2. (¬A) Premissa menor
3. B Conclusão
1 1 0
0
2.2 2a forma
(A ∨ B)
(¬B)
A
Exemplo 3. 1. Premissa: “Clarissa compra um vestido azul ou Clarissa
compra uma blusa bege”
2. Premissa: “Clarissa não compra uma blusa bege”
3. Conclusão: “Clarissa compra um vestido azul”
86
2.1) 1. Premissa: (¬(¬A))
2. Conclusão: A
Portanto, se pomos:
A ≡ Bianca estuda, temos:
(¬(¬A)) ≡ Não é o caso que Bianca não estuda.
Temos então:
1. Não é o caso que Bianca não estuda. Premissa
2. Bianca estuda. Conclusão
Ou, em símbolos,
1. (¬(¬A)) Premissa
2. A Conclusão
2.2)
2.1) 1. Premissa: A
2. Conclusão: (¬(¬A))
Portanto se pomos:
A ≡ Johnny Mathis interpreta com maestria, temos:
(¬(¬A)) ≡ Não é o caso que Johnny Mathis não interpreta com maestria.
Temos então:
1. Johnny Mathis interpreta com maestria. Premissa
2. Não é o caso que Johnny Mathis não interpreta com maestria.
Conclusão
Ou, em símbolos,
1. A Premissa
2. (¬(¬A)) Conclusão
87
Seja a proposição: ∅ = {∅}.
Se pomos A ≡ ∅ = {∅}, temos:
1. ∅ = {∅} Premissa
2. Não é que ∅ ≠ {∅} Conclusão
(¬(¬A)) (¬A) A
1 0 1
A (¬A) (¬(¬A))
1 0 1
Exemplo 4.
1. (A → B) Premissa
2. A Premissa
3. B 1, 2, Modus Ponens
4. (¬(¬B)) 3, Dupla negação
Constitui uma dedução. Diz-se que (¬(¬B)) foi deduzida a partir das premissas
88
(A → B) e A.
1. (A → B) Premissa
2. (¬B) Premissa
3. (¬A) Conclusão
89
Teorema 3. A regra de Modus Tollendo Ponens é uma inferência
válida.
Demonstração: Suponhamos que (A → B) e (¬B) são proposições
verdadeiras. Suponha-se por absurdo que (¬A) é falsa. De (¬B) verdadeira,
temos B falsa e de (¬A) é falsa concluímos que A é verdadeira. De A verdadeira
e B falsa concluímos que (A → B) é falsa, o que é absurdo. Podemos
esquematizar assim:
(A → B) (¬B) B (¬A) A
1 1 0
0 1
0
5) Regra de Simplificação:
Esta regra é composta de uma premissa e uma conclusão.
5.1 1a forma.
(A ∧ B)
A
ou
1. Premissa: (A ∧ B)
2. Conclusão: A
5.2 2a forma.
(A ∧ B)
B
ou
1. Premissa: (A ∧ B)
2. Conclusão: B
6) Regra de Adjunção.
Esta regra compõe-se de duas premissas e uma conclusão.
6.1 1a forma.
A
B
(A ∧ B)
ou
1. Premissa: A
2. Premissa: B
3. Conclusão: (A ∧ B)
90
Exemplo 8. 1. Premissa: “Clarissa é amorosa”
2. Premissa: “Clarissa é quieta”
3. Conclusão: “Clarissa é amorosa e Clarissa é quieta”
2a forma.
A
B
(B ∧ A)
ou
1. Premissa: A
2. Premissa: B
3. Conclusão: (B ∧ A)
7) Lei de Adição
A Lei de Adição expressa que de uma proposição válida A pode-se inferir a
disjunção dela com qualquer outra proposição B.
A Lei da Adição se expressa como:
7.1)
1. Premissa: A
2. Conclusão: (A ∨ B)
7.2)
1. Premissa: B
2. Conclusão: (A ∨ B)
91
Esta regra compõe-se de duas premissas e uma conclusão.
1. Premissa: (A → B)
2. Premissa: (B → C)
3. Conclusão: (A → C)
Exemplo 16. 1. Premissa: “Se fizer calor, então Clarissa irá á praia”
2. Premissa: “Se Clarissa irá á praia, então Clarissa arrumará a casa”
3. Conclusão: “Se fizer calor, então Clarissa arrumará a casa”
9.2 2a forma.
(A ∨ B)
(A → C)
(B → D)
(D ∨ C)
ou
1. Premissa: (A ∨ B)
2. Premissa: (A → C)
3. Premissa: (B → D)
4. Conclusão: (D ∨ C)
92
10) Leis Comutativas.
Esta regra compõe-se de uma premissa e uma conclusão.
10.1 1a forma.
(A ∧ B)
(B ∧ A)
ou
1. Premissa: (A ∧ B)
2. Conclusão: (B ∧ A)
10.2 2a forma.
(A ∨ B)
(B ∨ A)
ou
1. Premissa: (A ∨ B)
2. Conclusão: (B ∨ A)
11.2(A↔B)
(B→A)
11.3(B→A)
(A↔B)
11.4 (A↔B)
((A↔B)∧(A↔B)
12.1[¬(A∧B)]
[(¬A) ∨ (¬B)]
12.2 [¬(A∨B)]
[(¬A) ∧ (¬B)]
93
12.3 (A∧B)
{¬[(¬A)∨(¬B)]}
12.4 (A∧B)
{¬[(¬A)∨(¬B)]}
12.5 [(¬A)∨(¬B)]
[ ¬(A∧B)
12.6 [(¬A)∧(¬B)]
[ ¬(A∨B)
12.7 {¬[(¬A)∨(¬B)]}
(A∧B)
12.8 {¬[(¬A)∨(¬B)]}
(A∨B)
94
2.12 - Regras de eliminação de parênteses
95
Exemplo 6. ainda em relação ao exemplo anterior:
((A ∨ (¬B)) → C ) ↔ (A ∧ D)
Há uma outra notação para as fórmulas que não faz uso dos parênteses.
Tal sistema é conhecido como notação polonesa de fórmulas e mostra que,
de fato, os parênteses são simplesmente símbolos auxiliares da linguagem
proposicional.
As regras da notação polonesa são as seguintes:
Sejam A e B fórmulas quaisquer. Escrevemos :
P1) ¬A ao invés de (¬A)
P2) ∧AB ao invés de (A ∧ B)
P3) ∨ AB ao invés de (A ∨ B)
P4) → AB ao invés de (A → B)
P5) ↔ AB ao invés de (A ↔ B)
96
2. →∧ABC (P2)
97
1. (¬(¬B))
2. (A ∧ B)
Exemplo 5. Exemplos.
1. (A ∧ B) está contida em [(A ∧ B) ∧ C]
2. [C ∧ (¬A)] está contida em {B ∧ [C ∧ (¬A)]}
3. {B ∧ (¬A)]} está contida em {B ∧ [C ∧ (¬A)]}
4. A está contida em (¬A)
Exemplo 6. Contra-exemplos.
1. (¬A) não está contida em [(A ∧ B) ∧ C]
2. [C ∧ (¬B)] não está contida em {B ∧ [C ∧ (¬A)]}
3. A não está contida em {B ∧ [C ∧ (¬A)]}
98
5. (A ∧ B)
6. [(¬A) ∨ A]
7. {[D ∧ (¬A)] ∨ [B ∧ [C ∧ (¬A)]]}
8. {{[D ∧ (¬A)] ∨ [B ∧ [C ∧ (¬A)]]} ∨ [(D ∧ C) ∨ A]}
Pode-se provar um resultado que toda função-verdade é
determinada por uma fórmula que contém somente ocorrências dos
conectivos ¬, ∧ ou ∨. Na realidade, o resultado que vamos expor através de
exemplos, já fornece uma fórmula na sua forma disjuntiva normal.
A B S
1 1 0
1 0 1
0 1 1
0 0 1
99
Preliminarmente construamos sua tabela-verdade:
[(¬B) → C] [(¬A) ∧ B]
(¬B) C (¬A) B
B A
[(¬Α) ∧ Β]
A Β C (¬Β) (¬A) [(¬Β) → C] S
1 1 1 0 0 1 0 0
1 1 0 0 0 1 0 0
1 0 1 1 0 1 0 0
1 0 0 1 0 0 0 1
0 1 1 0 1 1 1 1
0 1 0 0 1 0 1 0
0 0 1 1 1 1 1 0
0 0 0 1 1 0 1 1
100
A Β C D S
1 0 1 1 0
1 0 1 0 0
1 0 0 1 0
1 0 0 0 0
1 1 1 1 0
1 1 1 0 1
1 1 0 1 0
1 1 0 0 0
0 0 1 1 0
0 0 1 0 1
0 0 0 1 0
0 0 0 0 0
0 1 1 1 0
0 1 1 0 0
0 1 0 1 1
0 1 0 0 0
101
A B S1 A B S2
1 1 0 1 1 0
1 0 1 1 0 1
0 1 0 0 1 1
0 0 1 0 0 0
A B S3 A B S3
1 1 0 1 1 1
1 0 0 1 0 1
0 1 0 0 1 0
0 0 0 0 0 1
Exercício 6. Encontre fórmulas S1, S2 e S3 cujas fórmulas atômicas
são A, B e C e cujas tabelas-verdade são:
A B C S1 A B C S2 A B C S3
1 1 1 1 1 1 1 0 1 1 1 0
1 1 0 1 1 1 0 1 1 1 0 0
1 0 1 0 1 0 1 1 1 0 1 1
1 0 0 0 1 0 0 0 1 0 0 1
0 1 1 1 0 1 1 0 0 1 1 1
0 1 0 0 0 1 0 1 0 1 0 0
0 0 1 0 0 0 1 0 0 0 1 1
0 0 0 1 0 0 0 1 0 0 0 0
102
2.15 - Uma axiomatização da lógica proposicional
103
3. Bn é A.
(A ∨ B) C
A B
104
(¬2) [(¬(¬A)) → A]
Exemplo 4.
a) A fórmula A1 → (A2 → A1) é um axioma, que por sua vez é uma
instanciação (ou instância) de (→1).
b) Idem, em relação à fórmula A5 → (A5 → A5).
c) Idem, para a fórmula (¬A1) → (A10 → (¬A1)).
d) Idem, para (A1 → A2) → ((A3 ∧ A1) → (A1 → A2)).
e) {[(A ∨ C) ∧ (C ∨ B)] → (C ∨ B)} é um axioma; é uma instanciação (ou
instância) de (∧2)
105
esse fato por | A (ou, simplesmente | A). assim, no exemplo anterior,
temos que | (A → (A → A)) → (A → A).
5
O leitor deve prestar atenção ao duplo emprego das palavras ‘teorema’ e ‘demons-
tração’. É claro que tais palavras já possuem significados técnicos precisos, vistos no
texto. A palavra ‘teorema’ do ‘Teorema 1’, entretanto, se refere a uma afirmação da
sintaxe da linguagem proposicional; é, pois, em realidade, um ‘meta-teorema’; a pala-
vra ‘demonstração’ que a acompanha constitui a demonstração do ‘meta-teorema’
correspondente.
106
Definição 8. Uma fórmula A diz-se uma conseqüência sintática de um
conjunto Γ de fórmulas se existir uma dedução a partir de Γ (A1, A2, ... , An) tal
que An coincide com A. Uma tal seqüência se denomina dedução de A a partir
de Γ.
Logo, uma fórmula A constitui uma conseqüência sintática de Γ se for
o último termo de uma dedução a partir de Γ. Os membros de Γ chamam-se
hipóteses ou premissas da dedução. Utilizamos o símbolo
Γ | A (ou simplesmente Γ | A)
para abreviarmos que A é conseqüência sintática de Γ.
Exemplo 9. A → (B → C) | B → (A → C).
Demonstração:
1. A → (B → C) (hipótese)
2. [A → (B → C)] → [(A → B) → (A → C)] (→2)
3. [(A → B) → (A → C)] (1, 2, MP)
107
4. B → (A → B) (→1)
5. B → (A → C). (4, 3,
exemplo anterior)
108
seqüência, onde Bm é Bj → Bi, j, m < i.
Nos casos 2.1, 2.2, 2.3, o procedimento é análogo ao dos casos 1.1, 1.2 e 1.3,
respectivamente, do item anterior.
analisemos agora 2.4. Temos que:
i. Γ | A → Bj (hipótese de indução)
ii. Γ | A → (Bj → Bi) (hipótese de indução)
iii. | (A → (Bj → Bi)) → ((A → Bj) → (A → Bi)) (→2)
iv. Γ | (A → Bj) → (A → Bi) (ii, iii, Teorema 3)
v. Γ | A → Bi (i, iv, Teorema 3)
Logo, temos que Γ | A → Bi, 1 ≤ k ≤ n.
Em particular, para k = n, temos que
Γ | A → B.
Lema 2.
1) A → A, B → C | A → C
2) A → (B → C) | B → (A → C).
3) | A → ((A → B) → B).
Demonstração:
1) A → A, B → C | A → C
1. A → B (hipótese)
2. B → C (hipótese)
3. A (1, 3, MP)
4. C (2, 4, MP)
Concluímos que A → B, B → C, A | C, donde, pelo Teorema da
Dedução, advém que A → B, B → C | A → C.
2) A → (B → C) | B → (A → C).
1. A → (B → C) (hipótese)
2. B (hipótese)
3. A (hipótese)
4. B→C (1, 3, MP)
5. C (2, 4, MP)
∴φ0 Α → (B → C), B , A | C.
∴φ0 Α → (B → C) | B → (A → C) (Teorema da Dedução).
3) | A → ((A → B) → B).
1. A (hipótese)
2. A → B (hipótese)
3. B +(1, 2, MP)
∴φ0 | A → ((A → B) → B) (Teorema da Dedução).
109
Demonstração:
1) B → ¬¬B
1. B (hipótese)
2. B → (¬B → B) (→1)
3. ¬B → B (1, 2, MP)
4. (¬B → B) → ((¬B → ¬B) → ¬¬B) (¬1)
5. (¬B → ¬B) → ¬¬B (3, 4, MP)
6. ¬B → ¬B (Teorema 1)
7. ¬¬B (5, 6, MP)
8. B | ¬¬B
9. | B → ¬¬B (Teorema da Dedução).
2) ¬A → (A → B)
1. ¬A (hipótese)
2. A (hipótese)
3. A → (¬B → A) \(→1)
4. ¬B → A (2, 3, MP)
5. ¬A → (¬B → ¬A) (→1)
6. ¬B → ¬A (1, 5, MP)
7. (¬B → A) → ((¬B → ¬A) → ¬¬B) (¬1)
8. ¬¬B (4, 6, 7, MP)
9. ¬¬B → B (¬2)
10. B (8, 9, MP)
11. ¬A → (A → B) (Teorema da Dedução)
3) (¬B → ¬A) → (A → B)
1. ¬B → ¬A (hipótese)
2. A (hipótese)
3. A → (¬B → A) (→1)
4. ¬B → A (2, 3, MP)
5. (¬B → A) → ((¬B → ¬A) → ¬¬B)
6. (¬B → ¬A) → ¬¬B (4, 5, MP)
7. ¬¬B (5, 6, MP)
8. ¬¬B → B (¬2)
9. B (7, 8, MP)
10. (¬B → ¬A) → (A → B) (Teorema da Dedução)
4) (A → B) → (¬B → ¬A)
1. A → B (hipótese)
2. ¬B (hipótese)
3. (A → B) → ((A → ¬B) → ¬A) (¬2)
4. (A → ¬B) → ¬A (1, 3, MP)
5. ¬B → (A → ¬B) (→1)
6. A → ¬B (2, 5, MP)
7. ¬A (4, 6, MP)
8. (A → B) → (¬B → ¬A) (Teorema da Dedução)
110
2. ¬B (hipótese)
3. | A → ((A → B) → B) (lema 2, item 3)
4. | ((A → B) → (¬B → ¬(A → B)) (lema 3, item 4)
5. | A → (¬B → ¬(A → B)) (3, 4, lema 2, item 1)
6. | ¬(A → B) (1, 2, 5, MP)
6) (A → B) → ((¬A → B) → B)
1. A → B (hipótese)
2. ¬A → B (hipótese)
3. | (A → B) → (¬B → ¬A) (lema 2.8.3, item 4)
4. | ¬B → ¬A (1,2,MP)
5. | ¬B → B (4, 2, lema 2, item 1) (¬1)
6. (¬B → B) → ((¬B → ¬B) → ¬¬B) (¬1)
7. (¬B → ¬B) → ¬¬B (5, 6, MP)
8. | ¬B → ¬B (Teorema 1)
9. | ¬¬B (7, 8, MP)
10. ¬¬B → B
(¬2)
11. | B (9, 10, MP)
2) A → (C → (A ∨ B))
1. A (hipótese)
2. C (hipótese)
3. A → (A ∨ B) (∨1)
4. A ∨ B (1, 3, MP)
∴φ0 | A → (C → (A ∨ B)) (Teorema da Dedução)
3) B → (C → (A ∨ B))
1. B (hipótese)
2. C (hipótese)
3. B → (A ∨ B) (∨2)
4. A ∨ B (1, 3, MP)
∴φ0 | B → (C → (A ∨ B)) (Teorema da Dedução)
4) ¬(A ∨ B) → ¬A ∧ ¬B
1. ¬(A ∨ B) (hipótese)
111
2. A→A∨B (∨1)
3. ¬(A ∨ B) → ¬A (2, lema 2, item 4)
4. ¬A (1, 3, MP)
5. B→A∨B (∨2)
6. ¬(A ∨ B) → ¬B (5, lema 2, item 4)
7. ¬B (4.5, 4.6, MP)
8. ¬A → (¬B → (¬A ∧ ¬B)) (∧3)
9. (¬A ∧ ¬B) (4, 7, 8, MP)
∴φ0 | ¬(A ∨ B) → ¬A ∧ ¬B (Teorema da Dedução)
5) A → ¬(¬A ∧ ¬B)
1. A (hipótese)
2. ((¬A ∧ ¬B) → A) → (((¬A ∧ ¬B) → ¬A) → ¬(¬A ∧ ¬B)) (¬1)
3. A → ((¬A ∧ ¬B) → A) (→1)
4. (¬A ∧ ¬B) → A (1, 3, MP)
5. (¬A ∧ ¬B → ¬A) → ¬(¬A ∧ ¬B) (2, 4, MP)
6. (¬A ∧ ¬B) → ¬A (∧1)
7. ¬(¬A ∧ ¬B) (5, 6, MP)
∴φ0 | A → ¬(¬A ∧ ¬B) (Teorema da Dedução)
6) B → ¬(¬A ∧ ¬B)
1. B (hipótese)
2. (¬A ∧ ¬B → B) → ((¬A ∧ ¬B → ¬B) → ¬(¬A ∧ ¬B)) (¬1)
3. B → (¬A ∧ ¬B → B) (→1)
4. ¬A ∧ ¬B → B (1, 3, MP)
5. (¬A ∧ ¬B → ¬B) → (A ∧ B) (4, 2, MP)
6. ¬A ∧ ¬B → ¬B (∧2)
7. ¬(¬A ∧ ¬B) (5, 6,MP)
∴φ0 | B → ¬(¬A ∧ ¬B) (Teorema da Dedução)
7) A ∨ B → ¬(¬A ∧ ¬B)
1. A ∧ B (hipótese)
2. (A → ¬(¬A ∧ ¬B)) → ((B → ¬(¬A ∧ ¬B)) → ((A ∨ B) → ¬(¬A ∧ ¬B)))
(∨3)
3. | A → ¬(¬A ∧ ¬B) (item 5 deste lema)
4. | B → ¬(¬A ∧ ¬B) (item 6 deste lema)
5. ¬(¬A ∧ ¬B) (1, 2, 3, 4, MP)
∴φ0 | A ∨ B → ¬(¬A ∧ ¬B) (Teorema da Dedução)
Teorema 5. Seja A uma fórmula, cujas fórmulas atômicas são A1, A2,...,
Am. Seja (x1, x2, ..., xm) uma dada associação de valores-verdade de A1, A2, ...,
112
Am, respectivamente. Consideremos a seqüência de fórmulas A’1, A’2, ..., A’m,
tal que
A’i =
Seja
A’ =
para a associação de valores-verdade considerada,
.
Nestas condições, afirmamos que
A’1, ..., A’m | A’.
Demonstração: Procedemos por indução no número n de ocorrências
dos conectivos em A.
1. n = 0. Neste caso, A constitui uma fórmula atômica A1. Temos que
A1 A1’ A’
1 A1 A1
0 ¬A1 ¬A1
113
Porém, ¬B é A’. Logo,
B’1, ..., B’m | A’.
Caso 2. A é B ∧ C.
Notemos que a referida propriedade é válida para B e C (pois ambas
possuem número de ocorrências de conectivos estritamente menor que n).
Assim,
B’1, ..., B’m | B’ e
B’1, ..., B’m | C’.
Subcaso 2.1. B e C toma valor 1. Então B’ é B, C’ é C e A’ é A.
B’1, ..., B’m | B e
B’1, ..., B’m | C.
Pelo axioma (∧3) advém que | B → (C → (B ∧ C)).
Por conseguinte, pelo Teorema 3, temos
B’1, ..., B’m | B ∧ C.
Porém, B ∧ C é A. Logo,
B’1, ..., B’m | A’.
Subcaso 2.2.2. B toma o valor-verdade 0 e C toma o valor 1.
Então B’ é ¬B, C’ é ¬C e A’ é ¬A.
B’1, ..., B’m | ¬B e
B’1, ..., B’m | C.
Pelo Lema 4, item 1, advém que
| ¬B → (C → ¬(B ∧ C)). Daí
B’1, ..., B’m | ¬(B ∧ C) (Teorema 3).
Porém, ¬(B ∧ C) é A’. Logo,
B’1, ..., B’m | A’.
Subcaso 2.2.3. Para os caso em que B toma o valor 1 e C o
valor 0, e B e C tomam ambos valor 0, a demonstração é semelhante à do caso
anterior.
Caso 2.3. A é B ∨ C
Novamente, a propriedade é válida para B e C. Logo,
B’1, ..., B’m | B‘ e
B’1, ..., B’m | C‘.
Subcaso 2.3.1. B e C toma valor 1. Logo, B’ é B, C’ é C e A’ é A.
B’1, ..., B’m | B e
B’1, ..., B’m | C.
Pelo Lema 2.8.4, item 2, advém que
| B → (C → (B ∨ C)).
logo, pelo Teorema 3 , segue-se que
B’1, ..., B’m | B ∨ C.
Porém, B ∨ C é A’. Portanto,
B’1, ..., B’m | A’.
Subcaso 2.3.2. quando B ou C toma valor 1, a demonstração é
análogo à do subcaso anterior.
Subcaso 2.3.3. B e C tomam valor 0. Logo, B’ é ¬B, é ¬C e A’
é ¬A.
B’1, ..., B’m | ¬B e
114
B’1, ..., B’m | ¬C.
Pelo Lema 2, item 4, advém que
¬B, ¬C | ¬B ∧ ¬C.
Pelo Lema 2, item 8, segue-se que
| (¬B ∧ ¬C) → ¬(B ∨ C).
Combinando os resultados anteriores, temos
B’1, ..., B’m | ¬(B ∨ C).
Porém ¬(B ∨ C) é A’. Logo,
B’1, ..., B’m | A’.
Caso 2.4. A é B → C
B e C possuem número de ocorrências de conectivos estritamente
menores que n. Logo, a propriedade é válida para B e C.
B’1, ..., B’m | B’ e
B’1, ..., B’m | C’.
Subcaso 2.4.1. B toma o valor 0. Logo , B’ é ¬B e A’ é A.
B’1, ..., B’m | ¬B
Pelo Lema 3, item 2, advém que
| ¬B → (B → C).
Logo, B’1, ..., B’m | B → C.
Porém, B → C é A’. assim,
B’1, ..., B’m | A’.
Subcaso 2.4.2. B toma valor 1 e C toma valor 0. Então B’ é B, C’
é ¬C e A’ é ¬A.
B’1, ..., B’m | B e
B’1, ..., B’m | ¬C.
Pelo Lema 3, item 5, temos que
| B → (¬C → ¬(B → C)).
Logo, B’1, ..., B’m | ¬(B → C).
Porém, ¬(B → C) é A’. assim,
B’1, ..., B’m | A’.
Subcaso 2.4.3. B e C tomam valor 1. Logo, B’ é B, C’ é C e A’ é
A.
B’1, ..., B’m | B
B’1, ..., B’m | C.
Temos que C → (B → C) é um axioma. Logo,
B’1, ..., B’m | B → C. Porém B → C é A’. assim,
B’1, ..., B’m | A’.
E o teorema está demonstrado.
115
Temos, então:
1a linha: A, B | ¬¬(A ∨ (¬B))
2a linha: A, ¬ B | ¬¬(A ∨ (¬B))
3a linha: ¬A, B | ¬(A ∨ (¬B))
4a linha: ¬A, ¬B | ¬¬(A ∨ (¬B)).
Temos, então:
1a linha: A, B, C | ¬{A → [(¬B) ∧ C]}
2a linha: A, B, ¬C | ¬{A → [(¬B) ∧ C]}
3a linha: ¬A, ¬B, C | {A → [(¬B) ∧ C]}
4a linha: ¬A, ¬B, ¬C | ¬{A → [(¬B) ∧ C]}
5a linha: A, B, C | {A → [(¬B) ∧ C]}
6a linha: A, B, ¬C | {A → [(¬B) ∧ C]}
7a linha: ¬A, ¬B, C | {A → [(¬B) ∧ C]}
8a linha: ¬A, ¬B, ¬C | {A → [(¬B) ∧ C]}
116
então a constitui um teorema de L.
Demonstração: Seja A uma tautologia. Sejam A1, A2, ..., An as fórmulas
atômicas componentes de A. Para cada associação de valores-verdade às
componentes A1, A2, ..., An, respectivamente, temos que (utilizando as
notações do teorema anterior):
A’1, A’2, ..., A’n | A (A’ é A, pois A é uma tautologia).
Fixados os n - 1 primeiros valores-verdade da associação em questão,
temos as seguintes possibilidades:
1. o valor-verdade de An é 1. Então A’1, ..., A’n-1, An | A.
2. o valor-verdade de An é 0. Então A’1, ..., A’n-1, ¬An | A.
Pelo Teorema da Dedução advém que
A’1, ..., A’n-1 | An → A e
A’1, ..., A’n-1 | ¬An → A.
Pelo Lema 2.8.3, item 6, Advém que
| (An → A) → ((¬An → A) → A).
Donde concluímos que
A’1, ..., A’n-1 | A
Repetindo o raciocínio acima, após n passos obtemos, então:
| A.
Definição 9. O cálculo proposicional diz-se consistente se não existirem
teoremas ? A e ? (¬A).
117
2 O CÁLCULO DE PREDICADOS
2.1 - Lógica e gramática
119
patas serem verdes; a idéia é elaborar uma linguagem que trate de sentenças
como a do exemplo acima. Relembrando temos que as sentenças são consti-
tuídas, quase sempre, de dois termos, respectivamente
a ) o ser (de quem ou de que se diz algo - sujeito)
b ) aquilo que se diz (do ser - predicado).
Em cada uma das sentenças abaixo o sujeito esta sublinhado e o
restante da frase que não estiver sublinhado é o predicado.
a ) “Pedro é um rapaz dedicado ao trabalho.”
b ) “2 é um número par.”
c ) “As flores são perfumadas.”
d ) “O homem é um mamífero.”
e ) “O mundo é redondo.”
Apenas para termos um forma de representação, como foi feito no
primeiro capítulo, adotaremos uma representação para os sujeitos e
predicados, esta representação irá ser reformulada de modo rigoroso logo
após esta introdução intuitiva. Representarão os predicados as letras maiús-
culas latinas em itálico: A, B, B, D, ... P, ..., e os sujeitos serão representados
por letras latinas minúsculas em itálico: a, b, c, d, e, ..., p, q, ... . Para indicar
que um sujeito sofre a ação do predicado utilizaremos ama notação específi-
ca, vejamos alguns exemplos:
1. R ≡ ser redondo.
t ≡ Terra.
para indicarmos por R(t) a sentença “A Terra é redonda.”
2. M ≡ ser mamífero.
s ≡ Simba.
para indicarmos por M(s) a sentença “Simba é um mamífero.”
3. P ≡ ser perfumado.
r ≡ rosa.
para indicarmos por P(r) a sentença “A rosa é perfumada.”
4. N ≡ ser um número par.
q ≡ 4.
para indicarmos por N(q) a sentença “Quatro é um número par.”
Vejamos um outro exemplo, no qual o universo do discurso é o uni-
verso dos números inteiros ..., -2, -1, 0, 1, 2, 3, ... :
“Todo número inteiro par é divisível por 2”
Numa simbolização utilizando, variáveis fica:
Para qualquer x, se x for um número inteiro par, x é divisível por 2.
120
Fazendo uso da simbolização anterior:
P ≡ ser um número inteiro par.
D ≡ ser um divisível por 2.
“Para qualquer x, (P(x) → D(x))”
121
Vamos simbolizar os exemplos anteriores com o uso destes novos símbo-
los:
122
Proposições Tradução
[¬((∀x)(A(x))] Não é verdade que todo número natural seja divisível por 2.
Proposições Tradução
($x)($y)(A(x, y)) Existem alguns números naturais maiores que alguns números naturais.
($x)("y)(A(x, y)) Existem alguns números maiores que qualquer número natural.
("x)($y)(A(x, y)) Qualquer número natural é maior que algum número natural.
("x)("y)(A(x, y)) Todo número natural é maior que qualquer número natural.
($x)(B(x, 100)) Algum número natural é maior que 100.
("x)(B(x, 100)) Todo número natural é maior que 100.
Qualquer número natural não é mai or que 100.ouNão exi ste número
("x)(ØB(x, 100))
natural maior que 100.
Proposições Tradução
(∀y)(∀z)(∃x)(A(x, y, z)) Dados dois pontos quaisquer, existe um ponto entre eles.
Existem dois pontos tais que todo ponto está entre eles.
(∃y)(∃z)(∀x)(A(x, y, z))
123
Proposições Tradução
Dados três números reais, existe um número real que
(∀x)(∀y)(∀z)(∃x1)(A(x1, x, y, z))
é a soma deles.
Existem três números reais cujo resultado da soma é
(∃x)(∃y)(∃z)(∀x1)(A(x1, x, y, z))
qualquer valor real.
Para todo número real somado com 1 e 2, existe um
(∀x)(∃x1)( B(x1 , x, 1, 2))
número real que é o resultado desta soma.
Proposições Tradução
Todos que são ciclistas são velozes.OuTodo
(∀x)(A(x) → B(x))
ciclista é veloz.
(∀x)(A(x) ∧ B(x)) Todos são ciclistas e todos são velozes
Existem seres que são ciclistas e seres que
(∃x)[A(x) ∧ (¬B(x))]
não são velozes.
Existem seres que são ciclistas e que não são
(∃x)[A(x) → (¬B(x))]
velozes
Proposições
1. [ (∀x)(C(x) → B(x) ) ∧ (∀x)(B(x) → A(x) ) ] → [ (∀x)(C(x) → A(x) ) ]
Respectiva Tradução
124
Exercício 1. Traduza em símbolos, para isso, em cada bloco de
sentenças, simbolize os predicados, as constantes e as variáveis, e depois
rescreva a sentença toda utilizando estes símbolos.
1. Todos são felizes.
2. Algumas pessoas felizes.
3. Nenhuma pessoa é infeliz.
4. João não é feliz.
5. Carlos e Carolina são felizes.
Exercício 2. Idem.
1. Alguns animais são carnívoros.
2. Alguns animais não são carnívoros.
3. Todos os animais são carnívoros.
4. Nem todos os animais são carnívoros.
5. Nenhum animal é carnívoro.
6. Simba é um animal carnívoro.
Exercício 3. Idem.
1. Não existem insetos que voem.
2. Nem todos os insetos voam.
3. Todas as moscas voam.
4. Algumas moscas não voam.
5. Não existem moscas que voam.
6. Não existem moscas que não voam.
7. Nenhuma barata voa.
8. Nem toda barata não voa.
Exercício 4. Idem.
1. Romeu ama Julieta.
2. Édipo ama Jocasta.
3. Todos amam Maria.
4. Maria não ama ninguém
5. Romeu ama Maria e Romeu não ama Julieta.
6. Todos amam Romeu mas ele não ama ninguém.
7. Jane ama Tarzan que também ama Jane.
Exercício 5. Idem.
1. Ana é irmã de José.
2. Maria é irmã de Ana.
3. Pedro é pai de Ana.
4. Pedro é pai de Maria e de José.
5. Ana é irmã de José e Maria é irmã de Ana então Maria é irmã de José.
125
6. Tarso é irmão de Pedro e tio de Ana.
7. Tarso é irmão de Pedro então é tio de José.
8. Tarso é tio de Maria.
9. Tarso é tio de Maria e Ana que são irmãs de José logo Tarso é tio de
José.
Exercício 6. Idem.
1. Todo animal é mortal.
2. Todo mamífero é um animal.
3. Alguns mamíferos não são animais.
4. Todo homem é mamífero.
5. Alguns homens não são mamíferos.
6. Nenhum homem é animal
7. Nem todo homem é mortal
8. Alguns homens são mortais.
9. Existem homens que são mamíferos mas não são animais e portanto
são mortais.
10. Não existem homens imortais.
11. Nenhum animal é imortal.
126
Intuitivamente, percebemos que as expressões 1 e 3 do exemplo
anterior são destituídas de sentido, ao passo que a expressão 2 “quer dizer
algo”.
Desse modo, podemos perceber a necessidade de caracterizar as
expressões que serão de utilidade para o discurso lógico.
Definição 2. (Termo) O conceito de termo é definido de modo
recursivo, como se segue:
1. Variáveis individuais são termos.
2. Constantes individuais são termos.
3. Se t1, ... ,tm são termos e fnm é um símbolo funcional m-ário, então fnm(t1, ... ,
tm) é um termo.
4. Cláusula Maximal : Uma dada expressão constitui um termo se, e somente
se, foi obtida a partir de uma das regras (1 a 3) acima.
Exemplo 2. São exemplos de termos:
1. c1
2. f12(x1)
3. x101
Definição 3 (Fórmula). O conceito de fórmula é definido de modo
recursivo, como se segue
1. Se t1 , ... , tm são termos e pnm é um símbolo predicativo m-ário, então
pnm(t1 , ... , tm) é uma fórmula (dita atômica).
2. Se A e B são fórmulas quaisquer, então (¬A), (A ∧ B), (A ∨ B) e (A → B)
são fórmulas.
3. Se x é uma variável individual e A é uma fórmula, então, ( x)A e (∃x)A
são fórmulas.
4. Cláusula Maximal : Uma dada expressão constitui uma fórmula, se, e
somente se, foi obtida a partir de uma das regras (1 a 3) acima.
127
Para ficar um pouco mais didático, enumeramos em coluna:
1. (p11(x1), (atômica)
2. p23(c1, x4 , x2), (atômica)
3. p23(c1, c4 , x2), (atômica)
4. [p11(x1) ∨ p23(c1, x4 , x2)], (1, 3, disjunção)
5. (∃x2)p23(c1, c4 , x2), (instanciação de 4 por x2)
6. ( x1)((∃x2)p23(c1, c4 , x2)), (generalização de 5 por x1)
7. {[p11(x1) ∨ p23(c1, x4 , x2)] → ( x1)((∃x2)p23(c1, c4 , x2))} (4, 6,
implicação).
p23(c1, c4 , x2)
Sejam A ≡ p12(x, y), B ≡ p23(c1 ,c4 ,x2) e C ≡ p13(x1 , y1 , c1) fórmulas atômicas.
São exemplos de fórmulas:
2) ((A ∨ B) ∧ C).
1. A (atômica)
2. B (atômica)
3. C (atômica)
4. (A ∨ B) (1, 2, disjunção)
5. ((A ∨ B) ∧ C)) (4, 3, conjunção)
(A ∨ B) C
A B
3) p33(x1 , y2 , z1)
128
Observação: Tendo em vista uma maior facilidade na leitura,
doravante utilizaremos uma notação simplificada para as variáveis individuais,
símbolos predicativos e símbolos funcionais. Por motivos óbvios, nossa
escolha recairá sobre símbolos tradicionalmente utilizados na matemática.
Assim , as variáveis individuais serão indicadas por x, y, z, w, ... os símbolos
predicativos, por p, q, r, ... e os símbolos funcionais, por f, g, h, ...
129
uma variável individual x é livre em uma fórmula A, se essa ocorrência de x
não se dá no escopo de um quantificador ( x ou ∃x) em uma subfórmula de
A (do tipo xB ou ∃xB). Caso contrário, dizemos que a ocorrência dessa
variável x é ligada.
Exemplo 6. São exemplos de ocorrências de variáveis livres e ligadas:
1. Na fórmula x(p(x) → q(y)), x ocorre ligada e y ocorre livre.
2. Na fórmula q(x) → ∃yp(y) ∧ zq(y), x ocorre livre, a primeira ocorrência de
y é ligada e a segunda ocorrência de y é livre.
3. Na fórmula ¬p(x) → ∃xq(x), a primeira ocorrência de x é livre e a segunda
é ligada.
Definição 7 (Termo livre para uma variável). Dizemos que um termo
t é livre para a variável x em uma fórmula A, se nenhuma ocorrência livre de x
está no escopo de um quantificador ( y ou ∃y), onde y é uma variável que
ocorre em t.
Exemplo 7. Sejam t1 o termo x, t2 o termo y , t3 o termo f(x, y, z) e
as fórmulas
A : z(p(z) → q(x)) → ∃xr(w),
B : p(x) → ∃x(r(x) ∧ q(z)) e
C : y(p(y) ∨ q(y)).
Neste caso, t2 é livre para x em A , pois ao substituirmos t2 nas
ocorrências livres de x na fórmula A, a variável y não se torna ligada. Mas t3
não é livre para w em A, pois ao substituir as ocorrências livres de w na
fórmula A, pelo termo t3, a variável x, presente no termo t3 , se torna ligada.
Observamos também que o termo t1 é livre para y em C, pois y não
possui ocorrências livres em C.
Notação: Seja A uma fórmula, x uma variável e t um termo livre para
x em A. Denotaremos por Ax [t] , a fórmula obtida a partir de A, pela
substituição da variável x por t .
130
(∨2) [B → (A ∨ B)]
(∨3) {(A → C) → [(B → C) → [(A ∨ B) → C]]}
(¬1) {(A → B) → [[A → (¬B)] → (¬A)]}
(¬2) [(¬(¬A)) → A]
R3 (A→C )
((∃x) A→C)
Regras derivadas.
131
R10 De (∃y)( x)A podemos derivar ( x)(∃y)A.
Sejam A e B fórmulas.
132
inferência, acima, as fórmulas acima da linha são chamadas de premissas
para aplicação das regras de inferência, e a fórmula abaixo da linha é chamada
de conseqüência imediata das premissas.
Definição 9 (Dedução). Seja Γ um conjunto de fórmulas onde não
compareçam axiomas, e A uma fórmula. Uma dedução de A a partir de Γ é uma
seqüência de fórmulas A1, A2, ... An-1, An, tal que para todo i, 1 ≤ i ≤ n
a ) ou Ai ∈ Γ,
b ) ou Ai é um axioma,
c ) ou Ai é conseqüência imediata da fórmulas anteriores da seqüência
pela aplicação de uma das regras R1, R2 ou R3.
d ) An = A
Notação. Usamos a notação Γ Ã A para indicar que existe uma
dedução de A a partir de um conjunto Γ de fórmulas.
133
cada passo da dedução Dependência em relação a uma premissa
Esperamos por meio de exemplos elucidar este procedimento.
134
O passo da dedução contida na linha 3 nada mais é do que a premis-
sa, na coluna de “Dependência” encontramos “{3}”, isto pois, se a fórmula
da linha 3 for uma premissa repetiremos o número da linha em que esta se
encontra.
4 Γ y
C → yAx[y] 3, R2. {3}
No passo da dedução desta linha a ocorrência da variável y em Ãy
indica que a regra R2 foi aplicada em uma fórmula (C→Ax[y]) que depende
de uma premissa (no caso dela própria) e com respeito a variável y (por
causa da quantificação “ y”)
A justificativa desta linha diz que aplicamos a regra R2 na fórmula
da linha 3 para obter a fórmula da linha 4. Novamente na coluna de
“Dependência” encontramos “{3}” isto pois a fórmula da linha 4 é
conseqüência imediata da uma fórmula que depende da premissa.
5 Γ ( yAx[y] → xA) → [C → ( yAx[y] → xA)] Ax.1.
Apenas aplicamos o axioma um.
6 Γ C → yAx[y] → xA) 2, 5, R1.
Modus Ponens
7 Γ (C → yAx[y]) → ([C → ( yAx[y] → xA)] → (C → xA)
Ax.2.
Aplicação do axioma dois.
8 Γ y
[C → ( yAx[y] → xA)] → (C → xA) 4, 7, R1.
{3}
Neste passo da dedução a variável y continua ocorrendo em à y
pois a dedução da linha 8 dependeu da dedução feita na linha 4, onde a
variável y foi vaiada.
9 Γ y
C → xA. 6, 8, R1. {3}
135
regra, a saber, a fórmula da linha 9, manteve a dependência com a premissa.
É correto o raciocínio? A resposta é afirmativa.
136
Dedução Justificativa Dependência
1 C → Ax[y] yAx[y] → A Ax.12. —-
2 2 C → Ax[y] yAx[y] → xA 1, R2. —-
3 (C → Ax[y]) → [ yAx[y] → xA] 2 , T.D. —-
Aqui aplicamos a regra R2, mas não sobre fórmulas que dependam
da premissa descartada (C→Ax[y])
Como último exemplo, vamos mostrar uma utilização indevida do
Teorema da Dedução. Seja A uma fórmula que possua ocorrências livres da
variável x e C uma sentença. Estaria correta a seguinte dedução?
137
5 A, B A∧B 3, 4, R1. {2, 4}
D3) A ∧ B A.
Dedução Justificativa Dependência
1 A ∧ B (A ∧ B) → A Ax.4. —-
2 A∧B A∧B premissa {2}
3 A∧B A 1, 2, R1. {2}
D4) A ∧ B B.
Dedução Justificativa Dependência
1 A ∧ B (A ∧ B) → B Ax.5. —-
2 A∧B A∧B premissa {2}
3 A∧B B 1, 2, R1. {2}
D5) A A ∨ B.
Dedução Justificativa Dependência
1 A A→A∨B Ax.6. —-
2 A A premissa {2}
3 A A ∨ B. 1, 2, R1. {2}
D6) A Ã B ∨ A.
Análogo ao D5).
D7) ¬¬A à A.
Dedução Justificativa Dependência
1 ¬¬A à ¬¬A → A Ax.10. —-
2 ¬¬A à ¬¬A premissa {2}
3 ¬¬A à A. 1, 2, R1. {2}
D8) Se Γ, A Ã C e Γ, B Ã C então Γ , A ∨ B Ã C.
Dedução Justificativa Dependência
1 Γ, A C hipótese —-
2 Γ A→C 1, T.D. —-
3 Γ (A → C) → [(B → C) →
(A ∨ B → C)] Ax.8. —-
4 Γ (B → C) → (A ∨ B → C) 2, 3, R1. —-
5 Γ, B C hipótese —-
6 Γ B→C 5, T.D. —-
7 Γ A ∨ B →C 4, 6, R1. —-
8 Γ, A ∨ B A ∨ B → C 7 —-
138
9 Γ, A ∨ B A∨B premissa {9}
10 Γ, A ∨ B C 8, 9, R1. {9}
D9) Se Γ, A Ã B e Γ, A Ã ¬B então Γ Ã ¬A.
Dedução Justificativa Dependência
1 Γ, A B hipótese —-
2 Γ A→B 1, T.D. —-
3 Γ (A → B) → [(A → ¬B) → ¬A] Ax.9. —-
4 Γ (A → ¬B) → ¬A 2, 3, R1. —-
5 Γ, A ¬B hipótese —-
6 Γ A → ¬B 5, T.D. —-
7 Γ ¬A 4, 6, R1. —-
Para as regras D10, D11 e D12, x é uma variável, P é uma fórmula e t é
um termo livre para x em P, e seja D um axioma qualquer que não possua
ocorrências livres de x.
x
D10) P xP.
Dedução Justificativa Dependência
1 P P → (D → P) Ax.1. —-
2 P P premissa {2}
3 P D → P. 1, 2, R1. {2}
4 P x D → xP 3, R2. {2}
5 P D um axioma —-
6 P x xP. 4, 5, R1. {2}
x
D11) xP Px[k].
Dedução Justificativa Dependência
1 xP xP → Px[k]. Ax.12. —-
2 xP xP premissa {2}
3 xP xPx[t]. 1, 2, R1. {2}
D12) Px[t] ∃xP.
Dedução Justificativa Dependência
1 Px[t] Px[t].premissa {1}
2 Px[t] Px[t]→∃xP Ax.11. —-
3 Px[t] ∃xP. 1, 2, R1. {1}
D14) P→Q x
∃xP→∃xQ.
139
2.4 - Semântica
Até agora estudamos o que se chama sintaxe da linguagem (de
predicados). Ela é um puro jogo simbólico. Entretanto, toda linguagem se
refere a objetos ou estados de coisas. A semântica da linguagem trata
precisamente das interconexões entre a mesma e aquilo a que ela
se refere. Este por sua vez são certos contrutos conjuntistas que o
denominamos estruturas. Tais estruturas podem refletir certos aspectos
relevantes de porções da realidade. Uma esquematização simplificada é como
abaixo:
Modelos
(abstratos)
Linguagem Porção da
Artificiais Realidade
140
de variáveis de L(E). Se a é um nome, E(a) é o próprio indivíduo do qual a é
seu nome. Se a não é um nome, a é da forma f(a1, ... , an) (dado que a é livre de
variáveis), onde f é um símbolo funcional de L. Pomos E(a) = fE(E(a1), ... ,
E(an)).
Uma fórmula fechada A é uma fórmula que não possui variáveis livres.
Isto quer dizer que A possui um só significado.
Definimos o valor-verdade V(A) de uma fórmula A de cada fórmula
fechada A de L(E).
Se A ≡ a = b, então V(A) = 1 ⇔ E(a) = E(b).
Se A ≡ p(a1, ... , an), então V(A) = 1 ⇔ pE(E(a1), ... , E(an)).3
Se A ≡ (¬B), então V(A) = 1 ⇔ V(B) = 0.
Se A ≡ (B ∧ C), então V(A) = 1 ⇔ V(B) = 1 e V(C) = 1.
Se A ≡ (B ∨ C), então V(A) = 1 ⇔ V(B) = 1 ou V(C) = 1.
Se A ≡ (B → C), então V(A) = 1 ⇔ V(B) = 0 ou V(C) = 1.
Se A ≡ ( x)B, então V(A) = 1 ⇔ V(Bx[i]) = 1 para todo i (em L(E)).
Se A ≡ (∃x)B, então V(A) = 1 ⇔ V(Bx[i]) = 1 para algum i (em L(E)).
3
pE(E(a1), ... , E(an)) indica que (E(a1), ... , E(an)) ∈ pE
141
7. [B → (A ∨ B)]
8. {(A → C) → [(B → C) → [(A ∨ B) → C]]}
9. {(A → B) → [[A → (¬B)] → (¬A)]}
10. [(¬(¬A)) → A]
11. Ax [t]→∃xA
12. xA→Ax[t]
Passemos á questão da completeza do cálculo de predicados. Esta
questão consiste em analisar se uma fórmula A é conseqüência semântica de
Γ, então há uma dedução de A a partir de Γ. A resposta é afirmativa e é
conhecida como teorema da completeza do cálculo de predicados.
142
se e somente se qualquer de seus conjuntos finitos for consistente.
Demonstração. Se Γ é consistente então é imediato que qualquer de
seus conjuntos finitos é consistente. Se qualquer de seus conjuntos finitos
for consistente, admitamos que Γ seja inconsistente. Logo, existe uma fórmula
A tal que Γ A e Γ (¬A). daí, temos Γ [A ∧ (¬A)], o que utiliza um
conjunto finito de fórmulas de Γ. Logo, tal conjunto finito é inconsistente, o
que constitui absurdo.
143
4. A → B ∈ Γ ⇔ A ∉ Γ ou B ∈ Γ
5. Para toda fórmula A, A ∈ Γ ou (¬A) ∈ Γ
6. Se A ∈ Γ e (A → B) ∈ Γ, então B ∈ Γ
7. xA ∈ Γ ⇔ todo termo t Γ-satisfaz A(x)
8. ∃xA ∈ Γ ⇔ algum termo t Γ-satisfaz A(x)
6
Sobre os conceitos da teoria intuitiva dos conjuntos recomendamos a obra [Abe &
Papavero 92].
144
Teorema 11. (Completeza fraca). Se A, então A.
145
3 ALGUNS ASPECTOS DE
PROGRAMAÇÃO EM
LÓGICA E PROLOG
3.1 - Introdução
A lógica, desde Aristóteles, sempre esteve ligada ao pensamento
científico. Ela constitui a base para deduzir conseqüências a partir de certas
premissas; para estudar a validade ou a falsidade de sentenças dada a vali-
dade ou a falsidade de outras sentenças; para verificar a validade de argu-
mentações; e para estabelecer a consistência de um conjunto de sentenças.
Já os computadores surgiram na história há muito pouco tempo, ao
compará-los com a lógica. Quase todos os computadores de hoje em dia são
baseados no modelo (ou máquina) de von Neumann que surgiu na década
de 40. Esta máquina é uma concretização da máquina (ideal) de Alain Turing.
A máquina proposta por von Neumann é constituída por um “grande” con-
junto de células de memória e uma unidade de processamento com algumas
células de memória locais chamadas registradores.
147
instruções que realizem as operações descritas acima.
O desenvolvimento de computadores baseados na máquina de von
Neumann encontrou muitas limitações tecnológicas e de engenharia que
foram sendo resolvidas através dos anos. Porém, à medida que os problemas
relativos à construção de computadores eram resolvidos, os problemas rela-
tivos a como utilizá-los apareciam. Em outras palavras, os computadores
eram capazes de realizar as instruções fornecidas pelo homem porém o ho-
mem ainda não era plenamente apto a programar os computadores para re-
solver problemas práticos que surgiam. A única linguagem disponível na
época era a linguagem específica de cada máquina através da qual o progra-
mador fornecia instruções ao “estilo von Neumann”.
A construção de programas escritos em linguagem de máquina era
complexa e tomava muito tempo. A partir daí, linguagens mais fáceis para a
compreensão humana começaram a aparecer: Fortran, Algol e Pascal mas
todas elas apresentavam características marcantes da máquina de von
Neumann subjacente. Notamos que apesar dessas linguagens serem mais
fáceis para a compreensão do homem, elas ainda eram orientadas à máquina,
isto é, o homem contruía programas nessas linguagens pensando em termos
de operações do computador.
1
O conceito de máquina de Turing apóia toda a Teoria da Computabilidade que contém
problemas em aberto que desafiam pesquisadores do mundo todo.
2
A citada linguagem específica de cada máquina na verdade é a linguagem do
microprocessador com o qual a máquina (o computador) foi construído.
148
Figura 2: Funcionamento de um programa lógico.
3
Algol e Fortran eram as linguagens mais famosas até essa época.
149
Figura 3: Cláusulas de Horn.
Exemplos:
1. p(x).
150
2. q2 (x,y).
3. mãe(y,x).
4. q3 (x,y,z).
Podemos dizer que uma fórmula atômica é uma literal positiva.
Portanto, os exemplos dados acima, além de serem exemplos de fórmulas
atômicas, também são exemplos de literais positivas.
A negação de uma fórmula atômica é dita literal negativa. Como
exemplos de literais negativas, podemos citar:
Exemplos:
1. ¬q4 (x,y).
2. ¬tio(y,x).
3. ¬q5 (x,y,z).
4. ¬avó(x,y).
Em programação em lógica, podemos escrever uma implicação do
tipo:
A→B
de maneira inversa, ou seja,
B←A
Exemplos:
1. x y ( p(x,y) → q(x,y) ).
Escrita de maneira inversa: x y ( q(x,y) ← p(x,y) ).
Cabeça: q(x,y).
Corpo: p(x,y).
2. x y z ( ( p2 (x,y,z) ∧ q5 (x,z) ∧ q1 (z) ) → ( q3 (z) ∨ q4 (x) ) ).
Escrita de maneira inversa: ↔x≈y≈z ((q 3 (z) ∨ q 4 (x))
←(p2(x,y,z)∧q5(x,z)∧p1 (z))).
Cabeça: q3 (z) ∨ q4 (x).
Corpo: p2 (x,y,z) ∧ q5 (x,z) ∧ p1 (z).
3. x y z ( ( namorados (x, y) ∧ namorados (y, z) ) → triângulo (x, y, z )
).
Escrita de maneira inversa: x y z ( triângulo (x, y, z ) ← (
namorados (x, y) ∧ namorados (y, z))).
Cabeça: triângulo (x, y, z ).
Corpo: namorados (x, y) ∧ namorados (y, z).
151
Observação:
Os predicados acima se referem a pessoas e são definidos da
seguinte maneira:
• namorados(x,y) ≡ “x e y namoram”;
• triângulo(x,y,z) ≡ “x, y, z formam um triângulo amoroso.”.
4. x ( ( perto-da-praia(x) ∧ grande(x) )→ casa-boa(x) ).
Escrita de maneira inversa: x (casa-boa(x)←(perto-da-praia(x) ∧
grande(x) )).
Cabeça: casa-boa(x).
Corpo: perto-da-praia(x) ∧ grande(x).
Observação:
Os predicados acima se referem a casas e são definidos da seguinte
maneira:
• perto-da-praia(x) ≡ “x é uma casa localizada perto da praia.”;
• grande(x) ≡ “x é uma casa grande.”;
• casa-boa(x) ≡ “x é uma boa casa para morar.”.
5. x y z ( ( pai(x,y) ∧ irmãos(x,z) )→ tio(z,x) ).
Escrita de maneira inversa: x y z (tio(z,x) ← ( pai(x,y) ∧
irmãos(x,z) )).
Cabeça: tio(z,x).
Corpo: pai(x,y) ∧ irmãos(x,z).
Observação:
Os predicados acima se referem a pessoas e são definidos da
seguinte maneira:
• pai(x,y) ≡ “x é pai de y.”;
• irmãos(x,z) ≡ “x e z são irmãos.”;
• tio(z,x) ≡ “z é tio de x”.
No decorrer do texto, utilizaremos, basicamente, duas regras de
inferência que vimos no cálculo de predicados de primeira ordem. São elas a
regra de modus ponens e a regra de particularização. Além disso, em alguns
momentos, utilizaremos a contrapositiva de uma implicação confome vista
no cálculo proposicional e de predicados. Eis aqui alguns exemplos de
contrapositivas de implicações:
1. x ( q(x) → p(x) ) cuja contrapositiva é:
x ( ¬p(x) → ¬q(x) ).
Escrevendo a cláusula de maneira inversa, teríamos:
x ( p(x) ← q(x) ) cuja contrapositiva é:
x ( ¬q(x) ← ¬p(x) ).
152
∃x y z( (q4 (x,y) ∨ q3 (z) ) ← ( p4 (x,y,z) ∧ q(x) ) ) cuja contrapositiva é:
∃x y z ( ¬( p4 (x,y,z) ∧ q(x) ) ← ¬(q4 (x,y) ∨ q3 (z) ) ).
3.5 - Cláusula
Uma cláusula é uma fórmula (do cálculo de predicados) do seguinte
tipo:
x1 , ... , xk ( L1 ∨ ... ∨ Lm ) (1)
na qual Li é uma literal positiva ou negativa e x1 , ..., xk são as variáveis que
ocorrem em L1∨ ... ∨ Lm.
Exemplos: (Cláusulas)
1. x y z ( p(x) ∨ q(y,z) ∨ ¬p2 (x,y,z) ).
2. x p5 (x).
3. y z ( ¬p6 (y) ∨ q3 (z) ).
4. x y ( tio (x) ∨ pai (y) ).
5. x z ( maior(x,z) ∨ menor(x,z) ∨ igual(x,z) ).
6. x ( solteiro(x) ∨ casado(x) ∨ viúvo(x) ∨ divorciado(x) ).
Diremos que a cláusula, tal como escrita em (1) , está no formato
original de disjunção. Porém, para escrevermos os programas lógicos, é
conveniente escrever (1), na notação clausal. Escrever uma cláusula na
notação clausal é reescrevê-la utilizando-se o conectivo de implicação (“←”).
Para entendermos melhor, vamos reescrever a cláusula (1) na notação clausal,
explicitando cada passo:
Passo 1 : Separação das literais positivas e negativas: já que temos a lei
comutativa e associativa para o conectivo de disjunção, podemos escrever
primeiro as literais negativas seguidas das positivas. Deste modo, podemos
reescrever (1) assim:
x1 , ... , xk ( (¬B1 ∨ ... ∨ ¬Bs ) ∨ (A1 ∨ ... ∨ Ar ) ) (2)
na qual ¬B1 , ..., ¬Bs são as literais negativas e A1 , ..., Ar são as literais
positivas.
Passo 2 : Aplicação das leis de De Morgan: observemos que em (2) temos
uma disjunção de literais negativas, a saber, ¬B1 ∨ ... ∨ ¬Bs. Através das leis
de De Morgan, podemos escrever que:
(¬B1 ∨ ... ∨ ¬Bs ) ↔ ¬( B1 ∧ ... ∧ Bs ).
153
Então, podemos escrever (2) da seguinte maneira:
x1 , ... , xk (¬ ( B1 ∧ ... ∧ Bs ) ∨ (A1 ∨ ... ∨ Ar ) ) (3)
Passo 3 : Formato de implicação: Lembremos que:
( A → B ) ↔ ( ¬A ∨ B )
e, portanto, podemos escrever (3) do seguinte modo:
x1 , ... , xk ( ( B1 ∧ ... ∧ Bs ) → ( A1 ∨ ... ∨ Ar ) ) (4 )
Passo 4 : Notação Clausal: Conforme vimos na sub-seção 4.3.1 podemos
escrever (4) de maneira inversa:
x1 , ..., xk ( (A1 ∨ ... ∨ Ar ) ← ( B1 ∧ ... ∧ Bs ) ) (5)
Observação:
• Todas as variáveis que ocorrem nas literais componentes de (5) estão
quantificadas universalmente : então, se não escrevermos “ x1 ,..., x2”
não tem problema pois já saberemos que todas as variáveis que ocorrem em
(5) já estão quantificadas universalmente;
• O corpo de (5) é composta de uma conjunção de literais: então ao invés
de escrevermos o conectivo “∧” poderemos escrever uma vírgula (“,”) e não
haverá perigo de confusão;
• A cabeça de (5) é composta de uma disjunção de literais: então ao invés
de escrevermos o conectivo “∨” poderemos escrever uma vírgula (“,”) e não
haverá perigo de confusão.
Com isso em mente, podemos escrever (5) da seguinte maneira:
A1 , ..., Ar ← B1 , ..., Bs (6)
e dizemos que (6) está escrita na notação clausal.
Dizemos que uma cláusula tem corpo vazio se não possui literais
negativas no formato original de disjunção. Dizemos que uma cláusula tem
cabeça vazia se não possui literais positivas no formato original de disjunção.
Vamos fazer alguns exemplos de escrever cláusulas nesta notação
através dos passos vistos anteriormente?
Exemplos:
1. cláusula x y ( p(x) ∨ q(x) ∨ ¬q2(x,y) ).
Passo 1 : Separação de literais: x y ( ¬q2 (x,y) ∨ (p(x) ∨ q(x)) ).
Passo 2 : Aplicação das leis de De Morgan: como só há uma literal negativa,
não precisamos aplicar.
Passo 3 : Formato de implicação: x y ( q2 (x,y) → (p(x) ∨ q(x)) ).
Passo 4 : Notação clausal: p(x), q(x) ← q2 (x,y).
154
2. cláusula x y z ( p2 (x,y) ∨ ¬q1 (x) ∨ p3 (x,y) ∨ ¬q3 (z) ).
Passo 1: Separação de literais: x y z ( (¬q1 (x) ∨ ¬q3 (z)) ∨ (p2 (x,y) ∨ p3
(x,z)) ).
Passo 2: Aplicação das leis de De Morgan: x y z (¬( q1 (x) ∧ q3 (z) ) ∨ (p2
(x, y)∨ p3 (x, z))).
Passo 3: Formato de implicação: x y ( (q1 (x) ∧ q3 (z)) → (p2 (x,y) ∨ p3 (x,z))
).
Passo 4: Notação clausal: p2 (x,y), p3 (x,z) ← q1 (x), q3 (z).
Observação:
A notação clausal é compacta e muito conveniente. A seguir,
estudaremos alguns tipos especiais de cláusulas.
155
8. r1 (x,y,z) ←r2 (x,y),r3 (y,z),r4 (z,w);
9. q3 (x,y,z,w) ← .
Exemplos:
1.) Veja os exemplos 1, 3, 4, 6, 7 e 8 da definição 5.3.3;
2.) p2 (x)←p3 (x), q2 (y): Podemos ler esta cláusula do seguinte modo: “Para
toda atribuição de valores às variáveis x e y, se p3 (x) e q2 (y) forem ambas
verdadeiras então p2 (x) também o será”;
3. q1 (x)←r2 (x,y), r5 (y,z), p3 (x,y): Podemos ler esta cláusula do seguinte
modo: “Para toda atribuição de valores às variáveis x, y e z, se r2 (x,y), r5 (y,z)
e p3 (x,y) forem verdadeiras ao mesmo tempo, q1 (x) também o será”;
4. p3 (x)←q2 (x,y,z): Podemos ler esta cláusula do seguinte modo: “Para toda
a atribuição de valores às variáveis x, y e z, se q2 (x,y,z) for verdadeira então
p3 (x) também o será.
5. tio(z,x)←pai(y,x),irmão(y,z): Podemos ler esta cláusula do seguinte modo:
“Para toda a atribuição de valores às variáveis x, y e z, se pai(y,x) for verdadeiro
( “se y for pai de x”) e irmão(y,z) também o for (“se y for irmão de z”) então
tio(z,x) também o será (“z é tio de x”).
156
4.8 - Cláusula de Programa Incondicional
Dizemos que uma cláusula de programa é incondicional se:
• O corpo dela for vazio: conseqüentemente, no formato original de
disjunção, a cláusula de programa incondicional não contém literais negativas
e
• A cabeça dela contiver exatamente uma literal: conseqüentemente, no
formato original de disjunção, a cláusula de programa incondicional contém
exatamente uma literal positiva.
O “jeitão” das cláusulas de programa incondicionais é o seguinte:
A← .
Isso, na forma original de disjunção, é o seguinte:
x1 ,..., xk A (7)
na qual x1 ,..., xk são as variáveis que ocorrem na literal A. Podemos interpretar
(7) do seguinte modo :
Observações:
1. exemplos 2, 5 e 9 da definição 4.3.3;
2. q2 (x)← e podemos ler esta cláusula do seguinte modo: “Para toda a
atribuição de valores à variável x, q2 (x) é verdadeira”;
3. r2 (x,y,z)← e podemos ler esta cláusula do seguinte modo: “Para toda a
atribuição de valores às variáveis x, y e z, r2 (x,y,z) é verdadeira”;
4. p7 (x,y,z,w)← e podemos ler esta cláusula do seguinte modo: “Para toda
atribuição de valores às variáveis x, y, z e w, p7 (x,y,z,w) é verdadeira”;
5. p(x,y,z)← e podemos ler esta cláusula do seguinte modo: “Para toda
atribuição de valores às variáveis x,y,z, p(x,y,z) é verdadeira”;
6. respira(x)← e podemos ler esta cláusula do seguinte modo: “Para toda
atribuição de valores à variável x, respira(x) é verdadeira” ( todo humano
respira! );
157
Isso parece com algo que já vimos! Se tivermos axiomas e regras de
inferência, podemos falar em teorias formais axiomáticas e podemos deduzir
(pelo menos, tentar!) fatos dessa teoria. Dada uma teoria formal axiomática T,
formada por axiomas (cláusulas de programa) e por regras de inferência (sub-
seção 4.3.1) e dada uma fórmula F, podemos tentar demonstrar F em T.
A seguir, começaremos a ver como podemos tentar demonstrar uma
dada fórmula F a partir de T tal como descrita acima.
4
do inglês “goal clause” A palavra goal podde ser traduzida também como meta
porém preferimos a palavra gol por ser mais “familiar”
158
4. ← p2 (x,y,z), q5 (x,y,z,w), r6 (x) que é o mesmo que escrever: ¬ ( ∃x ∃y ∃z ∃w
p2 (x,y,z) ∧ q5 (x,y,z,w) ∧ r6 (x) ).
5. ← q3 (x,y,z) que é o mesmo que escrever: ¬ ( ∃x ∃y ∃z q3 (x,y,z) );
6. ← gripe(x) que é o mesmo que escrever: ¬∃x gripe(x);
7. ← pai(x,y) que é o mesmo que escrever: ¬(∃x ∃y pai(x,y) ).
Será que o fato de cláusulas gol serem, no fundo, negações contribui para
alguma coisa???
159
2. todos os exemplos da seção 4.3.4;
3. todos os exemplos da seção 4.3.5;
4. q(x) ← p(x), p2 (x,y,z), q4 (x,z,y);
5. avô(z,x) ← pai(z,y), pai(y,x).
Exercícios
1) Escreva as seguintes implicações na notação clausal.
a) x ( p(x) ∧ s(x) → q(x) ∨ r(x) ).
b) x y ( p1 (x,y) ∧ p2 (x,y) → p3 (x,y) ∨ p4 (x,y) ).
160
c) x y z ( q1 (x) ∧ q2 (x,y) → q3 (x,y,z) ).
d) x y z ( p(x,y,z) ∧ q(x,z,y) → q2 (z,x,y) ∨ p3 (z,y,x) ).
e) x y ( p(x) ∧ r(y,z) ∧ q(x,y,z) → q(y) ∨ p4 (x,y,z) ).
f) x y z ( ( pai(x,y) ∧ pai(z,x) ) → avô(z,y) ).
g) x ( ( febre(x) ∧ manchas-vermelhas(x) ) → sarampo(x) ).
161
4.13 - Programa Lógico
Um programa lógico é um conjunto finito de cláusulas de programa.
Vejamos alguns exemplos de programas lógicos:
Exemplos:
1.)- Programa P1.
(1) p(a) ←.
(2) q(b) ←.
(3) q(x) ← p(x).
• p(a) é axioma;
• q(b) é axioma;
• Para todo x, se ¬q(x) é verdadeiro então ¬p(x) é verdadeiro.
162
Juntamente com esses três axiomas, podemos considerar:
Notemos que com esses cinco itens, temos uma teoria formal
axiomática fornecida pelo programa P1. Então, dado qualquer programa,
podemos construir uma teoria formal axiomática a partir dele de acordo com
a Figura 6 e dizemos que essa teoria formal axiomática foi fornecida pelo
programa.
163
consulta F, podemos executar os seguintes passos para verificar se F pode
ser deduzida a partir de P:
Método para computação de gols:
Passo 1 : construção de T: construimos T conforme a Figura 6;
Passo 2 : construção do gol F’: a partir de F, construimos o gol F’ ≡ ← F.
Notemos que F’ é a negação de F, conforme a seção 4.3.6;
Passo 3 : obtenção de contradição: assumimos F’como verdadeira em T e
tentamos demonstrar através dos axiomas e das regras de inferência de T
que a cláusula gol F’ implica em uma contradição em T (computação de gols
via demonstração por absurdo).
Passo 4 : término da computação : se conseguirmos deduzir que F’ implica
em uma contradição, conseguimos provar que F é um teorema em T que é o
mesmo que dizer que F foi deduzida a partir de P.
Caso contrário, se ao longo da tentativa de deduzir uma contradição
obtivermos uma fórmula F’’ tal que:
• F’’ não está na lista de axiomas ou
• Não podemos aplicar regras de inferência em F’’ e mais outro axioma
então dizemos que F não é um teorema de T e, portanto, F não pode ser
deduzida a partir de P.
Agora ficou mais claro porque chamamos de computação de gols o
método de tentar provar teoremas na teoria T fornecida pelo programa P:
simplesmente porque construímos uma cláusula gol com a consulta F
“candidata” à teorema em T. De acordo com o passo 2 do método acima, F’
é a negação de F. De acordo com o passo 3, tomaremos F’ como verdadeira
e utilizaremos os axiomas e regras de inferência para tentar deduzir uma
contradição. Também dizemos que a computação do gol F’ foi bem sucedida.
Sem mais discussões, vamos dar uma olhada nos exemplos da sub-
seção anterior. Tínhamos o programa P1 do exemplo 1 que transcrevemos:
Exemplos:
Exemplo 1) - Programa P1.
p(a) ←.
q(b) ←.
q(x) ← p(x).
Seguindo o passo 1 do método descrito acima, temos a seguinte
teoria fornecida por P1:
Teoria T1.
Axiomas:
(A1). p(a) ←
(A2). q(b) ←
(A3). ( ¬q(x) → ¬p(x) )
Regras de inferência:
164
• Modus ponens;
• Particularização.
Ok! Agora, consideremos algumas consultas a P1. Para computar gols, vamos
utilizar o método descrito acima.
Consulta 1 - F ≡ p(a).
Passo 1: Teoria T1 já foi construída;
Passo 2: Podemos construir a cláusula gol F’ ≡ ←p(a). Lembremos que a
cláusula gol F’ é a negação de F e, portanto, F’ ≡ ¬ p(a);
Passo 3: Vamos assumir que F’ é verdadeira em T1. Notemos que F’ por si
mesma já contradiz (A1). Portanto, F’ implica em uma contradição em T1;
Passo 4: Então F é teorema em T1 que é o mesmo que dizer que F foi deduzida
a partir de P1.
Consulta 2 - F ≡ q(a).
Passo 1: Teoria T1 já foi construída;
Passo 2: Podemos construir a cláusula gol F’ ≡ ← q(a) que significa ¬q(a);
Passo 3: Vamos assumir que F’ é verdadeira em T1. Observamos (A1) e (A2) e
não podemos utilizá-los para q(a) (o bom seria que ou (A1) ou (A2) fosse um
axioma do tipo q(a) e aí já teríamos uma contradição!) porém podemos utilizar
o (A3) com particularização. Temos que:
¬q(a) → ¬ p(a).
Utilizando a regra de modus ponens, temos:
¬q(a).
¬q(a) → ¬ p(a).
¬ p(a).
Notemos que ¬p(a) é o mesmo que ← p(a) que é uma nova cláusula
gol. De posse da nova cláusula gol, damos uma nova olhada nos axiomas.
Ao observamos os axiomas de T1, vemos que ¬p(a) contradiz o axioma (A2).
Portanto, F’ implica em uma contradição em P 1;
Passo 4: Então, F é teorema em T1 que é o mesmo que dizer que F foi deduzida
a partir de P1.
Consulta 3 - F ≡ p(b).
Passo 1: Teoria T1 já foi construída;
Passo 2: Podemos construir a cláusula gol F’ ≡ ← p(b) que significa ¬ p(b);
Passo 3: Vamos assumir que F’ é verdadeira em T1. Olhando para os axiomas
(A1) e (A2) concluimos que não podemos utilizá-los para chegar a lugar
algum com ¬p(b). Olhando para o axioma (A3) concluímos que também não
165
podemos utilizá-lo;
Passo 4: Concluimos que F não é um teorema de T1 e, portanto, F não pode
ser deduzida de P1.
Consulta 1 - F ≡ r(a,b).
Passo 1: Teoria T2 já construída;
Passo 2: Considere a cláusula gol F’ ≡ ← r(a,b) que significa ¬ r(a,b);
Passo 3: Vamos assumir que F’ é verdadeira em T2. Ao olharmos para os
axiomas de T2 notemos que o único axioma que podemos utilizar é o (A3).
Utilizando particularização em (A3) podemos escrever:
¬ r(a,b) → ¬ p(a,b).
Utilizando a regra de modus ponens, temos:
¬r(a,b)
¬r(a,b) → ¬p(a,b)
¬p(a,b).
Notemos que ¬p(a,b) é uma nova cláusula gol pois é o mesmo que
← p(a,b). De posse da nova cláusula gol, damos uma nova olhada nos
axiomas. Podemos ver que a nova cláusula gol já contradiz o axioma (A1).
Portanto F’ implica em uma contradição em T2;
Passo 4: Portanto, F é um teorema em T 2 que é o mesmo que dizer que F foi
166
deduzida a partir de P2.
Consulta 2 - F ≡ s(a,b).
Passo 1: Teoria T2 já foi construída;
Passo 2: Considere a cláusula gol F’ ≡ ← s(a,b) que significa ¬s(a,b);
Passo 3: Vamos assumir que F’ é verdadeira em T2. Olhando para os axiomas
de T2, não podemos utilizar nenhum deles bem como não podemos utilizar
nenhuma regra de inferência;
Passo 4: Portanto, concluímos que F não é teorema de T 2 que é o mesmo que
dizer que F não pode ser deduzida a partir de P2.
Exemplo 3) - Examinemos o programa P4 o qual é o seguinte:
Programa P4.
(A1) p(x) ← p(x).
(A2) p(a) ←.
(A3) p(b) ←.
(A4) q(c) ←.
Consulta 1 - F ≡ p(a).
Passo 1: Teoria T4 já foi construída;
Passo 2: Consideremos a cláusula gol F’≡ ←p(a) que significa ¬p(a);
Passo 3: Vamos assumir que F’ é verdade em T4. Olhando para os axiomas,
podemos afirmar que ¬p(a) e o axioma (A2) já se contradizem em T4;
Passo 4: Portanto, F é teorema em T4 que é o mesmo que dizer que F pode ser
deduzida a partir de P4.
Vamos supor que, por algum motivo, não “tenhamos visto” o axioma
(A2) mas sim o axioma (A1): afinal, o axioma (A1) é o primeiro axioma da lista
de axiomas e podemos utilizá-lo. Aplicando particularização em (A1) para x =
167
a, temos:
¬p(a) → ¬p(a)
e aplicando modus ponens, temos:
¬p(a).
Ah! Obtivemos ¬p(a) que é exatamente a cláusula gol inicial. Sem
problemas! Continuemos a tentar obter uma contradição: devemos dar uma
nova olhada nos axiomas e verificar se podemos utilizar algum deles.
Suponhamos que tenhamos escolhido o axioma (A1) novamente (nem vimos
o axioma (A2)!). Vamos obter ¬p(a) novamente! Notemos que se insistirmos
em utilizar (A1), não pararemos a computação.
Note que podemos adotar certas estratégias para efetuarmos
computação de gols. Vejamos que utilizar o primeiro axioma que aparece na
lista de axiomas pode ser um mau negócio como vimos no exemplo acima:
mesmo existindo o axioma (A2) que já resolveria o problema, insistimos em
utilizar o axioma (A1) que nos levaria a uma computação sem término.
Em termos gerais, as computações de gol que fizemos aqui se
resumiram no seguinte (já supondo a teoria fornecida pelo programa):
1. começávamos com uma cláusula gol (que na verdade era uma negação
que assumíamos como verdade);
2. utilizávamos a regra de modus ponens;
3. utilizávamos a regra de particularização que no fundo era a substituição
da variável no axioma por uma constante da teoria fornecida pelo programa;
4. obtínhamos uma nova cláusula gol que geralmente era originária da
aplicação de modus ponens.
Com isso em mente, podemos dizer que para uma computação (finita
ou infinita):
• Temos uma seqüência C0,C1,... (finita ou infinita) dos axiomas da teoria
(fornecida pelo programa) que são usados. Notemos que um axioma pode
aparecer várias vezes nesta seqüência, porém, podem estar particularizados
para constantes distintas;
• Temos uma seqüência G0, G1,... (finita ou infinita) de cláusulas gol que
vão sendo obtidas a partir das regras de inferência;
• Temos uma seqüência S0, S1,... (finita ou infinita) de substituições
decorrentes das particularizações.
Na seção 4.6, apresentaremos um novo método de computação de
gols chamado SLD-derivação. Este método vai nos poupar o trabalho de
termos que escrever a teoria fornecida pelo programa e poderemos fazer
consultas a ele diretamente. Além disso, é um método mais rápido e prático.
No entanto, veremos que ao utilizarmos a SLD-derivação estaremos
implicitamente fazendo o mesmo serviço de demonstrar teoremas em uma
168
teoria fornecida por um programa. Antes disso, na seção 4.5 (a próxima
seção) veremos alguns conceitos bem importantes relacionados à SLD-
derivação.
Programa P3.
p(a,b) ←.
q(b,c) ←.
r(x,z) ← p(x,y), q(y,z).
Teoria T3
Axiomas:
(A1) p(a,b)←.
(A2) q(b,c)←.
(A3) x y z ( ¬r(x,z) → ¬ ( p(x,y) ∧ q(y,z) ) ).
Regras de inferência:
• modus ponens;
• particularização.
Consulta 1 - F ≡ r(a,c).
Note que a premissa da fórmula acima poderia ser vista como uma cláusula
gol ← ( p(a,b) ∧ q(b,c) ).
169
¬r(a,c) → (¬p(a,b) ∨ ¬q(b,c) ).
¬r(a,c).
¬r(a,c) → (¬p(a,b) ∨ ¬q(b,c))
¬p(a,b) ∨ ¬q(b,c).
Consulta 2 - F ≡ r(c,a).
¬r(c,a).
¬r(c,a) → (¬p(c,b) ∨ ¬q(b,a) ).
¬p(c,b) ∨ ¬q(b,a).
170
Exercícios
5) Cada item abaixo contém um programa lógico. Para cada um deles, escre-
va a teoria finita associada e faça a computação das cláusulas gol dadas.
a) Programa:
p(x)←q(x).
q(a)←.
p(x)←q(x,y),q(y,x).
q(x,y)←r(x,y,z),r(x,z,y),q(y,z).
r(x,y,z)←s(x,y).
r(x,y,z)←r(y,x,z),s(y,z).
q(a,a)←.
q(b,b)←.
s(a,b)←.
p(b)←.
c) Programa:
p(x)←p(y),q(x,y).
q(x,y)←q(y,x).
q(a,b)←.
p(a)←.
d) Programa:
p(x)←p(x).
p(a)←.
q(a)←.
e) Programa:
p(x,z)←q(x,y,z), q(y,x,z).
q(a,b,e)←.
q(a,c,e)←.
q(b,a,e)←.
171
f) Aplicação de programas lógicos em diagnóstico médico:
mal-estar(Pedro)←.
temp-maior-37(Maria)←.
bolhinhas(Maria)←.
mal-estar(Maria)←.
manchas-verm(Pedro)←.
gland-inflam(Pedro)←.
febre(x) ← temp-maior-37(x).
gripe(x) ← mal-estar(x), febre(x).
sarampo(x) ← manchas-verm(x),febre(x).
caxumba(x) ← gland-inflam(x),febre(x).
catapora(x) ← bolhinhas(x),febre(x),mal-estar(x).
Exemplo:
Se tínhamos uma cláusula gol
¬p(a)
e tínhamos um axioma,
x ( ¬p(x) → ¬q(x) )
nós particularizávamos este axioma com a constante a para podermos
aplicar modus ponens depois:
¬p(a)
¬p(a) → ¬q(a) (axioma particularizado)
¬q(a).
O que acabamos de fazer pode ser dito da seguinte maneira
utilizando unificadores: “a fórmula ¬p(a) foi unificada com a fórmula x (
p(x) → q(x) )” .
O intuito do algoritmo de unificação é fornecer um método mecânico
172
para que alguém possa decidir se duas fórmulas podem ser unificadas ou
não. Além disso, se o algoritmo decidir que as duas fórmulas podem ser
unificadas ele também fornece o unificador mais geral, ou seja, a melhor
particularização possível para o axioma utilizado na computação.
3.15 - Substituição
Uma substituição α ?é um conjunto finito da forma
{ v1/t1, v2/t2, ..., vn/tn }
e
• cada vi é uma variável;
• cada ti é um termo distinto de vi;
• as variáveis v1,...,vn são distintas.
α é chamada de :
Exemplos: (Substituições)
1. α1 = { x1/a , x2/x1 }.
2. α2 = { x2/b , y/x2 , z/x1 }.
3. α3 = { x/y , z/y }.
4. α4 = { x/a , y/b , z/x2 }.
5. α5 = { x3/x2 , x4/y2 , x5/x3 }.
6. α6 = { }.
Exemplos:
1. Considere a expressão E1 ≡ p(x,y) e a substituição β1 = { x/a , y/b }.
Temos que E1β1 ≡ p(a,b).
2. Considere a expressão E2 ≡ p(x,y) e a substituição β2 = { x/a }.
Temos que E2β2 ≡ p(a,y).
3. Considere a expressão E3 ≡ q2(x,y,z) ∧ q5(x,y) e a substituição β3 = { x/y , y/
173
z , z/x }.
Temos que E3β3 ≡ q2(y,z,x) ∧ q5(y,z).
4. Considere a expressão E4 ≡ p(x,y) ∨ p5(y,z,x,z2) e a substituição β4 = { x/a ,
y/x , z/b , z2/y}.
Temos que E4β4 ≡ p(a,x) ∨ p5(x,b,a,y).
3.17 - Composição de substituições
Considere duas substituições α = {u1/s1, ..., um/sm} e β={v1/t1, ...,
vn/tn}. A composição αβ de α e β é a substituição obtida pelo conjunto:
{u1/s1β, ..., um/smβ, v1/t1,..., vn/tn}
de onde devemos retirar as eventuais ligações do tipo:
• ui/siβ para as quais ui ≡ siβ e
• vj/tj para as quais vj ∈ { u1, ..., um }.
3.18 - Variante
Consideremos duas expressões E e F. Dizemos que E e F são
variantes se existirem substituições α e β tais que E ≡ F α e F ≡ Eβ. Também
dizemos que E é variante de F ou F é variante de E.
Exemplos:
1. Considere as expressões E ≡ q(x,y,a) e F ≡ q(z,y2,a). E e F são variantes pois
dadas as substituições:
174
γ = { x3/x1 , x1/x2 , x2/x3 } e µ = { x1/x3 , x2/x1 , x3/x2 }
temos que F ≡ E γ e E ≡ Fµ .
temos que F ≡ E α e E ≡ Fβ .
3.19 - Proposição
Para quaisquer substituições α, β e γ e uma expressão E, temos que:
(i ) (αβ)γ ≡ αβγ
(ii) (αβ)γ ≡ α(βγ )
1. α3 é mais geral que α2 pois existe uma substituição α4 tal que α2 α3=α4α3.
2. α5 é mais geral que α3 pois existe uma substituição α6 tal que α3 α5 =α6α5.
3.21 - Unificador
Considere duas expressões A e B e uma substituição α. Se tivermos
que Aα ≡ Bα então dizemos que a substituição α é um unificador de A e B.
Também podemos dizer que A e B são unificáveis.
Exemplos:
Considere as expressões E ≡ q(x,y,a) e F ≡ q(z,y2,a) e a substituição α ={ x/d
, y/e , z/d , y2/e }. Aplicando a substituição em E e F, temos:
175
temos:
Algoritmo de unificação
176
predicado de B então emitir “não” como saída e parar o algoritmo indicando
uma falha, senão criar uma coleção P constituído por pares de termos (t i, si)
(i = { 1,2, ..., n } ) tais que C ≡ p(t1, ..., tn) e D ≡ p(s1,..., sn).
Observemos que:
177
Notemos que para o par ( x , x2 ) não pudemos fazer muita coisa.
Acontecerá o mesmo ao escolhermos o segundo ou o terceiro par. Notemos
que P permanecerá inalterado e aí teremos:
Notemos que:
e voltamos ao Passo 1.
e voltamos ao Passo 1.
Notemos que não aplicamos o Passo 2 nem o Passo 3 pois não há símbolo
funcional.
178
P = { (x,y) ; (y,y) }
e voltamos ao Passo 1.
P = { (x,y) }.
Exercícios Resolvidos.
10.1. Em cada item, dada a substituição ? e a expressão E, obtenha a instância
E??
a) E ≡ p(x,y,z2 ) e α = { x/y }.
b) E ≡ q(x,y) ∧ r(x,z) ∧ p(x,y,z) e α = { x/a , y/b , z/x }.
c) E ≡ q4(x,y,z2) e α = { x/c , y/d }.
d) E ≡ p(x,y,z) e α = { }.
Resolução:
a) Temos que substituir todas as ocorrências de da variável x pela variável y
e teremos Eα ≡ p(y,y,z2).
b) Substituindo todas as ocorrências da variável x pela constante a, todas as
ocorrências da variável y pela constante b e todas as ocorrências da variável
z pela variável y, teremos que: Eα ≡ q(a,b) ∧ r(a,x) ∧ p(a,b,x).
c) Substituindo todas as ocorrências da variável x pela constante c e todas
as ocorrências da variável y pela constante d termos: Eα ≡ q4 (c,d,z2).
d) Aqui temos que α não possui nenhuma ligação pois é a substituição
identidade. Temos que Eα ≡ p(x,y,z).
Resolução:
a) Temos que a composição αβ= { x/aβ , y/ bβ , z/xβ , a/c β } = { x/c , y/b , z/
c , a/c };
b) Temos que a composição αβ = { y/b z/x y/z } = { y/b , z/x , y/z };
c) Temos que a composição αβ = { x/y z/y x/a , y/b } = { x/b , z/b , y/b };
179
d) Temos que a composição αβ = { x1 /z y/ z z/c } = { x1 /c , y/c , z/c }.
Resolução:
a) Temos que E e F são variantes pois tomando as substituições α = { x/y , y/
z , z/x } e β={ y/x , z/y , x/z } teremos que Eα ≡ Fβ.
b) Temos que E e F não são variantes pois não existem substituições α e β
tais que Eα ≡ Fβ. Na verdade, o que realmente impede que E e F sejam
variantes é que o símbolo de predicado de E é diferente do símbolo de
predicado de F.
Resolução:
a) Aα ≡ p(a,b,w) e Bα ≡ p(a,b,w). Portanto, Aα ≡ Bα e α é um unificador para
A e B;
b) Aα ≡ q(a,c,f(w)) e Bα ≡ p(w,c,f(w)). Portanto, α não é um unificador de A
e B;
c) Aα ≡ tio(b,c) ∧ pai(x,y) e Bα ≡ tio(y,c) ∧ pai(x,y). Portanto, Aα ≡ Bα e α é
um unificador para A e B;
Exercícios Propostos.
11.1. Em cada item, dada a substituição α e a expressão E, obtenha a
instância Eα.?
180
c) E ≡ tio(x,z) ∧ mãe(x) ∨ casados(x,w) e α= { x/z , w/y};
d) E ≡ casados(x,y) ∧ irmãos(x,w) e α = { y/w , x/a };
e) E ≡ irmão(x,y) ∧ irmão(y,z) → irmão(x,z) e α = { x/y , y/z , z/x };
f) E ≡ pai(x,y) ∧ irmão(x,z) → tio(z,y) e α = { x/a , y/b , z/c };
g) E ≡ namorados(x,y) ∧ namorados(x,z) → problema(x,y,z) e α= {x/y , z/x , y/
z };
h) E ≡ p(x,y,z,w) ∧ q(x) e α = { };
i) E ≡ q(x) ∧ p(y) e α = { w/y , x2 /a };
j) E ≡ p(x,y,z) ∧ q(x,y,z) ∨ r(x,y) e α = { z/a }.
181
Programas lógicos e a SLD-derivação.
Nesta seção, apresentaremos o conceito de SLD-derivação. Con-
forme já havíamos adiantado anteriormente, este conceito vem a ser um
método de computação de gols tal que não temos a necessidade de escrever
a teoria associada ao programa: as cláusulas gol podem ser diretamente
submetidas ao programa.
3.24 - Resolvente
Seja P um programa lógico e G ≡ ← A1, ..., An uma cláusula gol.
Suponhamos que C ≡ A ← B1,...,Bk é uma cláusula de programa de P. Se para
algum i, 1≤ i ≤ n, podemos unificar A e Ai através de um umg α então
chamamos:
de resolvente de G e C.
Exemplos:
1. Lembra do Programa P1 da sub-seção 4.4.1?
Programa P1.
p(a) ←. (1)
q(b) ←. (2)
q(x) ← p(x) . (3)
182
seja, q(a) não pode ser unificada nem com (1) (símbolo de predicado é dife-
rente) nem com (2) (símbolo de predicado é o mesmo mas o argumento que é
uma constante é diferente). A única cláusula de programa que poderá ser
unificada com q(a) é a (3).
G’’ ≡ ← p(x);
G’ ≡ ← p(a).
• G ≡ ← p(a) e A1 ≡ p(a);
• C ≡ p(a) ←, A ≡ p(a) e B1 ≡ pois o corpo de C é vazio;
• α= { } que é a substituição identidade.
G’ ≡ .
183
que é o resolvente de G ≡ ←p(a) e de C ≡ p(a) ← .
3.25 - SLD-derivação
Considere um programa P e uma cláusula gol G. Uma SLD-derivação
de P ∪ {G} consiste de:
• uma seqüência (finita ou infinita) G=G0, G1, G2, ... de cláusulas gol;
• uma seqüência (finita ou infinita) C0, C1, C2, ... de cláusulas de programa
de P;
• uma seqüência (finita ou infinita) ?? ?1 ?2 ??? de substituições
184
Existe um jeito muito prático e útil de representar o esquema
acima. Ao efetuarmos um SLD-derivação, podemos representar os gols,
cláusulas de programa e unificadores mais gerais do seguinte modo:
3.26 - SLD-refutação
Considere um programa P e uma cláusula gol G. Uma SLD-refutação
de P ∪ {G} é uma SLD-derivação finita de P ∪ { G } que tem a cláusula vazia
como última cláusula gol da derivação. Se Gn = , dizemos que a SLD-refutação
tem tamanho n. Neste caso dizemos que o gol G foi refutado, ou que a
computação de G foi bem sucedida. Já que uma cláusula gol F’ é a negação de
uma outra fórmula F, quando refutamos F’, provamos F, ou seja, provamos
que F pode ser deduzida a partir do programa.
185
Na próxima sub-seção, veremos apenas exemplos de programas e
computaremos alguns gols a partir deles utilizando o novo conceito de SLD-
derivação.
Exemplos.
1. O Programa P1 ataca novamente!
Programa P1.
p(a) ←. (1)
q(b) ←. (2)
q(x) ← p(x). (3)
186
q(x) ← p(x)
umg α1 ={ x/a}
← p(a) p(a)← G1 ≡ ← p(a) e C1
≡ p(a) ←
umg α2 ={}
G2 ≡
Programa P3.
p(a,b) ←. (1)
q(b,c) ←. (2)
r(x,z) ← p(x,y), q(y,z). (3)
Agora temos que unificar p(a,y) e q(y,c) com duas cláusulas de P3.
Ao olharmos as cláusulas de programa de P3, podemos escrever:
187
Portanto, conseguimos refutar o gol ←r(a,c).
Agora temos que unificar p(c,y) e q(y,a) com duas cláusulas de P3.
Ao olharmos as cláusulas de programa de P3, observamos que não podemos
unificar nem p(c,y) nem q(y,a) com alguma cláusula de P3. Portanto, não temos
uma SLD-refutação para ←r(c,a).
José Maria
podemos escrever:
homem(José)←. (1)
homem(Fábio)←. (2)
188
(3) homem(Eduardo)←.
4) homem(Carlos)←.
(5) homem(Marcos)←.
(6) homem(Adriano)←.
(7) homem(Mário)←.
(8) mulher(Maria)←.
(9) mulher(Sônia)←.
(10) mulher(Ana)←.
(11) mulher(Mariana)←.
(12) mulher(Fátima)←.
(13) mulher(Cláudia)←.
(14) mulher(Paula)←.
pai(x,y) ≡ “x é pai de y”
mãe(z,w) ≡ “z é mãe de w”
e continuar a escrever:
(15) pai(José,Fábio)←.
(16) pai(José,Ana)←.
(17) pai(José,Carlos)←.
(18) pai(Fábio,Marcos)←
(19) pai(Fábio,Fátima)←.
(20) pai(Eduardo,Adriano)←.
(21) pai(Eduardo,Cláudia)←.
22)pai(Carlos,Mário)←.
(23)pai(Carlos,Paula)←.
(24)mãe(Maria,Fábio)←.
(25)mãe(Maria,Ana)←.
(26)mãe(Maria,Carlos)←.
(27) mãe(Sônia,Marcos)←.
(28) mãe(Sônia,Fátima)←.
(29) mãe(Ana,Adriano)←
(30) mãe(Ana,Cláudia)←.
189
Tendo essas relações de parentesco básicas estabelecidas, podemos
construir outros predicados baseados nesses mais básicos. Um exemplo
seria o predicado “irmão” . Como poderíamos estabelecer que duas pessoas
são irmãs baseados nos predicados que temos até agora? Uma sugestão
seria o seguinte:
Para duas pessoas x e y serem irmãs, podemos ter que existe uma
pessoa z tal que z é pai de x e z é pai de y. Dizer isto é sufuciente? Considere
o programa P formado pelas cláusulas de (1) até (33). Façamos a seguinte
consulta: irmãos(Mário,Paula). Temos, então, o seguinte gol:
G ≡ ← irmãos(Mário,Paula)
e a seguinte SLD-derivação:
←irmãos(Mário,Paula) irmãos(x,y)←pai(z,x),pai(z,y)
umg = { x/Mário , y/Paula }
←pai(z,Mário), pai(z,Paula) pai(Carlos,Mário)←
umg = { z/Carlos }
que quer dizer : “para que x seja filho de y, y deve ser o pai de x e além disso
x deve ser do sexo masculino”. Também poderíamos ter definido o predicado
de filho(x,y) por:
que significa : “para que x seja filho de y, y deve ser a mãe de x e além disso
x deve ser do sexo masculino”. Notemos que, no nosso caso, como para
cada filho x temos uma cláusula do tipo pai(y,x) e uma cláusula do tipo
mãe(z,x) então qualquer uma das cláusulas (34) ou (35) serve. Vamos manter
as duas cláusulas. Ao colocarmos todas as possibilidades de definição de
um predicado, vamos obter informações de árvores de família que podem
não estar tão completas como no nosso exemplo.
190
uma olhada na árvore, já podemos dizer que esta cláusula gol não poderá ser
refutada pois Marcos é, na verdade, neto de José. Vejamos:
←pai(José,Marcos)
tio(x,y) ← mãe(z,y),irmãos(x,z).
Exercícios Propostos.
7.1. Considere o exercício proposto 4.4.4.1. Para cada item do exercício 4.4.4.1.
faça a computação das cláusulas gol dadas diretamente a partir do programa.
191
7.2. Consideremos o problema de relações de parentesco. Cada item é um
predicado a ser definido. Para cada predicado, escreva todas as maneiras
como podemos defini-lo:
a) tia(x,y) ≡ “x é tia de y”;
b) sobrinho(x,y) ≡ “x é sobrinho de y”;
c) sobrinha(x,y) ≡ “x é sobrinha de y”;
d) avô(x,y) ≡ “x é avô de y”;
e) avó(x,y) ≡ “x é avó de y”;
f) neta(x,y) ≡ “x é neto de y”;
g) neta(x,y) ≡ “x é neta de y”;
h) primos(x,y) ≡ “x e y são primos”.
p(a) ←.
192
q(b) ←.
q(x) ← p(x).
p(a).
q(b).
q(X) :- p(X).
Observações:
• constantes são representadas por letras minúsculas e as variáveis, por
letras maiúsculas;
• todas as cláusulas de programa são finalizadas com “.” (ponto final);
• cláusulas de programa incondicionais não necessitam de “← ←” no final.
Apenas devemos escrever a(s) fórmula(s) seguidas do ponto final;
• o conectivo de implicação “←” das cláusulas de programa condicionais
é representado por “:-” (dois pontos seguidos de um hífen).
p(a,b).
q(b,c).
r(X,Z) :- p(X,Y),q(Y,Z).
p(X) :- p(X).
p(a).
q(c).
p(b).
193
antes de escolher uma cláusula de programa.
Programa P4.
p(X):-p(X). (1)
p(a). (2)
q(c). (3)
p(b). (4)
194
para a unificação obtendo, como resolvente, o mesmo gol ←p(a) e assim por
diante. Enquanto que nós, humanos já obtemos uma refutação para o gol
←p(a), o PROLOG prosseguirá a SLD-derivação sempre utilizando a cláusula
(1) e não parará a computação. Neste caso de computação sem término, o
PROLOG não emite resposta alguma.
?-
?- p(a).
yes.
?-p(c).
no.
195
que habitavam a floresta. Alice os encontra e deseja obter alguma informa-
ção sobre o dia da semana. O problema é que o Leão mente em determinados
dias da semana e o mesmo acontece com o Unicórnio. Alice sabe que eles
mentem e sabe em que dia cada um mente. Naquela época o Leão mentia às
segundas, terças e quartas e falava a verdade nos outros dias da semana. O
Unicórnio mentia às quintas, sextas e sábados e falava a verdade nos outros
dias da semana.
e o Unicórnio diz:
ontem(domingo, sábado) .
ontem(segunda, domingo) .
ontem(terça, segunda) .
ontem(quarta, terça) .
ontem(quinta, quarta) .
ontem(sexta, quinta) .
ontem(sábado, sexta) .
mentira(leão, segunda).
mentira(leão, terça).
196
mentira(leão, sábado).
mentira(leão, domingo).
mentira(unicórnio, segunda).
mentira(unicórnio, quarta).
mentira(unicórnio, sexta).
mentira(unicórnio, domingo).
ontem(domingo, sábado) .
ontem(segunda, domingo) .
ontem(terça, segunda) .
ontem(quarta, terça) .
ontem(quinta, quarta) .
ontem(sexta, quinta) .
ontem(sábado, sexta) .
mentira(leão, segunda).
mentira(leão, terça).
mentira(leão, sábado).
mentira(leão, domingo).
mentira(unicórnio, segunda).
mentira(unicórnio, quarta).
mentira(unicórnio, sexta).
mentira(unicórnio, domingo).
197
a) ontem(X,Y), verdade(leão, Y), mentira(leão, X) : quando o leão
falou com
Alice ele disse a verdade sobre o dia anterior. Obtemos X = seg e Y = dom;
Exercícios Propostos.
4.1. Refaça o exercício 4.6.7.2. só que desta vez utililize a notação do
PROLOG.
198
3.5. Desta vez o Unicórnio encontra Alice e diz:
199
4 CIRCUITOS LÓGICOS DE
CHAVEAMENTO
Introdução
201
Entre estes dispositivos o mais importante é a Chave elétrica do
tipo liga-desliga. São estas chaves que vão representar os estados lógicos
das proposições reconhecidas como sinais das entradas (A, B, C, etc..).
Uma chave é um dispositivo ligado à um ponto do circuito elétrico
que pode assumir apenas um dos dois estados, aberto ou fechado. No esta-
do aberto a chave permite que a corrente elétrica passe através do ponto e
no estado fechado a chave impede a passagem da corrente.
Indicaremos uma chave por meio de símbolos correspondentes às
letras A, B, C, etc., onde cada uma das letras simboliza uma sentença.
Considerando uma chave como representante de uma sentença A
temos que: a chave estará fechada quando a sentença A for verdadeira e
estará aberta quando sentença A for Falsa. Veja o símbolos na figura a seguir
onde as chaves A e B representam as proposições A e B, respectivamente.
Chave A
Desligado A=0
Ligada A=1
202
quando as chaves elétricas estiverem fechadas e interligadas numa configu-
ração tal que crie um caminho que permita a passagem da corrente de elétrons
até a lâmpada.
Resistor
203
Lâmpada L
A (¬A)
1 0
0 1
Circuito Lógico
+ Lâmpada L
E A
- S=1
R
204
Observação: No circuito do Inversor Lógico foi acrescido um
resistor R para limitar a corrente elétrica evitando-se o curto-circuito no
fechamento da chave A.
I
+ Lâmpada L
E I A
- S=0
R
205
Este conjunto funcionará da seguinte forma:
A chave ¬ da negação Lógica depende exclusivamente do estado
da chave que representa a Proposição. Se a proposição A for verdadeira o
resultado do seu estado lógico é A=1 e a chave da negação Lógica estará
fechada, o que vai ocasionar o estado da Lâmpada desligada, isto é, o
estado Lógico da saída é Falso com S = 0.
Caso a chave que representa a proposição A esteja aberta, simbo-
liza um estado Lógico Falso (A=0). Nestas condições, chave da negação
Lógica estará desligada e a Lâmpada estará acesa representando um estado
Lógico Verdadeiro com S=1.
AA
B B y
x
+
E S=0
-
S=AËB
206
Funcionamento: com as duas chaves desligadas representando as proposi-
ções A e B como Falsas, não há passagem de corrente elétrica para a Lâmpa-
da, ficando a mesma apagada. Neste caso, o estado Lógico resultante da
saída tem nível 0. Se apenas uma das chaves for ligada permanecendo a
outra desligada, não é o suficiente para permitir a passagem da corrente
elétrica para a lâmpada. Como os elétrons vão circular por apenas um único
caminho é condição necessária que as duas chaves sejam ligadas para per-
mitir que a corrente flua para a lâmpada, acendendo-a e representando o
estado lógico Verdadeiro com valor 1 na saída.
Conforme foi visto, no circuito de chaveamento lógico da Conjun-
ção a corrente elétrica vai passar pelos pontos x e y se, e somente se (A ∧ B)
é verdadeira. Diz-se que as duas chaves estão em série.
Este caso pode ser generalizado para qualquer número finito de
chaves ligadas em série conforme mostra a próxima figura.
A1 A2 A3 An
x y
207
pelas Proposições A e B podem ser relacionadas à saída recebendo as se-
guintes afirmativas:
“Para a saída S ser verdadeira basta que apenas uma das entradas
A ou B sejam verdadeiras”.
“A saída S só será falsa se ambas as entradas A e B forem Falsas”.
Em outras palavras, a saída terá nível Lógico S=1 se pelo menos
uma das entradas A ou B estiver com nível Lógico 1.
O circuito OR que representa uma função da disjunção Lógica pode
ser configurado por meio de chaves, conforme mostra a figura a seguir:
B
+
E S=0
-
S = (A V B)
A2
x y
A3
An
208
Na Disjunção condição para a corrente elétrica passar através do
circuito é a de
(A1 ∨ A2 ∨ A3 ∨ ... ∨ An ) ser Verdadeira.
Condição 1 1110
Condição 2 1001
Condição 3 0101
Condição 4 0001
Estado Lógico
da Saída S
Estados Lógicos
intermediários
209
figura:
A B ¬
S =[¬ (AËB )]
+
E
- R
[¬ (A V B )] = S
Resolução: Esta equação expressa negação de uma disjunção lógica entre
duas proposições A e B. Neste caso a negação da disjunção se caracteriza
pela afirmação de que a saída S só é verdadeira (S =1) se e somente se, a
negação lógica da disjunção entre A e B for verdadeira, isto é: [¬ (AVB )] =1.
Usando do mesmo procedimento anterior, é elaborado primeiramente
uma tabela verdade onde são consideradas todas as combinações possíveis
entre as proposições A e B e a sua negação Lógica.
A B (A B ) [ (A B )]
C o n d ica~ o 1 11 1 0
C o n d ica~ o 2 10 01
C o n d ica~ o 3 01 01
C o n d ica~ o 4 00 01
E stad o L o g ic o s
d a S a id a S
E sta do s L o gic o s
inte rm e dia rio s
¬
B
S = [¬ (AVB )]
+
E
- R
210
Exemplo 3 - Construa o circuito de chaveamento que simule a equação:
[(¬ (A ∧ B ) ) ∧ (CVD)] = S
A B (A B ) ( (A B )) CD ( C D) [( (A B )) ( C D )]
11 1 0 11 1
10 01 10 1
01 01 01 1
00 01 00 0
S aid a S
A B ¬
+
E S
-
R
211
sensores sA, sB, e sC, do tipo chave liga-desliga, instalados em três portas
de entrada de um compartimento que se deseja proteger. Com o sistema
ativo, na decorrência de um dos sensores ser ligado se acenderá uma lâmpada
acusando uma anormalidade.
Uma chave sD instalada do lado de fora do compartimento e em
local secreto conhecido apenas pelo usuário, poderá ser ligada para deixar o
sistema inativo.
Com base na descrição acima elabore a equação Lógica e o Circuito
de chaveamento Lógico do Sistema.
Resolução:
Vamos considerar os sensores como sendo as proposições de entrada tal
que:
Sensor sA = A
Sensor sB, = B
Sensor sC = C
Chave secreta sD = D
Lâmpada de alarme L = Saída S
Equação Lógica : Basta que uma das chaves A, B e C fique ligada para que a
Lâmpada acenda, portanto é uma disjunção do tipo:
(AV BVC )= S1
Conforme a descrição do funcionamento do Sistema para a equação acima
ser verdade é necessário que a chave D esteja desligada, isto é, a negação
lógica de D (¬D) tem que ser Verdadeira. Portanto esta condição é ligada à
anterior pela conjunção lógica.
Deste modo a equação final que simula o sistema fica:
[(AVBVC ) ∧ (¬ D)] = S
Tabela verdade:
A B CA B[(AVBVC)]
C [A B C )]
B
1 1 1100
11
1 1 0011 C
11
11 00 1111 D ¬
11 00 00 11
+ S
0111 E
0 1 11
-
0101 R
01 01
0011
0 0 11
0001
00 01
212
Exemplo 5 - Considere que a administração de uma pequena empresa decida
questões através de um comitê composto pelas seguintes pessoas:
a) O Presidente A.
b) O Vice-Presidente B.
c) O Gerente Industrial C.
Cada membro do Comitê tem em seu poder uma chave que é acionada
sinalizando aprovação quando a proposta é de sua concordância, caso
contrário, a chave permanece desligada.
Para indicar a aprovação ou não de cada proposta há uma lâmpada
que se acenderá caso a proposta tenha sido aprovada pela maioria dos
votos dos membros do comitê.
Pede-se: Elabore a equação Lógica, a tabela verdade e o circuito de
chaveamento Lógico que simule este processo.
Resolução
O processo pode ser visualizado mais facilmente através da tabela verdade
mostrada a seguir:
1000
Situação 4
0111
0100
0010
0000
213
Verdadeiras. Portanto é uma conjunção entre as três proposições: (A ∧B Ë∧
).
Situação 2 : A saída S só é Verdadeira quando A e B são Verdadeiras.
Portanto é uma conjunção entre as duas proposições: (A ∧ B ).
Situação 3 : A saída S só é Verdadeira quando A e C são Verdadeiras.
Portanto é uma conjunção entre as duas proposições: (A ∧ C ).
Situação 4 : A saída S só é Verdadeira quando B e C são Verdadeiras.
Portanto é uma Conjunção entre as duas proposições: (B ∧ C).
A B C
A B
A C
C S
B
+
E
-
R
214
A B
A C
B C
+
E
-
R
Exercícios
[(A ∧ B) ∧ ( C V D)] = S
2- A partir da equação lógica [(¬ (A V B))] V [(C Ë D)] = S construa
uma tabela verdade onde são mostrados os valores Lógicos
intermediários e os valores finais da equação. Através da tabela
verdade obtida construa o circuito de chaveamento Lógico.
3- Simule por meio de um circuito de chaveamento a equação lógica:
[((¬ A) ∧ B) V C ] = S
mostre a tabela Verdade e o circuito obtido.
4- Suponha um sistema de segurança que é construído com 4 sensores
normalmente fechados (chaves que ao serem acionadas abrem)
denominados com as letras A, B, C e D. O funcionamento do sistema
de alarme consiste no seguinte procedimento: caso um destes quatro
sensores seja desligado uma buzina será acionada ( S=1) acusando
anormalidade. Para que o guarda da segurança possa entrar sem
acionar o alarme existe em seu poder uma chave (E) que quando
ligada deixa sem ação apenas o sensor A instalado na porta principal
permitido que ele entre no recinto . Conforme a descrição acima,
pede-se:
a) A equação Lógica do Sistema.
b) A tabela Verdade do Sistema.
c) O Circuito de chaveamento Lógico do Sistema.
5- Considere o mesmo enunciado do exercício anterior modificando o
fato dos sensores A, B e C serem agora normalmente abertos (
Chaves que fecham ao serem acionadas).
215
6- Considere que a administração de uma Indústria decida questões
relativa à produção através de um comitê composto por cinco
pessoas:
a) O Presidente A.
b) O Vice-Presidente B.
c) O Gerente Industrial C.
d) O Gerente de produção D.
e) O Gerente de pessoal E.
Cada membro do Comitê tem em seu poder uma chave que é acionada
sinalizando o voto de aprovação quando a proposta é de sua
concordância, caso contrário, a chave permanece desligada.
Para indicar a aprovação ou não de cada proposta há uma lâmpada
que irá se acender caso a proposta tenha sido aprovada pelo voto do
presidente ou pela maioria dos votos dos membros do comitê.
Pede-se: Elabore a equação Lógica, a tabela verdade e o circuito de
chaveamento Lógico que simule este processo.
216
5 PORTAS LÓGICAS
Introdução
217
5.1. As Portas Lógicas Básicas
218
5.3. Porta Lógica E
219
Com a configuração das duas portas, Inversora e E, é obtido como
resultado o sinal que representa a negação da conjunção entre as proposi-
ções das entradas, portanto a negação da função E.
Uma notação muito utilizada em circuitos digitais é: S=, onde lê-se
“S é igual a A e B barrados”.
220
É comum em bibliografia de circuitos digitais se encontrar um sinal
de adição ( + ) para representar a disjunção entre as proposições A e B. Por
exemplo a expressão:
S=A+B é lida como, S é o resultado da expres-
são booleana entre A ou B.
Uma porta lógica OU pode ter um número n finito de entradas onde
n é limitado pelas condições técnicas construtivas da porta.
221
Com a configuração das duas portas lógicas, a porta OU e a porta
Inversora, é obtida como resultado o sinal que representa a negação da
disjunção entre as proposições das entradas. Portanto, a porta NÃO faz a
negação da função OU.
Uma notação muito utilizada em circuitos digitais é: S= , onde lê-se
“S é igual a A ou B barrados”.
+ 5 volts=1
0 volts=0
222
5.8. Exemplos de aplicação
Resolução:
a) A equivalência das notações:
∧ = . Conjunção
V = + Disjunção
¬= Negação
nos permite reescrever a equação da seguinte forma:
(AB )+ (C + D) = S
223
Uma chave sE instalada do lado de fora, e em local secreto conheci-
do apenas pelo usuário, deixa o sistema inativo caso seja desligada.
Com base na descrição acima elabore a equação Lógica e o Circuito
construído com portas lógicas do Sistema de alarme.
224
Pelo circuito, verifica-se que se a proposição E tiver valor lógico 1,
a saída S será dependente apenas do valor resultante de S1, caso a proposi-
ção E estiver com valor lógico 0, significa que a chave está desligada e a
saída S será obrigatoriamente igual a 0.
Cada membro do Comitê tem em seu poder uma chave que é acionada
sinalizando um voto de aprovação quando a proposta é de sua concordân-
cia, caso contrário, a chave permanece desligada.
Pede-se: Elabore a equação Lógica, a tabela verdade e o circuito de
portas lógicas capaz de simular este processo.
225
condições de A, B e C sendo satisfeitas resulta verdadeira (S=1).
Na situação 1- S é igual a 1 se, e somente se, A=1, B=1 e C=1.
Portanto, a situação 1 é representada pela equação da conjunção entre as
proposições:
A.B.C =S
Usando o mesmo raciocino para a situação 2 teremos S igual a 1
se, e somente se, A=1, B=1 e C=0. Portanto:
A.B.C=S
226
Obs. Existem em bibliografia de circuitos digitais modos de minimização de
circuitos, que podem diminuir o número de portas utilizadas otimizando
projetos mas estes procedimentos técnicos fogem do escopo deste livro.
227
Estes diodos têm a propriedade de, ao serem excitados por uma
corrente elétrica apresentar emissão de luz. Dependendo dos diodos que
serão ligados e dada a sua disposição no conjunto será formado visualmente
no decodificador de 7 segmentos um número ou uma letra. Veja os exemplos
de visualização dos números 0 à 9 a seguir:
228
Resolução: Conforme é visto pela tabela, para aparecer o número decimal 0
no Decodificador de 7 segmentos é necessário que os diodos a, b, c, d, e, f
estejam ativados com nível lógico 1.
Para o diodo a estar ativado, isto é a=1 devemos ter a condição
A=0, B=0, C=0, D=0. Se uma destas entradas estiver em nível lógico 1 a saída
a será igual a 0 e não haverá visualização. Isto nos dá para o diodo a uma
função verdade que é uma característica de uma porta lógica NÃO-OU.
Para isto basta relembrar a tabela verdade da porta NÃO-OU.
229
operador de negação.
A figura a seguir mostra a porta lógica para a saída g.
230
restantes como exercício.
Verificando por exemplo a coluna do diodo a.
As situações onde ele vai ficar ativo, isto é a=1, são:
231
Para obter o circuito completo a análise deve ser feita para cada
coluna da tabela.
Usando o processo da análise de cada situação para determinar a
equação lógica e as configurações das portas, o circuito final vai ser composto
por um número muito grande de portas.
Existem vários métodos utilizados em projetos de circuitos digitais
para obtenção da minimização dos circuitos como, os teoremas de De Morgan,
utilizando princípios de Identidade, ou os diagramas de Karnaugt.
Estes procedimentos não serão vistos aqui, mas são facilmente
encontrados nas bibliografias que tratam de projetos de circuitos digitais.
Exercícios
232
5) Dada a equação lógica: S=(A.B) . (C+D)
1- O Presidente A.
2- O Vice-Presidente B.
3- O Gerente Industrial C.
4- O Gerente admistrativo D.
Cada membro do Comitê tem em seu poder uma chave que é acionada
sinalizando um voto de aprovação quando a proposta é de sua concordância,
caso contrário, a chave permanece desligada.
Elabore a equação Lógica, a tabela verdade e o circuito de portas
lógicas capaz de simular este processo.
233
APÊNDICE
Operação binária
Se G é um conjunto não vazio, uma operação binária sobre G é uma função
ϕ : G × G → G.
Exemplos:
1. A operação de adição sobre números naturais é uma operação binária: a
um par de números (a, b) está associado um único número que é a soma de
a com b;
2. A operação de multiplicação sobre números naturais também é uma opera-
ção binária: a um par de números (a, b) está associado um único número que
é o produto de a e b.
Operação associativa
Uma operação binária ⋅ sobre G diz-se associativa se (a ⋅ b) ⋅ c = a ⋅ (b
⋅ c) para quaisquer elementos a, b, c de G.
Exemplos:
1. a operação de adição sobre os números naturais é associativa;
2. a operação de multiplicação sobre os números naturais é associativa;
3. a operação de subtração sobre os números naturais não é associativa;
4. a operação de adição sobre o conjunto das matrizes quadradas de ordem
2 é associativa.
Operação Comutativa
Uma operação binária ⋅ diz-se comutativa se a ⋅ b = b ⋅ a para quaisquer
elementos a e b de G.
235
Exemplos:
1. A operação de adição e de multiplicação sobre os números naturais é
comutativa;
2. A operação de subtração sobre os números naturais não é comutativa;
3. A operação de adição sobre as matrizes quadradas e ordem 2 é
comutativa.
Semigrupo
Um semigrupo é um par ordenado (G, ⋅) tal que:
1) G é um conjunto não vazio e
2) ⋅ é uma operação binária associativa em G.
Exemplo:
1. (N, +) é um semigrupo;
2. (N, .) é um semigrupo;
3. (Z, +) é um semigrupo;
4. (Q, .) é um semigrupo.
Monóide
Um monóide é uma tripla ordenada (G, ⋅, e) tal que:
1) G é um conjunto não vazio
2) é uma operação binária sobre G
3) e é o elemento neutro de G isto é, um elemento de G tal que e . a = a . e
= a para todo elemento a de G.
Exemplos:
1. (N, +, 0) é um monóide;
2. (N, ., 1) é um monóide;
3. (Q, ., 1) é um monóide;
4. (Q, +, 0) é um monóide.
Observação:
Um monóide é dito comutativo se a operação binária . for comutativa.
Grupo
Um grupo é um semigrupo (G, ⋅) tal que:
1) possui um elemento neutro e e
2) para todo elemento a de G, existe um elemento b de G tal que a ⋅ b = e.
Exemplos:
1. (Q, .) é um grupo e o seu elemento neutro é o 1;
2. (Q, +) é um grupo e o seu elemento neutro é o 0;
3. (M, +) é um grupo. M é o conjunto das matrizes quadradas de ordem n.
O elemento neutro de M é a matriz identicamente nula.
Observação:
Um grupo (G, .) é dito abeliano se a operação . for uma operação
comutativa.
236
Semi-anel
Um semi-anel é uma quíntupla ordenada (A, +, . ,0, 1) tal que:
1) A é um conjunto não vazio;
2) + e . sao duas operações binárias em A;
3) (A, +, 0) é um monóide comutativo;
4) (A, . , 1) é um monóide;
5) valem as seguintes leis distributivas:
a . (b + c) = a . b + a . c quaisquer a, b, c em A.
(a + b) . c = a . c + b . c quaisquer a, b, c em A.
6) 0 . a = a . 0 = 0 qualquer a em A.
Exemplos:
1. (Q, +, ., 0, 1) é um semi-anel;
2. (R, +, ., 0, 1) é um semi-anel.
Observação:
Um semi-anel é dito comutativo se a operação . for comutativa.
Anel
Um anel é uma quíntupla ordenada (A, +, ., 0, 1) tal que:
1) (A, +) é um grupo Abeliano;
2) . é uma operação associativa;
3) valem as leis distributivas do semi-anel.
Exemplos:
a.) (Q, +, ., 0, 1) é um anel;
b.) (R, +, .,0, 1) é um anel.
Observação:
1) dizemos que um anel é comutativo se a operação . é comutativa;
2) dizemos que um anel é um anel com unidade se 1 é elemento neutro para
a operação . .
237
1. [A] ∧ [B] = def [A ∧ B];
2. [A] ∨ [B] = def[A ∨ B];
3. [A] ’ = def [¬A];
4. 1 = def [tautologia];
5. 0 = def [contradição].
Observação:
Pode-se mostrar que as operações acima definidas independe dos
elementos escolhidos, ou seja, essas operações estão bem definidas.
Teorema: (F, ∧, ∨, ’, 1 , 0) constitui uma álgebra de Boole.
Demonstração: (Exercício).
Vemos assim um aspecto muito importante em lógica: ela pode
receber diversas abordagens. Uma pessoa que esteja estudando lógica está
estudando uma estrutura basilar da matemática (anéis). Também, o aluno
que estuda teoria dos anéis, sem saber está estudando lógica. Isto nos
mostra uma faceta mágica da matemática e da lógica: a unidade que subjaz
essas disciplinas.
3. MODELOS DE HERBRAND
O objetivo deste apêndice é apresentar os modelos de Herbrand
por serem de grande utilidade na área de programação em lógica. Dado um
programa lógico P e uma consulta C, devemos provar C em P com base nos
axiomas que P fornece e além destes axiomas podemos utilizar modus ponens
e particularização. Podemos enxergar este processo que acabamos de
descrever através de uma outra visão: queremos saber se o programa P
fornece um “modelo” para a consulta C.
Os modelos de Herbrand são muito úteis por serem construtíveis e
além disso existem dois resultados importantes relacionando modelos
quaisquer com os modelos de Herbrand. Inicialmente, na seção 2 deste
apêndice damos algumas definições relacionadas com interpretações e
modelos quaiquer, na seção 3, falamos sobre os objetos de Herbrand (base,
universo, interpretação e modelo) e na seção 4 apresentamos dois resultados
importantes sobre os modelos de Herbrand.
Interpretações e modelos
Pré-interpretação
Uma pré-interpretação de uma linguagem de primeira ordem L
consiste do seguinte:
a.) Um conjunto não-vazio D, chamado de domínio da pré-interpretação;
b.) Para cada constante em L está associado um elemento de D;
c.) Para cada símbolo de função n-ária em L está associada uma aplicação
de Dn em D.
238
Exemplo: Lembremos a definição de grupo vista no Apêndice 1.
Um grupo é um conjunto G não vazio munido de uma operação
binária * tal que:
1.) x,y,z , (x * y ) * z = x * ( y * z );
2.) ∃ e ∈ G tal que x ∈ G, x * e = x;
3.) para x ∈ G, ∃y ∈ G tal que x * y = e.
Notemos que os axiomas que definem um grupo formam uma
linguagem de primeira ordem. O conjunto dos números inteiros Z munido da
operação de adição (+) é uma pré-interpretação para a definição de grupo.
Notemos que a constante e é o zero de Z e a operação * é a operação de
adição (+).
Interpretação
Uma interpretação I de uma linguagem de primeira ordem L consiste
de uma pré-
interpretação J com domínio D de L e além disso para cada símbolo de
predicado em L está associada uma relação em Dn. Dizemos que I está baseada
em J.
Exemplo:
Consideremos um grupo G qualquer. Seja o seguinte predicado em
G:
p(x,y) ≡ “x * y = y * x”.
Consideremos agora seguinte relação R em Z:
R = { (x,y) ∈ Z X Z : x + y = y + x }
A pré-interpretação do item anterior (o grupo (Z,+) ) mais a relação R
definida acima forma uma interpretação para a definição de grupo.
239
associação de variáveis e A uma fórmula atômica. Suponha que A é p(t1, ...,
tn ) e d1, ..., dn ∈ D são as associações de termos de t 1, ..., tn . Dizemos que AJ,
V
= p (d1, ..., dn ) é a J-instância de A.
Exemplos:
Consideremos a seguinte fórmula atômica da linguagem de primeira ordem
dos grupos:
q(x,y, f(x,y) ) (1)
Consideremos a pré-interpretação (Z,+) com f sendo a operação de
multiplicação (.). Seja também a seguinte associação de variáveis: x por 2, y
por 3. Temos que a (Z,+)-instância de (1) é p(2,3, 2 . 3).
Modelo para uma fórmula, para uma teoria e para um conjunto de fórmulas
Seja I uma interpretação de uma linguagem de primeira ordem L e
seja F uma sentença de L. Dizemos que I é um modelo para F se F for
verdadeira em I.
Seja T uma teoria de primeira ordem e seja L uma linguagem de TT.
Um modelo para T é uma interpretação para L que é um modelo para cada
axioma de T. Se T tem um modelo dizemos que T é consistente.
Seja S um conjunto de sentenças de uma linguagem de primeira ordem L e
seja I uma interpretação de L. Dizemos que I é um modelo para S se I é um
modelo para cada fórmula de S. Notemos que se S = { F1, ..., Fn } é um
conjunto finito de sentenças então I é um modelo para S se e somente se é
um modelo para F1∧ ... ∧ Fn.
Exemplo:
Retomemos o exemplo da teoria dos grupos. Temos que (Z,+ ) é um
modelo para a teoria de primeira ordem dos grupos pois cada axioma da
teoria dos grupos é verdadeira em (Z,+). Notemos que (Q, .) também é um
modelo para a teoria dos grupos de primeira ordem.
Satisfatibilidade e Validade
Seja S um conjunto de sentenças de uma linguagem de primeira ordem L.
a.) S é dita satisfatível se L tem uma interpretação que é modelo para S;
b.) S é válida se toda interpretação de L é modelo para S;
c.) S é insatisfatível se nenhuma interpretação de L é modelo para S;
d.) S é inválida se L tem uma interpretação que não é um modelo para S.
Conseqüência Lógica
Seja S um conjunto de sentenças e F uma sentença de uma linguagem
de primeira ordem L. Dizemos que F é uma conseqüência lógica de S se para
toda interpretação I de L tivermos que I é um modelo para S implica que I é um
modelo para F.
240
Interpretações e Modelos de Herbrand
Universo de Herbrand
Seja L uma linguagem de primeira ordem. O universo de Herbrand
UL para L é o
conjunto de todos os termos que são formados das constantes e dos
símbolos de função que aparecem em L.
Consideremos o seguinte programa lógico P1:
p(a).
p(b).
q(X) :- p(X).
A nossa linguagem de primeira ordem são as cláusulas de programa
de P1. Temos que o universo de Herbrand de P1 é UL = { a, b }.
Base de Herbrand
Seja L uma linguagem de primeira ordem. A base de Herbrand BL
para L é o conjunto de todos os átomos que podem ser formados utilizando
os símbolos de predicados de L com os termos do universo de Herbrand
como argumentos.
Temos para o programa P1 acima que a base de Herbrand é BL =
{p(a), p(b), q(a),q(b)}.
Pré-interpretação de Herbrand
Seja L uma linguagem de primeira ordem. A pré-interpretação de
Herbrand para L é a pré-interpretação dada como segue:
a.) O domínio para pré-interpretação é o universo de Herbrand
UL;
b.) Constantes em L são associadas a elas mesmas em UL;
c.) Se f é um símbolo de função n-ária em L, então a aplicação
(UL)n em UL
definida por (t1, ..., tn ) → f(t1, ..., tn) está associada a f.
Temos para o programa P1 a pré-interpretação dada como segue:
Domínio = { a, b }.
Constantes de P1 são associadas a elas mesmas.
Função f de P1 associada a ela mesma.
Interpretação de Herbrand
Uma interpretação de Herbrand para L é uma interpretação baseada na
pré-interpretação de Herbrand para L.
241
Modelo de Herbrand para um conjunto de fórmulas
Seja L uma linguagem de primeira ordem e S um conjunto de fórmu-
las de L. Um
modelo de Herbrand para S é uma interpretação de Herbrand para L que é um
modelo de S.
Consideremos novamente o programa P1 e seja S o conjunto
formado pelas suas cláusulas de programa. Vamos reescrever o programa:
p(a).
q(b).
q(X) :- p(X).
O domínio da pré-interpretação de Herbrand para este programa é { a,
b }. Não temos funções. Consideremos os predicados p e q como predicados
da interpretação de Herbrand. A interpretação de Herbrand que acabamos
de construir é um modelo de Herbrand para o programa acima pois todas as
cláusulas de programa são verdadeiras nesta interpretação.
4. A LÓGICA CLÁSSICA.
Introdução.
242
completos, nem entraremos em detalhes, de modo óbvio num texto como
este.
243
• Teoria de Zermelo-Fraenkel.
• Esta teoria foi introduzida por E. Zermelo (1871-1953), melhorada
posteriormente por A. Fraenkel (1929- ) e chegou à uma teoria sensacional
com T. Skolem (1887-1963). Talvez, a teoria ZF seja a teoria que mais se
aproxime da teoria intuitiva de Cantor. É nesta teoria que se desenvolve a
Matemática usual (espaços vetoriais, cálculo diferencial e integral,
topologia, álgebra, etc.) ensinada de modo regular.
• Teoria de von-Neumann-Bernays-Gödel.
• Sistema NF de Quine.
• Sistema ML de Quine.
• Sistema de Kelley-Morse.
• Sistemas de Solovay.
Neste modelo de teoria dos conjuntos não vale o Axioma da Escolha
na sua forma geral, mas uma forma particular conhecida como forma
enumerável do Axioma da Escolha. Um resultado interessante num modelo
dessa teoria dos conjuntos é que todo subconjunto da reta real é Lebesgue
mensurável. Outra diferença, em relação à teoria cantoriana, é que todo
operador num espaço de Hilbert é limitado e, por conseguinte, contínuo.
Muitas teorias da Física Quântica estão estruturadas através do conceito
de espaço de Hilbert e conceitos associados. Logo, advém uma indagação
assaz delicada: como fica uma mesma teoria física acomodada em modelos
de teorias de conjuntos distintas? Qual é a “verdadeira” teoria dos
conjuntos para a Física?
• Sistemas de Cohen
Os resultados de independência em Teoria dos Conjuntos
obtidos por Cohen permitiu que tomássemos conhecimento de modelos da
teoria em que não são válidos certos princípios como, por exemplo, a
Hipótese do Contínuo que afirma que não há número cardinal entre o
enumerável e o contínuo dos números reais. Tais considerações, também,
deram origem a Matemáticas Não-cantorianas.
244
2.1 Teoria dos Tipos Russellianas
• Teoria Ramificada dos Tipos de Russell-Whitehead
• Teoria Simples dos Tipos de Ramsey-Chwistek
• Teoria Suplementar de Gödel
• Teoria de Quine
• Teorias Cumulativas
Esquema da sub-divisão
245
246
REFERÊNCIA BIBLIOGÁFICA
[Abe & Papavero 92] ABE, J.M. & N. PAPAVERO, Teoria Intuitiva dos
Conjuntos. Makron Books, 1992.
[Iséki & Abe 01] ISÉKI, K., & J.M. ABE, Lógica Matemática e Aplicações,
2001, em preparo.
247