Académique Documents
Professionnel Documents
Culture Documents
24 de março de 2017
Sumário
1 Introdução e História 3
1.1 História, Paradoxos e Princı́pios Básicos . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Cálculo Proposicional 7
2.1 A Linguagem do Cálculo Proposicional . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Mapeamento de Frases para o Cálculo Proposicional . . . . . . . . . . . . . . . . . . 9
2.3 Semântica do Cálculo Proposicional . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.1 Verdade e Falsidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.2 Tabelas Verdade dos Conectivos . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Tabelas Verdade e Tautologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Tautologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Equivalência Lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 Conjunto Adequado de Conectivos e Formas Normais . . . . . . . . . . . . . . . . . 26
2.8 Formas Normais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.9 Fórmula na FND Equivalente a Fórmula Dada . . . . . . . . . . . . . . . . . . . . . 30
2.10 Fórmula na FNC Equivalente a Fórmula Dada . . . . . . . . . . . . . . . . . . . . . 33
2.11 Proposições sobre Conectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.12 Sintaxe do Cálculo Proposicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.13 Relação Sintaxe/Semântica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.14 Conexões da Sintaxe com a Computação . . . . . . . . . . . . . . . . . . . . . . . . 54
2.14.1 Análise Sintática e Gramática da Linguagem do Cálculo Proposicional . . . 54
2.14.2 Enumeração das Fórmulas do Cálculo Proposicional . . . . . . . . . . . . . . 55
2.14.3 Axiomatização do Cálculo Proposicional . . . . . . . . . . . . . . . . . . . . 56
2.15 Transformação de fórmulas para a FNC . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.16 Algoritmo de Horn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.17 O Algoritmo da Resolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
i
2.18 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
B Quadrinhos 137
1
Prefácio
Imagine que alguém queira comunicar como é uma certa pintura para uma outra pessoa. Uma
possibilidade seria converter a pintura para o formato digital, um retângulo compostos por pontos
(cada um com uma cor), e depois escrever a cor de cada ponto, começando do canto superior es-
querdo e procedendo para baixo, linha por linha, até o canto inferior direito. Esta não é uma forma
muito inteligente de comunicação. Contudo, é mais ou menos isso que fazemos quando escrevemos
um livro de Matemática, Fı́sica ou Lógica. Nestes livros, uma seqüência de definições, teoremas
e provas é descrita linearmente tentando descrever conceitos que não podem ser compreendidos
desta forma. O leitor fica com a inteira responsabilidade de agrupar todos os conceitos e montar
a “figura” em sua mente, com pouco ou nenhum auxı́lio por parte do texto.
Neste livro tentamos fazer diferente na medida de nossas possibilidades. Para ajudar o leitor
a montar a imagem da lógica, recorremos a dois artifı́cios: a) comentários sobre os teoremas
e provas e b) meta-informações no texto. Sendo este um livro de lógica, as informações sobre
lógica constituem a maior parte do texto. Contudo, há informações também sobre o próprio
texto: referências a páginas (“veja os axiomas da página 23”) e figuras que descrevem a própria
estrutura das definições, teoremas e provas. Estes dados adicionais são meta-informações. Com eles
procuramos mostrar como a lógica é estruturada, quais as relações entre os conceitos estudados.
Os comentários no texto ajudam visualizar o quadro geral. Eles procuram apresentar uma outra
visão do texto, podemos dizer “do alto”, fugindo da descrição linear de definições/teoremas do
livro.
Ao final de cada Capı́tulo deste livro pode haver três subseções: a) Visão Alternativa; b)
Conexões com a Computação e c) Suposições Implı́citas. A subseção “Visão Alternativa” procura
apresentar os conceitos do Capı́tulo ou parte dele de maneira diferente do que foi apresentado,
facilitando a compreensão do texto. Aliás, isto já é feito em muitos comentários por todo o livro e
não apenas nesta subseção. Qualquer texto se torna difı́cil de entender se apenas uma única visão é
apresentada. O leitor não consegue formar uma idéia clara dos conceitos apresentados assim como
quando enxergamos com um único olho não temos a idéia de profundidade da cena observada.
A subseção “Conexões com a Computação” apresenta os possı́veis relacionamentos entre o
Capı́tulo e a Computação. Não se pretende fazer uma apresentação profunda de tópicos da com-
putação nesta seção. A subseção “Suposições Implı́citas” apresenta as suposições implı́citas para
que o Capı́tulo seja válido. Frequentemente se assume que algumas coisas sejam válidas ou abso-
lutamente necessárias quando isto nem sempre é o caso. Esta seção apresenta o que normalmente
supomos ao estudar o Capı́tulo. Note que esta subseção de certa forma se sobrepõe com a seção
“Visão Alternativa”. Contudo, o objetivo de ambas é diferente. O objetivo da subseção “Visão Al-
ternativa” é fazer o leitor compreender melhor o texto. O objetivo da seção “Suposições Implı́citas”
é abrir a mente, despertar a criatividade, mostrar que qualquer texto supõe um certo raciocı́nio
do leitor implicitamente e que isto poderia ser diferente. O objetivo é despertar o leitor para a
pesquisa em Lógica, embora saibamos que este é apenas um texto introdutório de lógica.
2
Unidade 1
Introdução e História
Lógica é a disciplina que estuda o raciocı́nio dedutivo, o que se pode deduzir a partir de premissas
consideradas verdadeiras. Como exemplo inicial, a partir das frases “todo número par é divisı́vel
por 2” e “6 é par”, pode-se concluir que “6 é divisı́vel por 2”. Não interessa à lógica se as duas
primeiras frases são verdadeiras no mundo real — o que interessa é que, se são verdadeiras, pode-se
deduzir a terceira frase a partir delas. Mortari [9] dá a seguinte definição de lógica:
Lógica é ciência que estuda princı́pios de inferência, tendo o objetivo principal de determinar em
que condições certas coisas se seguem (são conseqüência), ou não, de outras.
A lógica que estudaremos é a Lógica Matemática, que é a que interessa à Computação. Esta
lógica é dividida em quatro áreas: teoria da prova, teoria dos modelos, teoria axiomática dos
conjuntos e computabilidade. Neste curso veremos uma introdução à teoria da prova e à teoria
dos modelos. Computabilidade é uma área vista em disciplinas de Teoria da Computação ou
Linguagens Formais e Autômatos.
3
como “esta frase é falsa”. Outro falso paradoxo é a frase “toda regra tem exceção”.
Paradoxos em geral são frases que referenciam a si mesmas. Mas nem todas as frases deste
tipo são paradoxais. Por exemplo, a frase “esta frase é verdadeira” não é paradoxal. Ela pode
perfeitamente ser verdadeira. Grande parte dos paradoxos contém uma auto referência e uma
negação, como “esta frase é falsa”.
A lógica era uma das disciplinas estudadas tanto na Idade Antiga quanto na Idade Média,
chegando aos tempos modernos. Na idade média, Lógica era parte do trivium (Lógica, Gramática
e Retórica).2 Contudo, aparentemente nada faltava ao estudo da lógica e esta disciplina não foi
um tópico sério de pesquisa até meados do século XIX quando recomeçou o interesse no assunto,
começando com Boole, Peano, Fregue e Bertrand Russel. O interesse destes matemáticos era
prover uma base sólida para a Matemática.
Há inumeráveis tipos de lógica como lógica clássica, modal, paraconsistente, multivalorada,
intuicionista, fuzzy, temporal, quântica, ... A lógica que mais interessa à Computação é a Lógica
Matemática, que abstrai os raciocı́nios utilizados em Matemática. Esta lógica utiliza três princı́pios
colocados por Aristóteles:
1. princı́pio da não contradição: não é verdade que uma proposição A e a sua negação sejam
verdadeiras ao mesmo tempo. Em sı́mbolos (que estudaremos mais tarde), escrevemos
¬(A ∧ ¬A)
As lógicas chamadas clássicas, entre as quais se incluem a lógica Matemática, seguem os três
princı́pios acima. As lógicas não clássicas (paraconsistente, multivalorada, fuzzy, quântica, etc)
não seguem um, dois ou três destes princı́pios.
No final do século XIX e inı́cio do século XX surgiram diversos paradoxos lógicos, classificados
como sintáticos (ou lógicos) e semânticos. O paradoxo sintático mais conhecido foi descoberto por
Russel em 1902 enquanto estudava teoria dos conjuntos. Os paradoxos aparecem quando conjuntos
podem ser definidos a partir de uma lei ou fórmula qualquer. Vejamos o paradoxo.
Considere o conjunto C de todos os conjuntos que não pertencem a si mesmos:
C = {x : x 6∈ x}
A fórmula “x 6∈ x” que aparece depois dos “:” é a condição para um elemento pertencer ao
conjunto C. Chamaremos esta fórmula de A. Então,
4
• qualquer y que pertence a C obedece a esta fórmula/condição; isto é, se y ∈ C, então y 6∈ y.
Se y não pertence a C então y não obedece à fórmula A. Isto é, se y ∈
6 C, então y ∈ y.
1. se a frase “esta frase é falsa” for verdadeira, então ela diz que é falsa. Contradição. Se ela
for falsa, então o contrário é verdadeiro, ou seja, ela é verdadeira;
5
Mas esta frase contém menos do que vinte palavras. Logo n pertence a M . Contradição,
pois assumimos que ele não pertencia a este conjunto. Não é possı́vel definir o conjunto M
sem cair em uma contradição;
3. paradoxo de Grelling (1908). Um adjetivo é chamado de autológico se a propriedade que ele
denota se aplica a si mesmo, e de heterológico em caso contrário. Por exemplo, “vermelho”
é heterológico, pois este adjetivo não é vermelho (adjetivos não têm cor). Já “polissilábico”
é autológico, pois esta palavra possui seis sı́labas. “Monossilábico” é heterológico pois pos-
sui mais de uma sı́laba. Pergunta-se: é “heterológico” um adjetivo heterológico? Se sim,
a propriedade heterológica não se aplica à palavra “heterológica” e então esta palavra é
autológica. Contradição, pois assumimos que a palavra é heterológica. Se “heterológico”
é autológico, a propriedade heterológica se aplica à palavra “heterológico” e portanto esta
palavra é heterológica. Contradição novamente.
Os paradoxos semânticos não interessam à lógica que estudaremos, a lógica Matemática. Eles
envolvem noções da linguagem natural (Português) que não ocorrem em Matemática.
Começaremos o estudo pela mais simples de todas as lógicas, o Cálculo Proposicional. Esta
lógica é a base da Lógica de Primeira Ordem, que será estudada no Capı́tulo 3. A Lógica de
Primeira Ordem utiliza os chamados quantificadores universais (para todo x vale a proposição
P(x)) e existenciais (existe x tal que P(x)).
Exercı́cios
Atividades Individuais
1.1. Cite três lógicas. Qual estudamos neste curso? Por quê?
1.2. Faça uma sentença que não é verdadeira nem falsa diferente das que foram apresentadas no
texto.
1.3. Por quê a frase “toda regra tem exceção” não é paradoxal?
1.4. Explique com suas palavras o paradoxo de Berry.
1.5. Explique o paradoxo de Russel.
1.6. Procure na Internet algo mais sobre a história da lógica. Alguns tópicos e personagens
interessantes são:
6
Unidade 2
Cálculo Proposicional
Pergunta-se: João gosta da Maria? Usamos a palavra “ou” para indicar o “ou” não exclusivo. Isto
é, em “A ou B” podemos ter ambos verdadeiros.
Pode-se resolver esta questão sem utilizar nenhuma técnica e nenhuma lógica formal. Contudo,
o objetivo desta disciplina é formalizar este tipo de questão e formalizar técnicas para resolvê-
las. Em primeiro lugar, temos que converter estas frases para fórmulas que sejam mais facilmente
manipuláveis do que frases. Mas antes de fazer isto, temos que definir que linguagem utilizaremos.
É esta linguagem que este Capı́tulo define.
7
cuja linguagem usa o alfabeto composto por: ¬, ∨, ∧, −→, ←→, (, ) e as letras Vi com inteiros
positivos como subscritos: V1 , V2 , ... Os sı́mbolos ¬, ∨, ∧, −→ e ←→ são chamados de conectivos
primitivos e as letras Vi são as variáveis. O sı́mbolo ¬ lê-se “negação” ou “não é verdade que”. O
sı́mbolo ∨ é chamado de “ou”, ∧ de “e”, −→ é “implica” e ←→ é o operador bicondicional (ou
“se e somente se”). Em A−→B, chamamos A de antecedente e B de conseqüente.
Não se confunda: estes conectivos possuem estes nomes mas são tão somente sı́mbolos no papel
sem qualquer significado. Então “¬A” lê-se “não A” mas no estudo sintático isto não significa que
estamos afirmando que A seja falsa. São apenas dois sı́mbolos, ¬ e A, lado a lado.
As fórmulas do cálculo proposicional são definidas como
(b) ¬A, (A ∨ B), (A ∧ B), (A−→B) e (A←→B) são fórmulas se A e B são fórmulas;
Então são fórmulas: V1 , V5 , ¬V2 , (V1 ∨ V5 ), (V1 ∧ V5 ), (V4 ←→V1 )−→V7 ¬(V14 ∨ V7 ), ¬¬(V1 ∨
(V2 ∨ V3 )) e
(¬(V7 ∨ V1 ) ∨ (¬V1 −→V7 )).
Quando um sı́mbolo é utilizado para significar uma fórmula qualquer, este sı́mbolo é chamado
de meta-fórmula. Neste livro utilizaremos as letras A, B, C, ... para meta-fórmulas a menos de
menção em contrário. Então se tivermos uma fórmula A ∨ B, esta fórmula na verdade representa
infinitas fórmulas: tanto A como B podem ser substituı́das por qualquer fórmula válida do Cálculo
Proposicional.
Para facilitar a escrita e leitura de fórmulas, omitiremos os parênteses sempre que não houver
ambigüidade. E convencionaremos que os conectivos lógicos seguem a seguinte ordem de pre-
cedência, do maior para o menor: ¬, ∧, ∨, −→ e ←→. Apesar de ∧ ter maior precedência do que
∨, usualmente não escreveremos A ∧ B ∨ C e sim o mais legı́vel (A ∧ B) ∨ C. Os conectivos são
associados à esquerda: se B estiver entre dois conectivos iguais, B é associado com o conectivo da
esquerda. Assim, A−→B−→C é o mesmo que (A−→B)−→C.
Com esta convenção, as fórmulas podem ser escritas de maneira mais legı́vel:
fórmula original fórmula resumida
(¬A)←→(B ∧ C) ¬A←→B ∧ C
((A−→B)−→C)←→((B ∧ A) ∧ D) A−→B−→C←→B ∧ A ∧ D
Iremos mostrar como converter o exemplo dado no inı́cio do Capı́tulo para uma fórmula do CP.
Exemplo 2.1. Associaremos letras a pedaços de frases que podem ser verdadeiros ou falsos (em-
bora, por enquanto, não estamos interessados na verdade ou falsidade de fórmulas).
8
3. C é “João mora em São Paulo”;
4. D é “João gosta de Maria”.
Queremos saber se estas fórmulas implicam em D, que significa “João gosta de Maria”. A resposta
será vista na Seção 2.7.
Exercı́cios
2.1. Remova o maior número possı́vel de parênteses das seguintes fórmulas
((A ∧ B) −→ (¬(B) −→ (B −→ A)) ∧ C
(((A ∧ B)−→(¬(B)−→(B−→A))) ∧ C)
(¬A−→(B ∨ C))←→(((A ∧ B) ∨ C)←→A)
(A ∧ B) ∧ C
(A ∨ B)←→(A−→¬B)
(a) ¬¬¬¬A−→A ∧ ¬A
(b) ∨ ∧ ABA
(c) ((A1 −→A2 ) ∨ A1
9
1. Não é verdade que, se não fizer sol hoje, vai chover. A fórmula correspondente é ¬(¬A−→B)
na qual A é “vai fazer sol hoje” e B é “vai chover”;
4. Se i < 0, haverá um erro e uma mensagem de erro será impressa. A fórmula correspondente
é A−→B ∧ C, A é “i < 0”, B é “há um erro”, C é “uma mensagem de erro é impressa”;
6. Ele nasceu em São Paulo, Minas ou Bahia, A ∨ B ∨ C, A é “Ele nasceu em São Paulo”, B é
“Ele nasceu em Minas”, C é “Ele nasceu na Bahia”;
7. o número será ı́mpar se e somente se o seu quadrado for ı́mpar. A fórmula correspondente é
A←→B onde A é “o número é ı́mpar” e B é “o quadrado do número é ı́mpar”;
8. Se o número for ı́mpar, o seu quadrado também o será. Se o quadrado do número for ı́mpar,
então o número será ı́mpar. A fórmula correspondente é (A−→B) ∧ (B−→A) na qual A é
“o número é ı́mpar” e B é “o quadrado do número é ı́mpar”;
Exercı́cios
2.6. Converta as frases seguintes para fórmulas do cálculo proposicional. Escreva o que cada
variável da fórmula significa.
(c) Uma de duas coisas acontecerá: se ele for bom, resolverá o problema. E se ele não for bom,
contratará alguém para resolvê-lo.
(g) Se o número é primo, ele não é divisı́vel por quatro mas pode ser divisı́vel por 3 e pode ser
divisı́vel por 2.
(h) Uma figura de quatro lados é um quadrado se todos os lados são do mesmo tamanho e todos
os ângulos entre os lados são iguais.
10
2.3 Semântica do Cálculo Proposicional
O estudo semântico de uma lógica é o estudo do significado que podemos dar às fórmulas da
linguagem. No cálculo proposicional, associaremos o significado esperado às fórmulas. Isto é, cada
fórmula poderá ser verdadeira ou falsa de acordo com o valor de suas variáveis.
Como associar um significado a uma fórmula como A∨B ou A∧B ∧C? Claramente, a primeira
fórmula é verdadeira se A ou B é verdadeiro. Será esta definição precisa? O que significa o “ou”
da frase “a primeira fórmula é verdadeira se A ou B é verdadeiro”? Será que este “ou” significa
que se ambos A e B forem verdadeiros, a frase é falsa? Isto é, o “ou” é exclusivo? Isto é, A ∨ B é
falso se A e B forem verdadeiros? Para retirar a ambigüidade da definição de verdade por meio de
palavras, precisamos de uma definição mais precisa de verdade. É isso que esta Seção apresenta.
Contudo, antes de estudar este tópico, veremos como fazer a ligação entre o “mundo real” e as
fórmulas do CP.
¬A é V se A for F e F se A for V;
A ∧ B é V se A e B forem ambos V;
11
A tabela verdade da negação é
A ¬A
V F
F V
Há duas colunas. Na primeira são colocados os valores verdade que A pode assumir. Natu-
ralmente, A pode ser V ou F. Na segunda coluna, são colocados os valores verdade da fórmula
¬A.
Pela segunda linha da tabela, quando A assume o valor V, mostra que ¬A assume o valor F.
A terceira linha diz que, quando A for F, ¬A será V. Note que ao invés de colocarmos A como
variável (V1 , V2 , ...), nós a colocamos como fórmula. A é uma meta-fórmula — representa uma
fórmula qualquer. Como uma variável é uma fórmula, também representa uma variável qualquer.
A tabela verdade do “ou” é mostrada abaixo.
A B A∨B
V V V
V F V
F V V
F F F
Há quatro combinações diferentes para os valores verdade de A e B. Logo a tabela possui
quatro linhas.
Em Português, quando se diz “vou almoçar lazanha ou feijoada”, queremos dizer uma coisa
ou outra, mas não as duas ao mesmo tempo (em geral, mas nem sempre!). Em geral, este é o
significado do “ou” em Português. Contudo, no CP, ∨ quer dizer um ou outro ou ambos. Então
o significado de ∨ não é exatamente o “ou” que conhecemos.
As tabelas verdade do ∧ e −→ são as seguintes:
A B A∧B
V V V
V F F
F V F
F F F
A B A−→B
V V V
V F F
F V V
F F V
A−→B é F apenas quando A é V e B é F. Então se A é F e B é V, A−→B é V. Mas será que
12
isto faz sentido em Matemática? Afinal, estamos estudando lógica Matemática ! Para responder
isto, vamos examinar os raciocı́nios válidos nesta disciplina. Veja a seguinte dedução, criada por
Smullyan [1]:
5 = 5(subtraia 1)
4 = 4(substitua por algo equivalente)
22 = 22 (substitua por algo equivalente)
22 = (−2)2 (extraia a raiz)
2 = −2(subtraia 1)
1 = −3
Naturalmente, esta dedução está errada, pois se a2 = b2 , não podemos deduzir que a = b. Mas
e a dedução “Se 1 = −3 então 5 = 5”? Refaça os passos ao contrário e não encontrará nenhum
erro. A Matemática admite que se A é falso e B é verdadeiro, então A−→B é verdadeiro.
Um outro exemplo, citado por Mendelson [8], é a frase “se x é um inteiro ı́mpar, então x2 é
um inteiro ı́mpar”. Esta frase é verdadeira em Matemática. Se x for par, queremos que a frase
inteira seja considerada falsa? Claramente não. Considerando A como “x é um inteiro ı́mpar” e
B como “x2 é um inteiro ı́mpar”, então se x for par teremos um caso no qual A é F e queremos
que A−→B seja V. É por causa de raciocı́nios como estes, da Matemática, que a tabela verdade
de −→ considera A−→B verdadeiro sempre que A é F.
Em lı́ngua natural, sempre se exige alguma conexão causal entre A e B quando se emprega
a sentença A−→B. Em Lógica Matemática, sendo uma disciplina formal, que nada conhece do
mundo fı́sico, não se exige nenhuma conexão entre o antecedente A e o conseqüente B. Então, as
sentenças abaixo são verdadeiras na lógica que estudamos:
Note que na última sentença, “hoje é quarta-feira” assume V ou F dependendo do dia em que a
frase é lida. Não interessa se ela é V ou F. A sentença toda é verdadeira de qualquer forma.
A B A←→B
V V V
V F F
F V F
F F V
O operador bicondicional, representado por ←→, indica que duas sentenças são logicamente
equivalentes: A←→B é V se e somente se A é V quando B é V e A é F quando B é F.
As tabelas verdade dos conectivos lógicos definem precisamente como calcular os valores verdade
das fórmulas ¬A e A ∨ B, A ∧ B, A−→B e A←→B dados os valores de A e B. Estas tabelas
13
verdade são como tabuadas e serão empregadas futuramente para calcular o valor verdade de
fórmulas mais complexas.
No inı́cio desta seção, mapeamos frases em Português para fórmulas do CP. Contudo, isto foi
feito apenas para introduzir os conceitos, facilitar o aprendizado. O CP não se aplica ao mundo
real. Esta lógica foi feita para a Matemática e aı́ ela funciona perfeitamente. Em particular, se
A−→B é verdade, isto não quer dizer que A “causa” B. Dizemos A “implica” B, mas a palavra
implica aqui não tem o significado usual da palavra implica em Português.
Exercı́cios
2.7. Faça as tabelas verdade de todos os conectivos.
2.8. Podemos afirmar que, na Matemática, (7 < 1)−→(0 = 0)? E (7 < 1)−→(0 = 1)? Se sim,
faça uma prova informal destes dois “teoremas”.
2.9. A sentença “Se a terra é quadrada então o mar é lilás ou o céu é verde” é verdadeira na lógica
que estudamos ? Isto quer dizer que o mar é lilás ? Ou que o céu é verde ?
A ¬A
V F
F V
14
Em f∧ : {V, F }2 −→{V, F }, f∧ (V, V) = V e f∧ (V, F) = f∧ (F, V) = f∧ (F, F) = F.
A cada fórmula corresponde uma função de verdade f . Como exemplo, para a fórmula
A−→(¬B ∨ C) temos uma função f de três variáveis tal que f (V, V, F ) = F e f (x, y, z) = V
para quaisquer outras combinações de valores para x, y e z. Mas como sabemos isto? Simples: é
só calcular o valor da função. Vejamos:
f (V, V, F ) = V −→(¬V ∨ F ) = V −→(F ∨ F )
substituindo ¬V por F , uma informação tomada da tabela verdade de ¬, temos
f (V, V, F ) = V −→(¬V ∨ F ) = V −→(F ∨ F )
A B A∨B
V V V
V F V
F V V
F F F
temos que F ∨ F é igual a F (última linha). Então
f (V, V, F ) = V −→(¬V ∨ F ) = V −→(F ∨ F ) = V −→F
Pela tabela verdade de −→,
A B A−→B
V V V
V F F
F V V
F F V
15
fórmula sub-fórmulas
A−→B A, B, A−→B
A ∧ B−→A ∨ B A, B, A ∧ B, A ∨ B, A ∧ B−→A ∨ B
(V1 ∨ (V2 −→V1 ))←→(V3 −→(V1 ∨ ¬V2 )) V1 , V2 , V3 , V2 −→V1 , V1 ∨ (V2 −→V1 ),
¬V2 , V1 ∨ ¬V2 , V3 −→(V1 ∨ ¬V2 ),
(V1 ∨ (V2 −→V1 ))←→(V3 −→(V1 ∨ ¬V2 ))
Pode-se construir uma tabela verdade para uma fórmula qualquer, por exemplo, para (¬A ∧ B)−→A:
A B ¬A ¬A ∧ B (¬A ∧ B)−→A
V V F F V
V F F F V
F V V V F
F F V F V
Há uma coluna para cada variável que aparece na fórmula, A e B. Depois, uma coluna para
cada sub-fórmula.
Consideramos sempre a precedência dos operadores lógicos. A fórmula (¬A∧B)−→A é equiva-
lente a ¬A ∧ B−→A pois os parênteses são desnecessários (−→ tem maior precedência do que ∧).
Consideramos ¬A ∧ B−→A como X−→Y com X =def ¬A ∧ B e Y =def A e não como X ∧ Y como
X =def ¬A e Y =def B−→A. Afinal, temos que avaliar o −→ antes de ∧, a menos que existam
parênteses, como em ¬A ∧ (B−→A). Mas esta seria uma outra fórmula, não equivalente à fórmula
do exemplo.
Para calcular os valores de uma coluna, observamos os valores de colunas anteriores e as ta-
belas verdades dos conectivos lógicos. Por exemplo, considere a quarta coluna da tabela acima,
correspondente a ¬A ∧ B. Já temos ¬A calculado na terceira coluna. Como temos um ∧, em cada
linha temos que tomar o valor da terceira coluna (¬A)e da segunda (B). Para a primeira linha,1
temos F para ¬A e V para B. Consultando a tabela verdade de ∧, temos a resposta: F , que é
colocada na primeira linha da quarta coluna.
Na fórmula completa, (¬A∧B)−→A, terceira linha, consultamos o valor da sub-fórmula ¬A∧B
e de A, que são V e F , respectivamente. Então temos que calcular V −→F que, pela tabela verdade
de −→, é F , que é colocado na terceira linha, quinta coluna.
Como um outro exemplo, considere (A ∧ B)−→((¬A ∨ B)←→¬B). Temos que A ∧ B e ((¬A ∨
B)←→¬B) são sub-fórmulas. Desta última podemos tirar que ¬A ∨ B e ¬B são sub-fórmulas.
Continuando, ¬A e ¬B são sub-fórmulas. A tabela verdade desta fórmula seria então
16
verdade, que neste caso são A e B. Se há n entradas, n variáveis, temos 2n linhas na tabela. Note
que A e B não são variáveis da linguagem do CP, mas sim meta-fórmulas: representam fórmulas
quaisquer.
Pode-se fazer uma tabela verdade de forma abreviada colocando-se o valor verdade de uma
sub-fórmula sob o seu conectivo principal. Vejamos um exemplo:
A B (A ∧ B) ∨ (¬ A ∧ ¬ B)
V V V V V V F V F F V
V F V F F F F V F V F
F V F F V F V F F F V
F F F F F V V F V V F
A B (A ∧ B) −→ ((¬ A ∨ B) ←→ ¬ B)
V V V V V F F V V V F F V
V F V F F V F V F F F V F
F V F F V V V F V V F F V
F F V F F V V F V F V V F
2.5 Tautologias
Uma fórmula que é sempre verdadeira, independentemente dos valores atribuı́dos às suas variáveis,
é chamada de tautologia. Por exemplo, V1 −→V1 é sempre verdadeira. Utilizando meta-fórmulas,
A−→A é sempre verdadeiro. A tabela verdade de uma tautologia possui apenas V na coluna que
expressa o resultado:
A ¬A A ∨ ¬A
V F V
V F V
F V V
F V V
Assim, A ∨ ¬A é uma tautologia.
Se A é uma tautologia, escrevemos A. Se A não é tautologia, escrevemos 6 A.
17
Se uma fórmula é sempre falsa ela é chamada de contradição. Se uma fórmula pode ser V ou
F dependendo dos valores das variáveis, ela é uma contingência.
Definição 2.2. Se A−→B é uma tautologia, dizemos que A implica logicamente B ou que B é
uma conseqüência lógica de A.
A B B−→A A−→(B−→A)
V V V V
V F V V
F V F V
F F V V
(a) podemos partir de uma tautologia conhecida e modificá-la para encontrar outra tautologia:
1. A ∨ ¬A é uma tautologia;
2. (A ∨ ¬A) ∨ B também é uma tautologia pois alguma coisa verdadeira “ou” qualquer
coisa é verdadeira. Isto é, considerando > uma tautologia, > ∨ X é tautologia, qualquer
que seja X;
3. ¬A ∨ A, pois X ∨ Y possui a mesma tabela verdade que Y ∨ X;
4. A−→A, pois partindo de ¬A ∨ A, pela definição de −→ chegamos a A−→A. Isto é,
X−→Y é definido como ¬X ∨ Y . Tomando-se X = Y = A em ¬A ∨ A, chegamos em
A−→A;
5. (B ∧ C)−→(B ∧ C), substituindo A em A−→A por B ∧ C, já que A é uma meta-fórmula
pode ser substituı́da por qualquer coisa);
6. ¬(B ∧ C) ∨ (B ∧ C) pela definição de −→.
(b) utilize a tabela verdade dos conectivos lógicos. A−→B por exemplo, é sempre verdadeiro
(tautologia) se A for sempre falso (contradição) ou B for sempre verdadeiro (tautologia).
Então são tautologias
1. ¬(A ∨ ¬A)−→(B ∧ C)
18
2. (A ∧ ¬A)−→(B ∧ C−→B−→A)
3. (A ∨ C ∨ ¬B)−→¬A ∨ A
4. (A ∨ B)−→(¬(A ∨ ¬A)−→(B ∧ C))
Suponha que tenhamos uma fórmula A que utiliza as variáveis V1 , V2 , ... Vn . Não necessaria-
mente uma fórmula utiliza as primeiras n variáveis, mas assumiremos sem perda de generalidade
que sim.2
Utilizaremos =def para associar uma meta-fórmula a uma fórmula. Por exemplo, A =def V1 ∨V2
associa a fórmula V1 ∨ V2 à meta-fórmula A.
Definição 2.4. Dizemos que uma seqüência s = (s1 , s2 , ...sn ), na qual cada si é V ou F, satisfaz
φ se, quando Vi tem o valor si , o valor de φ é V. Neste caso, usaremos a notação s φ. Assuma
que φ utilize no máximo as variáveis V1 , V2 , . . ., Vn — pode utilizar menos.
Explicaremos melhor esta definição com um exemplo. Uma seqüência pode ser s = (V, F ) e,
neste caso, s1 = V e s2 = F . Esta seqüência associa, implicitamente, o valor V à variável V1 e F
à variável V2 do cálculo proposicional.
Considere agora a fórmula A =def V1 ∨V2 e a seqüência s como definida acima; isto é, s = (V, F ).
Assumindo que o valor de V1 é V e o de V2 é F, temos que V1 ∨ V2 é V. Assim, s = (V, F ) satisfaz
V1 ∨ V2 . Mas s = (F, F ) não satisfaz A, pois F ∨ F = F . Neste caso, s1 = s2 = F e V1 é associado
a F e V2 a F .
Mais um exemplo: a seqüência s = (F, V, V ) satisfaz a fórmula V1 ∨((V2 ∧V3 )−→V1 )? Vejamos:
F ∨ ((V ∧ V )−→F ) = F ∨ (V −→F ) = F ∨ F = F
19
fórmula:
V1 V2 V2 ∨ V1 V1 −→(V2 ∨ V1 )
V V V V
V F V V
F V V V
F F F V
Claramente, cada seqüência corresponde a uma linha da tabela verdade. Por exemplo, s =
(V, V ) corresponde à primeira linha e s = (F, V ) à terceira linha.
Concluimos que uma seqüência de tamanho n corresponde a uma linha de uma tabela verdade
de uma fórmula com n variáveis. Como a tabela verdade de uma fórmula com n variáveis tem 2n
linhas, uma fórmula com n variáveis pode ser testada contra 2n seqüências diferentes (uma para
cada linha da tabela verdade). Claramente, uma fórmula é tautologia se qualquer seqüência s a
satisfaz. Uma fórmula é contradição se nenhuma seqüência s a satisfaz.
A tabela verdade para uma fórmula A define uma função de verdade fA que toma como
parâmetros valores para as variáveis envolvidas.3 Por exemplo, a fórmula A =def V1 ∨ V2 define
uma função fA tal que fA (V, V ) = V , fA (V, F ) = V , fA (F, V ) = V e fA (F, F ) = F . Os parâmetros
para esta função são precisamente as seqüências de que falamos acima. Assim, podemos escrever
que, se s = (V, F ), então fA (s) = V .
Como um outro exemplo, suponha que A =def ¬V1 ∧ V2 −→V3 e fA seja a função de verdade de
A. Então, se s = (V, F, F ), então fA (s) = V . Como a seqüência pode ter mais elementos do que
os que aparecem na fórmula, se s = (F, V, F, V, F ), então fA (s) = F também.
Prova. Provaremos por contradição. Assuma que A e A−→B são tautologias mas B assuma o
valor F para alguma atribuição de valores às variáveis de A e B. Isto é, existe uma seqüência s
tal que a função de verdade de B, fB , assume F com s: fB (s) = F . Nesta atribuição de valores,
A possui o valor V, fA (s) = V , pois é uma tautologia. Então temos que A−→B é F pela tabela
verdade de −→. Contradição, pois assumimos que A−→B é uma tautologia.
20
Definição 2.5. Dizemos que uma seqüência s satisfaz um conjunto de fórmulas Γ se s satisfaz
cada uma das fórmulas de Γ.
Definição 2.6. Dizemos que uma fórmula B é conseqüência lógica de um conjunto de fórmulas Γ
se cada seqüência s que satisfaz Γ também satisfaz B. Escrevemos Γ B.
Exercı́cios
2.10. Usando tabelas verdade, prove que as fórmulas seguintes são tautologias.
(a) ¬¬A←→A
(b) (A−→B)←→(¬A ∨ B)
(e) A ∧ B−→A
(f ) A−→(A ∧ A)
(g) ¬C ∨ (A−→(B−→C))
2.11. Explique: a tabela verdade dada abaixo na verdade representa infinitas tabelas verdade.
A ¬A
V F
F V
2.13. Escreva a tabela verdade do “ou” exclusivo, cujo sı́mbolo é ⊕. Considere que A ⊕ B é
verdadeiro se apenas A ou apenas B é verdadeiro.
21
2.16. Defina explicitamente a função de verdade correspondente à seguinte tabela verdade:
A B C R
V V V V
V V F F
V F V V
V F F F
F V V F
F V F V
F F V F
F F F V
22
2.6 Equivalência Lógica
Duas fórmulas são logicamente equivalentes se assumem o mesmo valor verdade para a mesma
sequência. Isto é, se as funções verdade de ambas são iguais. Por exemplo, φ =def A−→(B−→C)
e ψ =def A ∧ B−→C são logicamente equivalentes. Escrevemos φ ≡ ψ. As funções verdade de
ambas são iguais; isto é, fφ = fψ . Se fizermos uma tabela verdade contendo ambas as fórmulas, a
coluna correspondente a φ será igual à de ψ:
A B C φ ψ
V V V V V
V V F F F
V F V V V
V F F V V
F V V V V
F V F V V
F F V V V
F F F V V
(a) A ∨ B ≡ B ∨ A
(b) A ∧ B ≡ B ∧ A
(c) (A ∨ B) ∨ C ≡ A ∨ (B ∨ C) (Associatividade do ∨)
(d) (A ∧ B) ∧ C ≡ A ∧ (B ∧ C) (Associatividade do ∧)
Você deve decorar estas equivalências. Elas não serão fornecidas nas avaliações.
Há outras equivalências menos úteis:
(b) (A ∧ B) ∨ ¬B ≡ A ∨ ¬B
23
(c) (A ∨ B) ∧ ¬B ≡ A ∧ ¬B
(f) A ∨ (A ∧ B) ≡ A
(g) A ∧ (A ∨ B) ≡ A
Como um bom exercı́cio, prove algumas destas equivalências utilizando tabelas verdade. Lembre-
se que A é logicamente equivalente a B se e somente se A←→B é uma tautologia. Neste caso, as
colunas de resultado das tabelas verdade de A e B são iguais.
Como exemplo, provaremos (i) utilizando uma tabela verdade.
A B A ←→ B (A ∧ B) ∨ (¬ A ∧ ¬ B)
V V V V V V V V V F V F F V
V F V F F V F F F F V F V F
F V F F V F F V F V F F F V
F F F V F F F F V V F V V F
(a) > ∧ A ≡ A
(c) ⊥ ∧ A ≡⊥
(d) ⊥ ∨ A ≡ A
24
A veracidade destas afirmações podem ser facilmente conferidas utilizando a tabela verdade do
∧ e ∨.
> A >∧A
V V V
V F F
Na coluna de >, aparece apenas V, pois > só pode assumir o valor V (é uma tautologia). A
coluna de resultados possui os valores VF, de cima para baixo, que são exatamente os valores que
A assume. Isto é, quando A for V, > ∧ A será V. E quando A for F, > ∧ A será F. Em resumo,
> ∧ A é logicamente equivalente a A, em sı́mbolos, > ∧ A←→A
> A >∨A
V V V
V F V
Em um ∨, sempre que um dos valores for V, o resultado será V. Como > é sempre V, o resultado
de > ∨ A será sempre V.
⊥ A ⊥ ∧A
F V F
F F F
⊥ A ⊥ ∨A
F V V
F F F
Note que a coluna de resultados, ⊥ ∨A, possui exatamente os mesmos valores que a coluna do
A. Logo, A e ⊥ ∨A são logicamente equivalentes.
Exercı́cios
2.21. Considerando que (A−→B) é logicamente equivalente a (¬A ∨ B), então a fórmula
C ∧ ((A−→B)←→C)
é logicamente equivalente à fórmula
C ∧ ((¬A ∨ B)←→C)?
Qual proposição garante isto?
2.22. Prove que as seguintes fórmulas são logicamente equivalentes.
25
(c) (B ∨ ¬C) ∧ ((B ∨ ¬C) ∨ B) e (B ∨ ¬C)
2.23. É V1 ∧V2 uma conseqüência lógica do conjunto {V1 −→(V2 ∨V1 ), V1 ←→¬V2 , (V1 ∧¬V2 )−→(V2 −→¬V1 )}?
2.24. Prove: se A ∧ B é tautologia, então A e B são tautologias.
2.25. Dada a fórmula A−→B podemos dizer que A implica logicamente B? Dada a fórmula
A←→B podemos dizer que A é logicamente equivalente a B?
2.26. Prove que as seguintes fórmulas são logicamente equivalentes.
(b) A−→B ≡ ¬A ∨ B;
Neste caso, chamamos ¬ e ∨ de conectivos básicos e os outros de conectivos derivados. Uma per-
gunta então surge naturalmente: poderı́amos utilizar outros conectivos como básicos? Poderı́amos
utilizar ∧ e ∨, por exemplo? Ou ∧ e ¬? Deixemos de lado esta questão e estudemos outra: as
fórmulas que utilizam os conectivos ¬ e −→ conseguem gerar todas as tabelas verdade possı́veis?
Refinando a pergunta, as fórmulas de duas variáveis, usando ¬ e −→, conseguem gerar todas
as tabelas verdade que utilizam duas variáveis? As fórmulas de três variáveis, usando ¬ e −→,
conseguem gerar todas as tabelas verdade de três variáveis? Poderia acontecer que, por exemplo,
26
uma fórmula de duas variáveis, utilizando somente ¬ e −→ nunca poderia dar origem à seguinte
tabela verdade:
A B ?
V V F
V F F
F V V
F F F
Isto não seria bom, pois significaria que o CP não consegue dar conta de todos os raciocı́nios
possı́veis — ela não conseguiria expressar a realidade. Então perguntamos: fórmulas que utilizam
n
apenas os conectivos ¬ e −→ conseguem gerar todas as 22 tabelas possı́veis para fórmulas de n
variáveis? Para n variáveis, temos 2n linhas na tabela verdade. Cada uma destas linhas na coluna
n
resultados pode ser V ou F. Logo, existem 22 tabelas verdade definidas para n variáveis.
A resposta a esta pergunta é sim. Mas o raciocı́nio para tanto não é óbvio. Veremos o porquê
desta resposta em partes.
Definição 2.7. Uma disjunção é uma seqüência de fórmulas separadas por ∨. Por exemplo,
A ∨ B ∨ C.
Por exemplo, V1 , ¬V1 , V27 , ¬V7 e ¬V3 são literais. Mas não são literais: ¬¬V1 (pois há duas
negações) e V1 ∧ V2 (há um ∧).
Definição 2.10. Uma fórmula estará na forma normal disjuntiva (FND) se ela for uma dis-
junção consistindo de uma ou mais sub-fórmulas, cada uma das quais sendo uma conjunção de um
ou mais literais.
27
(a) uma fórmula FC é uma fórmula na FND;
(b) se A0 , A1 , . . . An são fórmulas FC´s, então (A0 ) ∨ (A1 ) ∨ . . . ∨ (An ) é uma fórmula na FND.
Note que, já que ∧ tem maior precedência do que ∨, os parênteses são desnecessários.
As fórmulas
estão na forma normal disjuntiva. É claro que a primeira fórmula está. A segunda, V1 ∧ V2 , não
possui ∨ — mas não tem importância, pois a definição não exige que exista pelo menos um. A
terceira fórmula é apenas uma variável, que também esta na FND, pois a definição também não
exige que exista pelo menos um ∧.
n
Considere Rj = Rj1 ∧ Rj2 ∧ . . . Rj j no qual Rji é um literal de uma variável qualquer (não
necessariamente da variável Vi ). Em Rji usamos dois ı́ndices, j e i sendo que na definição de Rj
apenas o ı́ndice i varia (de i = 1 a i = nj ). Note também que Rj e Rji são variáveis diferentes,
apesar de usarem o mesmo nome R. Então Rji não é Rj elevado ao expoente i e sim uma variável
com dois ı́ndices. A fórmula Rj pode ser escrita como
nj
^
Rj = Rji
i=1
W
Note que é um sı́mbolo utilizado para fazer um ∨ entre um conjunto de fórmulas da mesma
fazer a soma de um conjunto de números (como em Σ10
forma que Σ é utilizado para V n=1 n = 55). A
mesma observação vale para .
Definição 2.11. Uma fórmula estará na forma normal conjuntiva (FNC) se ela for uma con-
junção consistindo de uma ou mais sub-fórmulas, cada uma das quais sendo uma disjunção de uma
ou mais variáveis ou negação de variáveis.
28
(a) uma fórmula FD é uma fórmula na FND;
(b) se A0 , A1 , . . . An são fórmulas FD´s, então (A0 ) ∨ (A1 ) ∨ . . . ∨ (An ) é uma fórmula na FNC.
estão na forma normal conjuntiva. Observe que as três últimas fórmulas, V1 , ¬V2 e V1 ∨ V2 , estão
na forma normal disjuntiva e também na forma normal conjuntiva.
n
Considere Rj = Rj1 ∨ Rj2 ∨ . . . Lj j no qual Rji é um literal de uma variável qualquer (não
necessariamente da variável Vi ). A fórmula Rj pode ser escrita como
nj
_
Rj = Rji
i=1
Observação: cada função de verdade corresponde a uma tabela verdade. A primeira linha desta
tabela verdade contém uma variável para cada argumento da função e uma fórmula que corresponde
ao resultado da função. Por exemplo, para a função verdade f∧ na qual f∧ (V, V ) = V e f∧ (V, F ) =
f∧ (F, V ) = f∧ (F, F ) = F , temos a tabela verdade
A B A∧B
V V V
V F F
F V F
F F F
onde, a cada linha, o primeiro e o segundo valores correspondem ao primeiro e segundo argumentos
da função. A fórmula que corresponde à coluna de resultados da tabela verdade e à função é A∧B.
Isto é, f∧ (A, B) = A ∧ B.
29
2.9 Fórmula na FND Equivalente a Fórmula Dada
Dada uma tabela verdade, mostraremos como obter uma fórmula na FND que a gera. Utilizaremos
um exemplo. Considere a função f dada pela seguinte tabela verdade:
V1 V2 A
V V V
V F F
F V V
F F V
2. ¬V1 ∧ V2 para a linha 3. Esta sub-fórmula assume V se os valores das variáveis forem os da
terceira linha, pois ¬ F ∧ V = V ∧ V = V;
3. ¬V1 ∧ ¬V2 para a linha 4. Esta sub-fórmula assume V se os valores forem os da quarta linha,
pois ¬ F ∧¬ F = V ∧ V = V
Quando os valores assumidos forem os da primeira linha, a fórmula (V1 ∧ V2 ) será verdadeira e,
como temos um “ou” de expressões, o valor da fórmula toda será V. O mesmo se aplica à linhas três
e quatro. Mas e se os valores forem os da segunda linha? Então o valor de A é F. Vejamos o porquê.
A fórmula A é uma disjunção das sub-fórmulas (V1 ∧ V2 ), (¬V1 ∧ V2 ) e (¬V1 ∧ ¬V2 ). Se qualquer
uma delas assumir o valor V para uma certa linha da tabela verdade; isto é, para certos valores
V ou F de V1 ou V2 , então a fórmula A assumirá V. Mas qualquer destas sub-fórmulas assume F
para os valores das variáveis da segunda linha. Nesta linha, V1 assume V e V2 , F. Vejamos:
30
3. para (¬V1 ∧ ¬V2 ) temos ¬ V ∧ ¬ F = F ∧ V = F
Na verdade, qualquer uma destas sub-fórmulas só é verdadeira na linha utilizada para construi-
la. Isto sempre ocorrerá porque cada sub-fórmula, sendo um ∧, é falsa se algum dos valores for
diferente dos valores daquela linha. Lembre-se que duas linhas quaisquer da tabela são diferentes
em pelo menos um dos valores atribuı́dos às variáveis. Por exemplo, as linhas 1 e 3 são diferentes
no valor da variável V1 , que é V na linha 1 e F na linha 3. Então como V1 ∧ V2 é V para os valores
da linha 1, obrigatoriamente é F para os valores da linha 3, pois temos um ∧.
O que conseguimos? A fórmula A =def (V1 ∧ V2 ) ∨ (¬V1 ∧ V2 ) ∨ (¬V1 ∧ ¬V2 ) é composta por
diversas fórmulas separadas por “ou” e todas elas assumem o valor F se a valoração é aquela da
segunda linha. E para cada uma das linhas 1, 3 e 4 uma das sub-fórmulas assume V, o que resulta
que A também assume V. Então obtemos o resultado esperado; isto é, esta tabela verdade é a da
fórmula A.
Observe que foi fundamental para a construção de A o fato de que, se tivermos várias meta-
fórmulas (ou variáveis) separadas por ∧, então o resultado será F se uma das meta-fórmulas for F
e o resultado é V somente se todas as meta-fórmulas (ou variáveis) forem V. E se tivermos várias
fórmulas separadas por ∨, o resultado só será F se todas as fórmulas (ou variáveis) forem F, sendo
V se pelo menos uma das meta-fórmulas ou variáveis for V.
Por esta técnica, a fórmula resultante estará sempre na Forma Normal Disjuntiva (FND).
Proposição 2.2. Cada função de verdade corresponde a uma fórmula envolvendo apenas os co-
nectivos ¬, ∧ e ∨.
Prova. Assumiremos que as variáveis são V1 , V2 , ... Vn . Para cada linha da tabela verdade, cada
uma destas variáveis assume o valor V ou F. Na linha i, seja Ci a fórmula U1i ∧ U2i ∧ ... ∧ Uni onde
Uji é Vj se a variável Vj assume o valor V e Uji é ¬Vj se Vj assume F. Seja A a fórmula que é a
disjunção de todos os Ci ’s onde o resultado da função é V (a última coluna é V). Ou seja, A é
Ci1 ∨ Ci2 ∨ ... ∨ Cik onde Ci1 , Ci2 , ... Cik correspondem a todas as colunas onde o resultado é V.
Claramente, há k linhas onde o resultado é V. Se não há nenhuma linha onde o resultado é V,
então A é V1 ∧ ¬V1 , uma contradição.
Afirmamos que A corresponde a esta tabela verdade. Suponha que as variáveis V1 , V2 , ... Vn
assumam os valores da linha i da tabela. Se o resultado, que está na última coluna desta linha, for
V, então Ci será V e todos os outros Ck serão falsos, resultando em A verdadeiro. Se as variáveis
assumem os valores de uma linha cujo resultado é F, então todos os Ci serão falsos, pois, para
cada Ci , pelo menos um dos valores Uji assumirá F, já que duas linhas da tabela diferem em pelo
menos um valor verdade para as variáveis. Como A é um “ou” de Ci ´s, A assume F. Conclui-se
que a fórmula A tal como construı́da representa a tabela verdade.
Proposição 2.3. Toda fórmula é logicamente equivalente a uma fórmula na forma normal dis-
juntiva.
Prova. A cada fórmula está associada uma função de verdade dada pela sua tabela verdade. Pelo
teorema 2.2, existe uma fórmula logicamente equivalente a A na FND.
31
Vejamos dois exemplos. Encontraremos uma fórmula para a tabela verdade
A B R
V V F
V F V
F V F
F F V
A B C R
V V V F
V V F F
V F V V
V F F F
F V V V
F V F F
F F V V
F F F F
1. A ∧ ¬B ∧ C para a linha 3;
2. ¬A ∧ B ∧ C para a linha 5;
3. ¬A ∧ ¬B ∧ C para a linha 7.
32
A B R
V V F
V F F
F V F
F F F
Muito simples. R é uma contradição e então faça uma contradição com as variáveis A e B.
Qualquer uma serve. Pode ser (A ∧ ¬A) ∨ (B ∧ ¬B).
Agora podemos sistematizar o algoritmo de encontrar a fórmula na FND que gera uma dada
tabela verdade. Suponha que tenhamos uma tabela verdade que utiliza as variáveis V1 , V2 , . . . Vn
e queremos encontrar uma fórmula R que a gere. Não há perda de generalidade em supor que as
variáveis são exatamente V1 , V2 , . . . Vn . Se a sua tabela tiver outras variáveis, basta renomeá-las.
Se não há nenhum valor V na coluna de resultados da tabela, então R é uma contradição
qualquer envolvendo as variáveis. Então R pode ser
(V1 ∧ ¬V1 ) ∨ (V2 ∧ ¬V2 ) ∨ . . . (Vn ∧ ¬Vn )
Podemos escrever esta fórmula como n
_
(Vi ∧ ¬Vi )
i=1
Suponha que há m linhas da tabela cujo resultado da coluna do R seja igual a V. Isto é, em
cada uma destas linhas, a avaliação de R com os valores das variáveis dados por aquela linha é
igual a V. Suponha que estas linhas sejam L1 , L2 , ... Lm . Para cada linha Lj e para 1 ≤ i ≤ n,
defina Rji como Vi se Vi assume o valor V nesta linha e como ¬Vi se Vi assume o valor F. Defina
agora
n
^
Rj = Rji
i=1
e m
_
R= Rj
j=1
Note que, para R assumir o valor V, basta que apenas um Rj assuma V. Para R assumir o
valor F, então todos os Rj têm que assumir F. Como já vimos, se um Rj assumir V, todos os
outros Rk , k 6= j, assumirão F.
33
Considere novamente a tabela verdade
V1 V2 A
V V V
V F F
F V V
F F V
Utilizaremos apenas as colunas cujo resultado é F. Neste caso, utilizaremos apenas a segunda
coluna, na qual V1 assume o valor V e V2 assume F. Negue as variáveis que assumem V e faça um
∨ entre todas elas. Então ficamos com ¬V1 ∨ V2 para esta linha. Como só há esta linha com valor
F, a fórmula logicamente equivalente a A na FNC é ¬V1 ∨ V2 . Note que esta fórmula também está
na FND.
Encontraremos uma fórmula para a tabela verdade
A B R
V V F
V F V
F V F
F F V
A B C R
V V V F
V V F F
V F V V
V F F F
F V V V
F V F F
F F V V
F F F F
34
2. ¬A ∨ ¬B ∨ C para a linha 2;
3. ¬A ∨ B ∨ C para a linha 4;
4. A ∨ ¬B ∨ C para a linha 6;
5. A ∨ B ∨ C para a linha 8.
A B R
V V V
V F V
F V V
F F V
Muito simples. R é uma tautologia e então faça uma tautologia com as variáveis A e B, como
por exemplo (A ∨ ¬A) ∧ (B ∨ ¬B).
Agora podemos sistematizar o algoritmo de encontrar a fórmula na FNC que gera uma dada
tabela verdade. Suponha que tenhamos uma tabela verdade que utiliza as variáveis V1 , V2 , . . . Vn
e queremos encontrar uma fórmula R na FNC que a gere. Não há perda de generalidade em
supor que as variáveis são exatamente V1 , V2 , . . . Vn . Se a sua tabela tiver outras variáveis, basta
renomeá-las.
Se não há nenhum valor F na coluna de resultados da tabela, então R é uma tautologia qualquer
envolvendo as variáveis. Então R pode ser
(V1 ∨ ¬V1 ) ∧ (V2 ∨ ¬V2 ) ∧ . . . (Vn ∨ ¬Vn )
Podemos escrever esta fórmula como n
^
(Vi ∨ ¬Vi )
i=1
Suponha que há m linhas da tabela cujo resultado da coluna do R seja igual a F. Isto é, em
cada uma destas linhas, a avaliação de R com os valores das variáveis dados por aquela linha é
igual a F. Suponha que estas linhas sejam L1 , L2 , ... Lm . Para cada linha Lj e para 1 ≤ i ≤ n,
defina Rji como Vi se Vi assume o valor F nesta linha e como ¬Vi se Vi assume o valor V. Defina
agora
n
^
Rj = Rji
i=1
e m
_
R= Rj
j=1
35
Note que, para R assumir o valor V, basta que apenas um Rj assuma V. Para R assumir o
valor F, então todos os Rj têm que assumir F. Se um Rj assumir V, todos os outros Rk , k 6= j,
assumirão F.
Prova. Pelo teorema acima, pode-se representar uma tabela verdade por uma fórmula contendo
apenas ¬, ∨ e ∧. Mas fórmulas que utilizam ∨ e ∧ podem ser substituı́das por fórmulas logicamente
equivalentes com ¬ e −→. Confira as equivalências lógicas dadas abaixo.
A ∧ B ≡ ¬(A−→¬B)
A ∨ B ≡ ¬A−→B
Concluı́mos que qualquer tabela verdade corresponde a uma fórmula contendo apenas ¬ e −→.
Proposição 2.5. Cada tabela verdade corresponde a uma fórmula contendo apenas ¬ e ∧ ou
apenas ¬ e ∨.
Prova. De acordo com a Proposição 2.2, cada tabela verdade pode ser gerada utilizando-se apenas
¬, ∧ e ∨. Mas o “ou” lógico pode ser obtido a partir do “e” e vice-versa. As fórmulas abaixo são
tautologias.
A ∧ B←→¬¬A ∨ ¬B
A ∨ B←→¬¬A ∧ ¬B
Isto é,
A ∧ B ≡ ¬(¬A ∨ ¬B)
A ∨ B ≡ ¬(¬A ∧ ¬B)
36
Como um exemplo, considere a fórmula ϕ =def ¬C ∧ (¬D ∨ E) novamente. Vamos construir
uma fórmula logicamente equivalente a ela que utilize apenas ¬ e ∧. Como (A∨B) ≡ ¬(¬A∧¬B),
vamos tomar A como ¬D e B como E. Então
¬C ∧ (¬D ∨ E) ≡ ¬C ∧ ¬(¬¬D ∧ ¬E) ≡
¬C ∧ ¬(D ∧ ¬E)
Agora vamos construir uma fórmula logicamente equivalente a ϕ sem ∧. Considere A como
¬C e B como (¬D ∨ E) em (A ∧ B) ≡ ¬(¬A ∨ ¬B). Então
¬C ∧ (¬D ∨ E) ≡ ¬(¬¬C ∨ ¬(¬D ∨ E)) ≡
¬(C ∨ ¬(¬D ∨ E))
Quantos conectivos de uma variável podemos construir? Dois, pois existem duas tabelas ver-
dade com uma variável:
A f1 A f2
V F V V
F V F V
2
Há 22 = 24 = 16 conectivos diferentes que tomam duas variáveis como parâmetros, como ∧,
∨, −→ e ←→.
Proposição 2.6. Dada uma fórmula qualquer A, existe uma fórmula logicamente equivalente a
ela que utiliza apenas um conectivo binário.
Prova. Considere o conectivo ↓, negação conjunta (joint denial), cuja tabela verdade é
A B A↓B
V V F
V F F
F V F
F F V
37
verdade. É o conectivo “negação alternativa” (alternative denial) dado pela tabela verdade
A B A|B
V V F
V F V
F V V
F F V
Este é o conectivo nand, “not and”. Temos que (A|B) é logicamente equivalente a ¬(A ∧ B).
Algumas vezes utiliza-se ↑ para a negação alternativa.
Exercı́cios
2.29. Quais das fórmulas abaixo estão na FNC? E na FND?
(a) V1
2.30. Explique como se encontra uma fórmula na FNC que corresponde a uma certa tabela ver-
dade.
2.31. Encontre uma fórmula na FNC que seja logicamente equivalente à fórmula (A−→B)∧(¬B ∨
C), sendo A, B e C meta-variáveis.
2.32. Encontre uma fórmula na FND correspondente à seguinte tabela verdade, sendo A, B e C
meta-variáveis.:
A B C ?
V V V V
V V F F
V F V F
V F F F
F V V V
F V F V
F F V V
F F F F
2.33. Encontre uma fórmula na FNC e outra na FND correspondente à seguinte tabela verdade,
38
sendo A e B meta-variáveis.:
A B ?
V V V
V F F
F V F
F F V
2.34. Dadas as seguintes fórmulas na FND (FNC), encontre as fórmulas na FNC (FND) logica-
mente equivalentes sem construir nenhuma tabela verdade.
(c) A ∨ (¬A ∧ B ∧ C)
(a) (¬V1 ∧ V2 ) ∨ V5 ∧ V1
2.36. Explique como se encontra uma fórmula na FND que corresponde a uma certa tabela ver-
dade.
2.37. Suponha que uma tabela verdade tenha, na coluna de resultados, muito mais valores verdade
F do que V. É mais fácil encontrar a fórmula correspondente a esta tabela verdade na FNC ou na
FND ? Explique o porquê.
2.38. Encontre uma fórmula na FND que gere a seguinte tabela verdade.
V1 V2 V3 ?
V V V V
V V F V
V F V V
V F F V
F V V F
F V F V
F F V V
F F F V
39
2.12 Sintaxe do Cálculo Proposicional
O cálculo proposicional pode ser descrito por axiomas e regras de dedução, que veremos nesta
seção. A partir delas podemos obter infinitos teoremas. Surpreendentemente, ao construir a
tabela verdade de cada um destes teoremas, descobrimos que são tautologias! De fato, isto não
é surpresa: os axiomas e as regras foram feitos justamente para produzirem teoremas que são
tautologias.
Até agora, a única maneira de saber se uma certa fórmula B é conseqüência lógica de uma
outra fórmula A é construir a tabela verdade de A−→B. Mas isto é impraticável para fórmulas
com muitas variáveis. Nesta seção veremos como provar formalmente, se for possı́vel, que B é
consequência de A. E mais do que isso, há muitas proposições interessantes sobre os teoremas
do sistema formal que estudaremos nesta Seção. Infelizmente, por uma limitação de espaço,
estudaremos poucos deles.
A sintaxe do cálculo proposicional consiste de sua versão em Sistemas Formais (Apêndice A).
Um sistema formal consiste de:
1. um alfabeto de sı́mbolos;
(b) ¬A, (A ∨ B), (A ∧ B), (A−→B) e (A←→B) são fórmulas se A e B são fórmulas;
O sistema formal para o CP [2] definido nesta Seção utiliza apenas um esquema de axioma:
¬A ∨ A. Um esquema de axioma é um esqueleto a partir do qual podemos construir infinitos
axiomas pela substituição das variáveis que aparecem nele por fórmulas quaisquer. Por exemplo,
são axiomas construı́dos a partir deste esquema de axiomas: ¬V1 ∨ V1 , ¬V5 ∨ V5 , ¬(A−→B) ∨
(A−→B), ¬(¬A) ∨ (¬A), etc.
Há quatro regras de inferência que utilizam ¬ e ∨ e outras quatro que fazem a “conversão”
entre fórmulas contendo ∧, −→ e ←→ e fórmulas contendo apenas ¬ e ∨.
40
corte se A ∨ B e ¬A ∨ C são teoremas, B ∨ C é teoremas.
As regras são utilizadas para produzir teoremas. Cada uma delas toma um ou mais teoremas
como entrada e produz exatamente um teorema como saı́da. Todos os axiomas são considerados
teoremas. Antes de mostrar algums teoremas neste sistema formal, definiremos alguns conceitos e
sı́mbolos.
Definição 2.12. Uma prova é uma seqüência A1 , A2 , ... An de fórmulas tal que, para cada i, Ai
é um axioma ou é deduzido a partir de uma das regras de inferência utilizando Aj e/ou Ak , j < i
e k < i.
Uma prova envolve apenas elementos da linguagem, nenhum meta-elemento pode estar pre-
sente, como A e B, que são meta-fórmulas (representam fórmulas e estão fora da linguagem do
CP). Contudo, como um abuso de linguagem, chamamos de “prova” seqüências que empregam
meta-fórmulas.
41
Em resumo, é como se qualquer fórmula do conjunto Γ fosse considerado um axioma.
A seqüência A1 , A2 , . . . An com An = A é uma prova de A a partir de Γ. As fórmulas de Γ
são as hipóteses ou premissas de A. Escrevemos Γ ` A. Se Γ contiver um número pequeno de
fórmulas, podemos escrevê-las sem o { e } que delimitam o conjunto. Por exemplo,
B, C ` A
os invés de
{B, C} ` A
Utilizaremos Γ, A ` B para indicar que B é uma conseqüência do conjunto Γ ∪ {A}.
3. ¬A ∨ B, hipótese;
Mas ¬A ∨ B é, por definição, A−→B. Então temos
{A, A−→B} ` B
Sempre que A e A−→B forem hipóteses, podemos deduzir B. Podemos utilizar o teorema acima
como uma regra adicional que é chamada de Modus ponens (MP) : a partir de A e A−→B
deduzimos B. E porque podemos utilizar esta regra? Porquê sempre que tivermos A e A−→B
como teoremas em uma prova (estas duas fórmulas forem Ai e Aj , por exemplo), podemos utilizar
a prova acima para deduzir B. Ao invés de colocar a prova novamente, simplesmente citamos a
regra MP. A mesma observação vale para os teoremas dados abaixo. Estudemos outras provas.4
Exemplo 2.3. A ∨ B ` B ∨ A:
1. A ∨ B, hipótese;
2. ¬A ∨ A, axioma;
Então podemos utilizar a comutatividade do ∨ como regra também. Outras provas interessantes
são as que dizem que ¬¬A e A são deduzı́veis entre si.
1. A, hipótese;
4
A maioria das provas foram tomadas de [2].
42
2. ¬¬A ∨ ¬A, axioma;
Exemplo 2.5. ¬¬A ` A:
1. ¬¬A, hipótese;
2. ¬¬A ∨ A, expansão;
3. ¬A ∨ A, axioma;
5. A, eliminação com 4.
Exemplo 2.6. Se Γ = {A−→A ∨ B, A}, temos Γ ` A ∨ B:
3. A ∨ B, MP 1, 2.
Exemplo 2.7. {A−→B, A} ` B. Ou Γ ` B, sendo que Γ = {A−→B, A}.
1. A−→B por hipótese. Podemos colocar esta fórmula na seqüência de fórmulas da prova pois
ela pertence ao conjunto que aparece antes de `. Ou seja, A−→B pertence a {A−→B, A};
Exemplo 2.8. A−→B, B−→C, A ` C
3. A por hipótese;
43
4. B, MP com 1 e 3;
5. C, MP com 2 e 4.
2. A por hipótese;
3. B−→C, MP 1 e 2;
4. B por hipótese;
5. C, MP 3 e 4.
Exemplo 2.10. Provaremos que {A−→B, B−→C} ` A−→C. Definindo Γ = {A−→B, B−→C},
temos que
Γ ` A−→C se e somente se Γ, A ` C
pelo teorema acima (Γ ` A−→B sse Γ, A ` B com C no lugar de B). Provaremos Γ, A ` C e
então teremos provado Γ ` A−→C (pois é um se e somente se):
1. A, hipótese;
2. A−→B, hipótese;
3. B, MP com 1, 2;
4. B−→C, hipótese;
5. C, MP com 3, 4.
44
Os teoremas do cálculo proposicional podem ser gerados um a um por um programa de com-
putador (isto não foi provado aqui). Este programa não é difı́cil de se fazer nem muito grande.
Então todas as “verdades” do CP podem ser geradas, uma a uma. E mais ainda, a sintaxe nos
permite fazer deduções de novos teoremas utilizando-se outros teoremas e as regras de dedução.
A sintaxe então é uma ferramenta importante na criação de “novos” conhecimentos a respeito do
CP.
Há outros esquemas de axiomas e regras para o CP. Alguns deles utilizam muito mais esquemas
de axiomas. Alguns não utilizam nenhum axioma mas usam muitas regras.5 Daremos exemplos
de outros sistemas formais para o CP:
(a) este sistema formal utiliza os esquemas de axioma A ∨ A−→A, A−→A ∨ B, A ∨ B−→B ∨ A
e (B−→C)−→(A ∨ B−→A ∨ C). A única regra é MP;
Exercı́cios
2.40. Prove que A−→B, B−→C, C−→D, A ` D.
(a) ¬¬A−→A
(a) os axiomas são {2, 11}. As regras são: a) a soma de dois teoremas é teorema; b) a subtração
de dois teoremas é teorema;
(b) os axiomas são {5, 8}. As regras são: a) se n é teorema, 2n é teorema; b) se n e m são teoremas,
n + m é teorema;
45
2.48. Explique o que querem dizer as notações seguintes, sendo que A e B são fórmulas quaisquer
e Γ é um conjunto de fórmulas:
(a) A, B ` A
(b) Γ ` A
(c) A ` B
(d) A 6` ¬A
(a) ¬¬¬¬A−→A ∧ ¬A
(b) ∨ ∧ ABA
(a) Se ∆ ⊆ Γ e ∆ ` A, então Γ ` A.
(d) A ` A
(e) Se ` A, então Γ ` A
(f ) Se A ∈ Γ, então Γ ` A
46
proposicional foram feitos para representar a semântica que desejamos. Geralmente escolhemos
primeiro a semântica e depois projetamos o sistema formal que a represente.
Na Seção 2.12 vimos o que é a linguagem do cálculo proposicional, o seu axioma e as regras
de dedução deste sistema formal. A isto chamamos de sintaxe. A partir do esquema de axioma
e das regras conseguimos produzir teoremas. Considerando que o esquema de axioma e as regras
estão muito bem definidos, temos uma definição precisa do que é um teorema e do que não é. Por
exemplo, ¬¬V1 −→V1 é um teorema, como já foi provado. Por um abuso de linguagem, dizemos
que ¬¬A−→A é um teorema, sendo que A é uma meta-fórmula que pode ser substituı́da por
qualquer fórmula do CP. Na verdade, o que queremos dizer é que ¬¬A−→A é um esquema de
teorema: substituindo A por qualquer fórmula do CP, obtemos um teorema. Assim, são teoremas:
¬¬V1 −→V1 , ¬¬(V1 ∧ V1 )−→(V1 ∧ V1 ) e ¬¬((V1 ∧ V2 )−→V1 )−→((V1 ∧ V2 )−→V1 ). Um teorema é
uma fórmula da linguagem do CP e, de acordo com a definição dada no inı́cio da Seção 2.12, pode
conter apenas as variáveis V1 , V2 , ..., além de ser formada de acordo com regras bem definidas.
Apesar dos conectivos lógicos básicos terem nomes bem significativos (“negação” e “ou”), para
a sintaxe estes conectivos não significam absolutamente nada. Teoremas e mais teoremas
são deduzidos sem nunca se utilizar o significado das palavras “negação” e “ou” em Português.
Uma fórmula é teorema porque ela é o resultado de uma prova feita por regras bem definidas, não
porque seja de alguma forma “verdadeira” ou “falsa”.
Na Seção 2.4 vimos funções de verdade e suas correspondentes tabelas verdade. Para cada
fórmula do CP pode-se produzir a sua tabela verdade. A semântica do cálculo proposicional
associa a cada fórmula A um valor que pode ser V para verdadeiro ou F para falso conforme os
valores que se associam às variáveis que aparecem na fórmula A. Por exemplo, se A =def V1 ∧ V2
e associamos F a V1 e V a V2 , então associamos o valor verdade F a A. Uma fórmula que assume
sempre o valor V, qualquer que seja a associação de valores para as suas variáveis, é chamada de
tautologia. Por exemplo, V1 −→V1 é uma tautologia:
V1 V1 −→V1
V V
F V
Novamente, por um abuso de linguagem dizemos que A−→A é uma tautologia. Podemos até
construir a tabela verdade deste esquema de fórmula. A associação de fórmulas com os valores
verdade V ou F faz parte da semântica do CP. Os axiomas, regra de dedução e teoremas são
parte da sintaxe. Não há teoremas na semântica e nem fórmulas que são tautologias na sintaxe.
Então V1 −→V1 é um teorema do CP (sintaxe) e também uma tautologia (semântica). Surge
então uma pergunta: qual a relação entre sintaxe e semântica? Os teoremas do CP são obtidos
a partir de axiomas e regras e nada têm a ver, aparentemente, com tabelas verdade. Mas, estra-
nhamente, todos os teoremas do CP apresentados na Seção 2.12 são tautologias. Por exemplo,
47
pode-se provar que ¬A−→(A−→B) é teorema e:
A B ¬ A −→ (A −→ B)
V V F V V V V V
V F F V V V F F
F V V F V F V V
F F V F V F V F
Isto não é coincidência. Os axiomas e as regras de dedução de uma lógica não são feitas
aleatoriamente: eles são projetados justamente para espelhar uma semântica previamente definida.
Neste caso, os axiomas e a regra foram projetados justamente para fazerem com que todos os
teoremas sejam tautologias. E, como veremos, qualquer tautologia é também um teorema.
Em breve estudaremos uma lógica mais poderosa chamada de Lógica de Primeira Ordem.
Com esta lógica, podemos expressar, por exemplo, os axiomas da Aritmética considerando apenas
a soma e a subtração. Chamaremos este sistema de AS. Com estes axiomas e as regras da lógica,
pode-se expressar todas as verdades que conhecemos de AS. Então o que se fez foi o seguinte, nesta
ordem:
2. baseado no item 1, projetam-se axiomas para uma linguagem de primeira ordem de tal forma
que os teoremas do sistema sejam as fórmulas válidas definidas acima. Não é necessário definir
nenhuma regra nova, além daquelas da Lógica de Primeira Ordem (pode ser provado que isto
não é necessário). Então utiliza-se os axiomas da Lógica de Primeira Ordem (que incluem
os axiomas do CP) mais os axiomas definidos neste item;
3. prova-se que o sistema construı́do no item 2 só produz verdades como definido no item 1.
Se não, os axiomas devem ser refeitos para espelhar AS como o conhecemos. Isto seria
equivalente a verificar se todos os teoremas são tautologias no cálculo proposicional. No CP,
uma fórmula será verdadeira se ela for uma tautologia.
Verifica-se também se há alguma verdade como definida no item 1 que não possa ser produzida
como teorema. No cálculo proposicional, isto equivale a verificar se toda tautologia é também
um teorema. É fácil verificar que uma fórmula complexa é uma tautologia, basta produzir a
tabela verdade, mas provar que uma fórmula é teorema é em geral difı́cil.
E agora, temos um fato surpreendente: todas as verdades do sistema AS podem ser produzidas
automaticamente! Utilizando as regras de inferência, podemos produzir teoremas. Mas provou-se
que os teoremas são as verdades de AS. Então as verdades podem ser produzidas automaticamente.
Veja o esquema na Figura 2.1.
Agora, para produzir as verdades do AS, só precisamos aplicar as regras de inferência: todos
os teoremas possı́veis serão produzidos.
48
Figura 2.1: Como verdades são axiomatizadas
Figura 2.2: Relações possı́veis entre o conjunto das tautologias e o conjunto dos teoremas
Este é o esquema geral seguido ao criar uma teoria: parte-se de um sistema real, como a
aritmética, a geometria euclidiana, os sistemas vetoriais da álgebra, etc e constroem-se axiomas
que espelham este sistema. Estes axiomas são bons quando
(a) todos os teoremas que se podem obter são verdadeiros no sistema real;
A resposta para ambas as questões é sim, no cálculo proposicional. Poderia ser diferente: a)
poderiam existir tautologias que não são teoremas e b) algum teorema poderia não ser tautologia.
Estas duas situações são representadas na Figura 2.2 onde um cı́rculo é utilizado para representar
um conjunto. Os teoremas são produzidos por axiomas e regras e é fácil de assegurar que todos
os teoremas são tautologias (ou verdadeiros em um certo sentido). Contudo, verificar que todas
as tautologias são teoremas é uma tarefa mais difı́cil.
Um quadro comparativo entre sintaxe e semântica é mostrado na Figura 2.3.
A lógica é uma forma de produzirmos conhecimento do mundo real de forma automática.
Cuidado deve ser tomado com a palavra automática: normalmente nós mesmos somos os “com-
putadores” e aplicamos as regras da lógica para produzir teoremas. Mas esta tarefa poderia ser
feita por um computador. Dados os axiomas de um campo, como, por exemplo, da geometria
49
Sintaxe Semântica
axiomas mundo “real”
regras verdadeiro
provas falso
teoremas tautologias
sistema formal sı́mbolos com significado
sı́mbolos sem significado equivalência lógica
conseqüência lógica
(a) Bn é Bi ∨ B onde B é uma fórmula qualquer, i < n. Neste caso, Bn foi deduzido utilizando a
regra da expansão. Como Bi é tautologia pela HI, claramente Bi ∨ B é tautologia também;
(b) Bn é A e foi deduzida de uma fórmula Bi , i < n, pela regra da eliminação. Neste caso, Bi
é A ∨ A que é tautologia pela HI. Claramente A é tautologia. Se não fosse, A ∨ A não seria
tautologia também. Então Bn , que é A, é tautologia;
50
(A ∨ B) ∧ (¬A ∨ C)−→B ∨ C, verificamos que esta fórmula é uma tautologia (confira!).
Então pela Proposição 2.1, B ∨ C é tautologia.
(e) as outras regras seguem das equivalências lógicas já conhecidas do Cálculo Proposicional.
De fato, há uma forma mais geral dos dois teoremas dados acima:
Exemplo 2.11. Vimos no exemplo 2.5 que ¬¬A ` A, isto é, A pode ser provado admitindo-se
¬¬A como hipótese. Então, pelo Teorema 2.4, ¬¬A A. Isto é, A é uma conseqüência lógica de
¬¬A. Pela Definição 2.6 de conseqüência lógica, toda seqüência que satisfaz ¬¬A também satisfaz
A (claramente, apenas s = (V ) satisfaz ¬¬A e A). Então
¬¬A−→A
Exemplo 2.12. Sabemos que A∧B−→A∨B é uma tautologia (confira!). Então podemos escrever
A ∧ B−→A ∨ B
Sempre que A ∧ B for V, A ∨ B também o será. Então qualquer seqüência que satisfaz A ∧ B
também satisfaz A ∨ B. Logo
A∧B A∨B
Pelo Teorema 2.4,
A∧B `A∨B
Isto é, existe uma prova de A ∨ B utilizando-se A ∧ B como hipótese.
Definição 2.16. Uma teoria8 é consistente se não existe uma fórmula A tal que A e ¬A sejam
ambos teoremas.
7
Alguns autores [10] utilizam se e somente se para o teorema da completude, o que equivale a dizer que o teorema
da completude engloba o da correção.
8
Utilizamos a palavra teoria especificamente para designar um sistema formal. Logo, o CP é uma teoria.
51
Utilizando a notação `, temos que, se uma teoria é consistente, então ocorre ` A ou ` ¬A (ou
nenhum dos dois), mas não ambos. Uma outra maneira de dizer que uma teoria é consistente, no
caso da lógica clássica (que engloba o CP), é dizer que existe pelo menos uma fórmula A que não é
teorema. Isto é, existe pelo menos uma fórmula A tal que 6` A. Na verdade, se existe uma fórmula
que não é teorema então o sistema é consistente e portanto existem infinitas fórmulas que não são
teoremas. Para ver isto, tome uma fórmula A qualquer. Se A é teorema, ¬A não é. Então a partir
de qualquer fórmula podemos obter outra fórmula que não é teorema. Como existem infinitas
fórmulas, há infinitas fórmulas que não são teoremas. Note que podemos ter o caso em que nem
A nem ¬A são teoremas. Neste caso, A não é tautologia ou contradição.
Prova. Suponha que A e ¬A sejam ambos teoremas do CP. Então, pelo Teorema da Completude,
ambas são tautologias. Absurdo.
A notação ` A é utilizada para indicar que existe uma prova de A na teoria: A é teorema. A
notação 6` A é utilizada para indicar que não há prova de A na teoria — é impossı́vel conseguir
uma prova de A. Note que estamos discutindo o Cálculo Proposicional e todas as referências a
uma teoria referem-se a ele. Assim, ` A quer dizer, de fato, que existe uma prova de A no CP. Se
for necessário ser mais especı́fico, pode-se utilizar `CP A.
Se uma teoria é consistente, há fórmulas que não são teoremas: se ` A, então 6` ¬A e, se ` ¬A,
então 6` A. Um dos dois não é teorema e talvez nenhum dos dois o seja. Mas e se tivéssemos,
no CP, uma fórmula A tal que ` A e ` ¬A? Então todas as fórmulas do CP seriam teoremas !
Absolutamente qualquer fórmula poderia ser deduzida. É fácil de ver porquê. ¬A−→(A−→B) é
um teorema do CP (prove!9 ). Por MP, obtemos qualquer fórmula B. Um pouco mais formalmente,
temos:
queremos provar A, ¬A ` B. Então,
1. ¬A (Hipótese)
3. A−→B (MP 1, 2)
4. A (Hipótese)
5. B (MP 3, 4)
52
Dada uma entrada, as instruções do programa são executadas10 pelo computador que nada sabe
sobre o significado dos bits que manipula. É como se o programa e sua entrada fosse um sistema
formal onde um conjunto de regrinhas são aplicadas na entrada sistemática e precisamente até
que se produza uma saı́da, outra seqüência de bits. O programador sabe o significado dos bits de
entrada (a semântica dos bits) e faz com que o programa trabalhe esta semântica durante a sua
execução. Naturalmente, se o programa possui um erro esta semântica é obviamente violada. A
saı́da possui outra semântica associada.
Ao produzir uma entrada para um programa, partimos do mundo real, que é onde as coisas
possuem um significado (semântica) e produzimos uma entrada para o programa. Esta entrada é
uma ligação entre o mundo e o formato que o programa espera para esta entrada. Ao executar o
programa, ele produz uma saı́da através de sucessivas transformações desta entrada. Reforçamos
que o computador nada conhece do significado dos bits que manipula, exatamente como um sistema
formal (a sintaxe) nada conhece da semântica dos seus sı́mbolos — os teoremas são produzidos por
regras que independem do mundo real. Reafirmamos que a associação entre sintaxe e semântica é
feita por nós humanos.
Quando o programa pára e produz uma saı́da, uma seqüência de bits, novamente temos que
interpretar esta saı́da e dar-lhe um significado. É exatamente isto que fazemos em lógica. A entrada
corresponde aos axiomas. O programa corresponde às regras do cálculo proposicional, da lógica
de primeira ordem ou de algum sistema formal. A saı́da corresponde aos teoremas. Interpretando
os teoremas, obtemos conhecimento do mundo real.
Exercı́cios
2.52. Se 6` ϕ então ¬ϕ ? Isto é, ϕ é uma contradição?
2.54. Suponha que Γ seja infinito e Γ ` ϕ. Então existe ∆ ⊂ Γ, ∆ finito, tal que ∆ ` ϕ ?
(a) ϕ ` ψ ?
(b) ` ϕ−→ψ ?
(c) ` ϕ←→ψ ?
(d) ϕ←→ψ ?
(a) Γ ` ¬ϕ ?
(b) Γ 6` ϕ ?
10
Na forma de código de máquina e não no formato original feito em uma linguagem de programação — mas se
é uma coisa ou outra é irrelevante neste momento.
53
(c) Γ ¬ϕ ?
2.57. ϕ ` ϕ ? Se ϕ ∈ Γ, Γ ` ϕ ?
2.58. Seja Γ = {A1 , A2 , . . . An }. Então se:
(a) Γ ` ϕ temos A1 ∧ A2 ∧ . . . ∧ An ` ϕ ?
(b) A1 ∧ A2 ∧ . . . ∧ An ` ϕ temos Γ ` ϕ ?
Uma fórmula válida no CP pode ser derivada a partir do sı́mbolo inicial F. Pode-se fazer um
analisador sintático que reconheça as fórmulas válidas do CP. Um analisador sintático é a parte de
um compilador que verifica se o programa a ser compilado pode ser obtido a partir da gramática da
linguagem. Um programa em Java deve poder ser obtido a partir de uma gramática da linguagem
Java, por exemplo.
O analisador sintático que reconhece as fórmulas válidas do CP é o método Java analyzeFormula
apresentado abaixo. Assume-se que exista um método nextToken na mesma classe que pegue o
próximo token e o coloque na variável de instância token. Há uma classe Symbol com uma cons-
tante para cada token. O método error emite uma mensagem de erro e termina o programa.
void analyzeFormula() {
switch ( token ) {
case Symbol.VARIABLE:
nextToken();
if ( token == Symbol.UNDERLINE )
nextToken();
else
error("Underline expected");
if ( token == Symbol.NUMBER )
nextToken();
else
error("number expected");
54
break;
case Symbol.NEG :
nextToken();
analyzeFormula();
break;
case Symbol.LEFTPARENTHESIS:
nextToken();
analyzeFormula();
if ( token == Symbol.LEFTARROW )
nextToken();
else
error("left arrow expected");
analyzeFormula();
if ( token == Symbol.OR )
nextToken();
else
error("left arrow expected");
}
}
0 V1
1 ¬V1
2 (V1 ∨ V1 )
3 (¬V1 ∨ V1 )
4 (V1 ∨ ¬V1 )
5 (¬V1 ∨ ¬V1 )
6 V2
7 ¬V2
8 (V2 ∨ V1 )
... ...
55
2.14.3 Axiomatização do Cálculo Proposicional
O cálculo proposicional é axiomatizável; isto é, dada uma fórmula C, existe um algoritmo que
decide se C é um axioma do CP. Isto pode ser feito de duas formas diferentes:
1. suponha que se deseja saber se C é uma instância do axioma; isto é, se C é da forma ¬A ∨ A
no qual A é fórmula. Podemos enumerar todas as instâncias do axioma tomando-se cada
uma das fórmulas do CP11 e substituindo-as por A em ¬A ∨ A. Este procedimento irá
enumerar as instâncias do axioma. Neste enumeração, procura-se pela fórmula C. Quando
as fórmulas desta enumeração só puderem ser maiores do que C ou só empregarem variáveis
com números maiores do que aqueles utilizados em C, a busca por C pode ser encerrada. Se
esta fórmula não tiver sido encontrada, nunca mais o será. Logo, existe um algoritmo que
diz se certa fórmula é um axioma ou não.
2. fazendo-se uma análise sintática de C utilizando-se as gramáticas do axioma ¬A ∨ A. A sua
gramática é:
A ::= ’(’ ¬ F ∨ F ’)’
F ::= Vi
F ::= ¬ F
F ::= ’(’ F ∨ F ’)’
O analisador sintático desta gramática é facilmente feito utilizando-se uma variação do método
analyzeFormula apresentado na seção 2.14.1.
Exercı́cios
2.59. Podemos utilizar as palavras verdadeiro e falso quando falamos dos teoremas de um sistema
formal; isto é, quando falamos exclusivamente da parte sintática de uma teoria?
2.60. Há teorias em que existe uma verdade que nunca é alcançada pelo sistema formal. Isto é,
os axiomas e as regras de dedução nunca conseguem produzir algumas fórmulas que sabemos que
são verdadeiras. Deveriam ser teoremas, mas não são. O teorema da completude se aplicaria a
um destes sistemas (adaptado a ele, logicamente)?
2.61. Explique o que é sintaxe e o que é semântica de uma teoria (em particular, do CP).
2.62. Explique a relação entre sintaxe e semântica, em particular em como um sistema formal é
construı́do e como se confere se o sistema é realmente o que querı́amos.
2.63. A fórmula (A−→(B−→C))←→(A ∧ B−→C) é tautologia. Prove
A−→(B−→C) ` A ∧ B−→C
56
2.15 Transformação de fórmulas para a FNC
Para transformar uma fórmula para a FNC, pode-se construir a sua tabela verdade e utilizar o
método apresentado na Seção 2.7. Contudo, este método é muito trabalhoso. Apresentamos nesta
seção um método que em geral é mais fácil do que este.
O seguinte algortimo transforma uma fórmula F qualquer em uma fórmula F 0 na FNC. Os
passos devem ser aplicados inicialmente a F que passa por uma série de transformações sendo que
a fórmula resultante é F 0 . Os sı́mbolos A, B e C representam sub-fórmulas.
3. substitua ¬(A ∧ B) por (¬A ∨ ¬B) e ¬(A ∨ B) por (¬A ∧ ¬B). Volte ao passo anterior se
alguma negação dupla (¬¬) apareceu na fórmula;
Exemplo 2.13.
1. ¬(A−→B) ∨ C
2. ¬(¬A ∨ B) ∨ C
3. (¬¬A ∧ ¬B) ∨ C
4. (A ∧ ¬B) ∨ C
5. (C ∨ A) ∧ (C ∨ ¬B)
Exemplo 2.14.
1. (¬A ∧ B) ∨ (A ∧ ¬C)
57
Contudo, este algoritmo pode produzir uma fórmula exponencialmente maior do que a fórmula
da entrada. Por exemplo, se o algoritmo é aplicado à fórmula
o resultado é
(A1 ∨A2 ∨. . . An )∧(A1 ∨A2 ∨. . . Bn )∧(A1 ∨A2 ∨. . . Bn−1 ∨An )∧. . . (A1 ∨B2 ∨. . . Bn )∧(B1 ∨B2 ∨. . . Bn )
Definição 2.17. Um literal positivo é um literal sem o sinal de negação. Ou seja, é uma variável.
Um literal negativo é uma variável precedida pela negação.
Então são literais positivos A, V1 , B. São literais negativos: ¬A, ¬V1 e ¬B.
Definição 2.18. Uma cláusula de Horn é uma disjunção de literais que contém no máximo um
literal positivo.
São cláusulas de Horn: A, ¬A∨B e ¬A∨¬B ∨¬C ∨D. Não são cláusulas de Horn: A∨¬B ∨C,
¬A ∧ ¬B, A−→B (não tem disjunção) e ¬V1 ∨ V2 ∨ V3 ∨ ¬B.
Definição 2.19. Uma fórmula de Horn é uma fórmula na FNC na qual cada disjunção contém
no máximo um literal positivo; isto é, cada disjunção é uma cláusula de Horn.
Exemplo 2.15. (¬A ∨ ¬B ∨ C) ∧ ¬A ∧ (¬D ∨ B) é uma fórmula de Horn. Há três disjunções e
cada uma delas contém um ou zero literais positivos (a saber, C, nada e B). A fórmula (¬A ∨
¬B ∨ ¬C) ∧ ¬A ∧ (¬D ∨ B) também é de Horn. Mas as fórmulas (¬A ∨ B ∨ C) ∧ ¬A ∧ (¬D ∨ B)
e ¬A ∧ (D ∨ B) não são de Horn. A primeira fórmula contém dois literais positivos na primeira
disjunção (B e C) e a segunda, idem, D e B.
A fórmula A ∧ B é de Horn (um literal positivo em cada disjunção) mas A ∨ B não é (há uma
única disjunção contendo dois literais positivos).
Uma cláusula de Horn pode conter então zero ou um literal positivo e zero ou mais literais
negativos (com uma negação). Então há três tipos de cláusulas de Horn:
58
(a) com literais positivos e negativos, como ¬A ∨ ¬B ∨ C, ¬C ∨ B e A ∨ ¬V1 . Este tipo de fórmula
pode ser escrito como uma implicação — isto é, para cada fórmula deste tipo existe uma fórmula
logicamente equivalente que pode ser escrita como uma implicação do tipo A1 ∧A2 ∧. . . An −→B.
As fórmulas logicamente equivalentes aos exemplos deste item são A ∧ B−→C, C−→B e
V1 −→A;
(b) apenas com literais negativos, como ¬A ∨ ¬B ∨ ¬C, ¬A e ¬V1 ∨ ¬D. Este tipo de disjunção
pode ser transformado em uma implicação também: A ∧ B ∧ C−→ ⊥, A−→ ⊥ e V1 ∧ D−→ ⊥;
(c) apenas com um único literal positivo, como A, V1 ou D. Este tipo de disjunção (sim, um
literal sozinho é uma disjunção) pode ser escrito como >−→A, >−→V1 e >−→D.
Conclusão: toda fórmula de Horn pode ser escrita como uma conjunção de implicações.
A importância das fórmulas de Horn está em que há um algoritmo eficiente para descobrir se
elas são satisfazı́veis. Isto é, se há alguma atribuição de valores verdade para uma fórmula de Horn
tal que a fórmula seja verdadeira. Por exemplo, (¬A ∨ B) ∧ A ∧ (¬A ∨ ¬B) não é satisfazı́vel. Se
A for F , a fórmula será falsa por causa da segunda disjunção, que é apenas “A”. Se A for V , ¬A
é falso e não importa o valor de B, ou ¬A ∨ B ou ¬A ∨ ¬B será falso.
A fórmula (¬A ∨ B) ∧ (A ∨ ¬B) é satisfazı́vel. Tome A e B como V , por exemplo. Veremos
agora o algoritmo de Horn.
1. Dada uma fórmula de Horn H, converta-a em uma conjução de implicações. Os passos se-
guintes do algoritmo irão marcar as variáveis até que se conclua que a fórmula é satisfazı́vel
ou não. Inicialmente, considera-se que todas as variáveis tenham o valor F , falso. O algo-
ritmo atribui valores V para algumas variáveis através da marcação — marcar uma variável
é considerá-la verdadeira. O algoritmo tenta atribuir V às variáveis de tal forma que todas
as implicações sejam verdadeiras. Para compreender o algoritmo, lembre-se de que em uma
conjunção X1 ∧ X2 ∧ . . . Xm , se um Xi for falso, toda a fórmula é falsa. E em uma disjunção
Y1 ∨ Y2 ∨ . . . Ym , se um Yi for verdadeiro, toda a fórmula é verdadeira;
2. marque A em uma sub-fórmula do tipo >−→A. Repita este passo enquanto existirem sub-
fórmulas de H deste tipo. Uma fórmula deste tipo só pode ser verdadeira se A for V (pela
definição de −→);
59
Exemplo 2.16. Iremos aplicar o algoritmo de Horn na fórmula (¬A∨¬B ∨C)∧¬B ∧C, colocando
um traço horizontal sobreescrito sobre as variáveis que já foram marcadas.
1. (¬A ∨ ¬B ∨ C) ∧ ¬B ∧ C
2. (A ∧ B−→C) ∧ (B−→ ⊥) ∧ (>−→C), convertemos para conjunção de implicações;
3. (A ∧ B−→C) ∧ (B−→ ⊥) ∧ (>−→C), usamos o passo 2 do algoritmo. Neste ponto, o
algoritmo não pode fazer mais nada pois o passo 3 não se aplica a nenhuma sub-fórmula. E
temos uma sub-fórmula B−→ ⊥ na qual B não foi marcado. Então a fórmula é satisfazı́vel.
Exemplo 2.17. É C ∧ (¬C ∨ A ∨ ¬D) ∧ (D ∨ ¬C) ∧ (¬A ∨ ¬B) satisfazı́vel? Vejamos:
Note que este último passo já nos dá uma indicação do valor verdade de B para que a fórmula
seja verdadeira. B deve ser falso. Se for V , A ∧ B−→ ⊥ será falso e toda a fórmula será F
também. C deve ser V pela fórmula, >−→C, D deve ser V por C−→D e A também deve ser V
por C ∧ D−→A.
Não apresentaremos aqui a prova de que este algoritmo funciona. A prova não é difı́cil, mas
não é adequada para um curso inicial de lógica.
60
Γ ` A através de um algoritmo que é facilmente implementável em um computador. E muito mais
fácil de se utilizar manualmente do que a dedução sintática de A a partir de Γ ou a construção da
tabela verdade.
Resolução é um algoritmo que dada uma fórmula na FNC, descobre se ela é satisfazı́vel ou não.
Ao contrário do algoritmo de Horn, resolução funciona com fórmulas quaisquer na FNC. Contudo,
o algoritmo pode demorar um tempo exponencial no tamanho da fórmula.12 O algoritmo da
resolução também é chamado de “método da resolução”.
Definição 2.20. Uma disjunção de literais é uma cláusula.
(a) Ai pode ser deduzido de A1 ∧ A2 ∧ . . . An , onde cada Ai é uma fórmula qualquer — no caso do
algoritmo, Ai será sempre uma cláusula, disjunção de literais. Semânticamente, isto é claro.
Se A1 ∧ A2 ∧ . . . An é verdadeiro, então cada um dos Ai deve ser verdadeiro também;
(b) regra do corte (página 41): de A ∨ B e ¬A ∨ C deduzimos B ∨ C.
Na regra do corte, as variáveis B e C podem ser substituı́das por disjunções quaisquer. Então
de A ∨ B1 ∨ B2 ∨ . . . Bn e ¬A ∨ C1 ∨ C2 ∨ . . . Cm deduzimos B1 ∨ B2 ∨ . . . Bn ∨ C1 ∨ C2 ∨ . . . Cm .
Como a ordem dos literais não importa neste caso, de B ∨ A e C ∨ ¬A pode-se deduzir B ∨ C (ou
C ∨ B). É por causa disto que representamos cláusulas por conjuntos: a ordem não importa para
o algoritmo da resolução (e para a equivalência lógica).
Definição 2.21. Dados dois conjuntos U e W representando duas cláusulas tais que A ∈ U e
¬A ∈ W , chamamos R = (U − {A}) ∪ (W − {¬A}) de resolvente de U e W .
61
1. {B, C} ∪ {B, ¬C} = {B, C, ¬C}, eliminando-se A e ¬A;
2. {¬A, B} ∪ {A, B} = {¬A, B, A}, eliminando-se C e ¬C.
Conclui-se de que o resolvente não é único para duas fórmulas. Note que, tanto sintática quanto
semânticamente, a fórmula resultante pode ser deduzida das fórmulas originais:
{¬A ∨ B ∨ C, A ∨ B ∨ ¬C} ` B ∨ C ∨ ¬C
{¬A ∨ B ∨ C, A ∨ B ∨ ¬C} ` ¬A ∨ B ∨ A
{¬A ∨ B ∨ C, A ∨ B ∨ ¬C} B ∨ C ∨ ¬C
{¬A ∨ B ∨ C, A ∨ B ∨ ¬C} ¬A ∨ B ∨ A
Dada uma fórmula na FNC, podemos representá-la por um conjunto de conjuntos S = {U1 , U2 ,
. . . , Uk }. O conjunto S representa uma conjunção das fórmulas correspondentes a Ui . Se usarmos
S ou Ui para representar conjuntos e também para fórmulas, temos que Ui pode ser deduzido de
S. Isto é,
S Ui
ou
U1 ∧ U2 ∧ . . . Uk Ui
para todo i entre 1 e k.
Um resolvente R de dois conjuntos Ui e Uj também pode ser deduzido destas duas fórmulas:
Ui ∧ Uj R
SR
Note que esta é uma explicação intuitiva, não uma prova formal. Continuemos.
Já que R pode ser deduzida a partir de S e R é uma cláusula, podemos adicioná-lo em S e
continuar a procura por resolventes. A cada resolvente encontrado, podemos acrescentá-lo a S, que
cresce com a adição destes novos conjuntos. Veja a dinâmica do processo no qual os resolventes
receberam nomes R1 , R2 , . . .:
S R1
S ∪ R1 R2
S ∪ R1 ∪ R2 R3
...
S0 Rp
62
Figura 2.4: Resolução aplicado a {{A, ¬C}, {¬B, C}, {B, D}, {B, ¬D}, {¬A}}
Representaremos cada cláusula por um nó de uma árvore como indicado na Figura 2.4. Um
resolvente R deduzido de X e Y é colocado visualmente abaixo destas fórmulas. Há linhas entre
R e X e R e Y . Confira na Figura que {A, ¬B} é o resolvente de {A, ¬C} e {¬B, C}.
Há um outro modo de representar graficamente este algoritmo. A cada passo, acrescentaremos
um resolvente no inı́cio da lista de cláusulas obtido das cláusulas indicadas por uma chave sobre-
63
Figura 2.5: Resolução aplicado a {{A, ¬B}, {¬A, B, C}}
escrita. z }| { z }| {
{A, ¬B}, {A, ¬C}, {¬B, C}, {B, D}, {B, ¬D}, {¬A}
z }| { z }| {
{B}, {A, ¬B}, {A, ¬C}, {¬B, C}, {B, D}, {B, ¬D}, {¬A}
z}|{ z }| {
{A}, {B}, {A, ¬B}, {A, ¬C}, {¬B, C}, {B, D}, {B, ¬D}, {¬A}
z}|{ z }| {
{}, {A}, {B}, {A, ¬B}, {A, ¬C}, {¬B, C}, {B, D}, {B, ¬D}, {¬A}
Como {} foi obtido, S é insatisfazı́vel.
O segundo modo, não gráfico, é mais fácil de se escrever. Mas o primeiro, visual, é mais fácil
de entender.
Exemplo 2.21.
S = (A ∨ ¬B) ∧ (¬A ∨ B ∨ C)
Apresentamos informalmente o algoritmo da resolução nos exemplos acima, sem avisar o leitor
previamente desta apresentação. O definiremos mais formalmente agora.
64
Figura 2.6: Resolução aplicado a {{B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}}
conjunto Si+1 é obtido do anterior pela inclusão dos resolventes do conjunto anterior, Si . O
algoritmo pára quando Si = Si−1 ; isto é, não foi possı́vel acrescentar nenhum resolvente novo ao
conjunto Si . Chamaremos este conjunto Si final de S? . Este conjunto contém todos os resolventes
possı́veis tomando-se S como premissas.
Em pseudo-código, o algoritmo é
Algoritmo Resoluç~
ao(S)
S0 = S
i=0
faça
Si+1 = Si ∪ {R : R é resolvente de duas cláusulas de Si }
i=i+1
enquanto Si 6= Si−1
Exemplo 2.22.
S = {{B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}}
65
{B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}
z }| { z }| {
{C}, {B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}
z}|{ z }| {
{A}, {C}, {B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}
z}|{ z }| {
{B}, {A}, {C}, {B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}
z}|{ z }| {
{¬B}, {B}, {A}, {C}, {B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}
z }| { z}|{
{}, {¬B}, {B}, {A}, {C}, {B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}
A1 ∧ A2 ∧ . . . An B (2.1)
que é equivalente a
A1 ∧ A2 ∧ . . . An −→B (2.2)
O que é equivalente a provar que A1 ∧ A2 ∧ . . . An −→B é uma tautologia. Mas provar que X é
tautologia é a mesma coisa que provar que ¬X é contradição e, portanto, insatisfazı́vel. Então
podemos utilizar o algoritmo da resolução para verificar se ¬(A1 ∧ A2 ∧ . . . An −→B) é insatisfazı́vel
(contradição). Se for, então A1 ∧ A2 ∧ . . . An −→B é tautologia e portanto temos as fórmulas 2.2 e
2.1. Colocando estas observações em forma de Proposição, temos:
ΓB (1)
A1 ∧ A2 ∧ . . . An B (2)
A1 ∧ A2 ∧ . . . An −→B (3)
{} ∈ S? (4)
Γ`B (5)
A1 ∧ A2 ∧ . . . An ` B (6)
` A1 ∧ A2 ∧ . . . An −→B (7)
S é a fórmula ¬(A1 ∧ A2 ∧ . . . An −→B) na FNC.
Demonstração. Pelos teoremas da completude e correção (2.3, 2.2) as equações (1), (2) e (3) são
equivalentes às equações (5), (6) e (7), respectivamente. Temos (1) se e somente se (4) pela
Proposição 2.7. Assim todas as equações são equivalentes entre si.
66
Vejamos um exemplo de uso da resolução em que a palavra “ou” deve ser entendida no sentido
da lógica matemática, não no sentido usual da palavra em português.
Exemplo 2.23. Considere os seguintes fatos:
Considera-se que todos os fatos acima sejam verdadeiros. Então um “e” destes fatos é verdadeiro;
isto é,
S = (A ∨ B) ∧ (¬D−→¬A) ∧ (¬B ∧ ¬C)
é verdadeiro. Queremos saber se esta fórmula implica D, que significa “João gosta de Maria”. Há
duas formas de fazer isto:
67
Figura 2.7: Resolução aplicado a {{B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}, {¬D}}
z }| { z }| {
{B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}, {¬D}
z }| { z }| {
{D}, {B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}, {¬D}
z}|{ z }| {
{}, {D}, {B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}, {¬D}
Como obtemos {}, a fórmula ¬(S−→D) é insatisfazı́vel e portanto S−→D é tautologia. O
que significa que S implica logicamente em D.
Esta última forma é mais geral do que a primeira pois pode ser aplicado a quaisquer fórmulas.
Por exemplo, podemos utilizá-la para descobrir se “Se João mora em São Paulo, então João não
gosta de pizza”. Esta frase é C−→¬A. Queremos saber se S−→(C−→¬A) é tautologia; isto é,
se ¬(S−→(C−→¬A)) é insatisfazı́vel. Agora é só converter esta fórmula para a FNC e aplicar a
resolução.
68
O ponto mais importante do algoritmo de Horn e da resolução é que eles não dependem de
criatividade para se chegar a uma resposta. A dedução de uma fórmula por meio das regras de
dedução apresentadas na Seção 2.12 é difı́cil. Depende da criatividade do leitor. Os algoritmos
de Horn e da resolução são muito mais simples de usar. E facilmente implementáveis por um
programa de computador.
Exercı́cios
2.66. Transforme as seguintes fórmulas para a FNC.
(a) (A ∧ B) ∨ (¬C ∧ A)
(d) (A ∧ B) ∨ (C ∧ D)
(e) (A←→¬B)−→(¬A ∨ B)
2.67. João é paranaense ou João não é advogado. João não mora na Rússia. A esposa de João
não estuda Computação ou não cozinha. A esposa de João cozinha ou João não é paranaese.
Pergunta-se: estes fatos são satisfazı́veis? Use o algoritmo de Horn.
2.68. Hoje é quinta-feira ou sexta-feira. Como hoje não é sexta-feira, então é quinta-feira. Prove
usando resolução.
2.69. É ((C ∧ ¬D) ∧ A)−→(C ∨ D ∨ A) uma tautologia? Justifique a sua afirmação usando
resolução.
69
4. Se o pai de João é Palmeirense, então João é Palmeirense;
6. Se João não gosta de Maria, então João não gosta de pizza ou João não tem curso superior;
2.75. É verdade que A−→(B−→¬C), C ` ¬A ∨ ¬B? Responda sim ou não usando resolução.
2.76. Utilize o algoritmo de Horn para verificar se a fórmula (¬A ∨ B ∨ ¬C) ∧ (¬B ∨ C) ∧ ¬A é
satisfazı́vel.
70
Unidade 3
Esta Seção apresenta a Lógica de Primeira Ordem (LPO), uma lógica muito mais poderosa do
que o cálculo proposicional. Por exemplo, com ela pode-se expressar quase toda a Matemática.
Apesar do CP ser suficiente para implementar um computador, a LPO é necessária em modelagens
do mundo real. E o seu estudo é importante para a compreensão de outras lógicas utilizadas em
Computação.
O cálculo proposicional não é capaz de representar proposições (afirmações) sobre conjuntos
de elementos. Por exemplo, não é possı́vel representar a frase “todo número natural divisı́vel por
4 é divisı́vel por 2” no CP. A palavra “todo” não tem correspondente no CP. E observe que esta
palavra se refere a todos os números naturais, um conjunto.
Para possibilitar a expressão deste tipo de proposição foi criada a Lógica de Primeira Ordem
(LPO). Ela possui sı́mbolos para expressar “todo” e “existe um”, sempre se referindo a elementos
quaisquer de um conjunto. Deste modo pode-se representar quase toda a Matemática através de
fórmulas da LPO.
71
ser finitos. Pode-se escrever um sobre-escrito para indicar a aridade de um sı́mbolo de predicado
ou função, como H 1 para indicar que a aridade de H é um. Ou f 3 para indicar que f toma três
argumentos.
Então para o primeiro exemplo, com H e P , terı́amos V = ({H 1 , P 1 }, ∅, ∅). Como não há
sı́mbolos de função ou constantes, utilizamos o conjunto vazio. Poderı́amos definir V como V =
({H, P }, ∅, ∅). Neste último caso, terı́amos que escrever que H e P são relações unárias, que tomam
um único x. Poderı́amos ter predicados binários, como D(x, y). Em uma certa interpretação,
D(x, y) poderia significar x é divisı́vel por y. Quando houver dúvida quanto à aridade (número
de argumentos) dos sı́mbolos de predicado ou função, deve-se escrever explicitamente o número de
argumentos de cada um dos sı́mbolos. É isto que usualmente faremos.
De fato, utilizaremos uma versão ainda mais simples de vocabulário. Escreveremos V =
(R, M, f, g, c1 , c2 ) para um vocabulário que emprega os sı́mbolos de predicado R e M , os sı́mbolos
de função f e g e os sı́mbolos de constante c1 e c2 . Utilizaremos as letras maiúsculas para sı́mbolos
de predicado, letras minúsculas f e g para sı́mbolos de função (ocasionalmente outras letras
minúsculas serão utilizadas, mas nunca c) e letra c, possivelmente com ı́ndices, para sı́mbolos
de constante. Podemos utilizar outros sı́mbolos para sı́mbolos de predicado, função e constante.
Por exemplo, podemos utilizar < para sı́mbolo de predicado, + para sı́mbolo de função e 0 para
constante.
Podemos escrever que utilizaremos em certo exemplo uma linguagem que utiliza o vocabulário
V = (R, M, f, g, c1 , c2 ) no qual R é sı́mbolo de predicado binário, M é unário, f é sı́mbolo de
função unário e g é ternário. Mesmo antes de definir o que é a linguagem associada à V, podemos
afirmar que as fórmulas
∀x(M (x)−→∃yR(x, y))
∀x∀y(f (x) = y−→∀zg(x, y, z))
são válidas (o número de argumentos nos sı́mbolos de predicado e função estão corretos) mas as
fórmulas abaixo não estão.
∀x(f (x, y) = c1 )
M (x, y)
∀x(g(x, x, y) = c2 −→R(x, y, x)
∀x(g = c2 −→R(x, y))
1. variáveis x0 , x1 , x2 , . . .;
2. sı́mbolos de predicado P ∈ Σ;
3. sı́mbolos de função f ∈ ∆;
72
5. , (vı́rgula), (, ), ¬, ∧, ∨, −→ e ←→ (tomados do cálculo proposicional);
6. = (igual)
1. c
73
Na linguagem L, são fórmulas atômicas:
1. c = c
2. f (x1 ) = c
3. x1 = f (x2 )
4. P (x1 , x2 )
5. P (c, f (x8 ))
6. P (f (f (f (c))), f (x7 ))
2. se A e B são fórmulas e x é uma variável qualquer, então (¬A), (A ∨ B), (A ∧ B), (A−→B),
(A←→B), ((∃x)A) e ((∀x)A) são fórmulas;
1. f (x1 ) = c
2. x1 = f (x2 )
3. P (x1 , x2 )
4. P (c, f (x8 ))
7. ((∃x1 ) x1 = x2 )
8. ((∃x1 ) ((∀x2 ) x1 = x2 ))
9. ((∃x1 ) P (c, x1 ))
74
Poderı́amos ter definido ∃ em função de ∀: ((∃x)A) poderia ser definido como ¬((∀x)(¬A)).
Isto é, se existe um x com propriedade A, então não é verdade que para todo x aquela propriedade
não vale (então deve existir um x em que vale a propriedade A).
O sı́mbolo ∃, na semântica de qualquer Lógica de Primeira Ordem, significa “um ou mais”.
Então, a fórmula (∃x)A, quando interpretada, não diz que A é verdade para apenas um único
valor de x, mas para um ou mais valores de x.
Note que as variáveis do cálculo proposicional não são as mesmas da Lógica de Primeira Ordem.
No CP, uma única variável é considerada uma fórmula correta: V1 é uma fórmula. Na LPO, uma
fórmula possui sempre um predicado ou o sinal de igualdade. Chamaremos as variáveis do cálculo
proposicional de variáveis proposicionais.
Retiraremos os parênteses sempre que for possı́vel. Assim, escreveremos ¬A, A ∨ B e ∃x A para
(¬A), (A ∨ B) e ((∃x)A). Os quantificadores universal e existencial possuem maior precedência
do que −→ e ←→ e menor do que ∧, ∨ e ¬. Veja a nova tabela de precedências:
¬ maior
∧
∨
∀, ∃
−→
←→ menor
∀x P (x)−→∃x P (x)
deve ser lido como
(∀x P (x))−→(∃x P (x))
E a fórmula
∃x A ∧ ∀y P (x, y) ∨ B
deve ser lida como
∃x (A ∧ (∀y (P (x, y) ∨ B)))
Em uma fórmula ∀x A, x não é uma variável da linguagem da LPO. Estas se chamam x0 , x1 ,
x2 , . . .. Então, o que é x? É uma meta-variável, um sı́mbolo que representa qualquer variável da
linguagem. A fórmula ∀xP (x) representa infinitas fórmulas, uma para cada variável da linguagem:
∀x1 P (x), ∀x2 P (x), ...
Em geral, utilizaremos as variáveis x, y e z para meta-variáveis e utilizaremos todos os conec-
tivos derivados e o quantificador existencial. E escrevemos com o menor número de parênteses
possı́vel. Assim, considere a linguagem L que utiliza os sı́mbolos de constante 0 e 1, sı́mbolos de
predicado binários < e 6 e sı́mbolos de função binários + e ×. Note que estamos utilizando outros
sı́mbolos que não os usuais P , M , f e c. Não tem a menor importância.
75
Se tivéssemos um sı́mbolo de predicado binário P , utilizarı́amos algo como P (x, y). O sı́mbolo
< também é binário e poderı́amos escrever < (x, y). Mas é mais usual empregarmos x < y, e é o
que fazemos abaixo. São fórmulas válidas nesta linguagem:
• ∀x(∃y(x + y = 0))
• ∀x∃y(x = y + 1)
• ∀x(x < x + 1)
• ∀x∀y∀z (z = x + 1 ∧ z = y + 1−→x = y)
• ∃x(x × x = x)
• ∀x∀y (x × (y + 1) = x × y + x)
Se utilizarmos uma interpretação com o conjunto dos naturais N na qual os sı́mbolos de cons-
tante 0 e 1 são o 0 e 1 dos números naturais, <, +, 6, + e × possuem o significado usual das
operações neste conjunto, então a primeira fórmula significa que, para todo x ∈ N, existe um y tal
que, somado com x, resulta em 0. É um excelente exercı́cio verificar que estas fórmulas são todas
válidas nesta interpretação. O mesmo não pode ser dito da fórmula
∀x∃y (x = y × y)
Interpretada, esta fórmula diz que todo x natural é o quadrado de algum outro natural. Clara-
mente 2, 3, 5 e outros infinitos naturais não são quadrados de nenhum outro número de N. Então
nesta interpretação esta fórmula não é válida.
76
6. para qualquer número, existe sempre um número maior do que ele.
Contudo, estas proposições podem ser expressas na linguagem da Lógica de Primeira Ordem:
1. ∀x (H(x)−→P (x)), na qual P (x) indica que “x é um primata” e H(x) indica que “x é um
homem”. Considere que x assume os elementos do conjunto de todos os animais (poderia
ser de todas as coisas);
5. ∃x (P (x) ∧ (x > 101000 )), na qual P (x) é “x é primo”. x assume os números Naturais;
6. ∀x (∃y (x < y)). Note que a fórmula ∃y (∀x (x < y)), com ∃y e ∀x trocados de lugar, não faz
muito sentido se considerarmos que x e y assumem os elementos do conjunto dos Naturais
ou Reais. Esta fórmula diz que existe um y maior do que qualquer x do conjunto;
Exercı́cios
3.1. Cite uma proposição que pode ser expressa na Lógica de Primeira Ordem mas não no cálculo
proposicional.
3.4. Considere a linguagem L com os sı́mbolos de predicado D(x, y), A(x) e P (x, y) e a constante
c. Suponha que em uma certa interpretação, o significado dos predicados correspondentes seja:
77
• c é a disciplina “Introdução à Lógica”.
(b) há uma disciplina que é mais difı́cil do que todas as demais;
(c) se as provas de uma disciplina D1 são mais difı́ceis do que as da disciplina D2 , então a disciplina
D1 é mais difı́cil do que D2 . Os sı́mbolos D1 e D2 representam disciplinas quaisquer, não
constantes da linguagem;
(d) se uma disciplina tem apostila, então ela é a mais fácil de todas;
(e) existe uma disciplina que é mais fácil que todas as outras.
(h) se existe uma disciplina que é mais difı́cil do que todas as outras, então esta disciplina possui
provas mais difı́ceis do que todas as outras;
(i) se alguma disciplina é mais difı́cil do que todas as outras, então esta disciplina possui provas
mais difı́ceis do que todas as outras (alguma significa “qualquer disciplina que obedeça à
descrição”);
(j) se existe uma disciplina que é mais difı́cil do que todas as outras, então existe uma disciplina
que possui provas mais fáceis do que esta;
(k) se uma disciplina, dentre todas elas, é mais difı́cil do que todas as outras, então existe uma
disciplina que possui provas mais fáceis do que esta;
(l) Introdução à Lógica possui provas mais fáceis do que todas as outras disciplinas;
(m) se existe uma disciplina que é mais difı́cil do que alguma outra, então esta disciplina não é
Introdução à Lógica.
(n) se alguma disciplina é mais difı́cil do que alguma outra, então esta disciplina não é Introdução
à Lógica.
Cuidado com as relações: D(x, x) é sempre falso, assim como P (x, x). Assuma que D(x, y) ou
D(y, x) seja verdadeiro. Da mesma forma, ou P (x, y) ou P (y, x) é verdadeiro
3.5. Usando os dados da questão anterior, escreva o que significam as fórmulas abaixo.
78
(d) ∀x ¬D(x, y)−→y = c
3.6. Defina um vocabulário apropriado para as relações entre os membros de uma famı́lia. Devem
existir sı́mbolos para “x é mãe de y”, “x é pai de y”, “x, mulher, é casado com y”, “x é homem”
e “x é mulher”.
3.7. Defina duas fórmulas utilizando o vocabulário da questão anterior e explique o seu significado
em Português.
3.8. Considere uma linguagem LA para a Aritmética que utiliza sı́mbolo de predicado binário <,
sı́mbolos de função binárias + e (correspondente à multiplicação) e constantes 0 e 1. Defina ou
faça:
3.11. Represente as seguintes sentenças em uma linguagem da LPO (você precisará de uma lin-
guagem para cada sentença). Sempre que possı́vel, simplifique-as e depois represente-as novamente
em Português. Utilize predicados como R(x) para “x é responsável”. Explique o significado dos
predicados que você utilizar.
(b) Existe um polı́tico que não quer que a CPI termine em Pizza.
(e) João amava Teresa que amava Raimundo que amava Maria que amava Joaquim que amava
Lili, que não amava ninguém.
(g) É tão fácil trocar uma lâmpada que qualquer um pode fazê-lo.
79
(i) Pelo menos uma pessoa é inteligente.1
(j) Se João consegue fazer o exercı́cio, Pedro não consegue. E vice-versa. Mas quando Pedro
consegue, pelo menos uma outra pessoa da turma consegue fazer o exercı́cio.
(k) O barbeiro de uma aldeia faz a barba de todo mundo que não faz a barba de si mesmo.
(l) Se dois conjuntos têm os mesmos elementos, eles são iguais.
Escrevemos acima, em cada item, o nome do sı́mbolo de predicado, seus possı́veis argumentos e a
sua interpretação na Aritmética.
3.14. As fórmulas ∀x∃yR(x, y) e ∃y∀xR(x, y) possuem significados diferentes? Explique !
80
Em primeiro lugar, temos que associar P e D a predicados que conhecemos. Por exemplo,
podemos associar P (x) a “x é primo” e D(x) a “x é divisı́vel por 2”. Com isso podemos obter
o valor verdade da fórmula? Ainda não, pois não sabemos quais x serão utilizados. Isto é, ∀x
refere-se a qual conjunto? Suponha que seja o conjunto de todos os números naturais. Neste caso
a fórmula quer dizer “para todo x, se x é primo então x é divisı́vel por 2”. Mas 3 é primo e não é
divisı́vel por 2 (todo primo, exceto 2, não é divisı́vel por 2). Contudo, se o conjunto utilizado tiver
apenas o elemento 2, então a fórmula é verdadeira. A fórmula neste caso seria intepretada como
“para todo x ∈ {2} se x é primo então x é divisı́vel por 2”.
Concluı́mos que a verdade/falsidade de uma fórmula da Lógica de Primeira Ordem depende
da associação dos sı́mbolos de predicado (P e D) a predicados (“x é primo”, “x é divisı́vel por
2”), associação dos sı́mbolos de função a funções e constantes a elementos de um conjunto. E da
definição do conjunto de elementos utilizado por ∀.
Tanto A como a relação podem ser infinitos. Por exemplo, se A = N, uma relação ternária
pode ser
R = {(n, m, p) : n, m, p ∈ N tal que n = m × p}
81
Considere uma linguagem L associada ao vocabulário V = (Σ, ∆, Ψ) no qual Σ é um conjunto
de sı́mbolos de predicado, ∆ é um conjunto de sı́mbolos de função e Ψ é um conjunto de sı́mbolos
de constante.
Definição 3.7. Uma estrutura M para L é formado por:
Um predicado da estrutura deve ser definido como uma relação. Informalmente, definimos
um predicado por palavras como “I(x) significa x é ı́mpar”. Funções são definidas formalmente
também. Por exemplo, podemos definir uma função f (x) como f : N−→N tal que f (x) = 2x .
Neste caso, o universo da estrutura teria que ser N.
Exemplo 3.1. A linguagem L com sı́mbolos de função binários + e × e sı́mbolos de constante 0
e 1 possui infinitas estruturas. Uma delas é N com as operações usuais de soma e multiplicação.
Naturalmente os sı́mbolos 0 e 1 são associados aos número correspondentes. Os conjuntos R, Q, Z
e C com as operações usuais são também estruturas para esta linguagem. Sempre pode-se tomar
uma estrutura para uma linguagem e acrescentar novos elementos, novas relações e novas funções
criando uma estrutura maior.
Usualmente, abreviamos a estrutura N dada acima para hN, +, ×, 0, 1i. Algumas vezes, usa-
se o próprio sı́mbolo N sem citar os sı́mbolos que serão utilizados para predicados, funções e
constantes. Estes ficam subentendidos. Neste caso, assume-se que N contenha todas as operações
usuais sobre inteiros e que a linguagem tenha uma constante para cada número natural. Isto é
muito importante: quando fornecemos uma estrutura, pode-se assumir que a linguagem
fica subentendida na definição da estrutura.
Exemplo 3.2. Dada a estrutura hQ, +, ×, /, 0, 1, 1/2i, fica subentendido que a linguagem utilizada
possui sı́mbolos de funções +, × e / e sı́mbolos de constante 0, 1 e 1/2 (não há sı́mbolos de
predicado). Se a estrutura citasse o sı́mbolo −, haveria uma ambiguidade, pois − poderia ser o
menos unário ou a subtração. O primeiro é uma função unária e o segundo, binária.
Exemplo 3.3. Uma linguagem L1 com sı́mbolo de predicado binário D e constante c pode possuir
infinitas estruturas. Duas delas são:
(a) estrutura MA tal que |MA | = N e predicado D(x, y) significando x é divisı́vel por y. Colocando
D como relação, temos
D = {(x, y) ∈ N2 : existe z ∈ N tal que x = y × z}
82
A constante c de L1 é associada ao elemento 0 de N. O sı́mbolo de predicado D de L1
é associado ao predicado D da estrutura. Neste texto, isto quase sempre acontecerá: os
predicados terão sempre os mesmos nomes que os sı́mbolos de predicado. O mesmo vale para
funções e sı́mbolos de função. Poderia ser diferente: veja o próximo item;
(b) estrutura MB tal que |MB | = {a, e, i, o, u} e predicado T (n, m) significando n aparece antes
de m no alfabeto latino. Colocando T em formato de relação, temos
T = {(a, e), (a, i), (a, o), (a, u), (e, i), (e, o), (e, u), (i, o), (i, u), (i, u), (o, u)}
• predicado I = {1, 3, 5} e D = {(2, 1), (3, 1), (4, 1), (5, 1), (4, 2)}. O significado de I(x) é “x é
ı́mpar” e de D(x, y) é “x é divisı́vel por y e x 6= y”.
Temos alguns fatos muito importantes sobre estruturas:
83
4. uma estrutura ou modelo não necessariamente utiliza todas as relações (predicados), funções
e elementos do conceito que a origina. Por exemplo, os números naturais dão origem a
diversas estruturas e modelos que não necessariamente utilizam todas as relações e funções
que usualmente atribuı́mos aos números naturais. Por exemplo, uma estrutura baseada em
N pode utilizar apenas a função f e uma constante c (associados a + e 0, por exemplo).
Outra estrutura pode utilizar apenas < e nenhuma constante. E ainda outra estrutura pode
utilizar +, , < e 0, 1, 2, . . ..
Como exemplo, na estrutura |M3 |, I(2) é falso pois 2 6∈ I. Mas I(1) é verdadeiro, pois 1 ∈ I.
Da mesma forma, D(4, 1) é verdadeiro (pois (4, 1) ∈ D) e D(3, 5) é falso (D(3, 5) 6∈ D).
Os parágrafos anteriores sobre relações são muito importantes. Relei-a os!! E sempre que nos
referirmos a predicados, pense em relações. Ficará mais fácil de entender os conceitos assim.
Uma estrutura é basicamente um conjunto onde os elementos deste conjunto possuem algumas
relações entre si. Por exemplo, considere o conjunto composto dos alunos e o professor desta
disciplina. Este não é um conjunto qualquer de elementos. Há algumas relações entre os alunos,
entre os alunos e o professor, a nota de cada aluno e assim por diante. Um predicado C(x, y) nesta
estrutura pode significar “o aluno x conhece o aluno y e x 6= y”, onde tomaremos conhece por
“conhecer pessoalmente”. Da mesma forma, podemos definir um predicado Cp (x) como “o aluno x
conhece o professor” e P (x) como “x é o professor da disciplina”. Ficaria um pouco difı́cil definir
uma função para esta estrutura, mas isto poderia ser feito. Por exemplo, f (x1 , x2 , x3 ) poderia
ser “o aluno com nota mais alta entre x1 , x2 e x3 ”. Mas por simplicidade não incluiremos f no
exemplo dado a seguir.
O importante a aprender aqui é que uma estrutura é, geralmente, algo mais do que um
simples conjunto. Há uma relação entre os seus elementos expressado pelos predicados
e funções. É por isto que ela se chama estrutura (há uma estrutura no conjunto).
Exemplo 3.5. Definiremos um exemplo completo de uma estrutura para uma disciplina com
alunos e professor. Em primeiro lugar, chamaremos esta estrutura de M1 . O seu conjunto universo
|M1 | é
|M1 | = {ana, pedro, joão, josé, maria, thiago, patricia}
Agora precisamos definir uma linguagem L para esta estrutura. E para definir L precisamos de-
finir um vocabulário V. Neste texto, um vocabulário terá exatamente sı́mbolos iguais aos nomes
dos predicados e funções da estrutura com a qual ele será utilizado — exceto em dois exemplos
claramente definidos que utilizam sı́mbolos diferentes. Teremos predicados C(x, y), Cp (x) e P (x)
e então L terá sı́mbolos de predicado C binário e Cp e P unários. É interessante também colocar
um sı́mbolo de constante para “professor”. Este sı́mbolo será c (usando a convenção de que os
sı́mbolos de constante são c e ci , i ∈ N). Então o vocabulário será
V = {{C, Cp , P }, ∅, {c}}
84
A linguagem L associada a este vocabulário tem fórmulas como:
• ∃x∀y ¬C(y, x)
• P (x)−→∀y ¬C(x, y)
• ∃x ¬Cp (x)
• P (x)−→x = c
• ∀x (P (x)−→x = c)
Um bom exercı́cio é verificar o que significam as fórmulas acima (a sua tradução para Por-
tuguês).
Os predicados da estrutura são relações no conjunto |M1 |. Definiremos cada um deles:
C(x, y) é a relação “x conhece y”. Note que esta relação é simétrica: se C(x, y), então C(y, x).
É que, normalmente, se x conhece y, então y conhece x. Mas se você quisesse, poderia fazer C
não simétrico. Cp (x) é a relação “x conhece o professor”.
P = {josé}
85
“para todo x ∈ {ana, pedro, joão, josé, maria, thiago, patrı́cia}, se x ∈ {josé} então x = josé”
Esta última afirmação é claramente verdadeira pois x ∈ {josé} implica em x = josé. Logo
∀x (P (x)−→x = c) é verdadeira na estrutura M1 .
A fórmula ∃x ¬Cp (x) também é verdadeira em M1 . Ela quer dizer
“existe x ∈ |M1 | tal que não é verdade que Cp (x)”
que é
“existe x ∈ |M1 | tal que não é verdade que x ∈ Cp ”
que é
“existe x ∈ |M1 | tal que x 6∈ Cp ”
que é
“existe x ∈ {ana, pedro, joão, josé, maria, thiago, patrı́cia} tal que x 6∈ {patrı́cia, pedro, joão}”
Tome x = ana. Então x ∈ {ana, pedro, joão, josé, maria, thiago, patrı́cia} e x 6∈ {patrı́cia, pedro, joão}.
Logo ∃x ¬Cp (x) é verdadeira em M1 .
Uma fórmula sem os quantificadores ∀ e ∃, como C(x, y) ∧ C(y, z)−→C(x, z) deve ser interpre-
tada como se houvesse quantificadores ∀ para cada uma das variáveis não ligadas a quantificadores.
Isto é, C(x, y) ∧ C(y, z)−→C(x, z) deve ser interpretada como a fórmula
Como um outro exemplo, P (x)−→x = c deve ser interpretada como ∀x (P (x)−→x = c). Então as
fórmulas abaixo têm a mesma interpretação:
¬(x = y) ∧ C(x, y)−→C(y, x)
∀x (¬(x = y) ∧ C(x, y)−→C(y, x))
∀y (¬(x = y) ∧ C(x, y)−→C(y, x))
∀x∀y (¬(x = y) ∧ C(x, y)−→C(y, x))
Já provamos que ∀x (P (x)−→x = c) é verdadeira na estrutura M1 dada como exemplo (alunos
e professor). Então
M1 {∀x (P (x)−→x = c)}
Da mesma forma, já provamos que ∃x ¬Cp (x) é verdadeira neste modelo:
86
A fórmula ∀x∀y (C(x, y)−→C(y, x)) também é verdadeira em M1 : a sua interpretação é “para
todo x, se (x, y) ∈ C então (y, x) ∈ C”. Uma inspeção no conjunto C mostra que esta frase é
verdadeira. Então se
Exemplo 3.6. Considere uma linguagem L1 que não possui sı́mbolos de predicado, função ou
constante e o conjunto Γ = {∀x∀y(x = y)}, composto por uma única fórmula. Então uma estrutura
que utiliza o conjunto {0} é modelo para Γ. Não é necessário especificar nenhum predicado, função
ou constante, pois a linguagem não possui sı́mbolos para eles.
E porquê esta estrutura é modelo para ∀x∀y (x = y)? Porque esta fórmula quer dizer que,
“para todo x e y do conjunto da estrutura, x = y”. Claro. O conjunto só possui o número 0 e
logo todo x e y é 0. Só pode ser. Os modelos desta fórmula possuem todos um único elemento.
Os modelos poderiam utilizar outros conjuntos, por exemplo, {1}, {z}, { terra } (quero dizer o
planeta terra), { A } (a letra “A”), etc.
Observe que escrevemos “esta estrutura é modelo para ∀x∀y (x = y)” ao invés do mais longo
“esta estrutura é modelo para o conjunto {∀x∀y (x = y)}”.
Nesta mesma linguagem, considere a fórmula ∀x∃y ¬(x = y). Qualquer estrutura com pelo
menos dois elementos é modelo para esta fórmula. Por exemplo, uma estrutura com o conjunto
{0, 1}. Para todo x ∈ {0, 1}, sempre há um y diferente de x. Isto vai acontecer sempre que o
conjunto universo tiver mais do que dois elementos.
Exemplo 3.7. Considere a linguagem L2 com sı́mbolo de predicado binário <, sı́mbolos de função
binários + e × e sı́mbolos de constante 0 e 1. O conjunto N com as operações usuais é estrutura
para esta linguagem, abreviada para hN, <, +, ×, 0, 1i. Esta estrutura é modelo para a fórmula
? Vejamos. Para uma estrutura M1 ser modelo para X ∧ Y , ela deve ser modelo para X e Y .
Neste caso, N deve ser modelo para ∀x∀y (x < x + y ∨ y = 0) e ∀x (5 × x = (3 × x) + x + x). Estas
fórmulas significam
87
Então podemos concluir que
N (∀x∀y (x < x + y ∨ y = 0)) ∧ ∀x (5 × x = (3 × x) + x + x)
Aqui já usamos N no lugar de hN, <, +, ×, 0, 1i. Não há ambiguidades neste uso.
Exemplo 3.8. Considere agora a linguagem L3 com o sı́mbolo de predicado <, sı́mbolos de
função + e × e os sı́mbolos de constante 0 e 1. Que estruturas podem ser modelos para a fórmula
∀x∀y (x × y = x + y)? Considere uma estrutura M1 com os sı́mbolos aritméticos <, + e × com
universo |M1 | = {0, 1} e a seguinte definição das funções + e ×:
0 + 0 = 0, 1 + 0 = 0 + 1 = 1, 1 + 1 = 1
0 × 0 = 0 × 1 = 1 × 0 = 0, 1 × 1 = 1
M1 pode ser modelo para ∀x∀y (x × y = x + y)? Lembre-se de que o universo de uma estrutura
ou modelo é o seu conjunto de elementos. Neste caso, associamos o sı́mbolo < da linguagem L3
ao predicado < usual da aritmética, que significa “menor” (x < y é “x é menor do que y”). É
importante lembrar que, apesar do sı́mbolo ser o mesmo, <, eles são diferentes na linguagem (não
possui nenhum significado) e na estrutura (tem um significado, significa que um número é menor
do que outro na ordem dos números naturais). A mesma observação vale para +, × e os sı́mbolos
de constante. Sim, 0 é um sı́mbolo na linguagem L3 , não é o número 0. Na estrutura M1 , 0 é o
número zero que conhecemos, 0 ∈ N.
E então, a estrutura M1 com universo {0, 1} pode ser modelo para a fórmula ∀x∀y(x×y = x+y)?
Claramente não. Esta fórmula, interpretada nesta estrutura, quer dizer, “para todo x ∈ {0, 1} e
para todo y ∈ {0, 1} temos x × y = x + y”. Mas tomando x = 1, y = 0, temos
1×0=1+0
Mas 1 × 0 = 0 e 1 + 0 = 1. Então M1 6 ∀x∀y (x × y = x + y).
Tomando-se a estrutura M10 de L3 na qual |M1 |0 é o conjunto N e os sı́mbolos <, + e × possuem
a interpretação usual, temos que M10 é modelo para ∀x∃y (y = x + 1). Nos naturais, a soma de
um número com 1 sempre pertence aos naturais. Isto é, dado x ∈ N, x + 1 ∈ N. Note que esta
estrutura não é modelo para a fórmula ∀x∃y (x = y + 1). Interpretada, quer dizer “para todo
x ∈ N, existe um y ∈ N tal que x = y + 1”( y = x − 1). Tomando x = 0, y deveria ser −1, mas
−1 6∈ N.
Usualmente, abreviamos a estrutura M1 para h{0, 1}, <, +, ×, 0, 1i.
Exemplo 3.9. Considere agora a linguagem L4 com os sı́mbolos de predicado D(x, y) e P (x), o
sı́mbolo de função + e os sı́mbolos de constante 0 e 1. Procuraremos modelos para o conjunto
Γ = {∀x (x = 0 ∨ x = 1 ∨ P (x)), ∀x (P (x)−→¬∃y (¬(y = 1) ∧ ¬(x = y) ∧ D(x, y)), ∃x∀y (x + y = y)}
Considere agora a estrutura M1 para L4 com universo |M1 | = {0, 1, 2, 5, 7}, predicado D(x, y)
com significado “y divide x”, predicado P (x) com significado “x é um número primo” e função +
usual da aritmética. Os sı́mbolos de predicado, função e constante da linguagem L4 são associados
aos sı́mbolos de mesmo nome da estrutura. Pergunta-se: é M1 modelo para Γ? Vejamos.
88
1. a primeira fórmula, ∀x (x = 0 ∨ x = 1 ∨ P (x)), interpretada em M1 , diz que um número de
|M1 | = {0, 1, 2, 5, 7} é 0, 1 ou primo. O que é verdade, pois 2, 5 e 7 são primos;
Definição 3.10. Considere M uma estrutura de uma linguagem L. Seja t um termo t(v1 , v2 , ...vn )
com vi , v2 , . . . vn meta-variáveis2 livres3 e ~a = (a1 , a2 , ...an ) uma seqüência de elementos em |M |
(ai ∈ |M |). O valor de t em M , utilizando-se ~a, é denotado por tM [~a] e definido indutivamente
como:
1. ai se t é vi ;
3. f M (tM a], tM
1 [~ a], . . . tM
2 [~ k [~
a]) se t é f (t1 , t2 , . . . tk ).
Então tM [~a] é na verdade a aplicação de uma função especı́fica para M que toma ~a e t como
parâmetros e produz um elemento de |M | como resultado:
gM : T ∗ × S ∗ −→|M |
2
Qualquer uma delas pode ser substituı́da por qualquer outra variável da linguagem.
3
Variáveis que aparecem em termos sempre são livres.
89
T ∗ é o conjunto de termos da linguagem e S ∗ é o conjunto de todas as seqüências de |M |, de
todos os tamanhos. Usamos M em gM para indicar que g é especı́fico para esta estrutura. Outra
estrutura exigiria um g diferente.
Intuitivamente, tM [~a] é o elemento de |M | resultado da avaliação de t em M utilizando ~a como
valores para as variáveis livres. Note que tM [~a] é um valor em |M | e t é apenas uma seqüência
de sı́mbolos sem significado. Note que f M (tM a], tM
1 [~ a], . . . tM
2 [~ a]) é um valor em |M | — a função
k [~
realmente é avaliada.
Exemplo 3.10. Como exemplo de cálculo do valor de termos, considere a estrutura M = hN, +, ×, 0, 1i,
o termo t igual (x + 1) y e a sequência ~a = (1, 3):
tM [~a] = (1 + 1) 3 = 6
Repetiremos este cálculo colocando i acima, sobre chaves, das partes da fórmula que são sintaxe e
m para as partes que são do modelo. As partes com i não têm significado algum pois são apenas
linguagem. Mas fornecendo-se um modelo M e uma sequência ~a de valores para as variáveis livres,
o termo resulta em um valor que é elemento do universo do modelo.
i i m i
z }| { z }| {
M M
y M [~a]
z}|{ z}|{
((x + 1) y) [~a] = (x + 1) [~a]
i m i m i
z}|{ z}|{
= ( x M [~a] + 1 M [~a])
z}|{ z}|{ z}|{ M
y [~a]
m
z }| {
= (1 + 1) 3
m
z}|{
= 23
m
z}|{
= 6
90
Exemplo 3.11. Considere a estrutura M = hR, +, , f, 0, 1, 2i na qual − representa a subtração
e f é a função fatorial. Naturalmente, a linguagem possui sı́mbolos iguais a estes. Calculemos
alguns termos usando sequências diferentes:
0 5 3
(((( x2 +2) x1 ) x3 ) + 1)M [~a] =
z}|{ z}|{ z}|{
((((0 + 2) 5)) 3) + 1
= (2 5) 3 + 1
= 10 3 + 1
= 31
Note que o valor de t depende não só dos valores de ~a, mas também da estrutura utilizada.
Poderı́amos ter valores diferentes em diferentes interpretações. Por exemplo, suponha que t =
x1 + x2 e ~a = (1, 1). Na estrutura M2 =def < N, +, , 0, 1 > dos números naturais, tM2 [~a] = 2.
Mas no modelo Z2 , que contém apenas os elementos 0 e 1 e onde 1 + 1 = 0, temos tZ2 [~a] = 0.
Definição 3.11. Seja A(v1 , v2 , ...vn ) uma fórmula em uma linguagem L, vi , v2 , . . . vn meta-
variáveis, M uma estrutura de L e ~a uma seqüência em |M |. Escrevemos “~a satisfaz A em M ”,
denotado por M A[~a], se uma das condições abaixo é satisfeita.
1. A é t1 = t2 e tM a] = tM
1 [~ 2 [~
a]. Ou seja,
M (t1 = t2 )[~a] sse tM a] = tM
1 [~ 2 [~
a]
O sı́mbolo = que aparece em t1 = t2 é o sı́mbolo da linguagem de primeira ordem. O sı́mbolo
= em tM a] = tM
1 [~ 2 [~
a] é o igual do modelo M . Admite-se que todos os modelos utilizam o
mesmo sı́mbolo de igualdade e que este sı́mbolo é igual ao sı́mbolo das linguagens de primeira
ordem. Uma notação mais precisa utilizaria =M para denotar igualdade entre os elementos
do modelo M ;
91
3. A é ¬B e M 6 B[~a]. Ou seja,
M ¬B[~a] sse M 6 B[~a]
Escrevemos M 6 B[~a] para “~a não satisfaz A em M ”. Isto é, utilizando as regras de
satisfabilidade apresentadas aqui, não se consegue provar que M B[~a];
5. A é ∃x B(x). Seja y uma variável que não pertence ao conjunto de variáveis utilizadas em
A. Então
M (∃x B(x))[~a] sse existe b ∈ |M | tal que M Byx [b, ~a].
onde |M | é o universo da estrutura M . O sı́mbolo Byx é a fórmula B com x substituı́do por
y. Naturalmente, b substituirá y nas aplicações indutivas para se descobrir a satisfabilidade
de A.
A definição de satisfação dada acima exige que a estrutura obedeça as regras da lógica clássica.
Por exemplo, quando se diz que os números naturais são uma estrutura para uma certa linguagem4
exige-se mais do que a presença das funções + e . Exige-se, por exemplo, que neste pequeno
mundo dos números uma fórmula como ¬B seja considerada “verdadeira” se e somente se B seja
considerada “falsa”. E que ∀xB(x) seja considerada “verdadeira” se e somente se B é “verdadeira”
quando x é substituı́do por cada um dos números naturais. Então de certa forma as interpretações
interpretam também os sı́mbolos da lógica como ¬, −→ e ∀. Estes sı́mbolos são interpretados como
na lógica clássica, o que pode ser observado nas definições de satisfação acima:
4
Por exemplo, a linguagem que utiliza os sı́mbolos +, , < e a constante 0.
92
• o ¬ é interpretado com um não: M ¬B[~a] sse ~a não satisfaz B em M ;
• o −→ é interpretado como no CP: M (B−→C)[~a] sse ~a não satisfaz B em M ou ~a satisfaz
C em M ;
• o ∧ é interpretado como um “e” na linguagem natural (Português, Inglês): M (B ∧ C)[~a]
sse ~a satisfaz B em M e ~a satisfaz C em M ;
• o ∨ é interpretado como um “ou” na linguagem natural: M (B ∨ C)[~a] sse ~a satisfaz B em
M ou ~a satisfaz C em M ;
• o ←→ é interpretado como um “se e somente se” na linguagem natural: M (B←→C)[~a]
sse (~a satisfaz B em M se e somente se ~a satisfaz C em M ).
Uma estrutura então é composta por uma “parte do mundo” mais as regras da lógica clássica.
Note que a definição de estrutura engloba, de certa forma, a definição de tabelas verdade do
cálculo proposicional: elas dizem o que deve ser verdadeiro e o que deve ser falso (por enquanto,
satisfazı́vel e não satisfazı́vel).
Exemplo 3.12. Como exemplo, considere a estrutura M = hZ, <, +, ×, 0, 1i. Iremos verificar se
algumas sequências satisfazem algumas fórmulas nesta estrutura.
(a) x = 2 × x com ~a = (5, 3, 4). Aqui colocamos mais valores na sequência do que variáveis livres
na fórmula. Não tem importância. Usamos o primeiro valor, 2. Então ficamos com
Como 0 < 2 é satisfeito em Z, 3 < y não é satisfeito para todo y (pois há y menores ou iguais
a 3), temos que ~a = (3, 2, −5) satisfaz ∀y (0 < z−→(x < y−→x < y + z)) em Z. Ou seja,
M (∀y (0 < z−→(x < y−→x < y + z)))[~a]
93
(c) ∀x(x + y = 0) com ~a = (1, 4). Para ~a satisfazer a fórmula em M , terı́amos que ter x + 1 = 0
para todo x ∈ Z. Como isto não acontece, temos
M 6 (∀x(x + y = 0))[~a]
M (∃y (x = y + z))[~a]
∀x1 ∀x2 . . . xn A
• uma certa fórmula pode não ser verdadeira nem falsa. Por exemplo, na estrutura M = hZ, <
, +, ×, 0, 1i, a fórmula
x=2×x
94
• se uma fórmula é verdadeira então ela não é falsa. Se é verdadeira, pela definição ela não
pode ser falsa. Se é falsa, pela definição de fórmula falsa ela não pode ser verdadeira;
Definição 3.15. Uma estrutura M de uma linguagem L é um modelo para uma fórmula A em
L se A é verdadeira em M . Escrevemos M A.
Exemplo 3.14. Como exemplo, considere a estrutura M = hZ, <, +, ×, 0, 1i. Iremos verificar se
algumas fórmulas são verdadeiras nesta estrutura; isto é, se a estrutura é modelo para cada uma
das fórmulas.
0 = 2×0
0 = 0
Correto. Note que avaliamos a fórmula dentro do modelo. Assim, os sı́mbolos = e × que
aparecem nestas duas fórmulas são o igual do modelo e a multiplicação em Z. Então
M ∃x (x = 2 × x)
(b) ∀x∀y∃z (0 < z−→(x < y−→x < y + z)). Para todo x, y e z de Z, se z > 0 então se x < y
temos x < y + z? Claramente sim. Esta é uma fórmula do tipo A−→(B−→C) que já vimos
(Exercı́cio 2.28) ser logicamente equivalente a A ∧ B−→C. Então a fórmula acima quer dizer
“se z > 0 e x < y temos x < y + z”? Sim, pois z é positivo e temos x < y < y + z.
Então
M ∀x∀y∃z (0 < z−→(x < y−→x < y + z))
Ou, se preferir, Z ∀x∀y∃z (0 < z−→(x < y−→x < y + z));
(c) ∀x∃y (x + y = 0). Para todo x de Z existe um y em Z tal que x + y = 0? Sim. Escolhendo
x = n, basta tomar y = −n. Este y sempre existe em Z. Logo
M ∀x∃y (x + y = 0)
(e) ∀x∀y∀z (x < y ∧ y < z−→x < z). Esta fórmula é claramente verdadeira em N, Z e R. A prova
é trivial e deixada como exercı́cio;5
5
Isto significa que o escritor não teve paciência suficiente para colocar a prova aqui. Então ele deixou para o
leitor esta responsabilidade.
95
(f) ∀x∃y (x × y = 1). Esta fórmula quer dizer que “para todo x ∈ Z, existe um y ∈ Z tal que
x × y = 1”. Falso. Tome x = 2. Não há y em Z tal que x × y = 1. Se a estrutura fosse R,
esta fórmula seria verdadeira. Concluindo,
Z 6 ∀x∃y (x × y = 1)
R ∀x∃y (x × y = 1)
Exemplo 3.15. Como exemplo, considere a estrutura M = hN, D, <, +, ×, 0, 1i na qual D é uma
relação binária tal que D(x, y) se e somente se x divide y. Exige-se que x 6= 0. Então
(a) ∀x∃y (y 6= 1 ∧ D(y, x)). Falso. Tome x = 1. Não há y 6= 1 que divide 1;
(b) ∀x(1 < x−→(∃y (y 6= 1 ∧ D(x, y))). Para todo x > 1, x ∈ N, existe um y ∈ N, y 6= 1 tal que x
divide y. Quer dizer, todo número inteiro maior do que 1 é divide um número diferente de 1.
Verdadeiro, pois todo número divide o seu dobro;
(c) ∀x(1 < x−→(∃y (y 6= 1 ∧ x 6= y ∧ D(y, x))). Usamos x 6= y para ¬(x = y). Esta fórmula é
falsa, pois os números primos só são divisı́veis por 1 e por eles mesmos. Então se tomarmos x
como 7, por exemplo, a fórmula é falsa. E
(1 < x−→(∃y (y 6= 1 ∧ x 6= y ∧ D(y, x))
tem que ser verdadeira para todo x ∈ N.
Definição 3.16. Uma estrutura M de uma linguagem L é um modelo para um conjunto de
fórmulas Γ em L se M é modelo para cada uma das fórmulas de Γ. Escrevemos M Γ.
96
Figura 3.1: Conjuntos representando fórmulas verdadeiras nas estruturas de uma linguagem L.
Assuma que as três estruturas representadas representem todas as estruturas desta linguagem.
Prova. A é falso em uma estrutura M (definição de fórmula falsa) sse nenhuma seqüência ~a de
|M | satisfaz A em M sse (expandindo “nenhuma seqüência”) toda seqüência ~a de |M | não satisfaz
A em M sse (pela definição 3.11 de 6) para toda seqüência ~a de |M | tem-se M 6 A[~a] sse (pela
definição 3.11 de satisfação de ¬B) para toda seqüência ~a de |M | tem-se M ¬A[~a] sse (definição
de fórmula verdadeira em uma estrutura) ¬A é verdadeira.
Esta prova poderia ser resumida [8] para : uma seqüência ~a satisfaz ¬A sse ~a não satisfaz A.
Portanto, todas as seqüências satisfazem ¬A sse nenhuma seqüência satisfaz A. Ou seja, ¬A é
verdadeira sse A é falsa.
É importante observar que, se A possui variáveis livres, A poderia não ser verdadeiro nem falso
em uma estrutura. Mas se A é verdadeiro em uma estrutrura M , ¬A é falso. E se A é falso em M ,
¬A é verdadeiro. Então temos três possı́ves “valores verdade” para uma fórmula A com variáveis
livres: V, F, I. Este último sı́mbolo representa “a fórmula não é nem verdadeira nem falsa”.
Pode-se concluir que, se uma fórmula A não é verdadeira, A pode ter tanto o valor verdade F
como I. Então se A não é verdadeira não se pode concluir que A possui o valor verdade F, que A
é falsa.
Definição 3.18. Uma fórmula A de uma linguagem L é logicamente válida se e somente se ela
é verdadeira em todas as estruturas de L.
Uma fórmula é verdadeira em uma estrutura se ela é verdadeira naquele pedaço “mundo real”
que chamamos de estrutura de uma linguagem (veja definição 3.13). Se uma fórmula é verdadeira
em todas as estruturas, então é claro que a veracidade dela não depende de algo particular de
nenhuma parte do “mundo real”, a sua veracidade não depende das estruturas. Isto significa que
a fórmula é logicamente válida por causa da definição 3.13 de verdade, que por sua vez depende
da definição 3.11 de satisfação. A definição de satisfação depende das regras da lógica usuais, como
A−→B é verdade se A é falsa ou B é verdade. Então a definição de logicamente válida coincide
com a definição usual, que é ser verdade independente de uma estrutura especı́fica. É “verdade”
apenas pelas regras da lógica.
97
A Figura 3.1 mostra conjuntos de fórmulas verdadeiras em três estruturas de uma linguagem L.
Assuma que estas três estruturas representem todas as possı́veis estruturas desta linguagem. As
fórmulas logicamente válidas em L estão na intersecção de todos os três conjuntos representados
na figura, que é a área em cinza.
Pela definição de logicamente válido, temos que todos os axiomas são logicamente válidos.
Como um exemplo de fórmula logicamente válida temos
• ∀x A−→∃x A, que quer dizer, em uma estrutura, que se todos os elementos do modelo
satisfazem certas propriedades dadas por A, então existe um elemento que satisfaz aquelas
propriedades;
• A−→A, óbvio;
ΓP x + y = y + x
ΓP ∃x(y + y = x)
ΓP ∃z (¬(z = 0) ∧ x + z = y)−→¬(x = y)
98
Para provar que Γ A, tome um modelo M qualquer (genérico, não especı́fico) de Γ e prove
que M A. Por exemplo, provaremos que
Q(c) 6 ∀x Q(x)
Claramente isto é correto, pois se temos Q(c) não necessariamente temos Q(x) para todo
x da estrutura. Se alguém tem olhos azuis, não necessariamente todo mundo tem olhos azuis.
Acharemos um contra-exemplo concreto para este caso.
Considere o modelo M com universo |M | = {0, 1} que associa à constante c da linguagem o
elemento 0. O predicado Q é {0}. Então M Q(c)[b] para todo b ∈ |M |, pois 0 ∈ Q e b não é
utilizado. Ou mais claramente, M Q(c) pois temos Q(0) na estrutura M . Mas 1 6∈ Q e portanto
não é verdade que para todo x do universo da estrutura, temos Q(x). Mais formalmente, não é
verdade que
M (∀x Q(x))[b] para todo b ∈ |M |
Isto significaria 0 ∈ Q e 1 ∈ Q. Não se esqueça de que usamos Q para sı́mbolo de predicado (nas
fórmulas) e Q para o predicado da estrutura.
Esta seção ensinou como associar conjuntos de fórmulas a algo chamado modelo. Ou o contrário,
podemos abstrair o modelo em um conjunto de fórmulas, colocando nelas apenas os fatos que nos
interessam. Vimos que um conjunto de fórmulas pode ser associado a mais de um modelo. De
fato, qualquer conjunto de fórmulas pode ser associado a nenhum ou a infinitos modelos. Sim,
pode não existir nenhum modelo para as fórmulas. Por exemplo, não há nenhum modelo para a
fórmula P (x) ∧ ¬P (x) pelo simples fato de que ela não é verdadeira de nenhum modo.
A associação de fórmulas a um modelo é uma ferramenta muito útil. Inicialmente abstraı́mos
o modelo para um conjunto de fórmulas Γ e a partir daı́ podemos trabalhar estas fórmulas sintati-
camente. Utilizando Γ, os axiomas da Lógica de Primeira Ordem e as regras de dedução, podemos
produzir teoremas que são sempre verdadeiros no modelo. Em resumo, podemos produzir verdades
a respeito do mundo utilizando apenas algumas poucas regras da lógica.
99
Exercı́cios
3.15. Defina estrutura para uma linguagem. Dê um exemplo de linguagem e de duas estruturas
para ela.
3.16. As funções de uma estrutura podem ser de um subconjunto do universo para outro subcon-
junto ?
3.17. Explique a frase: “um conjunto de fórmulas lógicas comprimem informações sobre uma parte
do mundo real”. Na sua explicação, explique porque as deduções que podem ser feitas utilizando
as fórmulas permitem comprimir uma grande quantidade de informação em poucas fórmulas.
3.18. (Muito Importante) Faça um modelo M para cada um dos itens abaixo tal que
(h) 1) R(x, y) sempre que x 6= y; 2) sempre que Q(x), P (y), x 6= y, então R(x, y);
(i) todo x esteja relacionado (via uma relação binária R) com todo y diferente dele (o que é isto?);
(j) há um grupo de elementos (com dois ou mais elementos — você fixa este número) relacionados
entre si via uma relação binária R sendo que nenhum elemento deste grupo se relaciona com
nenhum outro elemento que não pertence a este grupo.
3.19. (Muito importante) Prove que as fórmulas abaixo não são logicamente válidas. Isto é, cada
uma delas não é válida em algum modelo.
3. R(x, y)
4. P (x)−→Q(x)
6. ∀x∃y (y × y = x)
7. R(x, y)−→S(x, y)
100
3.20. Faça dois modelos para a fórmula ∀x∀y∃z (¬(z = x) ∧ ¬(z = y)). Interpretada nestes
modelos, o que quer dizer a fórmula?
3.21. Considere uma estrutura M com universo {2, 4, 6, 8}, predicado < e função +. O predicado
< é o usual da aritmética. A função + é definida da seguinte forma: x + y = y + x, 2 + 4 = 6,
2 + 6 = 8, 2 + 8 = 8, 4 + 6 = 8, 4 + 8 = 2, 6 + 8 = 4. Baseado nesta estrutura, faça:
(a) a linguagem apropriada para representar fórmulas que podem ser interpretadas nesta estru-
tura;
(b) uma única fórmula tal que M seja modelo desta fórmula;
(c) outra estrutura M2 diferente de M tal que M2 também seja modelo desta fórmula;
(d) um conjunto de fórmulas Γ com pelo menos duas fórmulas tal que M seja modelo deste
conjunto;
(e) outra estrutura M2 diferente de M tal que M2 também seja modelo do conjunto Γ definido
no item anterior.
(a) a linguagem apropriada para representar fórmulas que podem ser interpretadas nesta estru-
tura;
(b) uma única fórmula tal que M seja modelo desta fórmula;
(c) outra estrutura M2 diferente de M tal que M2 também seja modelo desta fórmula;
(d) um conjunto de fórmulas Γ com pelo menos três fórmulas tal que M e M2 sejam modelos
deste conjunto.
3.25. Escreva, em Português, o significado da fórmula ∀x (Pd (x, y)−→¬∃z Pd (y, z)) utilizando o
modelo Zoo. Verifique se esta fórmula é verdadeira no modelo Zoo.
3.26. Defina modelo de um conjunto de fórmulas. Faça um exemplo de modelo de um conjunto
de duas fórmulas.
3.27. O valor de um termo t em uma estrutura M é um objeto de que tipo ? É sı́mbolo da
linguagem ? Constante ? Um número natural ou real ?
101
3.28. Explique em palavras com se calcula o valor de um termo para uma estrutura utilizando ~a
como seqüência.
3.29. Dê um exemplo de modelo e de verificação que M (∀x A(x))[~a] para certa fórmula A com
variável livre x e seqüência ~a.
3.31. Faça outro modelo com números para as fórmulas Γabs (Capı́tulo E). Sugestão: acrescente
elementos no conjunto universo de Num.
3.32. Faça outro modelo para o conjunto Γabs (Capı́tulo E). Suponha que os professores do en-
sino fundamental de uma escola façam um curso em uma Universidade onde haja pelo menos
dois professores, um homem e uma mulher, que não ensinem no ensino fundamental. A relação
Devora(x, y) é “x ensina y”.
3.35. Faça uma estrutura e uma fórmula tal que a fórmula não seja nem verdadeira nem falsa na
estrutura.
(a) M2 {B, C}
102
(c) Mi {B, C, D} para i ∈ N;
Justifique.
3.37. Prove que o axioma A−→(B−→A) é verdadeiro em qualquer estrutura.
3.38. Represente graficamente as fórmulas logicamente válidas de uma linguagem (como feita na
apostila). Mostre onde estão estas fórmulas no desenho.
3.39. Pode uma fórmula que represente uma informação especı́fica de uma estrutura ser logica-
mente válida ?
3.40. Faça uma fórmula A de uma linguagem L tal que todos os modelos de A tenham apenas
um elemento.
3.41. Faça uma fórmula A de uma linguagem L tal que todos os modelos de A tenham exatamente
dois elementos.
3.42. Uma estrutura de uma linguagem L pode associar duas constantes da linguagem a um
mesmo elemento do universo da estrutura ? Dê um exemplo.
3.43. Uma estrutura de uma linguagem L pode associar dois sı́mbolos de função da linguagem a
uma mesma função da estrutura ? Dê um exemplo.
3.44. Encontre modelos em que as fórmulas abaixo não são verdadeiras. Então estas fórmulas não
são logicamente válidas.6
103
1. f (a, b) = f (b, a)
2. ∀x ∃y f (x, y) = a
3. ∃x ∀y f (x, y) = a
3.46. Utilizando a linguagem e os sı́mbolos de predicado do exercı́cio 3.13, faça fórmulas que,
quando interpretadas na Aritmética, representem as seguintes frases
(a) dado um número primo, existe outro primo maior do que ele (existem infinitos primos);
(g) Se x + 1 = y + 1, então x = y.
3.47. Um conjunto de sentenças é satisfazı́vel se existe um modelo para elas e neste modelo há pelo
menos uma seqüência que satisfaça a todas elas. Verifique se cada um dos conjuntos de sentenças
abaixo é satisfazı́vel.
104
Seção exatamente como ela está. Neste caso, uma fórmula x(P (x) ◦ Q(x)) poderia ser lida, por
exemplo, como “Quadrado x, P (x) cı́rculo Q(x)”. Porém, antes de apresentar os axiomas e regras
de dedução, é necessário estudar algumas definições e precauções que devem ser tomadas no estudo
deste tipo de sistema formal.
Por exemplo, o escopo de x e y nas fórmulas abaixo estão indicadas pelos sobre-escritos.
x y
z }| { z }| {
(∀x (P (x)−→I(x))) ∧∃y (y < 0 ∨ I(y))
x1 x2
z }| { z }| {
∀x (x < 0 ∨ ∃y f (y) = 0) ∨∃x (P (x) ∨ x = x + 1)
Neste último exemplo, o escopo do primeiro x está indicado por x1 e o do segundo, por x2 .
Note que, em ∀x A, A não necessariamente utiliza a variável x. Poderı́amos ter uma fórmula
∀x (y < 0 ∧ P (z)). Mas neste caso o quantificador poderia ser removido sem alterar nenhuma
propriedade importante da fórmula.
Utilizaremos A(xi1 , xi2 , ...xik ) para uma fórmula A que possivelmente, mas não necessariamente,
possui xi1 , xi2 , ... e xik como variáveis livres. Se A é
x < 1 ∧ ∀y P (x, y)
podemos escrever A(x), o que faz sentido, e podemos escrever A(x, z), que não faz sentido mas é
correto. E também o mais confuso A(x, y). Escrever A(x, z) ou A(x, y) é equivalente a escrever
A(x). Normalmente, queremos que a fórmula A(xi1 , xi2 , ...xik ) tenha xi1 , xi2 , ... e xik como variáveis
livres.
Os sı́mbolos P e f são meta-sı́mbolos que representam um sı́mbolo de predicado qualquer
e um sı́mbolo de função qualquer. Assim, ∀x ∀y P (x, f (1, y, 3)) representa todas as fórmulas
(infinitas delas) onde P é um sı́mbolo de predicado qualquer de aridade dois e f é um sı́mbolo
de função qualquer de aridade três. Note que não adotamos aqui a convenção utilizada no inı́cio
deste Capı́tulo onde H(x), P (x), etc eram predicados especı́ficos, representavam exatamente uma
propriedade como “homem”, “primata”, etc.
105
∃y∀z(z = y−→∀x Q(x))
∀x (x = x)
Em
(∀x P (x)) ∧ (x = c−→Q(x))
o primeiro x, em P (x), é ligado enquanto que x é livre nas próximas ocorrências (na sub-fórmula
x = c−→Q(x)).
Definição 3.24. Usamos Ax (t) para uma fórmula A com uma variável x não ligada a nenhum
quantificador sendo que x foi substituı́do por t.
Por exemplo, Ax pode ser P (x)−→Q(x). Neste caso, Ax (t) seria P (t)−→Q(t). Se Axy for
∀z ((P (x, y)−→x < 0), então Axy (1 + 2, 3) será ∀z ((P (1 + 2, 3)−→1 + 2 < 0).
O último axioma pode ser aplicado a qualquer função da linguagem empregada. Por exemplo,
se tivermos uma função g binária, o axioma para esta função é:
Considere uma linguagem com sı́mbolos de função + e , sı́mbolos de predicado < e sı́mbolos
de constante 0 e 1. Então, como exemplo do axioma A2, temos
1 0 = 0−→∃x (1 x = 0)
106
eliminação: se A ∨ A é um teorema, então A é um teorema;
associatividade: se A ∨ (B ∨ C) é um teorema, (A ∨ B) ∨ C é um teorema;
corte: se A ∨ B e ¬A ∨ C são teoremas, B ∨ C são teoremas.
se ¬A ∨ B é um teorema, então A−→B é um teorema e vice-versa.
se ¬(¬A ∧ ¬B) é um teorema, então A ∨ B é um teorema e vice-versa.
se ¬(¬A ∨ ¬B) é um teorema, então A ∧ B é um teorema e vice-versa.
se A←→B é um teorema, então (A−→B) ∧ (B−→A) é um teorema e vice-versa.
introdução do ∃: se x não é livre em B (não existe ou é ligado) e A−→B é teorema, então
(∃xA)−→B é teorema.
O primeiro axioma e as oito primeiras regras são as mesmas do CP. Como exemplo da regra
da introdução do ∃, considere que R(x, y)−→∃z P (z) é teorema. Então por esta regra,
(∃x R(x, y))−→∃z P (z)
é teorema. Aplicando a regra novamente com y, temos que
(∃y ∃x R(x, y))−→∃z P (z)
é teorema.
Definição 3.25. Uma seqüência de fórmulas B1 , B2 , ..., Bn é uma prova de Bn se cada Bi é:
Note que uma teoria de primeira ordem pode ter axiomas especı́ficos para certo domı́nio, além
dos axiomas A1-A7. Por exemplo, uma LPO para formalizar a Aritmética teria axiomas como
∀x (x + 0 = x)
∀x∀y (x.(y + 1) = x.y + x)
Estes axiomas são chamados de axiomas próprios ou axiomas não lógicos.
107
3.6.2 Meta-teoremas e Definições sobre as Teorias de Primeira Ordem
Freqüentemente será necessário substituir uma variável livre por um termo. Por exemplo, dada a
fórmula
∀x ∃z (x + z = y)
pode ser necessário substituir y pelo termo 2 + 3. Então terı́amos
∀x ∃z (x + z = 2 + 3)
Não houve problema algum, o significado inicial da fórmula continua intacto. Considere por um
momento que esta fórmula se refere aos elementos de Z (inteiros positivos e negativos) e que possui
o significado usual. Neste caso, para todo x, dado um y, existe um z tal que x+z = y. Substituindo
o y por 2 + 3 o significado continua válido: para todo x, existe um z tal que x + z = 2 + 3. Mas e
se o termo tiver variáveis? Substitua y por 2 + w:
∀x ∃z (x + z = 2 + w)
Não houve nenhum problema: para todo x, dado 2 + w, existe um z tal que x + z = 2 + w. Mas e
se y for substituı́do pelo termo 2 + z? Teremos
∀x ∃z (x + z = 2 + z)
Agora a interpretação é: para todo x, dado 2 + z, existe um z tal que x + z = 2 + z. O significado
mudou. Utilizando as regras usuais da Aritmética, esta fórmula esta dizendo simplesmente que,
para todo x, x = 2. O que aconteceu? Colocamos um termo, 2 + z, que continha uma variável,
z, que já estava ligada (pelo ∃). Isto sempre mudará o “significado” da sentença. Então este tipo
de substituição será proibido. Só se poderá substituir, em uma fórmula A, uma variável y por um
termo t se t for livre para y em A.
Se t for f (w) + 2, podemos substituir y por t nas seguintes fórmulas
∀x (y < x)
∃x1 ∀x2 (f2 (x1 , x2 , y) = 0)
∀y (f1 (y) < 0)−→(y + 1 = 2)
P (y) ∧ ∀x (x < y)−→∃w P (w)
Note que a terceira fórmula é (∀y (f1 (y) < 0))−→(y +1 = 2) e que a terceira e última ocorrência
de y é livre nesta fórmula.
A quarta fórmula é (P (y) ∧ ∀x (x < y))−→∃w P (w). Substituindo y por f (w) + 2 não causa
problemas, pois o w deste termo não fica ligado depois da substituição:
(P (f (w) + 2) ∧ ∀x (x < f (w) + 2))−→∃w P (w)
Um problema acontece sempre que uma variável que é livre no termo se torna ligada na fórmula
depois da substituição. Note que só podemos substituir uma variável livre por um termo em
uma fórmula. Nunca substituı́mos uma variável ligada (a menos que retiremos o quantificador,
mas isto é outra estória).
108
Note que uma variável em um termo é sempre livre, já que termos não possuem quantificadores.
Uma variável livre de uma fórmula só deve ser substituı́da por um termo se o termo for livre para
a variável na fórmula. Do contrário obtém-se resultados diferentes dos esperados.
Definição 3.28. Uma teoria de primeira ordem sem axiomas não lógicos é chamada de cálculo
de predicados de primeira ordem.
Existem infinitos cálculo de predicados de primeira ordem pois, apesar de todos eles compar-
tilharem os axiomas e as regras, os predicados e as funções podem variar. Então um cálculo de
predicado pode ter como predicados P (x), Q(x, y, z) e como função f (x, y, z) enquanto que outro
cálculo de predicados pode utilizar R(x, y) e função g(x). Um cálculo de predicados pode mesmo
não ter nenhum predicado e nenhuma função. É muito importante notar que, como um cálculo
de predicados não possui axiomas não lógicos, nenhuma caracterı́stica pode ser especificada para
os predicados e as funções. Por exemplo, não se pode especificar que um predicado P (x, y) é
reflexivo em um cálculo de predicados. Em uma teoria de primeira ordem qualquer, isto pode ser
feito utilizando-se um axioma:
∀x (x + 0 = x)
Teorema 3.1. Qualquer cálculo de predicados de primeira ordem é consistente.
Este teorema é muito importante. Ele garante que, se os axiomas não lógicos não forem
utilizados, então uma teoria de primeira ordem é consistente.
Definição 3.29. Seja A uma tautologia no CP e A0 uma fórmula da linguagem de primeira ordem
(LPO) obtida de A pela substituição das variáveis proposicionais por fórmulas da LPO. Então A0
é chamada de instância de tautologia.
Teorema 3.2. Toda fórmula da LPO que é uma instância de tautologia é um teorema da Lógica
de Primeira Ordem.
Prova. Seja A uma tautologia no CP e A0 uma fórmula da linguagem de primeira ordem (LPO)
obtida de A pela substituição das variáveis proposicionais por fórmulas da LPO. Pelo Teorema
da Completude (página 2.3), A é um teorema do CP. Tome a prova de A no CP e substitua os
aparecimentos das variáveis proposicionais pelas fórmulas correspondentes da LPO. Se esta prova
utiliza variáveis proposicionais que não aparecem em A, substitua estas variáveis por fórmulas
quaisquer da LPO. A prova resultante desta transformação é uma prova de A0 na LPO. Além
disso, foram utilizados apenas os axiomas e as regras do CP.
Observação: uma fórmula ∀x P (x)−→∀x P (x) é um teorema da LPO pois B−→B é uma
tautologia no CP. Mesmo envolvendo o quantificador universal, que não está presente no CP, esta
fórmula será considerada tautologia na LPO. Da mesma forma, (∀x P (x)) ∧ (∀x P (x))−→(∀x P (x))
é uma tautologia e um teorema na LPO.
109
A fórmula ∀x (P (x)−→P (x)) não é uma instância de uma tautologia pois não pode ser obtida
pela Definição 3.29. Mas claramente, esta fórmula é um teorema.
Definição 3.30. Uma fórmula é fechada se não possui variáveis livres.
Lema 3.2. Sempre que tivermos um teorema ou esquema de teorema A, podemos utilizar A ou
qualquer de suas instâncias dentro de uma prova, como é feito no meta-teorema a seguir. Isto é
permitido porque, na prova, onde aparece A seria possı́vel expandir a prova repetindo-se todos os
passos da prova do próprio A:
Prova de A: Prova de B que utiliza A
1. A1 1. B1
2. A2 2. B2
... ...
... k. A 99K A prova de A poderia ser inserida aqui
... ...
n. A ...
m. B
A proposição seguinte garante que se modificarmos os nomes das variáveis em um teorema ele
continua teorema.
Definição 3.31. Uma fórmula A0 é uma variante de A se A0 pode ser obtida a partir de A pela
aplicação sucessiva de zero ou mais das seguintes regras:
• troque uma variável livre x em A por y em A0 , sendo que x e y são meta-variáveis e y não
aparece em A nem em A0 ;
• troque uma variável quantificada, ∀x ou ∃x, e todas as variáveis x dentro do escopo deste
quantificador por y, desde que y não tenha sido utilizada no escopo de ∀x em A e seja uma
variável nova em A0 .
Em resumo, é sempre possı́vel mudar os nomes das variáveis desde que elas não conflitem
com nomes de outras variáveis que apareçam na mesma fórmula. Como exemplo, uma fórmula
∀x P (x)−→∃x Q(x, c) tem como variantes ∀y P (y)−→∃x Q(x, c) e ∀y P (y)−→∃z Q(z, c) mas não
∀y P (x)−→∃w Q(y, c).
As seguintes fórmulas são variantes de A =def ∀x1 P (x1 )−→∃yQ(x1 , y, x2 , z).
110
Definição 3.32. Uma fórmula B é uma consequência de um conjunto Γ de fórmulas se e somente
se há uma seqüência de fórmulas B1 , B2 , ..., Bn tal que B = Bn e cada Bi é um dos ı́tens abaixo.
(c) resultado da aplicação de uma das regras com Bj e/ou Bk , no qual j, k < i;
1. A−→B
1. A
3. ∀x A−→Ax (t)
111
Como o termo t pode ser qualquer coisa, inclusive x, temos que ` ∀xA−→A(x) ou ∀xA ` A(x).
Então A ` ∀x A se e somente se ∀x A ` A por este exemplo e 3.22.
Exemplo 3.24. Provaremos C−→(A−→∀x B), C ` ∃x ¬B−→¬A
Q1 x1 Q2 x2 . . . Qn xn A
Não provaremos esta proposição. Mas mostraremos como obter a fórmula na FNPC dada uma
fórmula A. Chamaremos X 0 a fórmula na FNPC da fórmula X. Então pela Proposição, X ≡ X 0 .
Assumiremos que A contém apenas os conectivos ¬, ∧, ∨, ∀ e ∃. Há vários casos a considerar ao
converter A em A0 :
112
(a) se A é da forma ¬B, converta B para FNPC obtendo B 0 , que é
¬Q1 x1 Q2 x2 . . . Qn xn C
¬Q1 x1 Q2 x2 . . . Qn xn C ≡ Q1 x1 Q2 x2 . . . Qn xn ¬C
Q1 x1 Q2 x2 . . . Qn xn ¬C
Definição 3.36. Um conjunto de fórmula Γ é consistente se existe uma fórmula A tal que Γ 6` A.
Isto é, não se pode deduzir qualquer fórmula a partir de Γ.
Em outras palavras, dada uma fórmula qualquer A, se Γ ` A então Γ 6` ¬A. O que significa
que, se Γ ` ¬A, então Γ 6` A. Mas isto não significa que se Γ 6` A então Γ ` ¬A, pois neste caso se
A não é teorema, obrigatoriamente ¬A é teorema. Isto só seria verdade se tivéssemos um “sse”:
Γ ` A sse Γ 6` ¬A. Conclui-se que um conjunto de fórmulas consistente não necessariamente é
completo: pode existir uma fórmula A tal que Γ 6` A e Γ 6` ¬A.
Teorema 3.3. (Correção) Considere uma linguagem L. Os teoremas em L das teorias de primeira
ordem são verdadeiros em qualquer estrutura de L (são logicamente válidos).
113
Comentário: os axiomas são verdadeiros em qualquer estrutura (prove!). Pode-se provar que as
regras de dedução (página 106) preservam a validade das fórmulas — dadas fórmulas logicamente
válidas como entrada, elas produzem fórmulas logicamente válidas. Então como os axiomas são
verdadeiros e as regras preservam a validade, qualquer teorema deduzido na LPO é logicamente
válido.
Teorema 3.4. (Teorema da Completude de Gödel, 1930) Dado um cálculo de predicados T que
utiliza uma linguagem L, se uma fórmula fechada (sentença) A de L é logicamente válida então
A é um teorema de T.
Isto significa que um cálculo de predicados T que utiliza uma linguagem L captura precisamente
as fórmulas logicamente válidas de L. Ou seja, tome todas as estruturas de L. Há algumas fórmulas
que são válidas em todas as estruturas, o que inclui todos os axiomas das teorias de primeira ordem
(página 106). Este teorema diz que todas estas fórmulas são teoremas de T. Em sı́mbolos, temos
Se M A para toda estrutura M de L, então ` A
O teorema da correção dado acima garante o contrário, que todos os teoremas de T são verdadeiros
em todas as estruturas. Em sı́mbolos, temos
Se ` A, então M A para toda estrutura M de L.
É sempre importante lembrar que o cálculo de predicados T é dado na linguagem L e que a
definição de fórmula logicamente válida é feita sobre as estruturas de L.
Teorema 3.5. (Teorema da Completude de Gödel, 1930) Dado um conjunto de fórmulas fechadas
Γ e uma fórmula fechada A em uma linguagem L, então Γ A se e somente se Γ ` A.
1. fazendo uma dedução formal através dos axiomas. Pelo teoremas da Completude e Correção,
uma fórmula é teorema sse é logicamente verdadeira;
3. utilizando um outro método de prova equivalente a estes, que não serão vistos neste curso.
Como exemplo, temos tablôs, dedução natural e resolução de primeira ordem.
Para provar que uma fórmula não é logicamente válida, deve-se encontrar um modelo em que
ela não é verdadeira.
Como exemplo, provaremos que P (c)−→∀x P (x) não é logicamente válida. Considere o modelo
M com universo |M | = {0, 1} e onde P = {0} (este é o predicado do modelo, P = P M ). A
constante c da linguagem é associada a 0. Então P (c) é verdadeiro mas ∀x P (x) não é. Ou seja,
qualquer que seja ~a, seqüência em |M |, M P (c)[~a] mas para nenhuma ~a, |M | (∀xP (x))[~a]. Isto
é, M P (c) mas M 6 ∀x P (x). Em palavras, P (c) é verdadeiro no modelo M e ∀x P (x) é falso,
o que implica que P (c)−→∀x P (x) é falso neste modelo. Nesta prova utilizamos a definição 3.11
de satisfabilidade e a definição 3.13 de verdade em uma estrutura.
114
Uma fórmula que não é logicamente válida também não é um teorema (Teorema da Correção 3.3).
Mas provar que uma fórmula não é teorema é mais complexo. Se a teoria utilizada for completa;
isto é, ou ` A ou ` ¬A para toda fórmula A sem variáveis livres, então pode-se provar que A não
é teorema encontrando-se uma prova formal para ¬A.
Uma pergunta interessante sobre modelos é se qualquer conjunto de fórmulas Γ possui mode-
los de qualquer tamanho. Ou se qualquer conjunto de fórmulas admite um modelo de tamanho
infinito. A resposta é não para ambos os casos. Se Γ contém unicamente a fórmula
A =def ∀x ∀y (x = y)
então todos os modelos de Γ contém apenas um único elemento. Esta conclusão está baseada no
fato de que o sı́mbolo “=” que aparece na fórmula acima é interpretado como “=” em um modelo
qualquer de Γ e este igual possui a seguinte propriedade, descrita na Definição 3.7 de estrutura: b e
c representam elementos iguais no conjunto universo do modelo (que é uma estrutura) se e somente
se b = c, onde este sı́mbolo “=” é o igual no modelo. Assim, não podemos ter uma estrutura (ou
modelo) composta por todos os triângulos possı́veis que satisfaçam a fórmula A dada acima. O
universo deste modelo teria todos os possı́veis triângulos de todos os tamanhos e todos os ângulos.
Este modelo não satisfaz a fórmula A acima porque um triângulo equilátero seria considerado
diferente de um triângulo retângulo pela relação de igualdade “=”.
Grupos
2. para todo x, y, z ∈ G,
(x ◦ y) ◦ z = x ◦ (y ◦ z)
A linguagem LG para grupos utiliza o sı́mbolo de função ◦ de aridade dois e uma constante e.
Os axiomas que descrevem grupos são:
115
A1 (x ◦ y) ◦ z = x ◦ (y ◦ z)
A2 x ◦ e = x
A3 ∃y (x ◦ y = e)
Neste texto, não se utiliza axiomas não lógicos em teorias de primeira ordem. Mas isto não tem
importância. Definimos que as fórmulas acima, os axiomas de grupos, compõem um conjunto ΓG
de fórmulas que caracterizam grupos. Então uma fórmula e ◦ x = x é teorema se ΓG ` e ◦ x = x.
Algumas observações a respeito destes axiomas são necessárias:
1. não é necessário colocar nenhum axioma para a especificação “para todo x, y ∈ G, x◦y ∈ G”.
Na definição de uma estrutura (e de modelo), toda função toma elementos do universo e
produz um elemento do mesmo universo;
2. por causa da equivalência lógica A ≡ ∀xA, não é necessário colocar quantificadores universais
(∀) no inı́cio dos axiomas;
3. pode-se escrever A1 na notação usual de função: ◦(◦(x, y), z) = ◦(x, ◦(y, z)).
(a) (a + b) + c = a + (b + c)
(b) a + 0 = a, zero é o elemento identidade;
(c) b + (−b) = 0, −b é o inverso de b.
116
Os Números Naturais
A1 0 é um número natural;
A4 se x0 = y 0 , então x = y;
A5 seja P (x) uma propriedade sobre o número natural x. Então se P (0) e se P (x) implicar P (x0 ),
para x qualquer, então para qualquer número natural y, P (y). Este é o princı́pio da indução.
A versão em uma linguagem de primeira ordem dos axiomas de Peano é dada abaixo. Utiliza-se
uma linguagem LP com uma única constante 0, os sı́mbolos de função +, e 0 . Este último sı́mbolo
será utilizado como x0 e, quando interpretado nos números naturais, significa o sucessor de x, que
é x + 1.
F1 x = y−→(x = z−→y = z)
F2 x = y−→(x0 = y 0 )
F4 x0 = y 0 −→x = y
F5 x + 0 = x
F6 x + y 0 = (x + y)0
F7 x 0 = 0
F8 x (y 0 ) = (x y) + x
Considere que ΓP seja o conjunto de fórmulas F1-F9. Supõe-se que estas fórmulas sejam
suficientes para caracterizar a Aritmética, que é um modelo M2 no qual valem as “verdades”
usuais sobre números, como 1 + 1 = 2, ∀x ∃y (x + 00 = y) e (x + 000 ) y = (x y) + 000 y. Este
modelo têm as seguintes caracterı́sticas:
117
2. o sı́mbolo de função unária 0 da linguagem deve ser interpretado pela função s(x) = x + 1
do modelo M2 , onde + é o sı́mbolo utilizado na Aritmética usual, não o sı́mbolo de função
da linguagem LP . Assim, se representarmos uma função s(x) pelo seu gráfico; isto é, pelo
conjunto dos pares (x, s(x)) para todo x do domı́nio, temos que
3. o sı́mbolo de função binária + da linguagem deve ser interpretado pela função + do modelo;
isto é, pelo + da Aritmética. O gráfico de + possui triplas da forma (a, b, (a + b)). Assim,
Graf ico(+) = {(0, 0, 0), (0, 1, 1), . . . (1, 0, 1), (1, 1, 2), . . . , . . . }
4. o sı́mbolo de função binária da linguagem deve ser interpretado pela função do modelo;
isto é, pelo da Aritmética (multiplicação). O gráfico de possui triplas da forma (a, b, (ab)).
Assim,
Graf ico() = {(0, 0, 0), (0, 1, 0), . . . (1, 0, 0), (1, 1, 1), . . . , . . . }
Note que o que chamamos de Aritmética usual, o modelo M2 , é composto pelos conjuntos acima
mais as regras da lógica clássica. Então assumimos, não surpreendentemente, as regras da lógica
clássica ao nos referirmos às verdades da Aritmética.
Os conjuntos acima, tanto |M2 | como os gráficos das funções contêm “. . .” significando que
eles não foram completados. Isto era esperado, já que os conjuntos são mesmo infinitos. Mas
como então confirmar que as fórmulas do conjunto ΓP são verdadeiras no modelo M2 ? Só existe
uma possibilidade: utilizar informações que conhecemos intuitivamente e que não estão escritas
completamente no papel. Não podemos escrever completamente o gráfico da função +, que é
infinito, mas através de palavras, intuitivamente, conhecemos todas as caracteristicas que esta
função deve ter. Então pode-se provar um meta-teorema7 que afirma que as fórmulas de ΓP são
verdadeiras na Aritmética, o modelo M2 .
A discussão acima nos remete à questão “O que é uma prova na Matemática” ? Certamente
não é uma prova sintática, obtida pelo usos de axiomas e aplicação das regras MP e Gen. Mas o
que é então ? Para responder a esta pergunta, devemos assumir que, em uma prova Matemática,
utiliza-se um conjunto de axiomas e outras fórmulas já provadas anteriormente. Por exemplo, em
uma prova sobre números inteiros, utiliza-se os axiomas acima, mesmo que este fato não esteja
explı́cito na prova. O desenvolvimento da prova se faz principalmente por argumentos semânticos
— relembre a definição de verdade em uma estrutura (página 94) e satisfação (Definição 3.11 na
página 91). A definição de verdade utiliza a definição de satisfação. Contudo, qualquer argumento
pode ser utilizado em uma prova matemática desde que os matemáticos concordem com a sua
utilização — desde que ela seja razoável. O que é ou não razoável é uma discussão filosófica que
está fora do escopo deste livro.
7
É meta-teorema porque é um teorema sobre a lógica de primeira ordem, não um teorema da teoria de primeira
ordem que utiliza a linguagem LP e as fórmulas de ΓP .
118
De qualquer forma, espera-se que qualquer prova matemática possa ser convertida em uma
prova sintática formal (Definição 3.32). Em geral, esta prova pode ser feita em uma lógica de
primeira ordem. Contudo, nem sempre isto é possı́vel — pode ser absolutamente necessário uti-
lizar uma lógica de segunda ordem. Neste tipo de lógica existem algumas variáveis que, quando
interpretadas em uma estrutura, referem-se a conjuntos de elementos da estrutura. Por exemplo,
considere a fórmula
interpretada em um modelo M da Aritmética que utiliza o sı́mbolo < no qual b < c significa “b é
menor do que c”. Se esta fórmula é verdadeira neste modelo, então qualquer conjunto de elementos
de |M | possui um elemento que é menor do que todos os outros.
Apesar da lógica de segunda ordem ser necessária em alguns casos, praticamente toda a Ma-
temática pode ser expressa na lógica de primeira ordem.
A teoria de conjuntos Zermelo-Fraenkel , (ZF) utiliza seis axiomas [3]. Estes axiomas mais o
axioma da escolha (A7 abaixo) constituem-se na teoria ZFC que constitui base para formalizar toda
a Matemática. A partir desta teoria pode-se deduzir todos os axiomas da Aritmética dados no item
anterior, desde que os sı́mbolos +, , 0 e 0 sejam representados de uma certa forma (não mostrada)
utilizando-se somente o sı́mbolo ∈. Aliás, este é o único predicado utilizado pelos axiomas. Funções
e constantes não são necessários. Contudo, para facilitar o entendimento dos axiomas, utilizaremos
o conjunto vazio, ∅, como constante. Nos comentários a respeito das fórmulas, interpretamos as
fórmulas dadas em um modelo da teoria dos conjuntos.
A3 ∃y ∀x (x ∈ y←→∀z (z ∈ x−→z ∈ a)), axioma das partes. Este axioma garante que existe o
conjunto das partes de um conjunto a se a existe;
119
A6 ∃w ((∅ ∈ w) ∧ ∀x (x ∈ w−→x ∪ {x} ∈ w)), axioma da infinidade. Este axioma garante
a existência de um conjunto infinito. A saber, {∅, {∅}, {∅, {∅}}, {∅, {∅, {∅}}}, . . .}. O
sı́mbolo ∪ é um meta-predicado. x ∪ y é uma abreviação de ∃z (w ∈ z←→(w ∈ x ∨ w ∈ y));
Exercı́cios
3.48. Nas fórmulas abaixo, que ocorrências de variáveis são livres ou ligadas?
3.49. Considere uma linguagem LA para a Aritmética que utiliza sı́mbolo de predicado binário <,
sı́mbolos de função binárias + e (correspondente à multiplicação) e constantes 0 e 1. Sobre os
esquemas de axioma para a LPO, use a linguagem LA da para fazer:
120
(b) (x = y)−→(f (x) = f (y)), onde a linguagem possui uma função unária f ;
(c) ¬∃x A(x)←→∀x ¬A(x)
(d) t = t, onde t é um termo qualquer;
3.51. Prove sintaticamente que as seguintes fórmulas são teoremas, dadas as hipótese.
(a) 1 = 1
(b) x + y 0 = x
(c) 1 + 0 = 1
(d) 2 = 3−→1 = 2
3.58. Dado um conjunto Γ qualquer, se Γ 6` A, então necessariamente Γ ` ¬A ?
3.59. Explique, sem provar, o teorema da Completude de Gödel: um conjunto de fórmulas fechadas
(sentenças) Γ em uma linguagem L é consistente se e somente se Γ tem modelo em L.
3.60. Explique, sem provar, o teorema da Completude de Gödel: dado um conjunto de fórmulas
fechadas Γ e uma fórmula fechada A em uma linguagem L, então Γ A se e somente se Γ ` A.
121
Apêndice A
Sistemas Formais
Este Capı́tulo introduz sistemas formais de maneira informal. Um sistema formal é uma maneira
de gerar seqüências de sı́mbolos de maneira sistemática e precisa. Como exemplo, podemos ter um
sistema formal capaz de gerar todas as expressões aritméticas com números inteiros e operadores
+, − e ∗ (multiplicação). Como exemplos de seqüências deste sistema formal temos 1 + 2, 1 ∗ 2 +
2 ∗ 3 + 3 ∗ 4 e 1 ∗ 2 ∗ 3 ∗ 4 ∗ 5 − 1. Sendo preciso, este sistema formal nunca geraria expressões
incorretas como 1 + ∗2 ou 24∗. A lógica matemática que estudaremos é composta por um sistema
formal mais uma interpretação deste sistema — é por este motivo que estudaremos este tópico.
Frequentemente temos um conjunto de elementos de qualquer coisa (números, palavras, sı́mbolos,
blocos de plástico, fórmulas, etc) que podem ser construı́dos a partir de algumas regras básicas.
Isto é, dadas as regras e um certo conjunto de peças iniciais, pode-se construir o conjunto todo.
O conjunto pode mesmo ser infinito. Por exemplo, a partir do número 1 e da soma repetida
do número 2, podemos construir somas que, quando avaliadas, resultam no conjunto de todos os
números ı́mpares: 1, 1+2, 1+2+2, . . .. Este Capı́tulo trata justamente deste tipo de “construção”
de conjuntos. A questão é como definir esta construção de maneira formal, precisa.
1. um alfabeto de sı́mbolos composto por quaisquer sı́mbolos que podem ser colocados no
papel;
2. seqüências1 bem definidas de sı́mbolos deste alfabeto chamadas de fórmulas. Deve ser
possı́vel definir precisamente o que é fórmula;
3. axiomas (um subconjunto das fórmulas) e
4. regras para produzir novas fórmulas a partir de outras.
Antes de mais nada, saiba que as palavras fórmula, axioma e teorema empregadas nesta
Seção são definidas de maneira bem diferente do que você conhece na Matemática. Utilize as
1
strings em Inglês
122
definições dadas neste texto e não as relacione com as definições que você conhece. Em particular,
não considere que um axioma é uma proposição verdadeira ou que um teorema é algo sobre alguma
entidade matemática.
Exemplo A.1. Como exemplo, vamos definir um sistema formal que chamaremos de S. O alfabeto
poderia ser qualquer coisa, mas utilizaremos apenas os dı́gitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Então o
sistema S só utilizará estes sı́mbolos e nada mais. Note que é você, o criador do sistema formal,
que decide que sı́mbolos utilizar. O alfabeto pode ser qualquer conjunto de sı́mbolos, até mesmo
sı́mbolos que não estejam no teclado e que só possam ser desenhados à mão ou em alguma ferra-
menta de desenho. Só que aı́ ficaria muito difı́cil fazer as coisas. Em resumo, para facilitar, utilize
apenas os sı́mbolos que estão no teclado ou disponı́veis no Moodle (para facilitar, utilize apenas os
do teclado). Então temos que o alfabeto do sistema S é o conjunto Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
Note também que não estamos nos referindo a estes dı́gitos como números inteiros. São apenas
sı́mbolos que não serão utilizados como números, pelo menos por enquanto.
O conjunto de todas as seqüências de sı́mbolos do alfabeto formam um conjunto infinito.
Chamaremos este conjunto de Σ? , que contém 0, 1, 2, . . . e qualquer concatenação de sı́mbolos do
alfabeto. Por exemplo, podemos concatenar 0 e 1 para obter 01 e então 01 ∈ Σ? . Ou podemos
concatenar vários sı́mbolos de uma só vez, em qualquer ordem, para obter uma seqüência qualquer,
que pertencerá à Σ? . Então os seguintes sı́mbolos pertencem à Σ? : 01, 787, 754732104823, 5, 6666,
... Em resumo, qualquer número inteiro, quando considerado apenas como uma seqüência de
sı́mbolos do conjunto Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, pertence à Σ? .
Um sistema formal não utiliza todas as seqüências de sı́mbolos do alfabeto, o conjunto Σ? . Em
geral, ele utiliza um conjunto menor de sı́mbolos que chamaremos de conjunto de fórmulas.
Algumas seqüências de Σ? serão consideradas fórmulas e outras não. Quem projeta o sistema
formal decide o que será considerado fórmula. Podemos, por exemplo, considerar como fórmulas
todas as seqüências que terminam com 1, 3, 5, 7 e 9. Assim, seriam fórmulas:
1, 3, 5, 7 9 (um único sı́mbolo termina com ele mesmo)
871, 41, 44445, 382578057, 89, 2323, 98973555
Naturalmente, neste caso há infinitas seqüências que são fórmulas e infinitas que não são.
Para facilitar a definição do nosso sistema S, consideraremos como fórmulas todas as seqüências
de sı́mbolos do alfabeto. Assim, o conjunto de fórmulas é igual a Σ? .
O terceiro item a ser definido para um sistema formal é o conjunto de axiomas. Um axioma
deve ser um dos elementos do conjunto de fórmulas. Você escolhe quantos e quais elementos deste
conjunto serão axiomas. Escolheremos dois, 0 e 5.
Resta agora definir um conjunto de regras. Uma regra ensina como produzir um teorema.
Pode-se dizer que uma regra toma um ou mais teoremas e produz um outro teorema. Mas o que
é um teorema? Em primeiro lugar, por definição todo axioma é um teorema. Em segundo lugar,
um teorema é uma fórmula produzida por uma regra. Note que um teorema tem que ser uma
fórmula. Foi por isso que foi dada a definição de fórmula!
Como deve ser uma regra? Pode ser praticamente qualquer seqüência de instruções que você
123
possa imaginar que tome um ou mais teoremas como entrada e produza um teorema como saı́da.
Um exemplo poderia ser:
[R1 - Regra 1] Se x e y são teoremas, então xy é um teorema.
Sempre utilizaremos um sı́mbolo ao lado do outro, como “xy”, para representar a concatenação
dos sı́mbolos de x e y. Por exemplo, se x é 005 e y é 050, então xy é 005050.
A regra pega teoremas e produz teoremas, sendo que a definição de “teorema” envolve a
definição de “regra”. Isto parece uma definição circular. Mas não é, porque a definição de teorema
diz que todo axioma é um teorema. Então para produzir os teoremas do sistema S, começamos
com os axiomas, 0 e 5 e podemos ir aplicando a regra R1 para produzir novos teoremas.
Vejamos alguns:
• 5505, pois podemos usar R1 com x = 55 e y = 05. Sabemos que 55 e 05 são teoremas pelos
itens anteriores;
• ...
Em resumo, partimos dos axiomas e, aplicando a regra R1, podemos ir produzindo uma
seqüência infinita de teoremas. Note novamente que todos os axiomas são teoremas e que to-
dos os teoremas são fórmulas.
Você pode definir quantas regras quiser, de que modo for necessário. Digamos que o seu
objetivo seja produzir como teoremas todas as fórmulas que terminam em 0 ou 5. Então deveriam
ser teoremas:
0, 5, 10, 15, 20, 25, 30, 35, . . ., 1000, 1005, 2967305, . . ., 98973555, . . .
124
Figura A.1: Relações entre os conjuntos de um sistema formal
Você é agora estimulado a fazer o seu próprio sistema formal. Defina o alfabeto, o que é fórmula,
os axiomas e o conjunto de regras. Lembre-se de que, se Σ é o alfabeto,Σ? o conjunto de todas as
seqüências possı́veis de sı́mbolos do alfabeto, ∆ o conjunto de fórmulas, Γ o conjunto de axiomas
e Φ o conjunto de teoremas, as seguintes relações devem ser verdadeiras: Γ ⊂ Φ ⊂ ∆ ⊂ Σ? . Veja
a Figura A.1.
Há dois outros tópicos importantes sobre sistemas formais. O primeiro é o conceito de meta-
teorema. Um meta-teorema é um teorema sobre o próprio sistema formal. Nesta última frase
utilizamos a palavra “teorema” no sentido usual da Matemática, não no sentido definido nesta
Seção para sistemas formais. Em resumo, um meta-teorema é uma proposição sobre o próprio
sistema formal. Por exemplo, estude este meta-teorema sobre o sistema formal S dado acima:
[Meta-teorema] Se x é um teorema do sistema formal S, então x termina com 0 ou 5.
Os axiomas são 0 e 5 e as regras R1 e R2 preservam estes dı́gitos na última posição. Confira.
Depois que você define o alfabeto, fórmulas, axiomas e regras de um certo sistema formal, estes
obviamente ficam fixados. Se quiser, pode fazer outro sistema com outras regras. Mas as de um
certo sistema formal, como S, ficam fixas.
Veremos agora um outro conceito, que é o de “esquema de axioma”. Estudaremos um outro
exemplo de sistema formal para apresentar este conceito.
Exemplo A.2. Faremos um sistema formal que produza como teoremas todas as combinações
possı́veis de consoante/vogal utilizando o alfabeto minúsculo latino, qualquer número de vezes.
Mas precisamente, os teoremas devem ser do tipo c1 v1 c2 v2 ...cn vn no qual ci é uma consoante, vi é
uma vogal e n ∈ N. Isto é, o sistema formal deverá produzir todos os seguintes teoremas:
ba, be, bi, bo, bu, da, de, di, do, du, ... za, ze, zi, ze, zu, bada, bade, badi, ... badaca, badace, ...
tadefu, caravela, metalizado, ...
125
Chamaremos este sistema formal de T. Fica claro que o alfabeto de T deve ser { a, b, c, d, e, f,
g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z }. Agora temos que definir o que é fórmula. Temos
muitas opções e utilizaremos a mais fácil delas: uma fórmula é qualquer seqüência de sı́mbolos do
alfabeto de T. Então asfas, fdiemn, jnvcb, y, ym, iq, ... são fórmulas.
O problema está agora. O que deve ser axioma? E o que deve ser regra? Temos que definir as
duas coisas juntas para que, combinadas, possam produzir os teoremas esperados. Uma forma é
definir todas as combinações de consoante e vogal como axiomas. Assim, o conjunto de axiomas
seria
ba, be, bi, bo, bu, ca, ce, ci, co, cu, da, de, ..., za, ze, zi, zo, zu
Como isto é um sistema formal, não poderı́amos utilizar “...” na definição do conjunto. Terı́amos
que escrever todas as 21 ∗ 5 = 105 combinações de consoantes e vogais. É muita coisa. Mas feliz-
mente há uma maneira mais fácil de fazer isto: utilizando um esquema de axioma:
[Esquema de axioma] Se C é uma consoante e V uma vogal do alfabeto de T, então CV é um
axioma.
Este esquema de axioma representa todas as 105 combinações possı́veis de axiomas. Qualquer
fórmula que se encaixe na definição do esquema de axioma é considerado um axioma, o que é
exatamente o que queremos. Então ca é um axioma, pois “c” é uma consoante e “a” é uma vogal.
Falta fazer a regra de T. Simples:
[R1 - regra 1] Se x e y são teoremas, xy é teorema.
Então são teoremas
• ...
126
O sistema T como definimos satisfaz todas as especificações iniciais. Mas esta não é a única
forma de satisfazer aquelas especificações. O que queremos é que o sistema produza como teoremas
todas as seqüências c1 v1 c2 v2 ...cn vn no qual ci é uma consoante, vi é uma vogal e n ∈ N. Então
podemos definir um outro sistema U que produz estes teoremas.
Exemplo A.3. O alfabeto de U é o mesmo de T, { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r,
s, t, u, v, w, x, y, z }. A definição de fórmula pode ser: uma seqüência de sı́mbolos s é fórmula se
começar por uma consoante e terminar por uma vogal. Claramente, todos os teoremas são desta
forma, então esta definição não vai “atrapalhar” a produção de teoremas.
Definiremos um único esquema de axioma:
[Esquema de axioma] Ca, Ce, Ci, Co, e Cu são axiomas se C for uma consoante do alfabeto de U.
Então são axiomas as fórmulas ba, be, bi, bo, bu (usando C = b), ca, ce, ci, co, cu (usando C
= c), da, de, ..., za, ze, zi, zo, zu, como esperado.
E definiremos duas regras:
[R1 - regra 1] Se x for um teorema, Cax e Cex serão teoremas, no qual C é uma consoante do
alfabeto de U.
[R2 - regra 2] Se x for um teorema, xCi, xCo e xCu serão teoremas, no qual C é uma consoante
do alfabeto de U.
Por R1, cara é teorema. Vejamos porque: tomando C = c e x = ra, temos que Cax é cara. ra
é teorema por ser axioma. Este sistema formal é mais difı́cil de trabalhar do que o sistema T mas
define exatamente o mesmo conjunto de teoremas.
Um esquema de axioma pode representar infinitos axiomas. Por exemplo, em um sistema
formal que utiliza o alfabeto {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, ?}, um esquema de axioma poderia ser:
[Esquema de axioma] x + y é um axioma se x e y forem seqüências de sı́mbolos compostos apenas
por dı́gitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Como existem infinitas seqüências de sı́mbolos usando os dı́gitos, existem infinitos axiomas
neste sistema formal. Por exemplo, seriam axiomas 0 + 1, 28 + 344, 7879 + 45453899, etc.
Exemplo A.4. Estudaremos apenas mais um exemplo de um sistema formal, que chamaremos
de V. Este sistema utiliza o alfabeto { 0, 1, a, b }. Em V, são fórmulas apenas as seqüências que
começam com “a” ou com “0”, como “a0”, “0bb1a0a” e “a0aabbb111000”. Não são fórmulas neste
sistema formal as seguintes seqüências: “b00” e “1bab”.
No sistema V, apenas 01 e ab são axiomas. As regras do sistema V são dadas abaixo, nas quais
y é uma seqüência de sı́mbolos qualquer do alfabeto de V, podendo inclusive ser vazia.
1. 01 (axioma)
127
2. ab (axioma)
5. ...
8. ...
Lembre-se das recomendações iniciais desta Seção: um axioma, como definido aqui, não está
diretamente relacionado à definição de “axioma” da Matemática. Em particular, não faz sentido
dizer que um axioma é verdadeiro. No sistema S, por exemplo, não faz sentido dizer que 0 e 5 são
verdadeiros ou falsos. O conceito simplesmente não se aplica aqui.
Uma regra sempre toma um ou mais teoremas como entrada e produz um único teorema como
saı́da. Mas ainda resta uma última questão: o que pode ser uma regra? Praticamente qualquer
coisa que tome um ou mais teoremas e produza um teorema. Vamos dar alguns exemplos. Assuma
que os sı́mbolos que aparecem nos itens pertençam ao alfabeto do sistema formal.
7. ...
E o que não pode ser uma regra? Vamos dar alguns exemplos:
1. se x é teorema e o número de estrelas no universo for par, então 0x1 é teorema. Não sabemos
nem se o universo é finito, quanto mais se o número de estrelas é par ou não;
2. se x e y são teoremas e se for chover em Paris no dia 30 de julho de 2500, então xy é teorema.
Sem comentários.
Pode-se fazer “regras” não válidas utilizando conhecimentos mais avançados de computação, o
que não podemos mostrar aqui. Finalizando, a definição de regra válida é: se você pode fazer um
programa de computador que implemente a regra, então a regra é válida.
128
A.2 Visão Alternativa
Um sistema formal pode ser comparado a um conjunto de peças de plástico com regras de como
combiná-las (brinquedos do tipo Lego). As peças possuem saliências e depressões para se encai-
xarem umas nas outras. Duas peças quaisquer não necessariamente podem ser agrupadas, pois
elas podem não se encaixar. As regras do sistema formal estariam subentendidas nas saliências
e depressões nas peças. O alfabeto seriam as próprias peças, cada peça seria um axioma e um
teorema é qualquer agrupamento de peças.
Um sistema formal nada mais é do que um jogo de compor peças segundo regras. E observe
que, nestes brinquedos, os sı́mbolos do alfabeto (peças) e os teoremas possuem três dimensões.
129
um teorema do sistema formal. Pode-se assumir que um teorema é uma saı́da quando tiver um
sı́mbolo especial como último caráter. Em um caso extremo, terı́amos uma única regra que seria
aplicada uma única vez. A regra toma o axioma, que corresponde à entrada, e produz um teorema,
que corresponde à saı́da. E fim.
Contudo, é mais didático imaginarmos que a cada instrução do programa, seja ele feito em
uma linguagem de alto nı́vel ou em assembler, corresponde a uma regra do sistema formal. Como
exemplo, estudaremos um sistema formal (incompleto !) equivalente a um programa que soma
uma seqüência de números. O axioma poderia ser a seqüência
100111 − 10101 − 11111 − 1 − 10
indicando que queremos calcular 100111 + 10101 + 11111 + 1 + 10.
As regras manipulam os bits de tal forma que o teorema final seja
1011110#
que é a soma dos números presentes no axioma. O # indicaria que nenhuma regra deveria ser
aplicada deste ponto em diante.
O que aconteceu foi que colocamos os números de entrada, 100111, 10101, 11111, 1 e 10 no
axioma em um formato apropriado, separados por −. Note que o alfabeto deste sistema formal
é {0, 1, −, #}. Depois de aplicar as regras do sistema várias vezes, obtemos um teorema (que
é sempre terminado por # por nossa convenção). As regras produzem uma seqüência de bits
que é exatamente a somatória dos números iniciais. Observe que temos que passar a entrada
para o formato esperado pelo sistema formal e interpretar a saı́da de acordo com a convenção
que utilizamos. Note que as regras nada sabem sobre esta nossa convenção — regras fazem
manipulações mecânicas de sı́mbolos sem conhecer a semântica deles. Naturalmente, as regras não
violam o significado da nossa convenção, elas de alguma forma são coerentes com o que queremos
do programa.
E quanto às regras deste sistema formal, com seriam elas? Tudo o que podemos dizer é que
seriam um tanto complexas para serem colocadas aqui, mas que existem. Para compreender isto,
basta dizer que elas seriam equivalente às instruções do assembler de um computador como mov,
add, xor, etc.4
130
Figura A.2: Três gerações de um autômato celular
Então o autômato pode ser representado no plano. A Figura A.2 mostra três autômatos celulares
de duas dimensões onde cada célula pode estar em um de dois estados: branco ou preto. Um
autômato celular se modifica em intervalos discretos de tempo. A cada passo, intervalo discreto,
novos valores de estado são calculados para cada célula baseado em um número finito de células
vizinhas. A célula assume este novo estado no próximo passo, também chamado de próxima
geração. Por exemplo, o valor de uma célula pode ser calculado considerando-se os estados das
duas células verticais e duas células horizontais adjacentes a ela. Se o autômato tem n estados,
haveria n4 diferentes possibilidades de cálculo para cada célula. Cada célula utiliza a mesma função
de cálculo, independentemente de onde ela estiver. Esta função de cálculo será chamada de “regra”
para cálculo do estado da célula.
A Figura A.2 mostra um autômato onde a função que calcula o próximo estado de uma célula
considera todos os vizinhos imediatos da célula: duas células horizontais, duas verticais e quatro
diagonais. A função retorna o estado preto se o número de células vizinhas pretas (sem contar
com a própria célula) for ı́mpar. Caso contrário retorna o estado branco. A Figura mostra três
gerações de um autômato. O leitor é convidado a conferir a mudança de cores das células desta
Figura.
O jogo da vida [4] é um autômato celular inventado por John Conway na década de 60. O
autômato utiliza dois estados, branco e preto. O jogo da vida pode utilizar regras quaisquer para
passar de uma geração para outra. Citamos abaixo as regras originais de Conway. Estas regras
ensinam como calcular a cor de uma célula baseada nas cores das células adjacentes da geração
anterior. Cada célula possui oito vizinhos: dois horizontais, dois verticais e quatro diagonais.
Regras:
• uma célula preta com dois ou três vizinhos pretos sobrevive para a próxima geração; isto é,
131
continua preta;
• uma célula preta com um vizinho preto ou nenhum é substituı́da por uma célula branca
(vazia). É como se a célula morresse por solidão;
• uma célula preta com quatro ou mais vizinhos pretos é substituı́da por uma célula branca.
É como se a célula morresse por superpopulação;
• uma célula branca que possui exatamente três células vizinhas pretas é substituı́da por uma
célula preta na próxima geração.
A Figura A.3 representa quatro gerações de um jogo, indicadas por g1, g2, g3 e g4. O leitor é
convidado a aplicar as regras acima em uma geração para conseguir chegar à próxima. Cada regra
deve ser aplicada baseada na geração anterior, não na geração que você está montando atualmente.
Veremos como a geração 2 foi construı́da a partir da 1. Por conveniência, numeramos as células.
As células 10 e 12 de g1, brancas, são adjacentes a três células pretas. Estas células ficam pretas na
geração 2 — confira em g2. Em g1, a célula preta 18 é adjacente a cinco células pretas. Esta célula
torna-se branca na geração 2. As regras não se aplicam a nenhuma outra célula e terminamos a
sua aplicação, obtendo g2.
Para obter g3, note que as únicas células que serão modificadas são 4, 11, 16 e 20. A 4 se torna
preta, pois tem três vizinhas pretas em g2. A célula 11 tem quatro vizinhos pretos em g2 e então
fica branca em g4. Tanto 16 quanto 20 são brancas e têm três vizinhos pretos em g2 e, portanto,
ficam pretas em g3.
O jogo da vida é um jogo fascinante, interessante, embora extremamente simples. Chamando a
configuração de células brancas e pretas de “padrão”, há padrões que, depois de um certo número
de gerações:
• se repetem, entrando então em um laço infinito. A configuração pode ficar enorme e depois
diminuir até conter apenas poucas células pretas;
Há ainda padrões que “se movem” através do quadriculado, que criam e disparam padrões que
se movem (como um canhão que atira um projétil) e outros que crescem sem parar. O leitor é
convidado a pesquisar na Internet e experimentar com as dezenas de implementações do jogo da
vida disponı́veis na world wide web.
132
• P é um conjunto de produções;
• S é o sı́mbolo não-terminal inicial da gramática.
Como um exemplo, considere uma gramática G que expressa algumas expressões aritméticas
válidas. O conjunto N = { E, T, N }, Σ = { 0, 1, 2, . . . 9 }, S é o sı́mbolo E e o conjunto P é
composto pelas “regras de produção” dadas a seguir:
1. E ::= E + T
2. E ::= T
3. T ::= T ∗ N
4. T ::= N
5. N ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
O sı́mbolo | não faz parte da gramática, sendo utilizado apenas para significar “ou”. Assim,
na regra 5 acima, N é 0 ou 1 ou ... 9. Pode-se eliminar o sı́mbolo | escrevendo-se dez regras para
N:
N ::= 0
N ::= 1
...
N ::= 9
133
Faremos alguns exemplos de dedução de teoremas neste sistema formal:
(a) 1. E
2. E + T
3. T + T
4. N + T
5. N + N
6. 0 + N
7. 0 + 1
(b) 1. E
2. E + T
3. E + T ∗ N
4. E + T ∗ 3
5. E + N ∗ 3
6. E + 5 ∗ 3
7. T + 5 ∗ 3
8. N + 5 ∗ 3
9. 7 + 5 ∗ 3
(c) 1. E
2. T
3. N
4. 2
Um teorema em que não ocorre nenhum sı́mbolo não terminal é chamado de sentença da
gramática. Assim, são sentenças desta gramática os teoremas 0 + 1, 7 + 5 ∗ 3 e 2. Qualquer
linguagem de programação pode ser descrita por uma gramática e os programas válidos podem
ser gerados por um sistema formal como descrito acima.5
134
Figura A.4: Numeração de sı́mbolos em um sistema formal em duas dimensões
Não, qualquer sistema formal de duas dimensões poderia ser simulado em uma única dimensão.
Para mostrar como, observe a figura A.3. Um conjunto de sı́mbolos colocado neste quadriculado,
de duas dimensões, poderia ser mapeado para uma dimensão seguindo-se os números em ordem
crescente. Se um axioma fosse os números da figura (a), em duas dimensões, o axioma correspon-
dente seria, em uma dimensão, igual a 1, 2, 3, 4, 5, 6, 7, 8, . . .. As setas da figura (b) indicam como
seriam mapeados os sı́mbolos. Desta forma, pode-se converter qualquer fórmula bidimensional em
uma fórmula unidimensional. E mais importante, de maneira biunı́voca: a cada fórmula bidimen-
sional corresponde a uma única fórmula unidimensional e vice-versa. Possivelmente terı́amos que
introduzir um sı́mbolo no sistema formal de uma dimensão para representar um quadrado vazio
no sistema formal de duas dimensões. Mas pode ser feito.
E quanto às regras? Podemos converter uma regra que manipula fórmulas em duas dimensões
para uma regra que manipula fórmulas em uma dimensão? Claramente, sim. Existe uma função
que mapeia cada posição do quadriculado em uma posição unidimensional. Utilizando esta função,
o mapeamento entre a regra bidimensional e a regra unidimensional torna-se trivial. Basta aplicar
a função sempre que a regra bidimensional referir-se à posição um sı́mbolo. E que função é esta?
Se ela se chama f e adotarmos que a posição 0 do exemplo (a) é (0, 0), então terı́amos f (0, 0) = 0,
f (1, 0) = 1, f (1, −1) = 2, f (0, −1) = 3, etc. Fazer esta função fica como exercı́cio ao leitor.
Observe que raciocı́nio acima pode ser generalizado para três ou mais dimensões.
Uma outra suposição implı́cita na apresentação dos sistemas formais foi a de que existe uma
quantidade finita de sı́mbolos do alfabeto. Esta suposição é necessária pois pode-se provar que
nenhuma regra consegue manipular uma quantidade infinita de sı́mbolos. Afinal, as regras podem
ser implementadas em um computador e nenhum computador consegue manipular uma quantidade
infinita de informação. Contudo, poder-se-ia criar um sistema em que o alfabeto contivesse uma
quantidade não enumerável de sı́mbolos. Como exemplo, o alfabeto poderia ser os números reais.
Mas este sistema não seria um “sistema formal” como o conhecemos.
Não seria possı́vel um sistema formal onde a criação de teoremas fosse feita de maneira contı́nua?
Como definido neste Capı́tulo, um teorema é obtido depois de n passos, n inteiro. E se n pudesse
ser um número real? Uma regra deveria tomar não só as premissas como parâmetros como também
n real. Haveria um contı́nuo entre os axiomas e teoremas. Aparentemente, nada de novo poderia
ser ganho com esta idéia.
Um axioma é um conjunto bem definido de sı́mbolos. Esta é uma suposição implı́cita na
definição de sistema formal. Poderia ser diferente. Um axioma X poderia ser definido como todas
as fórmulas B tal que a distância entre A e B fosse menor do que 1, onde A é uma fórmula fixada.
A distância entre duas fórmulas poderia ser definida por um algoritmo. Então o axioma X seria
135
composto por todas as fórmulas cuja distância de A é menor do que 1. Um axioma é agora uma
nuvem de fórmulas, não apenas uma.
Exercı́cios
A.1. Explique o que é um sistema formal, axioma, regra de dedução, teorema e meta-teorema.
A.2. Faça um sistema formal que utilize um alfabeto de pelo menos dez sı́mbolos, tenha pelo
menos cinco axiomas e pelo menos três regras de dedução.
A.5. Faça configurações (que células são pretas?) para o jogo da vida de tal forma que as cores
das células nunca mudem.
A.6. Faça um sistema formal que utilize os dı́gitos como alfabeto e que produza como teoremas
seqüências de sı́mbolos s tal que s, quando interpretado como um número, seja divisı́vel por 2.
Assim, seriam teoremas {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, . . .}. Faça um meta-teorema para este
sistema formal.
A.7. Faça um sistema formal produza os mesmos teoremas que o sistema S e que utilize um
esquema de axioma.
A.8. Seja S o sistema formal que utiliza o alfabeto { E, T , N , +, ∗, 0, 1, ... 9 }. O único axioma
é E e qualquer seqüência de sı́mbolos é uma fórmula. As regras de dedução são:
Escreva alguns teoremas deste sistema formal. Alguns teoremas nunca poderão ser utilizados
para a construção de outros teoremas, pois eles não possuem as letras E, T ou N . Com o que se
parecem estes teoremas?
A.9. Faça configurações (que células são pretas?) para o jogo da vida de tal forma que as células
pretas desapareçam:
136
Apêndice B
Quadrinhos
137
138
Apêndice C
Quando n = 1 temos a base da indução. A prova de que esta técnica funciona é óbvia: T é
válido para 1 pelo item 1, para 2 pelo item 2, para 3 pelo item 2, ... A suposição de que T é válido
para n − 1 é chamada “Hipótese de Indução”(HI). Vejamos alguns exemplos:
n(n+1)
Proposição: sendo Sn = 1 + 2 + 3 + . . . + n, então Sn = 2
.
1(1+1)
Prova: para n = 1, S1 = 1 e S1 = 2
= 1, o que prova a hipótese.
Suponha que a hipótese seja válida para n − 1, isto é,
Sn−1 = (n−1)(n−1+1)
2
= (n−1)n
2
= 1 + 2 + . . . + (n − 1)
Provaremos que ela é válida para Sn . Sendo Sn = Sn−1 + n, então
139
utilizando as hipóteses de indução de que x − y divide xn−1 − y n−1 e x − y divide xn−2 − y n−2 .
Reescrevendo xn − y n , temos:
xn − y n = (xn−1 − y n−1 )(x + y) − xy(xn−2 − y n−2 )
Como o lado direito do sı́mbolo = é divisı́vel por x − y por hipótese de indução, o lado esquerdo
também o é. Neste exemplo, a HI é “xn − y n é divisı́vel por x − y”.
140
Apêndice D
Este Capı́tulo ensina como minimizar fórmulas lógicas. Isto é, dada uma fórmula A, ela ensina como
construir uma fórmula logicamente equivalente a esta fórmula, mas menor em número de conectivos
e, algumas vezes, até no número de variáveis. Por exemplo, a fórmula (¬A ∧ ¬B) ∨ (B ∨ (C ∧ B))
pode ser minimizada para A−→B. As tabelas verdades são iguais na coluna de resultados e
a fórmula reduzida possui apenas um conectivo, além de não utilizar a variável C da fórmula
original.
O número de linhas da tabela verdade de uma fórmula com n variáveis é 2n . Para cada conectivo
da fórmula, uma coluna da tabela deve ser preenchida. Claramente, uma tabela com um número
significativo de variáveis e conectivos é grande demais para ser útil na prática. Mais: fórmulas
lógicas são utilizadas para a construção de computadores. Fórmulas muito grandes significam
muitos componentes, o que significa alto custo e maior consumo de energia. Por este motivo é
necessário trabalhar com as menores fórmulas que pudermos.
O objetivo deste Capı́tulo é ensinar como minimizar fórmulas. Isto é, dada uma fórmula A,
produzir uma fórmula logicamente equivalente a A, mas com um número menor de conectivos e/ou
variáveis.
Utilizando as tabelas de equivalências lógicas, podemos partir de uma fórmula complexa e che-
gar a outra mais simples e logicamente equivalente à primeira. Este processo é o equivalente a
minimizar fórmulas da Matemática. Por exemplo, considere a fórmula 1 + 3x + 2 + 7x. Vamos
reduzi-la a uma fórmula menor mas equivalente:
1 + 3x + 2 + 7x =
1 + 2 + 3x + 7x = (pois a + b = b + a, associatividade da adição)
3 + 3x + 7x = (pois 1 + 2 = 3)
3 + (3 + 7)x = (pois ay + by = (a + b)y, distributividade)
3 + 10x (pois 3 + 7 = 10)
A fórmula 3 + 10x não pôde mais ser reduzida, apesar de poder ser escrita de outras formas
3
como 10x + 3, 10(x + 10 ), 3(1 + x 10
3
), etc.
141
O que fizemos para converter 1 + 3x + 2 + 7x em 3 + 10x? Simplesmente tomamos pedaços da
fórmula inicial e substituimos por algo equivalente. Por exemplo, 1 + 2 é um pedaço, sub-fórmula
de 1 + 2 + 3x + 7x. Como 1 + 2 = 3, sempre podemos substituir 1 + 2 por 3. Fazendo isto,
obtemos 3 + 3x + 7x, uma fórmula menor do que a original. Os outros passos são semelhantes a
este. Sempre tomamos uma sub-fórmula e a substituimos por outra equivalente.
Para minimizar fórmulas lógicas faremos exatamente o mesmo que fazemos com fórmulas da
Matemática. Dada uma fórmula A podemos obter uma fórmula menor A0 substituindo uma sub-
fórmula B de A por outra sub-fórmula B 0 . Se B for logicamente equivalente a B 0 , então A0 será
logicamente equivalente a A.
E se B 0 for menor do que B em número de conectivos e variáveis, então obrigatoriamente A0
será menor do que A. Claro: se substituimos um pedaço de uma fórmula por algo menor, a fórmula
toda ficará menor.
Veremos dois exemplos bem simples. Utilizaremos ≡ para “logicamente equivalente a”. Isto
é, X ≡ Y significa “X é logicamente equivalente a Y ”. Este sı́mbolo não faz parte da linguagem
do cálculo proposicional. Note que só podemos substituir uma sub-fórmula por outra logicamente
equivalente a ela.
Lembre-se de que “logicamente equivalente” é definido em termos de tautologias. Lembrando,
X é logicamente equivalente a Y se X←→Y é tautologia. Então podemos utilizar todas as tau-
tologias do tipo X←→Y nas minimizações; qualquer sub-fórmula X pode ser substituı́da por Y
ou vice-versa. Utilizaremos as equivalências lógicas da Seção 2.6. Contudo, tome cuidado: nem
sempre as meta-fórmulas utilizadas nestes lemas serão as mesmas das fórmulas. Por exemplo, uma
das equivalências é A ∧ B ≡ B ∧ A. Mas em uma fórmula qualquer, podemos ter ¬C ∧ (B ∨ ¬A).
Esta fórmula é equivalente a (B ∨ ¬A) ∧ ¬C.
(a) A−→(¬¬B−→A)
Sabemos que X ≡ ¬¬X, pois X←→¬¬X é tautologia. Então
A−→(¬¬B−→A) ≡ A−→(B−→A)
Podemos continuar a minimização notando que X−→Y ≡ ¬X ∨ Y , pois X−→Y ←→¬X ∨ Y
é tautologia. Então
A−→(B−→A) ≡ ¬A ∨ (B−→A) ≡ ¬A ∨ (¬B ∨ A) ≡
¬A ∨ A ∨ ¬B ≡
¬A ∨ A
(b) ¬A ∨ ¬B−→¬C
¬A ∨ ¬B ≡ ¬(A ∧ B). Então
¬A ∨ ¬B−→¬C ≡ ¬(A ∧ B)−→¬C
A−→B ≡ ¬B−→¬A ou, equivalentemente, X−→Y ≡ ¬Y −→¬X. Note que reescrevemos
a equivalência com X e Y porque as meta-fórmulas A e B estão sendo utilizadas de forma
diferente na equivalência lógica A−→B ≡ ¬B−→¬A e na fórmula que estamos querendo
minimizar, ¬A ∨ ¬B−→¬C ≡ ¬(A ∧ B)−→¬C.
Tomando, na fórmula ¬(A ∧ B)−→¬C, X como A ∧ B e Y como C, temos que
¬(A ∧ B)−→¬C ≡ C−→A ∧ B
Colocando todos os passos juntos, ficamos com
¬A ∨ ¬B−→¬C ≡
142
¬(A ∧ B)−→¬C ≡
C−→A ∧ B
143
Exercı́cios
D.1. Simplifique as seguintes fórmulas
(a) (A ∨ B) ∧ ¬B−→A
(a) while not (f(n) = 0) and not found and isSet = false do
begin
comandos
end
(a) A ∨ B−→B
(b) (A ∨ A) ∧ (B−→B)
(c) (A−→A−→A)−→A
(d) (A−→(B−→C))−→A ∧ B
D.4. Partindo da fórmula A−→B, produza uma fórmula logicamente equivalente com pelo menos
seis conectivos e uma variável C a mais.
144
Apêndice E
Exemplos Extras
Exemplo E.1. Veremos agora um exemplo de fatos a respeito de certa parte do mundo, um
Zoológico, que serão expressadas em fórmulas da Lógica de Primeira Ordem. Esta parte do mundo
é um modelo para as fórmulas que encontraremos. Neste exemplo, usaremos sı́mbolos da linguagem
diferentes dos sı́mbolos do modelo. Esteja atento a isto.
Suponha que, em um Zoológico, existam:
6. um gramado, no cercado dos coelhos e gazelas, contendo duzentas mudas de grama chamadas
g1 , g2 , ..., g200 (sim, as mudas de grama têm nomes!).
• Leo e Pant são carnı́voros, Efan, Gal, Gel, Eloc e Eloá são herbı́voros e gi é planta;
• a pantera (onça) é o único animal americano e todos os outros animais são africanos (inclusive
os coelhos !). A grama também é africana;
1
Podem, não necessariamente vão, pois estão em um Zoológico.
2
Se x come y e y come z, então x não come z.
145
O conjunto universo deste modelo possui 1 + 1 + 2 + 2 + 1 + 200 = 207 elementos.
Assuma que os fatos acima são tudo o que sabemos sobre o Zoológico e seus animais. Iremos
encontrar fórmulas que expressem os fatos descritos acima. Isto é, iremos encontrar fórmulas que
especifiquem completamente o modelo Zoo. Antes de fazer isto, precisaremos definir a linguagem
Lzoo em que expressaremos estas fórmulas.
Lzoo não possui sı́mbolos de função. Os sı́mbolos de predicado unário são Carnı́voro, Herbı́voro,
Africano, Americano, Animal e Planta. Há um sı́mbolo de predicado binário, Devora. Utilizaremos
um sı́mbolo de constante Ef an.
No modelo Zoo, os predicados correspondentes terão o seguinte significado:
Note que os predicados foram definidos a partir das informações relevantes a respeito do modelo.
Agora devemos definir as fórmulas que caracterizam este modelo. Mas espere um pouco. Para que
queremos estas fórmulas? As informações relevantes a respeito do modelo já não estão descritas
acima? Pensando bem, as informações estão todas descritas acima, pois por definição o modelo
é o que está descrito. Mas nem todas as informações estão explı́citas. Por exemplo, não está
explı́cito que Leo não devora Pant. E nem que Efan e Eloá devoram gi . Há muitas informações
implı́citas. Da maneira informal como está descrito o modelo, não é fácil fazer deduções nem
prová-las que estão corretas. Precisamos de fórmulas que comprimam todas as informações
dadas informalmente. Esta é a essência de qualquer Ciência: conseguir um conjunto de teorias3
que comprimam todos os dados experimentais do mundo a respeito de certa área. Por exemplo,
a fórmula s = s0 + v0 t + at2 /2 contém todas as informações do mundo relacionadas à posição
de objetos macroscópicos em movimento com aceleração uniforme. Todos os dados do universo
relacionados a este tipo de movimento estão comprimidos nesta equação.
Abaixo são dadas as fórmulas que comprimem as informações do modelo do Zoológico, que
chamaremos de Zoo. Não são utilizados os nomes dos animais e plantas — isto torna as fórmulas
mais gerais. As fórmulas poderão, contudo, ser utilizados em outras situações, o que se tornará
claro em breve.
Definição E.1. Seja ΓZoo o conjunto das fórmulas A1-A9 definidas abaixo. Dizemos que Zoo é
um modelo de ΓZoo .
146
A2 ∀x ∀y (Carnı́voro(x) ∧ Carnı́voro(y)−→¬Devora(x, y))
A5 ∀x ∀y (Planta(x)−→¬Devora(x, y))
A9 ∀x (Africano(x)−→¬Americano(x))
A partir destas fórmulas, podemos utilizar as regras da Lógica de Primeira Ordem para fazer
deduções sem utilizar qualquer informação do modelo. As deduções podem ser feitas utilizando-se
apenas a forma das fórmulas de ΓZoo . Ou seja, pode-se fazer deduções puramente sintáticas que
se revelam verdadeiras no modelo, que se supõe sejam uma parte do mundo “real”. Esta é a essência
da lógica: a partir de um modelo (semântica) constroem-se axiomas e regras (sintaxe) e então
podemos fazer deduções utilizando unicamente as regras da lógica, sem recorrer aos significados
“informais” do modelo.
As fórmulas do modelo Zoo (Zoológico) estão dadas acima. Dizemos que Zoo é um modelo para
ΓZoo . Para fazer deduções sobre Zoo, podemos utilizar as fórmulas do conjunto ΓZoo e todos os
axiomas das teorias de primeira ordem. Como os axiomas das teorias de primeira ordem não serão
vistos em detalhes, utilizaremos a intuição para fazer algumas deduções sintáticas. Por exemplo,
podemos deduzir que se ∀x P (x), então ∃x P (x).
Abaixo estão alguns teoremas feitos com as fórmulas de ΓZoo . O raciocı́nio empregado para
conseguir estes teoremas não será mostrado, pelo menos não de maneira detalhada.
147
Abstraindo os Axiomas
As fórmulas do conjunto ΓZoo podem ser abstraı́das ainda mais. Podemos empregar ou-
tra linguagem de primeira ordem Lzoo2 e substituir os predicados Carnı́voro(x), Herbı́voro(x),
Devora(x, y), Africano(x), Americano(x), Animal(x) e Planta(x) por Pc , Ph , Pd , Paf , Pam , Pan e
Pp . O nome Efan é substituı́do por c, uma constante.
Definição E.2. Seja Γabs o conjunto das fórmulas A1-A9 definidas abaixo. Zoo é um modelo de
Γabs .
A1 ∀x (Ph (x)−→Pd (x, g)), sendo que g é uma meta-variável que representa qualquer muda de
grama (gi )
Mudando os nomes, obtemos um conjunto de fórmulas mais abstrato do que o anterior. Uma
pergunta surge então naturalmente: será que existe algum outro modelo para Γabs que não Zoo?
Existe e um outro modelo para Γabs está na Figura E.1, que chamaremos de Fig. Considere que
• a bola grande pontilhada representa todas as mudas de grama — mas é apenas uma bola,
não 200;
148
Figura E.1: Um modelo alternativo para o conjunto de fórmulas Γabs para o modelo do Zoológico
Os elementos da figura obedecem a todas fórmulas do conjunto Γabs . De fato, poderı́amos ter
acrescentado mais bolinhas pretas e quadradinhos e mesmo assim a figura iria satisfazer Γabs . Este
é um dos pontos positivos de sistemas axiomáticos: pode-se obter um conjunto de fórmulas para
certo modelo e estas fórmulas podem ser empregadas para modelos completamente diferentes do
original.
Observe que não definimos os predicados do modelo da Figura E.1.
Um outro modelo alternativo, chamado Num, pode ser tomado da Aritmética. Considere o
conjunto {5, 11, 13, 54, 701} e a correspondência:
• todos os números correspondentes aos americanos (só o 5) possuem um único dı́gito. Todos
os números correspondentes aos africanos possuem mais de um dı́gito;
• os números correspondentes aos herbı́voros são 54 e 13, sendo este último correspondente à
constante Efan;
O modelo Zoo pode ser definido um pouco mais formalmente agora. Zoo é modelo do conjunto
de fórmulas Γabs da Definição E.2. O conjunto |Zoo| é
149
3. Devora = {(x, y) | x ∈ Carnı́voro e y ∈ Herbı́voro, y 6= Efan ou x ∈ Herbı́voro e y =
gi para algum i},
5. Americano = {Pant},
Um predicado como Carnı́voro(x) dentro de uma fórmula deve ser interpretado como verda-
deiro se x ∈ Carnı́voro. Veremos se a fórmula ∀x(Pam (x)−→∃yPd (x, y)) é verdadeira no modelo
Zoo como definido acima. Em primeiro lugar, Pam e Pd correspondem a Americano e Devora em
Zoo. Então esta fórmula é verdadeira no modelo Zoo se,
150
Referências Bibliográficas
[1] Bakó, Mária. Why We Need to Teach Logic and How Can We Teach it? Disponı́vel em
http://www.cimt.plymouth.ac.uk/journal/bakom.pdf
[2] Carnielli, W.; Coniglio, M. E.; Bianconi, R. Lógica e aplicações: Matemática, Ciência da
Computação e Filosofia (Versão Preliminar - Capı́tulos 1 a 5).
[4] Gardner, Martin. The fantastic combinations of John Conway’s new solitaire game
“life”. Scientific American, Vol. 223, October 1970, páginas 120-123. Disponı́vel em
http://ddi.cs.uni-potsdam.de/HyFISCH/Produzieren/lis_projekt/proj_gamelife/ConwayScie
[6] Hedman, Shawn. A First Course in Logic. Oxford University Press, 2006.
[7] Hofstadter, Douglas R. Gödel, Escher, Bach: an Eternal Golden Braid. Vintage Books, 1979.
[8] Mendelson, Elliott . Introduction to Mathematical Logic. Wadsworth Publishing Co., 1997.
Não recomendado para cursos de Graduação.
[10] Shoenfield, Joseph R. Mathematical Logic. Addison-Wesley, 1967. Não recomendado para
cursos de Graduação.
151
Índice Remissivo
M 6 A, 94 conjunção, 27
M A, 94, 96 conseqüência lógica, 18, 21
M Γ, 96 conseqüente, 8
Γ A, 96 consistente
Γ B, 21 cálculo de predicados, 109
Γ`A conjunto de fórmulas, 113
cálculo proposicional, 42 contingência, 18
Lógica de Primeira Ordem, 107 contradição, 18
↓, 37 correção
∃, 73 cálculo proposicional, 50
∀, 73 lógica de primeira ordem, 113
∨, 8, 40
¬, 8, 40 decidı́vel, 41
6, 17 disjunção, 27
6`, 52 equivalência lógica, 98
↑, 38 escolha
, 17, 91 axioma da, 120
` estrutura, 82
cálculo de predicados, 41 exemplo
|, 38 semântica de uma Lógica de Primeira Or-
=, 73 dem, 145
=def , 19 existe, 73
alternative denial, 38 extensionalidade
antecedente, 8 axioma da, 119
Aritmética, 117
F, 11
axiomas
fórmula
modelo Zoo, 148
atômica, 74
não lógicos, 107
linguagem de primeira ordem, 74
teorias de primeira ordem, 106
fórmula atômica, 73
axiomas, próprios, 107
fórmula de Horn, 58
cálculo de predicados de primeira ordem, 109 fórmulas
cálculo proposicional cálculo proposicional, 8
semântica, 11 falsa
cláusula, 61 fórmula, 94
completude falso, 11
teorema, 114 FNC, veja forma normal conjuntiva
conectivos FND, veja forma normal disjuntiva
primitivos, 8 forma normal conjuntiva, 28
152
forma normal disjuntiva, 27 partes
Forma Normal Prenex, 112 axioma das, 119
Forma Normal Prenex Conjuntiva, 112 Peano, 117
função de verdade, 14 precedência
cálculo proposicional, 8
grupo, 115 linguagem de primeira ordem, 75
Horn, 58 prova
cálculo proposicional, 41
implica logicamente, 18
indecidı́vel, 41 quantificador existencial, 73
infinidade quantificador universal, 73
axioma da, 120 regras, 122
joint denial, veja negação conjunta teorias de primeira ordem, 106
regularidade
linguagem axioma da, 119
cálculo proposicional, 8 relação, 81
Lógica de Primeira Ordem, 72 entre sintaxe e semântica, 47
literal, 27 resolução, 61
logicamente equivalente, 18, 98 reunião
logicamente válida axioma da, 119
fórmula, 97
sı́mbolo de constante, 72
matriz, 112 sı́mbolos de constante, 71
meta sı́mbolos de função, 71, 72
sı́mbolo, 105 sı́mbolos de predicado, 72
variável das linguagens de primeira ordem, satisfação, 91
75 satisfabilidade
meta-fórmula, 8 cálculo proposicional, 19
meta-variável, 32 seqüência, 89
modelo, 86, 95 sintaxe
abreviatura, 82 Lógica de Primeira Ordem, 81, 104
conjunto de fórmulas, 96 sistema formal, 122
Fig, 148 Smullyan, 13
Num, 149 sse, 41
Zoológico, 145 sub-fórmula, 15
modelos substituição
exemplos, 115 axioma da, 119
Modus ponens, 42
MP, 42 tabelas verdade, 11
tautologia, 17
negação alternativa, 38 instância de, 109
negação conjunta, 37 teorema, 41
completude, 51
parênteses, 8 dedução, 44
paradoxo, 4 teoria
semântico, 5 consistente, 51
sintático, 4 teoria de conjuntos, 119
153
teoria de primeira ordem, 81, 106
termo, 73
V, 11
variável
linguagem de primeira ordem, 72
variante, 110
verdadeira
fórmula, 94, 96
verdadeiro, 11
vocabulário, 71
Zermelo-Fraenkel, 119
ZF, 119
ZFC, 119
zoológico, 145
154