Vous êtes sur la page 1sur 156

Lógica para Computação

José de Oliveira Guimarães


josedeoliveiraguimaraes@gmail.com
Campus de Sorocaba da UFSCar
Sorocaba - SP

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

3 Lógica de Primeira Ordem 71


3.1 A Linguagem da Lógica de Primeira Ordem . . . . . . . . . . . . . . . . . . . . . . 71
3.2 Mapeamento de Frases para a Lógica de Primeira Ordem . . . . . . . . . . . . . . . 76
3.3 Semântica da Lógica de Primeira Ordem . . . . . . . . . . . . . . . . . . . . . . . . 80
3.4 Estruturas e Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.5 Definição Formal de Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.6 Sintaxe da Lógica de Primeira Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.6.1 Axiomas e Regras de Dedução da Lógica de Primeira Ordem . . . . . . . . . 106
3.6.2 Meta-teoremas e Definições sobre as Teorias de Primeira Ordem . . . . . . . 108
3.7 Formas Normais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.8 Relação entre Sintaxe e Semântica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.9 Alguns Exemplos de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

A Sistemas Formais 122


A.1 Alfabetos, Axiomas e Regras de Sistemas Formais . . . . . . . . . . . . . . . . . . . 122
A.2 Visão Alternativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
A.3 Conexões com a Computação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
A.3.1 Regras Como Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
A.3.2 Programas Como Sistemas Formais . . . . . . . . . . . . . . . . . . . . . . . 129
A.3.3 Autômato Celular e Jogo da Vida . . . . . . . . . . . . . . . . . . . . . . . . 130
A.3.4 Gramáticas Como Sistemas Formais . . . . . . . . . . . . . . . . . . . . . . . 132
A.3.5 Suposições Implı́citas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

B Quadrinhos 137

C Noções Básicas de Matemática 139


C.1 Indução finita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
C.2 Prova por Contradição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

D Minimização de Fórmulas Lógicas — Opcional 141

E Exemplos Extras 145

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.

1.1 História, Paradoxos e Princı́pios Básicos


A lógica foi a criação de um único homem, Aristóteles (384 a.C.-322 a.C.). A lógica de Aristóteles
era inteiramente verbal, sem o emprego de sı́mbolos. Como exemplo, de “Todos os homens são
mortais” e “Sócrates é um homem”, pode-se deduzir que “Sócrates é mortal”. Este é um dos tipos
de raciocı́nio catalogados pelo sábio grego. Havia outros vinte e quatro (dos quais cinco estão
implı́citos em outros), todos empregando apenas palavras. Já na Antigüidade surgiu o primeiro
‘paradoxo’ lógico quando o cretense Epimênides disse “Todos os cretenses são mentirosos”. Na
verdade, esta frase não é paradoxal, pois ela pode ser tanto verdadeira quanto falsa sem que ocorra
uma contradição.1 Uma frase é paradoxal quando ela não pode ser nem verdadeira nem falsa,
1
Se um mentiroso é alguém que mente ocasionalmente e toda mentira é exatamente o oposto da verdade, então
esta frase pode ser falsa: Epimênides estava mentindo ocasionalmente ao pronunciá-la. Se tomarmos ‘mentiroso’
como alguém que mente sempre, então esta frase é falsa. Se fosse verdadeira, como foi dita por um cretense, ela
estaria dizendo que ela mesmo é falsa. Contradição. Como esta frase é falsa, Epimênides queria dizer exatamente
o contrário do que disse, que alguns cretenses não são mentirosos ! Naturalmente, neste caso Epimênides é um
mentiroso.

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)

2. princı́pio do terceiro excluı́do: ou a proposição A ou a sua negação são verdadeiras. Em


sı́mbolos:
A ∨ ¬A

3. reflexividade da identidade: qualquer coisa é igual a si mesma. Em sı́mbolos:


∀x(x = x)

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,

• se um dado y obedece a esta fórmula/condição, então y pertence a C. Em outras palavras,


se y 6∈ y, então y ∈ C. Por outro lado, se y não obedece a esta fórmula (y ∈ y), y 6∈ C. Isto
é, se y ∈ y então y 6∈ y;
2
O Trivium era anterior ao Quadrivium, que consistia de Aritmética, Geometria, Astronomia e Música.

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.

Pergunta-se: C pertence a C? Vejamos as duas possibilidades:

• sim, C ∈ C. Então C deve obedecer à condição/fórmula A (x 6∈ x com x = C) do conjunto


C. Então C 6∈ C. Contradição, pois assumimos que C ∈ C;

• não, C 6∈ C. Então C obedece à condição/fórmula A necessária para pertencer à C (x 6∈ x


com x = C) e, portanto, C ∈ C. Contradição.

De qualquer forma, C pertencendo ou não a si mesmo, chegamos a uma contradição.


Os matemáticos e lógicos eliminaram este tipo de contradição da teoria dos conjuntos criando
uma teoria de conjuntos chamada de Zermelo-Fraenkel. Nesta teoria, a condição x 6∈ x na definição
do conjunto C não é considerada válida. E então C não é considerado um conjunto.
Este paradoxo é chamado de sintático porque ele pode ser descrito utilizando a linguagem
formal da Lógica de Primeira Ordem (que ainda será visto). Já os paradoxos semânticos não
podem ser descritos utilizando uma linguagem formal.
Há diversos paradoxos semânticos descritos na literatura. Veremos alguns:

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;

2. paradoxo de Berry (1906). Há um número finito de palavras em Português e portanto um


número finito de frases com menos do que vinte palavras. Considere o conjunto de todos os
números naturais (N) que podem ser definidos com frases com menos do que vinte palavras.
Este conjunto será chamado de M e contém os seguintes inteiros, pelo menos: 1 (“um”), 323
(“trezentos e vinte e três”, frase com menos do que vinte palavras), 5 (“o terceiro número
primo”), 1024 (“a primeira potência de dois maior do que mil”), 21000000000 !! (“o fatorial do
fatorial de dois elevado a um bilhão”). Há um número finito de números naturais no conjunto
M . Mas quantos? Vamos calcular quantas frases de 20 palavras existem, no máximo. Cada
palavra tem menos do que 100 letras (exagerando!). Então temos 100 ∗ 20 = 2000 caracteres
para as palavras. Supondo que temos 26 letras (agora o Português usa 26 letras) e mais
alguns caracteres de pontuação e espaço, temos no máximo 302000 frases diferentes com 20
palavras. Calcular o número máximo de frases com menos do que vinte palavras fica como
exercı́cio (é uma progressão geométrica). De qualquer forma, este número é finito, isto é, o
tamanho do conjunto M é finito.
Estariam em M o 0 (“zero”), o 125 (“primeiro quadrado perfeito depois de 100”) e
999999999999999999999999999999
(“um número composto por trinta noves”). Claramente existe um inteiro n que é o maior
elemento de M mais 1. Claramente n não está em M — ele é maior do que o maior
elemento de M , embora seja apenas uma unidade maior. Como n é apenas o maior elemento
de M mais 1 (e apenas +1), então n é o menor inteiro maior do que o maior elemento
de M , o conjunto dos inteiros que podem ser definidos com menos do que vinte palavras.
Então “n é o menor inteiro que não pode ser definido com menos do que vinte palavras”.

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:

1. lógica na idade média


2. Leibniz
3. Fregue
4. Gödel
5. Tarski

6
Unidade 2

Cálculo Proposicional

Considere os seguintes fatos, considerados verdadeiros.

1. João gosta de pizza ou gosta de futebol;

2. Se João não gosta de Maria, então João não gosta de pizza ;

3. João não gosta de futebol e João não mora em São Paulo.

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.

2.1 A Linguagem do Cálculo Proposicional


Uma lógica possui uma parte composta por axiomas, teoremas, provas e regras como definido no
Apêndice A. Esta parte é chamada de sintaxe, pois se interessa apenas pela forma dos axiomas
e teoremas, sem se importar com o que eles significam. Um teorema é apenas uma seqüência de
sı́mbolos que não significam nada para o estudo sintático da lógica. Quando associamos significado
aos sı́mbolos, os teoremas passam a significar alguma coisa. Esse aspecto de uma lógica é chamada
de semântica.
A lógica precisa de uma linguagem formal para se expressar. Se as fórmulas lógicas fossem
expressas utilizando a linguagem natural, Português no caso, terı́amos ambigüidades, dificuldades
de entendimento e outros problemas de comunicação que são da lı́ngua portuguesa, não da lógica.
É por isso que, para cada lógica, define-se uma linguagem formal e define-se exatamente o que é
permitido nela.
O Cálculo Proposicional (CP) é uma lógica bem simples que será incorporada à Lógica de
Primeira Ordem, a ser vista no próximo Capı́tulo. O CP é um sistema formal (pois é uma lógica)

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

(a) uma variável é uma fórmula;

(b) ¬A, (A ∨ B), (A ∧ B), (A−→B) e (A←→B) são fórmulas se A e B são fórmulas;

(c) fórmulas são descritas apenas pelos itens (a) e (b).

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

1. A é “João gosta de pizza”

2. B é “João gosta de futebol”;

8
3. C é “João mora em São Paulo”;
4. D é “João gosta de Maria”.

Convertendo as frases para fórmulas, temos:

1. (A ∨ B) para João gosta de pizza ou gosta de futebol;


2. (¬D−→¬A) para Se João não gosta de Maria, então João não gosta de pizza;
3. (¬B ∧ ¬C) para João não gosta de futebol e João não mora em São Paulo.

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)

2.2. Os conectivos ←→, ∧ e −→ fazem parte da linguagem do CP?


2.3. João gosta de Maria?
2.4. Rigorosamente, é A ∨ B realmente uma fórmula do CP? Explique o que é uma meta-fórmula.
2.5. Quais seqüências de sı́mbolos abaixo são fórmulas do CP?

(a) ¬¬¬¬A−→A ∧ ¬A
(b) ∨ ∧ ABA
(c) ((A1 −→A2 ) ∨ A1

2.2 Mapeamento de Frases para o Cálculo Proposicional


Algumas frases escritas em linguagem natural (exemplo: Português) podem ser mapeadas na
linguagem do cálculo proposicional. Por exemplo, a frase “Se não fizer sol hoje, vai chover” resulta
na fórmula “A−→B” na qual A é “não vai fazer sol hoje” e B é “vai chover”. Se preferir, poderia
ser ¬A−→B, na qual A é “vai fazer sol hoje”. Estude as frases seguintes e suas fórmulas do CP
correspondentes:

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

2. Ele é o presidente ou o diretor. A fórmula correspondente é A ∨ B, na qual A é “Ele é


presidente” e B é “Ele é diretor”;

3. Se o João ou Pedro estivessem aqui, o problema seria resolvido. A fórmula correspondente é


A ∨ B−→C, A é “João está aqui”, B é “Pedro está aqui”, C é “O problema está resolvido”.
Note que, quando lemos a fórmula lógica, mudamos os tempos verbais para o condicional;

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

5. Se o supervisor vier hoje e souber do problema, ou seremos demitidos ou transferidos. A


fórmula correspondente é A ∧ B−→C ∨ D, A é “o supervisor vem hoje”, B é “o supervisor
sabe do problema”, C é “seremos demitidos”, D é “seremos transferidos”;

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.

(a) Este celular é um computador, câmera e um mp3 player ao mesmo tempo.

(b) Se o preço do carro estiver bom, levaremos dois.

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

(d) Ele é chato mas inteligente.

(e) Ele é engenheiro ou analista de sistemas. E é competente.

(f ) O número é maior do que zero, ı́mpar, mas não é primo.

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

2.3.1 Verdade e Falsidade


Cada variável que aparece em uma fórmula pode receber um de dois valores: V ou F. Tanto faz o
nome destes valores, poderia ser 0 e 1, T e F, qualquer coisa. A única exigência é que sejam valores
distintos. Naturalmente, associamos V a verdadeiro e F a falso, o que é apenas uma associação
feita em nossas mentes e que não interessa à teoria.
Associando um valor (V ou F) a cada variável de uma fórmula C, podemos calcular o valor da
fórmula. Isto é feito da seguinte forma:

¬A é V se A for F e F se A for V;

A ∨ B é V se A ou B for V ou se ambos forem V;

A ∧ B é V se A e B forem ambos V;

A−→B é F se A for V e B for F, V em todos os outros casos.

A←→B é V se A e B forem ambos V ou se forem ambos F.

2.3.2 Tabelas Verdade dos Conectivos


A descrição de como calcular o valor verdade de uma fórmula que possui apenas um conectivo,
dada acima, não está boa. Esta descrição ainda utiliza o Português e não pode ser facilmente
aplicada em uma fórmula qualquer. Nesta seção apresentaremos tabelas verdade, que definem
precisamente o valor de verdade de uma fórmula. Iniciaremos com as tabelas verdade de fórmulas
com apenas um único conectivo.

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:

1. se 12 é primo, então o Sol não existe;

2. se 6 é primo, hoje é quarta-feira.

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 ?

2.4 Tabelas Verdade e Tautologias


Esta seção ensina como montar tabelas verdade para fórmulas que envolvem qualquer número de
conectivos. Definimos também o que são tautologias e como identificá-las. Será que alguma fórmula
da lógica será sempre verdadeira independente dos valores de suas variáveis? Isto é, podemos ter
uma fórmula como A ∧ B−→(¬C ∨ A ∨ ¬B) que será verdade independente dos valores verdade
que associemos a A, B, C e D? Ou será isso impossı́vel? Claramente isso é possı́vel, pois a fórmula
A ∨ ¬A é sempre verdadeira. Tente ver porque: o que acontece se A é verdadeira? E se A é falsa?
Cada tabela verdade define uma função de verdade que contém um argumento para ¬ e dois
argumentos para todos os outros conectivos. O resultado da função é V ou F. Assim, a tabela
verdade para ¬,

A ¬A
V F
F V

define uma função


f¬ : {V, F }−→{V, F }
e, por exemplo, ∧ define uma função
f∧ : {V, F }2 −→{V, F }
{V, F }2 é {V, F } × {V, F } o que significa que a função f∧ toma dois parâmetros e qualquer deles
pode ser V ou F .
Cada uma destas funções de verdade será sempre representada por uma tabela verdade. Em
f¬ : {V, F }−→{V, F }, o conjunto {V, F } é o domı́nio e o contradomı́nio de f¬ . Temos que
f¬ (V) = F pois na tabela verdade do ¬, quando A é V, ¬A é F. Da mesma forma, f¬ (F) = V
(veja a segunda linha da tabela).

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 )

Examinando a tabela verdade do ∨,

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

pela segunda linha, temos V −→V = F . Então ficamos assim:


f (V, V, F ) = V −→(¬V ∨ F ) = V −→(F ∨ F ) = V −→F = F

Podemos ter uma outra combinação de valores para as variáveis de f :


f (V, V, V ) = V −→(¬V ∨ V ) = V −→(F ∨ V ) = V −→V = V
De fato, qualquer combinação de valores, além de (V, V, F ), resultará em V . Confira!
Para construir a tabela verdade de uma fórmula qualquer, precisamos da definição de sub-
fórmula.

Definição 2.1. Sub-fórmula de uma fórmula é definida da seguinte forma:

(a) toda fórmula é sub-fórmula de si mesma;

(b) toda sub-fórmula de A é sub-fórmula de ¬A;

(c) toda sub-fórmula de A ou de B é sub-fórmula de A ∨ B, A ∧ B, A−→B, A←→B.

Veja abaixo algumas fórmulas e suas sub-fórmulas.

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

A B ¬A ¬B A∧B ¬A ∨ B ((¬A ∨ B)←→¬B) (A ∧ B)−→((¬A ∨ B)←→¬B)


V V F F V V F F
V F F V F F F V
F V V F F V F V
F F V V F V V V
As linhas da tabela correspondem a todas as variações possı́veis das entradas da função de
1
A linha que tem as sub-fórmulas será considerada como linha 0.

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

Sob o ∧ de A ∧ B está o valor verdade de A ∧ B. Sob o ¬ de ¬A está o valor verdade desta


fórmula e assim por diante. O valor verdade da fórmula (A ∧ B) ∨ (¬A ∧ ¬B) está sob o conectivo
∨, que é o último a ser usado na avaliação. Sérá sempre assim: o valor verdade da fórmula estará
sob o último conectivo a ser utilizado.
Mas como saber qual o último conectivo que deve ser utilizado na avaliação? Estude a ordem
de precedência dos operadores. Em
A ∧ B−→((¬A ∨ B)←→¬B)
o último deve ser −→ pois este tem menor precedência do que ∧ e a sub-fórmula ((¬A∨B)←→¬B)
está entre parênteses e portanto deve ser avaliada antes. Vejamos a tabela verdade desta fórmula:

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.

Por exemplo, A−→(B−→A) é uma tautologia:

A B B−→A A−→(B−→A)
V V V V
V F V V
F V F V
F F V V

Logo A implica logicamente (B−→A). Claramente, A implica logicamente B−→A também,


pois os parênteses externos não modificam o valor verdade da fórmula.

Definição 2.3. Se A←→B é uma tautologia, dizemos que A é logicamente equivalente a B.

Por exemplo, (A−→(B−→C)) é logicamente equivalente a (A ∧ B−→C) pois


(A−→(B−→C))←→(A ∧ B−→C)
é uma tautologia (um dos exercı́cios abaixo).
Agora que já sabemos o que é uma tautologia, resta a pergunta: como obtê-las? Na Seção 2.12
iremos aprender uma forma sistemática de produzir tautologias através de um sistema formal.
Enquanto não chegamos naquela Seção, podemos empregar outras técnicas:

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

(c) utilize os seus conhecimentos de lógica usuais:

• A ∧ B−→A ∨ B, se A e B forem verdadeiros, então “A ou B” também será verdadeiro;


• A ∧ B−→A, sempre que A e B forem verdadeiros, A também o será;
• A−→A ∨ B, sempre que A for verdadeiro, então “A ou B ” será verdadeiro.

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

Então s = (F, V, V ) não satisfaz V1 ∨ ((V2 ∧ V3 )−→V1 ). E quanto a V1 −→(V2 ∨ V1 ) e a seqüência


s = (V, F )? Vejamos:
V −→(F ∨ V ) = V −→V = V
Vejamos outra seqüência, s = (F, F ):
F −→(F ∨ F ) = F −→F = V
De fato, qualquer das quatro seqüências possı́veis, s = (V, V ), s = (V, F ), s = (F, V ) e s = (F, F )
satisfaz a fórmula V1 −→(V2 ∨ V1 ). Isto deveria acontecer mesmo, pois esta fórmula é tautologia!
Ela é verdadeira independente dos valores das variáveis. Vamos examinar a tabela verdade desta
2
Uma fórmula poderia ser V5 ∧ V3 −→V40 , em que as três primeiras variáveis não seriam utilizadas.

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.

Proposição 2.1. Se A e A−→B são tautologias, então B é uma tautologia.

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.

Em resumo, se fizermos as tabelas verdade de A e A−→B e ambas forem tautologias, então B


também é tautologia. A prova acima pode ser feita imaginando-se uma tabela verdade onde são
colocados A, A−→B e B. A prova supõe que em alguma linha da tabela B tenha o valor F . Nesta
linha o valor de A é V, pois A é tautologia. Então A−→B é F pela tabela verdade de −→. Mas
isto é impossı́vel, pois A−→B é tautologia.
Como exemplo, considere as fórmulas C ∨ ¬C e (C ∨ ¬C)−→¬(D ∧ ¬D). Sabemos que C ∨ ¬C
é tautologia. Fazendo a tabela verdade de (C ∨ ¬C)−→¬(D ∧ ¬D), verificamos que é tauto-
logia também. Então podemos concluir que ¬(D ∧ ¬D) é tautologia. Utilizando os nomes da
Proposição 2.1, A é (C ∨ ¬C) e B é ¬(D ∧ ¬D).
3
Não se confunda: nas tabelas verdade apresentadas utilizamos A, B, etc que são meta-fórmulas. Estamos
aqui falando de uma tabela que emprega fórmulas da linguagem e que, portanto, não pode ter meta-fórmulas.
Obrigatoriamente a fórmula deve empregar variáveis V1 , V2 , ...

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

Por exemplo, s = (F, V ) satisfaz o conjunto Γ = {V1 −→V2 , V2 ∨ V2 , V1 ∨ V2 , (V1 ∧ V2 ) ∨


(V2 −→¬V1 )}. A seqüências s satisfaz cada uma das fórmulas de s (confira!).

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.

Por exemplo, V1 ∨ V2 é uma conseqüência lógica do conjunto Γ = {V1 ∧ V2 , (V1 ←→V2 ) ∧ V1 }. A


única seqüência s que satisfaz Γ é s = (V, V ). Claramente s satisfaz V1 ∨ V2 .

Exercı́cios
2.10. Usando tabelas verdade, prove que as fórmulas seguintes são tautologias.

(a) ¬¬A←→A

(b) (A−→B)←→(¬A ∨ B)

(c) ¬(A ∧ ¬A)

(d) (((A ∨ B) ∧ (¬B))−→A)

(e) A ∧ B−→A

(f ) A−→(A ∧ A)

(g) ¬C ∨ (A−→(B−→C))

(h) (A−→(B−→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.12. Que sequências satisfazem as fórmulas do conjunto Γ = {A−→¬B, ¬C−→A ∧ B, A ∨ B} ?


Encontre duas fórmulas que são consequência lógica de Γ.

2.13. Escreva a tabela verdade do “ou” exclusivo, cujo sı́mbolo é ⊕. Considere que A ⊕ B é
verdadeiro se apenas A ou apenas B é verdadeiro.

2.14. Defina tautologia e contradição.

2.15. Pode-se representar A ∧ B, A ∨ B e ¬ utilizando-se apenas −→ e ←→?

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

2.17. Encontre uma fórmula lógica correspondente à seguinte função de verdade:



V se A = B = C
f (A, B, C) =
F caso contrário
2.18. Encontre fórmulas correspondentes às seguintes tabelas verdade:
(a) (b)
A B C ? A B C ?
V V V V V V V V
V V F V V V F F
V F V V V F V V
V F F V V F F V
F V V F F V V V
F V F V F V F F
F F V V F F V F
F F F V F F F V

2.19. Construa a tabela verdade para as fórmulas seguintes.

(a) (A−→B) ∧ (A←→B)


(b) (A−→(B−→C))−→((A−→B)−→(A−→B))
(c) ¬(A−→B ∨ ¬C)
(d) (A−→B)←→¬(A ∧ ¬B)
(d) (A←→B)−→¬A
(e) (A−→B−→A)−→B
2.20. Represente A−→B e A←→B utilizando apenas os conectivos ¬, ∧ e ∨.

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

As principais equivalências lógicas são:

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

(e) ¬(A ∨ B) ≡ ¬A ∧ ¬B (De Morgan)

(f) ¬(A ∧ B) ≡ ¬A ∨ ¬B (De Morgan)

(g) A−→B ≡ ¬B−→¬A (contrapositiva)

(h) A←→B ≡ B←→A

(i) A ∧ (B ∨ C) ≡ (A ∧ B) ∨ (A ∧ C) (Lei distributiva)

(j) A ∨ (B ∧ C) ≡ (A ∨ B) ∧ (A ∨ C) (Lei distributiva)

Você deve decorar estas equivalências. Elas não serão fornecidas nas avaliações.
Há outras equivalências menos úteis:

(a) A−→(B−→C) ≡ (A ∧ B)−→C

(b) (A ∧ B) ∨ ¬B ≡ A ∨ ¬B

23
(c) (A ∨ B) ∧ ¬B ≡ A ∧ ¬B

(d) (A←→B)←→C ≡ A←→(B←→C)

(e) A←→B ≡ (A ∧ B) ∨ (¬A ∧ ¬B)

(f) A ∨ (A ∧ B) ≡ A

(g) A ∧ (A ∨ B) ≡ A

(h) ¬(A←→B) ≡ A←→¬B

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

Os resultados são idênticos: de cima para baixo, VFFV.


Assumindo que > é uma tautologia e ⊥ é uma contradição, temos as seguintes equivalências
lógicas:

(a) > ∧ A ≡ A

(b) > ∨ A ≡ >

(c) ⊥ ∧ A ≡⊥

(d) ⊥ ∨ A ≡ A

Note que > não é a letra T.

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

Um ∧ só resulta em V se ambos os valores são V. Como ⊥ é sempre F, ⊥ ∧A será sempre 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.

(a) A−→((B ∧ ¬D)−→C) e (A ∧ (¬D ∧ B))−→C


(b) A ∨ (¬B ∧ ¬C) e (A ∨ ¬B) ∧ (¬C ∨ A)

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.

(a) ((C1 ∧ D2 ) ∨ (A1 −→A2 )) ∧ ¬(A1 −→A2 ) e (C1 ∧ D2 ) ∧ (A1 ∧ ¬A2 )

(b) ((¬D−→D ∧ ¬B) ∧ D) ∨ D e D


2.27. Prove que ¬(A1 ∨ A2 ∨ . . . ∨ An ) é logicamente equivalente a ¬A1 ∧ ¬A2 ∧ ... ∧ ¬An utilizando
indução finita em n.
2.28. Prove que A1 −→(A2 −→(A3 −→ . . . (−→An−1 −→(An −→B)) . . .) é logicamente equivalente a
A1 ∧ A2 ∧ . . . ∧ An −→B.

2.7 Conjunto Adequado de Conectivos e Formas Normais


Esta seção apresenta algumas definições muito importantes. Definimos Forma Normal Conjuntiva
(FNC) e Forma Normal Disjuntiva (FND), que são formas padrões para a representação de fórmulas
lógicas. Ao invés de apresentar uma fórmula em uma das suas inúmeras representações, é melhor
colocá-la na FNC ou FND pois há métodos e algoritmos feitos especialmente para fórmulas nestas
representações.
Esta Seção também apresenta algumas proposições importantes, como a que diz quais conec-
tivos são básicos. Isto é, não é necessário utilizar todos os conectivos lógicos ∧, ∨, ¬, −→ e ←→
para representar uma fórmula qualquer. Basta dois destes conectivos, mas não dois quaisquer.
Veremos quais.
Pode-se utilizar apenas os conectivos ¬ e ∨ para o CP. Todos os outros podem ser derivados a
partir destes:

(a) A ∧ B ≡ ¬(¬A ∨ ¬B);

(b) A−→B ≡ ¬A ∨ B;

(c) A←→B ≡ (A−→B) ∧ (B−→A).

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.

2.8 Formas Normais


Veremos como representar qualquer função de verdade utilizando um conjunto mı́nimo de conec-
tivos. Veremos também como encontrar uma fórmula correspondente ao resultado de uma tabela
verdade. Para apresentar estes resultados, precisamos de algumas definições e proposições.

Definição 2.7. Uma disjunção é uma seqüência de fórmulas separadas por ∨. Por exemplo,
A ∨ B ∨ C.

Definição 2.8. Uma conjunção é uma seqüência de fórmulas separadas por ∧.

Como exemplo de conjunção, temos V1 ∧ V2 . Naturalmente, uma única variável corresponde a


ambas: uma disjunção e uma conjunção.

Definição 2.9. Um literal é uma variável ou negação desta variável.

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.

Mais formalmente, uma fórmula conjunção (FC) é definida indutivamente como:

(a) um literal é uma FC;

(b) se A e B são FC´s, então A ∧ B é uma FC.

Uma fórmula na FND é definida como:

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

(V1 ∧ V2 ∧ ¬V3 ) ∨ (¬V2 ∧ V3 ) ∨ V1


V1 ∧ V2
V1
¬V2
V1 ∨ ¬V2 ∨ V7

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

Então uma fórmula na FND é da forma


m
_
R= Rj
j=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.

Mais formalmente, uma fórmula disjunção (FD) é definida indutivamente como:

(a) um literal é uma FD;

(b) se A e B são FD´s, então A ∨ B é uma FD.

Uma fórmula na FNC é definida como:

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.

Por exemplo, as fórmulas

(V1 ∨ V2 ∨ ¬V3 ) ∧ (¬V2 ∨ V3 ) ∧ V1


V7 ∧ V2 ∧ V5
V1
¬V2
V1 ∨ V2

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

Então uma fórmula na FNC é da forma


m
^
R= Rj
j=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

A fórmula correspondente ao resultado é A, que tentaremos encontrar. Para isto utilizaremos


apenas as linhas nas quais o resultado, terceira coluna, é igual a V. Então utilizaremos apenas as
linhas 1, 3 e 4 (observe que consideramos a linha com V1 , V2 e A como a linha 0). Para cada linha,
encontraremos uma sub-fórmula que assume o valor V quando o valor de V1 e V2 forem os valores
V ou F daquela linha. Isto é, a sub-fórmula obtida na linha 3, por exemplo, assume V quando
os valores de V1 e V2 forem F e V (confira na linha 3 da tabela acima). Vejamos a sub-fórmula
correspondente a cada linha da tabela:

1. V1 ∧ V2 para a linha 1. Esta sub-fórmula assume o valor V se os valores de V1 e V2 forem os


da primeira linha da tabela (V ∧ V é 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

Não utilizamos a segunda linha pois a coluna de resultados contém F.


Considerando que A assume V se as variáveis assumirem os valores da primeira, terceira ou
quarta linhas da tabela (observe o “ou”), podemos deduzir que A é

(V1 ∧ V2 ) ∨ (¬V1 ∧ V2 ) ∨ (¬V1 ∧ ¬V2 )

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:

1. para (V1 ∧ V2 ) temos V ∧ F = F;

2. para (¬V1 ∧ V2 ) temos ¬ V ∧ F = F ∧ F = F;

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

na qual A e B são as variáveis e R é o resultado, a fórmula que queremos encontrar. Na verdade,


A e B são meta-variáveis e poderiam ser substituı́das por qualquer variável V1 , V2 , V3 , . . .. Note
que nesta Seção frequentemente utilizaremos A, B, C para meta-variáveis, não meta-fórmulas.
Utilizaremos apenas as linhas 2 e 4. Para a linha 2, a sub-fórmula é A ∧ ¬B. Para a linha 4,
¬A ∧ ¬B. Então a fórmula resultando R é (A ∧ ¬B) ∨ (¬A ∧ ¬B). Que pode ser simplificada
para ¬B — mas como sabemos disso? Basta ver que R assume exatamente o contrário do valor
verdade de B. Se B é V, R é F. E se B é F, R é V — confira na tabela.
Encontraremos a fórmula para

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

na qual A, B e C são meta-variáveis e R é a fórmula que queremos encontrar. As sub-fórmulas


são:

1. A ∧ ¬B ∧ C para a linha 3;

2. ¬A ∧ B ∧ C para a linha 5;

3. ¬A ∧ ¬B ∧ C para a linha 7.

A fórmula R pode ser (A ∧ ¬B ∧ C) ∨ (¬A ∧ B ∧ C) ∨ (¬A ∧ ¬B ∧ C).


E se não houver, na coluna de resultados, nenhum valor V? Como exemplo, o que pode ser R
na tabela abaixo?

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.

2.10 Fórmula na FNC Equivalente a Fórmula Dada


Dada uma fórmula A, mostraremos como encontrar uma fórmula na FNC logicamente equivalente
a A. Em primeiro lugar, construa a tabela verdade de A. Depois, utilize a técnica mostrada a
seguir para obter a fórmula na FNC logicamente equivalente a A.

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

na qual A e B são meta-variáveis e R é o resultado, a fórmula que queremos encontrar. Uti-


lizaremos apenas as linhas 1 e 3. Para a linha 1, a sub-fórmula é ¬A ∨ ¬B, pois tanto A quanto
B assumem o valor V e ambos precisam ser negados. Para a linha 3, A ∨ ¬B. A fórmula R é
obtida fazendo-se um ∧ das sub-fórmulas de cada linha com resultado F. Neste caso, as linhas 1 e
3. Assim, R é (¬A ∨ ¬B) ∧ (A ∨ ¬B).
Faremos mais dois exemplos. Encontraremos a fórmula na FNC para a seguinte tabela verdade.

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

na qual A, B e C são meta-variáveis e R é a fórmula que queremos encontrar. As sub-fórmulas


correspondentes a cada linha onde o resultado é F são:

1. ¬A ∨ ¬B ∨ ¬C para a linha 1, pois todas as variáveis assumem V e, portanto, todas precisam


ser negadas;

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 fórmula R é (¬A ∨ ¬B ∨ ¬C) ∧ (¬A ∨ ¬B ∨ C) ∧ (¬A ∨ B ∨ C) ∧ (A ∨ ¬BC) ∧ (A ∨ B ∨ C).


E se não houver, na coluna de resultados nenhum valor F? Como exemplo, o que pode ser R
na tabela abaixo?

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.

2.11 Proposições sobre Conectivos


Proposição 2.4. Cada tabela verdade corresponde a uma fórmula contendo apenas ¬ e −→.

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 −→.

Vejamos um exemplo. A fórmula ϕ =def ¬C ∧ (¬D ∨ E) utiliza ∧ e ∨ e vamos convertê-la


para uma fórmula que utiliza apenas ¬ e −→. Podemos eliminar o ∨, pois sabemos que A ∨ B é
logicamente equivalente a ¬A−→B. Na fórmula ϕ, A é ¬D e B é E. Logo, ¬D ∨ E é logicamente
equivalente a ¬¬D−→E que é logicamente equivalente a D−→E. Portanto,
¬C ∧ (¬D ∨ E) ≡ ¬C ∧ (D−→E). Como A ∧ B ≡ ¬(A−→¬B), tomando A como ¬C e B como
D−→E, temos ¬C ∧ (D−→E) ≡ ¬(¬C−→¬(D−→E))
Então a fórmula original, ¬C ∧ (¬D ∨ E), é logicamente equivalente a ¬(¬C−→¬(D−→E)),
que contém apenas os conectivos ¬ 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

Como pode ser facilmente conferido que ¬A ≡ A ↓ A e A ∧ B ≡ ((A ↓ A) ↓ (B ↓ B)). Como


qualquer tabela verdade pode ser construı́da utilizando-se apenas ¬ e ∧, pode-se construir qualquer
uma utilizando apenas ↓.

Este conectivo é conhecido na computação por nor. Claramente, (A ↓ B) é logicamente


equivalente a ¬(A ∨ B), daı́ o nome, “negação do ’ou’”, “not or”.
De fato, existe apenas um outro conectivo binário que sozinho pode construir todas as tabelas

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

(b) V5 ∨ (V1 ∧ ¬V3 ∧ ¬V5 ) ∨ ¬V2

(c) A ∨ ¬B, sendo A e B meta-variáveis. Esta é uma fórmula?

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.

(a) A ∨ (¬B ∧ A ∧ ¬C) ∨ ¬C

(b) (V1 ∨ ¬V2 ) ∧ (¬V1 ∨ V2 ∨ V3 ) ∧ V3

(c) A ∨ (¬A ∧ B ∧ C)

(d) (V3 ∧ ¬V2 ) ∨ ¬V1 ∨ (V1 ∧ V2 )

2.35. Quais das fórmulas abaixo estão na FNC? E na FND?

(a) (¬V1 ∧ V2 ) ∨ V5 ∧ V1

(b) V1 ∧ B, B uma meta-variável. Esta é uma fórmula?

(c) (¬¬V1 ∧ V2 ) ∨ (¬V2 ∧ V3 )

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

2.39. Quantas tabelas verdade com n variáveis existem? Justifique.

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;

2. seqüências bem definidas de sı́mbolos deste alfabeto chamadas de fórmulas;

3. axiomas (um subconjunto das fórmulas) e

4. regras para produzir novas fórmulas a partir de outras.

Definiremos agora o CP como sistema formal. O alfabeto e a definição de fórmula do CP já


foram dados na seção 2.1 mas serão repetidos aqui. O alfabeto é {¬, ∨, ∧, −→, ←→, (, ), V1 , V2 , . . .}
sendo que Vi é uma variável. As fórmulas do cálculo proposicional são definidas como

(a) uma variável é uma fórmula;

(b) ¬A, (A ∨ B), (A ∧ B), (A−→B) e (A←→B) são fórmulas se A e B são fórmulas;

(c) fórmulas são descritas apenas pelos itens (a) e (b).

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

expansão se A é um teorema, então A ∨ B é um teorema, onde B é uma fórmula qualquer;

eliminação se A ∨ A é um teorema, então A é um teorema;

associatividade se A ∨ (B ∨ C) é um teorema, (A ∨ B) ∨ C é um teorema;

40
corte se A ∨ B e ¬A ∨ C são teoremas, B ∨ C é 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.

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.

Definição 2.13. A fórmula B será um teorema do CP se B aparecer como último elemento de


uma prova em CP: existe uma prova A1 , A2 , ... An e An = B.

Note que, em uma prova A1 , A2 , ... An , qualquer Ai é um teorema.


Como um abuso de linguagem, chamamos de “teorema” fórmulas que empregam meta-fórmulas,
como (¬A ∨ A) ∨ B. Rigorosamente falando, (¬A ∨ A) ∨ B é um “esquema de teorema” a partir
do qual podem ser produzidos teoremas substituindo-se A por qualquer fórmula.
Escrevemos
`A
para dizer que A é um teorema do cálculo proposicional. Se houver dúvidas quanto ao sistema
formal que estamos utilizando, podemos indicá-lo explicitamente:
`cp A.
Utiliza-se 6` A para “A não pode ser deduzido no cálculo proposicional”.

Definição 2.14. Se existe um algoritmo para decidir se B é um teorema de um sistema formal,


então dizemos que este sistema é decidı́vel. Caso contrário, o sistema é indecidı́vel. O cálculo
proposicional é decidı́vel.

Definição 2.15. Uma fórmula A é uma conseqüência ou conseqüência sintática de um con-


junto Γ de fórmulas se e somente se (sse) há uma seqüência A1 , A2 , ... An de fórmulas tal que
A = An e, para cada i, Ai é um axioma ou Ai ∈ Γ ou Ai é deduzido por uma das regras a partir
de fórmulas anteriores (Aj e Ak tal que j < i e k < i).

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

Exemplo 2.2. Agora faremos uma prova de que {A, ¬A ∨ B} ` B:

1. A, hipótese, pois A está no conjunto {A, ¬A ∨ B};

2. A ∨ B, regra da expansão utilizando 1 e B;

3. ¬A ∨ B, hipótese;

4. B ∨ B, regra do corte com 2 e 3;

5. B, regra da eliminação com 4.


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;

3. B ∨ A, regra do corte com 1 e 2.


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.

Exemplo 2.4. A ` ¬¬A:

1. A, hipótese;
4
A maioria das provas foram tomadas de [2].

42
2. ¬¬A ∨ ¬A, axioma;

3. ¬A ∨ ¬¬A, usando a comutatividade;

4. ¬¬A, Modus ponens (MP) de 1 e 3.


Exemplo 2.5. ¬¬A ` A:

1. ¬¬A, hipótese;

2. ¬¬A ∨ A, expansão;

3. ¬A ∨ A, axioma;

4. A ∨ A, corte em 3, 2 (não é 2, 3, é corte em 3, 2);

5. A, eliminação com 4.


Exemplo 2.6. Se Γ = {A−→A ∨ B, A}, temos Γ ` A ∨ B:

1. A−→A ∨ B, hipótese, esta fórmula pertence a Γ;

2. A, pois esta fórmula pertence a Γ;

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

2. A por hipótese, pois A ∈ {A−→B, A};

3. B, MP com 1 e 2. Temos A−→B e A e, portanto, MP pode ser aplicado resultando em B.

Como a última fórmula obtida é B, podemos afirmar que A−→B, A ` B.


Exemplo 2.8. A−→B, B−→C, A ` C

1. A−→B por hipótese;

2. B−→C por hipótese;

3. A por hipótese;

43
4. B, MP com 1 e 3;

5. C, MP com 2 e 4.

Exemplo 2.9. A−→(B−→C), B, A ` C

1. A−→(B−→C) por hipótese;

2. A por hipótese;

3. B−→C, MP 1 e 2;

4. B por hipótese;

5. C, MP 3 e 4.

Teorema 2.1. (Teorema da Dedução) Considere as fórmulas A e B e um conjunto de fórmulas


Γ. Se
Γ, A ` B
então
Γ ` A−→B
Tomando Γ = ∅, temos que, se A ` B, então ` A−→B.

Pode-se facilmente provar que o contrário também é verdadeiro: se


Γ ` A−→B
então
Γ, A ` B

Logo temos Γ ` A−→B sse Γ, A ` B.

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;

(b) este emprega os esquemas de axiomas A−→(A ∧ A), A ∧ B−→A e (A−→B)−→(¬(B ∧


C)−→¬(C ∧ A)) e a regra MP.

Exercı́cios
2.40. Prove que A−→B, B−→C, C−→D, A ` D.

2.41. O que é um teorema?

2.42. Faça uma prova formal dos seguintes teoremas:

(a) ¬¬A−→A

(b) A−→B, B−→C ` A−→C. Utilize o fato “Γ ` A−→B sse Γ, A ` B”.

2.43. O que é uma teoria (sistema formal) decidı́vel?

2.44. Se as regras de um sistema formal sempre produzem teoremas de tamanho crescente, o


sistema é decidı́vel? Explique.

2.45. Diga se os sistemas formais seguintes são decidı́veis ou não.

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

2.46. Explique o que é uma prova.

2.47. Explique o que é um esquema de axioma. É ¬A ∨ A um axioma?


5
Note que isto não é possı́vel com a definição de sistema formal dada nesta apostila. Mas é possı́vel com outra
definição de sistema formal.

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

(e) `cp A−→A

(f ) `T A ∧ ¬A, onde T é uma teoria (sistema formal).

2.49. Prove que se Γ ` A−→B então Γ, A ` B.

2.50. Quais seqüências de sı́mbolos abaixo são fórmulas do CP?

(a) ¬¬¬¬A−→A ∧ ¬A

(b) ∨ ∧ ABA

(c) ((A1 −→A2 ) ∨ A1

2.51. Considerando que Γ e ∆ são conjuntos de fórmulas e A e B são fórmulas, prove:

(a) Se ∆ ⊆ Γ e ∆ ` A, então Γ ` A.

(b) Γ ` A sse6 há um subconjunto finito ∆ de Γ tal que ∆ ` A.

(c) Se ∆ ` A e, para cada B em ∆ tivermos Γ ` B, então Γ ` A.

(d) A ` A

(e) Se ` A, então Γ ` A

(f ) Se A ∈ Γ, então Γ ` A

2.13 Relação Sintaxe/Semântica


A sintaxe do cálculo proposicional consiste de axiomas e regras que são utilizados para produzir
teoremas. A sintaxe não considera os teoremas verdadeiros ou falsos. Eles são apenas seqüências
de sı́mbolos sem significado algum. A semântica do CP consiste de funções de verdade, tabelas
verdade e qualquer outro mecanismo para descobrir em que condições uma fórmula é verdadeira.
Em particular, estamos interessados em tautologias, que são fórmulas que são sempre verdadeiras
independente do valor das variáveis. Veremos nesta Seção a relação entre sintaxe e semântica,
a relação entre teoremas e tautologias. Veremos que os axiomas e regras de dedução do cálculo
6
se e somente se

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:

1. define-se o que é AS, qual é o vocabulário (números, os sı́mbolos +, −, =, etc), a linguagem


que ela utiliza (1+4 = 5 é válido, +1+ não é) e quais as fórmulas que devem ser consideradas
válidas. Por exemplo, 1 + 1 = 2 é válido mas 1 + 1 = 3 não é válido. O que é e o que não é
válido é expresso de maneira informal;

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;

(b) todas as verdades do sistema real são teoremas.

Chegamos então a duas importantes perguntas no CP:

(a) todos os teoremas do CP são tautologias?

(b) todas as tautologias são teoremas?

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

Figura 2.3: Comparação entre sintaxe e semântica

euclidiana, um programa de computador poderia ir produzindo todos os teoremas possı́veis desta


geometria. Mas, infelizmente, este programa não poderia apontar quais são os teoremas realmente
importantes e interessantes. Praticamente 100% dos teoremas seriam completamente inúteis. É
preciso um humano para descobrir o que realmente interessa.
Teorema 2.2. (Teorema da Correção) Cada teorema do CP é uma tautologia.

Prova. Se C é um teorema, então existe uma seqüência B1 , B2 , . . . Bn , na qual Bn = C e cada Bi


ou é uma instância de axioma ou deduzido por uma das regras de dedução um ou dois elementos
anteriores da seqüência. Provaremos por indução que cada Bi é uma tautologia.
O caso base é B1 , que só pode ser uma instância do axioma ¬A ∨ A. Então B1 é tautologia
pois ¬A ∨ A é uma tautologia.
No restante da prova, utilizaremos a seguinte Hipótese de Indução (HI):
HI: Bi é tautologia para i < n.

Provaremos que Bn é tautologia. Se Bn é uma instância do axioma, então é tautologia. Falta


verificar que, se Bn foi deduzido por uma das regras de dedução (expansão, eliminação, associati-
vidade e corte), Bn é tautologia.
Suponha que:

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

(c) Bn é (A ∨ B) ∨ C e foi deduzida de uma fórmula Bi , i < n, pela regra da associatividade.


Neste caso Bi é A ∨ (B ∨ C) que, pela HI, é tautologia. Temos que provar que (A ∨ B) ∨ C
é tautologia. Basta fazer a tabela verdade de A ∨ (B ∨ C)−→(A ∨ B) ∨ C. Por esta tabela,
esta fórmula é tautologia. Pela Proposição 2.1, (A ∨ B) ∨ C é tautologia.

(d) Bn é B ∨ C e foi deduzida de fórmulas Bi =def A ∨ B e Bj =def ¬A ∨ C, i, j < n, pela regra do


corte. Pela HI, A ∨ B e ¬A ∨ C são tautologias. Então (A ∨ B) ∧ (¬A ∨ C) é uma tautologia
(um “e” de duas tautologias só pode ser uma tautologia). Fazendo a tabela verdade de

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.

Podemos concluir que um teorema qualquer do CP é uma tautologia.

Teorema 2.3. (Teorema da Completude) Se uma fórmula A do CP é uma tautologia, então A é


um teorema.7

De fato, há uma forma mais geral dos dois teoremas dados acima:

Teorema 2.4. Γ  A se e somente se Γ ` A

Γ pode ser infinito. Os teoremas anteriores utilizavam Γ = ∅.

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.

Teorema 2.5. O Cálculo Proposicional é consistente.

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)

2. ¬A−→(A−→B) (teorema já provado)

3. A−→B (MP 1, 2)

4. A (Hipótese)

5. B (MP 3, 4)

Computações como Produção de Teoremas


Todo programa toma uma seqüência de bits como entrada e produz uma seqüência de bits como
saı́da (mesmo se ele lê dados do mouse, acessa a Internet ou o HD, produz sons ou escreve coisas
na tela — tudo isto pode ser considerado entrada ou saı́da). O que o programador faz ao codificar
um programa? Ele produz instruções que transformarão a entrada até que se obtenha a saı́da.
9
Difı́cil, creio.

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.53. Se Γ  ϕ então Γ ∪ {φ} ` ϕ ?

2.54. Suponha que Γ seja infinito e Γ ` ϕ. Então existe ∆ ⊂ Γ, ∆ finito, tal que ∆ ` ϕ ?

2.55. Considerando que ϕ ≡ φ então:

(a) ϕ ` ψ ?

(b) ` ϕ−→ψ ?

(c) ` ϕ←→ψ ?

(d)  ϕ←→ψ ?

2.56. Considerando que Γ 6 ϕ então

(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 Γ ` ϕ ?

2.14 Conexões da Sintaxe com a Computação

2.14.1 Análise Sintática e Gramática da Linguagem do Cálculo Pro-


posicional
A sintaxe de uma linguagem de programação é definida por uma gramática. Pode-se fazer o mesmo
com as fórmulas do Cálculo Proposicional. Abaixo apresentamos uma gramática para fórmulas
válidas do CP onde Vi é qualquer uma das variáveis V1 , V2 , . . .. Usaremos apenas os conectivos ¬
e ∨.
F ::= Vi
F ::= ¬ F
F ::= ’(’ F ∨ F ’)’

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");
}
}

2.14.2 Enumeração das Fórmulas do Cálculo Proposicional


As fórmulas do CP podem ser enumeradas. Considere as regras da Seção 2.1 para produzir fórmulas
válidas do CP. Há três regras para produzir fórmulas: a) Vi é fórmula; b) (¬A) é fórmula para
A fórmula e c) (A ∨ B) é fórmula para A e B fórmulas. Pode-se construir um algoritmo que
enumere todas as fórmulas possı́veis. Este algoritmo produz a primeira fórmula pela regra a), a
segunda pela fórmula b), a terceira pela fórmula c), a quarta pela fórmula a) e assim por diante.
A cada aplicação da regra b), que exige uma fórmula já existente A, produz-se várias fórmulas
correspondentes a todas as fórmulas A já enumeradas. O mesmo se aplica à regra c). Então a
enumeração das fórmulas por este algoritmo seria

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

2.64. Crie um conjunto de fórmulas inconsistente. Isto é, Γ ` A e Γ ` ¬A.


2.65. Prove que o cálculo proposicional é consistente.
11
Veja a subseção anterior, Enumeração das Fórmulas do Cálculo Proposicional

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.

1. substitua todas as ocorrências de subfórmulas do tipo A−→B por ¬A ∨ B e todas as


ocorrências de A←→B por (¬A ∨ B) ∧ (¬B ∨ A).
Lembre-se de que fórmulas na FNC não utilizam −→ ou ←→;

2. substitua ¬¬A por A;

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;

4. substitua todas as ocorrências de (A ∨ (B ∧ C)) ou ((B ∧ C) ∨ A) por ((A ∨ B) ∧ (A ∨ C).

A fórmula final F 0 estará na FNC (conjunção de disjunções). Se no último passo trocarmos


(A ∧ (B ∨ C)) ou ((B ∨ C) ∧ A) por ((A ∧ B) ∨ (A ∧ C), teremos uma fórmula na FND (disjunção
de conjunções).
Mostraremos agora alguns exemplos de transformação de fórmulas para a FNC.

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)

2. ((¬A ∧ B) ∨ A) ∧ ((¬A ∧ B) ∨ ¬C)

3. ((A ∨ ¬A) ∧ (A ∨ B)) ∧ ((¬C ∨ ¬A) ∧ (¬C ∨ B))

4. (A ∨ ¬A) ∧ (A ∨ B) ∧ (¬C ∨ ¬A) ∧ (¬C ∨ B)

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

(A1 ∧ B1 ) ∨ (A2 ∧ B2 ) ∨ . . . (An ∧ Bn )

o resultado é

(A1 ∨A2 ∨. . . An )∧(A1 ∨A2 ∨. . . Bn )∧(A1 ∨A2 ∨. . . Bn−1 ∨An )∧. . . (A1 ∨B2 ∨. . . Bn )∧(B1 ∨B2 ∨. . . Bn )

Há n + (n − 1) = 2n − 1 conectivos na fórmula original e aproximadamente n2n conectivos na


fórmula resultante na FNC. Isto não é um problema com o algoritmo: algumas fórmulas possuem
fórmulas na FNC exponenciais, independente do método utilizado para consegui-la.

2.16 Algoritmo de Horn


Nesta seção veremos o importante algoritmo de Horn, que verifica se uma fórmula de Horn é
satisfazı́vel ou não. Antes de estudar o algoritmo, é necessário apresentar algumas definições.
Nesta seção, as variáveis A, B, C, etc, representam variáveis do Cálculo Proposicional.

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.

Algoritmo 2.1. Algoritmo de Horn [6].

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 −→);

3. se tivermos A1 ∧ A2 ∧ . . . An −→B com todos os Ai marcados e B não marcado, marque B.


Repita este passo enquanto existirem sub-fórmulas deste tipo. Claramente, se todos os Ai
tiverem o valor verdade V , então B deverá ser V também para que A1 ∧ A2 ∧ . . . An −→B
seja verdadeira;

4. se tivermos uma sub-fórmula A1 ∧ A2 ∧ . . . An −→ ⊥ na qual cada Ai foi marcado, então


H não é satisfazı́vel. Caso contrário; isto é, todas as sub-fórmulas não forem desta forma,
H é satisfazı́vel. Se todos os Ai forem V , teremos >−→ ⊥, o que torna a sub-fórmula
falsa e a fórmula toda falsa (insatisfazı́vel então). Se em todas as sub-fórmulas do tipo
A1 ∧ A2 ∧ . . . An −→ ⊥ tivermos pelo menos um Ai não marcado (falso), então teremos
⊥ −→ ⊥, cujo valor verdade é V .

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:

1. (>−→C) ∧ (C ∧ D−→A) ∧ (C−→D) ∧ (A ∧ B−→ ⊥)


2. (>−→C) ∧ (C ∧ D−→A) ∧ (C−→D) ∧ (A ∧ B−→ ⊥), passo 2 com >−→C. Como não há
mais fórmulas deste tipo, prosseguimos para o passo 3;
3. (>−→C) ∧ (C ∧ D−→A) ∧ (C−→D) ∧ (A ∧ B−→ ⊥), passo 3 com C−→D;
4. (>−→C) ∧ (C ∧ D−→A) ∧ (C−→D) ∧ (A ∧ B−→ ⊥), passo 3 com
C ∧ D−→A. Como não há mais fórmulas deste tipo, prosseguimos para o passo 4;
5. neste ponto não há fórmula do tipo A1 ∧ A2 ∧ . . . An −→ ⊥ no qual cada Ai foi marcado.
Então a fórmula é satisfazı́vel pelo passo 4.

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.

2.17 O Algoritmo da Resolução


O problema central do cálculo proposicional é determinar se uma certa fórmula se segue logicamente
de outras. Isto é, se Γ  A, onde Γ é um conjunto de fórmulas. Pelo teorema da completude e
correção, sabemos que isto acontece se e somente se Γ ` A. Para descobrir se Γ  A, podemos
usar tabelas verdade. Se Γ = {A1 , A2 , . . . An }, fazemos a tabela verdade de A1 ∧ A2 ∧ . . . An −→A.
Se for tautologia, então A é consequência lógica de Γ. Para descobrir se Γ ` A, devemos deduzir
A a partir de Γ usando os esquemas de axioma e as regras do CP.
Contudo, a construção da tabela verdade e a produção de uma prova são muito complexos
para Γ e A de tamanho razoável. Nesta Seção apresentaremos o método da resolução que diz se

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.

Representaremos cláusulas por conjuntos. As cláusulas A ∨ ¬B, D, ¬A ∨ ¬B ∨ C e ¬V1 ∨ ¬V2 ,


por exemplo, serão representadas pelos conjuntos {A, ¬B}, {D}, {¬A, ¬B, C} e {¬V1 , ¬V2 }. A
representação por conjuntos abstrai a ordem dos literais na fórmula: o conjunto {A, ¬B} representa
tanto a fórmula A ∨ ¬B tanto quanto ¬B ∨ A. Mas isto não é importante nesta seção pois todas as
fórmulas que possuem a mesma representação por conjuntos são equivalentes logicamente. Neste
exemplo, A ∨ ¬B ≡ ¬B ∨ A.
Representaremos fórmulas na FNC por conjuntos também. Assim, a fórmula na FNC
(A ∨ ¬A) ∧ (A ∨ B) ∧ (¬C ∨ ¬A) ∧ (¬C ∨ B)
será representada por {{A, ¬A}, {A, B}, {¬C, ¬A}, {¬C, B}}.
O algoritmo da resolução utiliza duas regras apenas para descobrir se uma fórmula é satisfazı́vel
ou não:

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

O resolvente é exatamente a fórmula obtida pela regra do corte. Então dados A ∨ B e ¬A ∨ C,


o resolvente é B ∨ C. Estamos considerando uma fórmula e sua representação por conjuntos como
sendo a mesma coisa — então podemos utilizar “resolvente” para fórmulas também. Em termos
de conjuntos, o resolvente de {A, B} e {¬A, C} é {B, C}.
Exemplo 2.18. Calcularemos os resolventes de {¬A, B, C} e {A, B, ¬C}. O resolvente é calculado
simplesmente eliminando-se uma variável e sua negação de cada um dos conjuntos e unindo-os.
Então temos dois resolventes:
12
O algoritmo de Horn sempre toma um tempo polinomial no tamanho da fórmula. A definição precisa do que
é “tempo de execução de um algoritmo” não será dada aqui mas pode ser encontrada em livros sobre algoritmos e
teoria da computação, por exemplo, [5].

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

A prova destes fatos não será dada aqui.


Exemplo 2.19. O resolvente de {A} e {¬A} é {}, o conjunto vazio ∅. Isto significa que tudo pode
ser deduzido a partir destes dois conjuntos, pois A ∧ ¬A é uma contradição e de uma contradição
tudo se segue. Isto é, A ∧ ¬A−→B, qualquer que seja B. Confira a tabela verdade da implicação.

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

Consequentemente, R pode ser deduzido de U1 ∧ U2 ∧ . . . Uk . Afinal, se R só depende de Ui e Uj ,


acrescentar mais premissas, os outros conjuntos, não vai alterar em nada o resultado. Então

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

Aqui usamos  mas poderı́amos ter utilizado ` também.


Cada resolvente Rj pode ser deduzido do conjunto S ∪ R1 ∪ R2 ∪ . . . Rj−1 . Como cada Ri ,
1 6 i < j pode ser deduzido a partir de S, então Rj pode ser deduzido a partir de S também
(pode-se fazer uma prova por indução desta afirmação).
Este processo termina sempre pois a fórmula original é finita e o número de resolventes que
podemos obter dela também é obviamente finito. Suponha que a fórmula S tenha se transformado
em S 0 (pela adição dos Ri ) e que o último resolvente seja Rp (encontramos um número p de
resolventes).
Se houver um resolvente Rj que é o conjunto vazio então ele só pode ter sido obtido através de
dois conjuntos do tipo {A} e {¬A}. Esta é a única maneira de se obter um resolvente vazio. Mas
o que isto significa? Significa que tanto A como ¬A podem ser deduzidos a partir de S (todos os
resolventes podem ser obtidos do conjunto S original assim como todos os Ui ´s) e portanto A ∧ ¬A
também pode ser deduzido de S:
S  A ∧ ¬A
Deduzimos uma contradição de S e então S é insatisfazı́vel. Nenhum conjunto de valores pode
ser dado às variáveis que aparecem em S de tal forma que S (considerada como fórmula) seja
verdadeiro. Vejamos um exemplo.
Exemplo 2.20.
S = (A ∨ ¬C) ∧ (¬B ∨ C) ∧ (B ∨ D) ∧ (B ∨ ¬D)

Transformamos esta fórmula em diversos conjuntos separados por vı́rgulas:

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

{A, ¬B}, {¬A, B, C}


z }| { z }| {
{¬B, B, C}, {A, ¬B}, {¬A, B, C}
z }| { z }| {
{A, ¬B, C}, {¬B, B, C}, {A, ¬B}, {¬A, B, C}
O leitor pode confirmar que todas as tentativas de conseguir um novo resolvente resultam em uma
cláusula que já foi obtida. Como o conjunto vazio não está nos conjuntos da última linha,

{A, ¬B, C}, {¬B, B, C}, {A, ¬B}, {¬A, B, C}

concluimos que S é satisfazı́vel.


A execução deste algoritmo também é mostrada na Figura 2.5.

Apresentamos informalmente o algoritmo da resolução nos exemplos acima, sem avisar o leitor
previamente desta apresentação. O definiremos mais formalmente agora.

Algoritmo 2.2. Algoritmo da Resolução.


Seja S um conjunto de conjuntos U1 , U2 , . . . Uk obtidos de uma fórmula na FNC. O algoritmo
da resolução constrói uma sequência S0 , S1 , S2 , . . . Sn de conjuntos, com S0 = S, sendo que cada

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

Veremos mais um exemplo do algoritmo da resolução.

Exemplo 2.22.

S = (B ∨ ¬A) ∧ (A ∨ ¬C) ∧ (¬D ∨ C) ∧ (D ∨ C) ∧ (¬C ∨ ¬B)

convertendo para conjunto, temos

S = {{B, ¬A}, {A, ¬C}, {¬D, C}, {D, C}, {¬C, ¬B}}

A execução deste algoritmo é mostrada graficamente na Figura 2.6. E textualmente abaixo.

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}

Proposição 2.7. No algoritmo da resolução aplicado a uma fórmula S, temos que {} ∈ S? se e


somente se S é insatisfazı́vel.

Não provaremos esta proposição.


Uma das principais questões da lógica é descobrir se uma fórmula B é consequência lógica de
um conjunto de finito de fórmulas Γ. Esta questão pode ser resolvida usando resolução. Vejamos
como.
Considere Γ = {A1 , A2 , . . . An }. Queremos saber se Γ  B. Isto é equivalente a

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:

Proposição 2.8. Considerando Γ = {A1 , A2 , . . . An }, são equivalentes:

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

Note que poderı́amos ter escrito F N C(¬(A1 ∧ A2 ∧ . . . An −→B))? no lugar de S? , considerando


F N C(X) como a fórmula equivalente logicamente a X 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:

1. João gosta de pizza ou gosta de futebol;


2. Se João não gosta de Maria, então João não gosta de pizza ;
3. João não gosta de futebol e João não mora em São Paulo.

Pergunta-se: João gosta da Maria?


Vamos colocar as afirmações acima em formato de variáveis do cálculo proposicional:

1. A é “João gosta de pizza”


2. B é “João gosta de futebol”;
3. C é “João mora em São Paulo”;
4. D é “João gosta de Maria”.

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:

1. tentar encontrar D aplicando resolução em S. Se encontrarmos, então S−→D. Vejamos:


(A ∨ B) ∧ (¬D−→¬A) ∧ (¬B ∧ ¬C)
(A ∨ B) ∧ (¬D−→¬A) ∧ ¬B ∧ ¬C
(A ∨ B) ∧ (¬¬D ∨ ¬A) ∧ ¬B ∧ ¬C
(A ∨ B) ∧ (D ∨ ¬A) ∧ ¬B ∧ ¬C
{A, B}, {¬A, D}, {¬B}, {¬C}
z }| { z }| {
{B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}
z }| { z }| {
{D}, {B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}

Como D pode ser deduzido por resolução a partir de S, temos que S  D


2. queremos saber se S−→D. Basta converter a fórmula ¬(S−→D) para FNC e aplicar o
algoritmo da resolução. É o que fazemos abaixo.
¬(S−→D)
¬(¬S ∨ D)
¬¬S ∧ ¬D
S ∧ ¬D
(A ∨ B) ∧ (D ∨ ¬A) ∧ ¬B ∧ ¬C ∧ ¬D
{B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}, {¬D}

67
Figura 2.7: Resolução aplicado a {{B, D}, {A, B}, {¬A, D}, {¬B}, {¬C}, {¬D}}

A execução deste algoritmo é mostrada graficamente na Figura 2.7. E textualmente abaixo.

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.

2.18 Considerações Finais


O algoritmo da resolução pode ser aplicado a qualquer fórmula na FNC para descobrir se ela é
satisfazı́vel ou não. Para descobrir se Γ  B, com Γ finito, Γ = {A1 , A2 , . . . An }, podemos obter
uma fórmula na FNC equivalente a ¬(A1 ∧ A2 ∧ . . . An −→B) e aplicar o algoritmo da resolução.
Se a resposta foi “a fórmula é insatisfazı́vel”, então B é consequência lógica de Γ.
O algoritmo da resolução pode tomar um tempo exponencial no tamanho da fórmula da entrada
(não definiremos precisamente os termos. Assuma que este algoritmo é inviável para entradas muito
grandes). O algoritmo de Horn toma um tempo polinomial no tamanho da entrada. Novamente,
apenas assuma que este algoritmo pode ser utilizado na prática sem problemas. Contudo, este
algoritmo só pode ser aplicado a fórmulas que são conjunções de fórmulas do tipo A1 ∧ A2 ∧
. . . An −→B, ¬(A1 ∧ A2 ∧ . . . An ) e B.

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.

Conexões com a Computação


O algoritmo da resolução vista nesta Seção se aplica a fórmulas do Cálculo Proposicional. Há
um tipo mais geral deste algoritmo, a resolução de primeira ordem, que não será visto aqui. A
linguagem Prolog utiliza resolução em um tipo especial de fórmula, a fórmula de Horn de primeira
ordem.

Exercı́cios
2.66. Transforme as seguintes fórmulas para a FNC.

(a) (A ∧ B) ∨ (¬C ∧ A)

(b) (¬A−→B) ∨ (¬B−→C)

(c) (¬A−→B) ∨ (¬B−→C) ∨ (A ∧ B)

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

2.70. Prove que A ` A ∨ A. Use resolução.

2.71. Prove que {A ∨ B, A−→C, B−→D}  C ∨ D. Use resolução.

2.72. Considere os seguintes fatos:

1. João gosta de pizza ou gosta de futebol;

2. João tem curso superior e João mora em São Paulo;

3. Se João gosta de futebol então João é São Paulino;

69
4. Se o pai de João é Palmeirense, então João é Palmeirense;

5. João não tem curso superior ou o pai de 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;

7. Se João é Palmeirense então ele não é São Paulino.

Pergunta-se: João gosta da Maria?

2.73. Prove que (A−→B) ∧ (B−→C)−→(A−→C) é tautologia usando resolução.

2.74. Prove que {¬A−→(B−→C), ¬A, B} ` C usando resolução.

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

Lógica de Primeira Ordem

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.

3.1 A Linguagem da Lógica de Primeira Ordem


Há uma única linguagem para o Cálculo Proposicional. Contudo, para a Lógica de Primeira
Ordem, podemos ter infinitas linguagens diferentes conforme os sı́mbolos de predicado, sı́mbolos
de função e sı́mbolos de constante que utilizamos. Sı́mbolos de predicados representam, quando
interpretados, afirmações que podem ser verdadeiras ou falsas. Sı́mbolos de função são sı́mbolos
que, quando interpretados, representam funções. Sı́mbolos de constantes, quando interpretados,
representaram um elemento especı́fico do conjunto que utilizaremos (como “João da Silva” do
conjunto dos homens).
Então se utilizarmos apenas os sı́mbolos de predicado H e P do primeiro exemplo, e nenhum
sı́mbolo de função ou constante, temos uma certa linguagem. Se formos utilizar os sı́mbolos P e
M do segundo exemplo, temos uma outra linguagem. No caso geral, utilizamos um vocabulário.
Definição 3.1. Um vocabulário é uma tripla (conjunto de sı́mbolos de predicado, conjunto de
sı́mbolos de função, conjunto de sı́mbolos de constante). Usualmente utilizamos a notação V =
(Σ, ∆, Ψ) para um vocabulário, onde Σ é um conjunto de sı́mbolos de predicado, ∆ é um conjunto
de sı́mbolos de função e Ψ é um conjunto de sı́mbolos de constante. Todos estes conjuntos devem

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

Uma linguagem da Lógica de Primeira Ordem sempre estará associada a um vocabulário e


vice-versa.

Definição 3.2. A linguagem L associada a um vocabulário V = (Σ, ∆, Ψ) utiliza os seguintes


sı́mbolos:

1. variáveis x0 , x1 , x2 , . . .;

2. sı́mbolos de predicado P ∈ Σ;

3. sı́mbolos de função f ∈ ∆;

4. sı́mbolos de constante c tal que c ∈ Ψ;

72
5. , (vı́rgula), (, ), ¬, ∧, ∨, −→ e ←→ (tomados do cálculo proposicional);

6. = (igual)

7. ∃ (quantificador existencial) e ∀ (quantificador universal)

Como exemplo, se utilizarmos o vocabulário V = (R, M, f, g, c1 , c2 ) definido anteriormente,


os sı́mbolos utilizados na linguagem L associada a V são: {xi : i ∈ N} ∪ {R, M, f, g, c1 , c2 } ∪
{(, ), ¬, ∧, ∨, −→, ←→, =, ∃∀}∪{, }. Este conjunto é o alfabeto do sistema formal que será definido
no fim desta Seção.
O número de sı́mbolos de predicado, função e constante de uma linguagem ou vocabulário é
sempre finito, o que já é suficiente para nós.
Na definições abaixo, assuma que estamos utilizando uma linguagem L associada a um voca-
bulário V = (Σ, ∆, Ψ).
Definição 3.3. Um termo é definido como

1. uma variável ou constante c ∈ Ψ é termo;

2. se f ∈ ∆ é um sı́mbolo de função que toma n argumentos (n-ário) e t1 , t2 , ... tk são termos,


então f (t1 , t2 , ..., tn ) é um termo. Observe que um sı́mbolo de função de aridade n deve ser
utilizado com n termos;

3. nada mais é um termo.

Freqüentemente citaremos a linguagem sem descrever o vocabulário correspondente. Diremos


apenas que a linguagem utiliza tais e tais sı́mbolos de predicado, função e constante. É isto que
fazemos no exemplo abaixo.
Considere uma linguagem L que utiliza o sı́mbolo de constante c, sı́mbolo de predicado P com
dois argumentos e sı́mbolo de função f com um argumento. Então são termos:

1. c

2. x1 , de fato, xi para qualquer i ∈ N

3. f (c), f (x3 ), f (x5 )

4. f (f (c)), pois f (c) é um termo

Observe que estamos falando da linguagem. Não interessa a definição da função f ou do


predicado P . Na verdade, f não é função, é apenas um sı́mbolo que pode ser utilizado nas
fórmulas como se fosse uma função. O mesmo raciocı́nio se aplica a P .
Definição 3.4. Uma fórmula atômica é da forma:

• t1 = t2 , com t1 e t2 termos de L ou;

• P (t1 , t2 , ..., tn ) sendo que P é um sı́mbolo de predicado n-ário pertencente a Σ e t1 , t2 , ..., tn


são termos.

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

Definição 3.5. Uma fórmula da linguagem de primeira ordem é definida como

1. toda fórmula atômica é fórmula;

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;

3. nada mais é uma fórmula.

Na linguagem L, são fórmulas:

1. f (x1 ) = c

2. x1 = f (x2 )

3. P (x1 , x2 )

4. P (c, f (x8 ))

5. (¬P (c, f (x8 )))

6. (x1 = c−→P (c, c))

7. ((∃x1 ) x1 = x2 )

8. ((∃x1 ) ((∀x2 ) x1 = x2 ))

9. ((∃x1 ) P (c, x1 ))

10. ((∀x1 ) P (x1 , x9 ))−→((∃x5 )(f (x5 ) = c))

11. ((∃x13 ) P (x1 3, c)−→((∀x7 )P (x13 , x7 )))

O quantificador universal ∀ poderia ter sido definido a partir de ∃ como


((∀x)A) é uma abreviatura para ¬((∃x)(¬A))
Ou seja, se para todo x vale certa propriedade A, então não é verdade que existe um x tal
que aquela propriedade não vale. Pense bem sobre esta afirmação e certifique-se de que você a
entendeu.

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

Sı́mbolos de mesma precedência se associam da esquerda para a direita: A−→B−→C é o


mesmo que (A−→B)−→C.
Assim,

∀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−→x < y + 1)

• ∀x∃y(x = y + 1)

• ∀x(x < x + 1)

• ∀x∀y (x < y−→¬(x = y))

• ∀x∀y∀z (x < y ∧ y < z−→x < z)

• ∀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.

3.2 Mapeamento de Frases para a Lógica de Primeira Or-


dem
Há inúmeras proposições sobre a Matemática e sobre o mundo que não podem ser expressas no
cálculo proposicional. Por exemplo, não podemos expressar as seguintes proposições:

1. todos os homens são primatas;

2. todos os primatas são mamı́feros;

3. existe um homem que não é inteligente;

4. para todo x, se x é ı́mpar então x + 1 é par;

5. existe um número primo maior do que 101000 ;

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

2. ∀x (P (x)−→M (x)), na qual M (x) é “x é mamı́fero”. Considere que x assume os elementos


do conjunto de todos os animais (poderia ser de todas as coisas);

3. ∃x ¬I(x), na qual I(x) é “x é inteligente”. Considere que x assume os elementos do conjunto


que contém todos os homens. Se considerarmos que x assume os elementos do conjunto de
todos os animais ou todas as coisas, esta fórmula deveria ser ∃x H(x) ∧ ¬I(x);

4. ∀x (I(x)−→P (x + 1)), na qual I(x) é “x é ı́mpar” e P (x) é “x é par”. x assume os números


Naturais;

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.2. Elimine os parênteses desnecessários das seguintes fórmulas

• (∀x (P (x) ∨ Q(x))) ∧ (∃z (z < 0)−→R(z))

• (x < 1) ∧ (∃y (y < x ∧ P (y)))

• ∃x (∀y P (x, y))−→(∃z Q(x, z))

• ∃x (∀w (∀y P (x, y, w)))−→(∃z Q(x, z))

3.3. As fórmulas ∀x∀yR(x, y) e ∀y∀xR(x, y) possuem significados diferentes? Explique !

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:

• D(x, y), x é uma disciplina mais difı́cil do que y;

• A(x), x é uma disciplina que possui uma apostila;

• P (x, y), as provas de x são mais difı́ceis do que as provas de y;

77
• c é a disciplina “Introdução à Lógica”.

Faça fórmulas na linguagem L que representem, nesta interpretação, as frases seguintes:

(a) qualquer disciplina é mais difı́cil do que 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.

(f) existe uma única disciplina;

(g) existe apenas uma outra disciplina além de Introdução à Lógica;

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

(a) ∀x (A(x)−→∃y D(y, x))

(b) ∀x (A(x)−→(∃y P (y, x) ∨ ∃y D(y, x)))

(c) ∀x (x = c ∨ D(x, c) ∨ P (x, c))

78
(d) ∀x ¬D(x, y)−→y = c

(e) ∃x (∀y (¬(x = y)−→D(x, y))−→¬(x = 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:

(a) o Vocabulário de LA . Defina os conjuntos Σ, ∆ e Ψ;

(b) três termos quaisquer;

(c) três fórmulas atômicas;

(d) três fórmulas quaisquer;

(e) três fórmulas que não são válidas nesta linguagem.

3.9. Explique as diferenças entre as variáveis no cálculo proposicional e as da Lógica de Primeira


Ordem.

3.10. Qual é a interpretação de uma fórmula ∀x(A(x)−→B(x))? E (∀xA(x))−→(∀xB(x))?

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.

(a) Todos os deputados querem que a CPI termine em Pizza.

(b) Existe um polı́tico que não quer que a CPI termine em Pizza.

(c) Não é verdade que se um animal nada ele é um peixe.

(d) Não é verdade que se um animal nada ele não é um mamı́fero.

(e) João amava Teresa que amava Raimundo que amava Maria que amava Joaquim que amava
Lili, que não amava ninguém.

(f ) X não gosta de ninguém que goste dele.

(g) É tão fácil trocar uma lâmpada que qualquer um pode fazê-lo.

(h) Se ele pode fazer a lição, então qualquer um pode.

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.

3.12. Qual a diferença entre as fórmulas ∀xR(x)−→S(x) e ∀x(R(x)−→S(x))? Preferencialmente,


cite um exemplo para diferenciá-las.
3.13. Considere uma linguagem com os sı́mbolos usuais da Aritmética: +, −, , <, 0 e 1. A
linguagem possui apenas estes sı́mbolos — não possui 2 como sı́mbolo, por exemplo, nem / (de
divisão). Faça fórmulas nesta linguagem que correspondam aos seguintes predicados:

(a) M (x, y), x é maior do que y;


(b) D(x, y), x divide y;
(c) R(x, y, z), z é o resultado da divisão de x por y;
(d) P (x), x é um número primo;
(e) E(x, y), x2 = y;

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 !

3.3 Semântica da Lógica de Primeira Ordem


Esta seção apresenta a semântica da Lógica de Primeira Ordem. Diferente da semântica do CP,
uma fórmula escrita na LPO não pode ser avaliada como verdadeira ou falsa construindo-se uma
tabela verdade. Os quantificadores ∀ e ∃ impedem isso, pois eles se referem a conjuntos de
elementos que podem mesmo ser infinitos. É necessário algo mais sofisticado para avaliar a validade
de uma fórmula. Este algo é chamado de modelo. O que são modelos, como representá-los e como
verificar a verdade/falsidade de fórmulas na LPO são os objetivos desta Seção.
A semântica do cálculo proposicional utiliza tabelas verdade ou funções de verdade. Cada
variável que ocorre em uma fórmula, como V1 em V1 −→(V5 ∧ ¬V1 ) pode assumir dois valores
verdade, V ou F. Dando valores verdade para cada variável, como V para V1 e F para V5 , podemos
calcular o valor verdade da fórmula.
A semântica da Lógica de Primeira Ordem não é tão simples assim. Existem funções, constantes
e predicados que complicam a semântica da LPO. Dada uma fórmula ∀x(P (x)−→D(x)), como
saber se ela é verdadeira ou falsa?
1
A notação ∃x “significa”, na linguagem comum, que existe um x. Mas nada impede que exista mais do que
um. Assim, ∃x de fato significa “um ou mais”.

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

3.4 Estruturas e Modelos


Uma teoria de primeira ordem é a parte sintática correspondente a uma Lógica de Primeira
Ordem. Uma teoria de primeira ordem é uma formalização de uma semântica qualquer. Por
exemplo, podemos formalizar a Aritmética, a geometria Euclidiana, as relações de ordem (< e
suas propriedades), as relações de equivalência ou uma outra teoria Matemática. E podemos
formalizar um pedaço qualquer do mundo, desde que isto seja possı́vel — pode não ser.
Para fazer esta formalização, descobrimos quais os fatos relevantes a respeito deste pedaço do
mundo e os colocamos em axiomas. Este “pedaço” do mundo é chamado de modelo, que será
definido mais precisamente nos parágrafos seguintes.
Antes disto definiremos alguns conceitos e estudaremos alguns exemplos. Recomenda-se a
releitura da Seção 3.1, sobre a linguagem da Lógica de Primeira Ordem. O que chamamos de
interpretação naquela Seção são os nossos modelos.
Definição 3.6. Uma relação n-ária R sobre um conjunto A é um subconjunto de An .

An é o conjunto {(x1 , x2 , . . . xn ) : xi ∈ A, 1 6 i 6 n}.


Por exemplo, se A = {0, 1, 2, 3, 4}, A2 = {(0, 1), (0, 2), (0, 3), . . . (4, 0), (4, 1), . . . (4, 4)}. São
relações binárias sobre A:

• R = {(0, 2), (3, 0), (4, 1)};


• R = {(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)};
• R = {(1, 3), (3, 1)};
• R = ∅;
• R = A;

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 conjunto de elementos não vazio chamado de universo da estrutura, denotado por |M |;


• um conjunto de predicados e funções da estrutura. Um predicado P de aridade n é uma
relação em M n , o que implica que P ⊂ M n . Uma função de aridade n é uma função de M n
em M (sempre !);
• uma associação de predicados da estrutura a sı́mbolos de predicado de L, funções da estrutura
a sı́mbolos de função de L e elementos do conjunto universo da estrutura a sı́mbolos de
constante de L.

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

A constante c de L1 é associada ao elemento a de |MB |. O sı́mbolo de predicado D de L1


é associado ao predicado T da estrutura. Esta é a única estrutura neste texto, além do
exemplo do Zoológico dado no fim desta Seção, em que um predicado possui nome diferente
do sı́mbolo de predicado associado a ele.

Exemplo 3.4. Seja V2 um vocabulário com um sı́mbolos de predicado unário I, um sı́mbolo de


predicado binário D e um sı́mbolo de função unária f . Não há sı́mbolos de constante. A linguagem
de primeira ordem associada à V2 é L2 . Uma estrutura M3 para L2 é a seguinte:

• conjunto universo |M3 | = {0, 1, 2, 3, 4, 5}

• 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”.

• função f : |M3 |−→|M3 | definida como



0 se x=5
f (x) =
x+1 se x 6= 5


Temos alguns fatos muito importantes sobre estruturas:

1. qualquer linguagem possui infinitas estruturas;

2. nem todos os elementos de uma estrutura M1 da linguagem L precisam estar associados a


contantes de L. A linguagem pode ter uma única constante c e |M1 | pode ter dois, três ou
mesmo infinitos elementos. É mais ou menos assim em nossa linguagem natural. Descrevemos
os números naturais, por exemplo, sem nunca falar ou escrever todos os sı́mbolos disponı́veis
para todos os números naturais (isto nem seria possı́vel, dado que são infinitos). Durante
toda a vida uma pessoa sempre utilizará um número finito de sı́mbolos correspondentes aos
números naturais;

3. um mesmo conjunto de elementos, como N pode pertencer a várias estruturas de maneiras


diferente. Isto é verdade se as estruturas pertencem à mesma linguagem ou não. Por exemplo,
considere uma linguagem com uma função f e constante c. Uma estrutura M1 para uma
linguagem com função f e constante c cujo universo |M1 | é N e que associa f a + e c a 0.
Uma outra estrutura pode ter universo {0, 1, 2} e associar f a  e c a 2;

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

Definição 3.8. Dado um predicado P de aridade n, P (x1 , x2 , . . . xn ) será considerado verdadeiro


se e somente se (x1 , x2 , . . . xn ) ∈ P , onde este último P é a relação que representa o predicado.
Usaremos P (x1 , x2 , . . . xn ) se P (x1 , x2 , . . . xn ) é verdadeiro e ¬P (x1 , x2 , . . . xn ) se P (x1 , x2 , . . . xn )
for falso.

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 (¬(x = y) ∧ C(x, y)−→C(y, x))

• ∀x∃y (C(x, y) ∧ Cp (y))

• ∃x∀y ¬C(y, x)

• P (x)−→∀y ¬C(x, y)

• ∃x ¬Cp (x)

• C(x, y) ∧ C(y, z)−→C(x, z)

• ∀x∀y∀z (C(x, y) ∧ C(y, z)−→C(x, z))

• P (x)−→x = c

• ∀x (P (x)−→x = c)

• C(x, y)−→(¬(x = c) ∧ ¬(y = 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 = {(ana, maria), (maria, ana), (thiago, patrı́cia), (patrı́cia, thiago),


(joão, pedro), (pedro, joão), (thiago, pedro), (pedro, thiago)}

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

Cp = {patrı́cia, pedro, joão}


Assuma que este é um curso à distância, nem todos os alunos conhecem pessoalmente o professor.

P = {josé}

Na definição de modelo, utilizamos o conceito de “fórmula verdadeira” em uma estrutura. Da-


remos uma definição formal deste conceito na seção 3.5. Intuitivamente, uma fórmula é verdadeira
em uma certa estrutura se a estrutura possui o que a fórmula exige. Como exemplo, a fórmula
∀x (P (x)−→x = c) é verdadeira na estrutura do exemplo anterior. Esta fórmula quer dizer
“para todo x de |M1 |, se P (x) então x = c”
que é igual a
“para todo x ∈ |M1 |, se x ∈ P então x = josé”
pois c é associado ao elemento “josé”. Refinando, ficamos com

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

∀x∀y∀z (C(x, y) ∧ C(y, z)−→C(x, z))

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

A fórmula C(x, y) ∧ C(y, z)−→C(x, z) não é verdadeira em M1 . Ela quer dizer


“para todo x, y e z, se C(x, y) e C(y, z), então C(x, z)
que é
“para todo x, y e z, se (x, y) ∈ C e (y, z) ∈ C, então (x, z) ∈ C
mas (patrı́cia, thiago) ∈ C e (thiago, pedro) ∈ C sendo que (patrı́cia, pedro) 6∈ C.
Definição 3.9. Dado uma estrutura M1 para a linguagem L e um conjunto de fórmulas Γ em L,
dizemos que M1 é modelo para Γ se cada uma das fórmulas de Γ for verdadeira em M1 . Usamos
M1  Γ para “M1 é modelo para Γ”.

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:

M1  {∃x ¬Cp (x)}

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

Γ = {∀x (P (x)−→x = c), ∃x ¬Cp (x), ∀x∀y (C(x, y)−→C(y, x))

temos que M1 é um modelo para Γ. Escrevemos M1  Γ.


Por outro lado, a fórmula C(x, y) ∧ C(y, z)−→C(x, z) não é verdadeira em M1 , como demons-
trado anteriormente. Então escrevemos

M1 6 C(x, y) ∧ C(y, z)−→C(x, z)

Estudaremos mais alguns exemplos.

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

(∀x∀y (x < x + y ∨ y = 0)) ∧ ∀x (5 × x = (3 × x) + x + x)

? 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

1. para todo x e para todo y, x é menor do que y ou y = 0. O que é claramente verdadeiro em


N, que só contém números maiores ou iguais a 0;

2. para todo x, 5 × x = (3 × x) + x + x, o que também é claramente verdadeiro em N.

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;

2. a segunda fórmula, ∀x (P (x)−→¬∃y (¬(y = 1) ∧ ¬(x = y) ∧ D(x, y)), interpretada em M1 ,


diz que para todo x do modelo, se x é primo então não é verdade que existe um y tal que
y 6= 1, x 6= y e y divide x. Verdade, pois nenhum x primo é divisı́vel por nenhum número
diferente de 1 e x;

3. a terceira fórmula, ∃x∀y (x + y = y), interpretada em M1 , diz que existe um x ∈ {0, 1, 2, 5, 7}


tal que para todo y deste conjunto, x + y = y. É verdade e este x é o 0.

Como todas as fórmulas do conjunto Γ são verdadeiras na estrutura M1 , então M1 é modelo


de Γ.

3.5 Definição Formal de Modelo


A definição formal de verdade emprega a noção de satisfabilidade, definida abaixo. Para definir
esta noção, é antes necessário definir o que é o valor de um termo t em uma estrutura M dados os
valores que as suas variáveis livres devem assumir. O “valor de um termo t” é um valor em |M |
resultado da avaliação das possı́veis funções em t e da substituição das variáveis e constantes em
t pelos respectivos valores. Por exemplo, considere um termo t =def x + c avaliado em um modelo
dos números naturais em que x é substituı́do por 1 e c corresponde a 0. Então o valor de t neste
modelo com x substituı́do por 1 é igual a 1 + 0, que é 1. Note que em 1 + 0, o + é a função soma
do modelo, os números naturais. O + da definição de t, x + c, é apenas um sı́mbolo de função sem
significado.

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 ;

2. cM se t é c e cM é o valor de |M | associado à constante c de L;

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

Mais formalmente, temos

((x + 1)  y)M [~a] = (x + 1)M [~a]  y M [~a]


= (xM [~a] + 1M [~a])  y M [~a]
= (1 + 1)  3
= 23
= 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

Utilizando a função gM , temos


gM ((x + 1)  y, ~a) = 6 com ~a = (1, 3)
tM [~a] é o valor de t em M usando os valores de ~a para as variáveis livres.

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:

(a) t é (((x2 + 2)  x1 )  x3 ) + 1 e ~a = (5, 0, 3). Vejamos:

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

(b) t é −(f (x)  2) + y com ~a = (5, 250).


5 250
M
−(f ( x )  2) + y
z}|{ z}|{
(−(f (x)  2) + y) [~a] =
= −(f (5)  2) + 250
= −(120  2) + 250
= −(240) + 250
= 10


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 ;

2. A é P (t1 , t2 , ...tn ) e (tM a], tM


1 [~ a], . . . tM
2 [~ a]) ∈ P M . Ou seja,
n [~

M  P (t1 , t2 , ...tn )[~a] sse (tM a], tM


1 [~ a], . . . tM
2 [~ a]) ∈ P M
n [~

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

4. A é B ∨ C e M  B[~a] ou M  C[~a]. Ou seja,


M  (B ∨ C)[~a] sse M  B[~a] ou M  C[~a]
B e C não necessariamente possuem todas as variáveis livres de B−→C. Então poder-se-
ia pensar que B[~a] não tem significado, pois o número de valores em ~a pode ser maior do que o
número de variáveis livres em B. Então, considere B =def B(v1 , v2 , ...vn ) e C =def C(v1 , v2 , ...vn );

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.

Intuitivamente, M  A[~a], ~a satisfaz A em M , se A é verdade no modelo M segundo a inter-


pretação usual de verdade. Isto é, a fórmula é interpretada como se referisse exclusivamente ao
modelo M : a igualdade é a igualdade no modelo, os sı́mbolos de predicados de A são os predicados
do modelo, o ∃x de A refere a um elemento especı́fico do universo |M | e assim por diante.
Os conectivos derivados ∧, −→ e ←→ são definidos a partir de ¬ e ∨ e o quantificador universal
∀ é definido usando ∃. A definição de satisfação para estes conectivos derivados e para ∀ é deduzida
utilizando a definição de satisfação para fórmulas que usam ¬, ∨ e ∃. Então temos

1. M  (B ∧ C)[~a] sse M  B[~a] e M  C[~a]

2. M  (B−→C)[~a] sse M 6 B[~a] ou M  C[~a]

3. M  (B←→C)[~a] sse (M  B[~a] e M  C[~a]) ou (M 6 B[~a] e M 6 C[~a])

4. M  (∀x B(x))[~a] sse M  Byx [b, ~a] para todo b ∈ |M |


onde y é uma variável que não pertence ao conjunto de variáveis utilizadas em B e |M | é o
universo da estrutura M . O sı́mbolo Byx é a fórmula B com x substituı́do por y.

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

M  (x = 2 × x)[~a] sse xM [~a] = (2 × x)M [~a]


sse 5 = (2M [~a] × xM [~a])
sse 5 = (2 × 5)
sse 5 = 10

Então ~a não satisfaz x = 2 × x em M , M 6 (x = 2 × x)[~a]. Note que na segunda linha em


diante, × é a operação multiplicação em Z. Na primeira linha, a primeira ocorrência de = é
um sı́mbolo da linguagem e a segunda é a relação de igualadade em Z.
(b) ∀y (0 < z−→(x < y−→x < y + z)) com ~a = (3, 2, −5). As variáveis livres são x e z (3 para x
e 2 para z).

M  (∀y (0 < z−→(x < y−→x < y + z)))[~a] sse


para todo y ∈ Z, M 6 (0 < z)[~a] ou M  (x < y−→x < y + z)[~a] sse
para todo y ∈ Z, (0 < 2) é falso ou (M 6 (x < y)[~a] ou M  (x < y + z)[~a]) sse
para todo y ∈ Z, (0 < 2) é falso ou (3 < y é falso ou 3 < y + 2)

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]

(d) ∃y (x = y + z) com ~a = (0, 1, 2). x assume 0 e z, 1. Então para termos

M  (∃y (x = y + z))[~a]

é necessário que exista um y ∈ Z tal que 0 = y + 1. Basta tomar y = −1.

Definição 3.12. O fecho de uma fórmula A com variáveis livres x1 , x2 , . . ., xn é a fórmula

∀x1 ∀x2 . . . xn A

Exemplo 3.13. O fecho de x + y = z é ∀x∀y∀z (x + y = z). O fecho de ∃y (f (x1 , y) < z + x2 ) é


∀x1 ∀z∀x2 ∃y (f (x1 , y) < z + x2 ).

Definição 3.13. Uma fórmula A de uma linguagem L é verdadeira na estrutura M de L se e


somente se toda seqüência ~a de |M | satisfaz A. Isto é, M  A[~a] para toda sequência ~a. Escrevemos
M  A.

Definição 3.14. Uma fórmula A de uma linguagem L é falsa na estrutura M de L se e somente


se nenhuma seqüência ~a de |M | satisfaz A. Isto é, M 6 A[~a] para toda sequência ~a. Escrevemos
M 6 A.

Então uma fórmula A é verdadeira em uma estrutura se e somente se o fecho de A é verdadeiro.


Estas definições são muito, muito importantes. Elas dizem quando uma fórmula é verdadeira
e quando é falsa. Estas definições correspondem, aproximadamente, no Cálculo Proposicional, a
uma fórmula ser tautologia (verdadeira) e contradição (falsa). Uma estrutura M na Lógica de
Primeira Ordem corresponde às tabelas verdades dos conectivos no CP. E uma seqüência ~a em M
na LPO corresponde a uma atribuição de valores às variáveis de uma fórmula no CP; isto é, uma
linha da tabela verdade.
Há algumas observações importantes sobre as definições acima:

• 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

não é verdadeira nem falsa. Temos

M  (x = 2 × x)[~a] para a = (0) mas


M 6 (x = 2 × x)[~b] para b = (1)

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;

• uma fórmula fechada, sem variáveis livres, é sempre verdadeira ou falsa.

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.

(a) ∃x (x = 2 × x). Há algum x ∈ Z tal que x = 2 × x? Sim, x = 0:

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)

Ou, se preferir, Z  ∃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)

(d) ∀x∃y (x = y + 1). Verdadeiro. Se tomarmos x = n, n ∈ Z, podemos tomar y = n − 1. Note que


se o modelo fosse N, esta fórmula seria falsa, pois para x = 0 não existe y tal que 0 = y + 1.
Concluindo,
M  ∀x∃y (x = y + 1)

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

Então M é modelo de Γ se e somente se


M  A para todo A ∈ Γ
Exemplo 3.16. Por exemplo,
N  Γ no qual
Γ = {∃x (y + x = y), ∀x∃y (y = x + 1), ∀x (x = 0 ∨ 0 < x)}
R  Γ no qual Γ = {∀x(x < x + 1), ∀x∀y (x < y−→¬(x = y)), ∀x∀y∀z (x < y ∧ y <
z−→x < z)}
Z  Γ no qual Γ = {(x × (y + 1) = x × y + x), ∀x∃y (x + y = 0)}
Definição 3.17. Escrevemos Γ  A para indicar que A é verdadeira em todos os modelos do
conjunto Γ.

Isto é, para qualquer M modelo de Γ, então M  A.


O leitor pode se perguntar porque a definição de estrutura e modelo. Estas definições
foram feitas sob medida para representar estruturas matemáticas como os números naturais e suas
operações, os números reais, as diferentes geometrias, grupos, etc.

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.

Lema 3.1. A é falso em uma estrutura M se e somente se ¬A é verdadeiro.

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;

• ∃xB−→(∀xA(x)−→A(t)), pois ∀xA(x)−→A(t) é logicamente válida. Vejamos porquê. Esta


fórmula quer dizer que, para todo x do universo do modelo, se A(x) for válido então A(t)
também o será (note a precedência: (∀x A(x))−→A(t)). Como A(x) é verdadeiro para todos
os elementos do universo, será válido para um valor do termo t quando interpretado no
modelo. Pelas propriedades do conectivo −→, a fórmula toda é logicamente válida (se B é
V , então A−→B é V ).
Definição 3.19. Considere as fórmulas A e B de uma mesma linguagem L. Dizemos que uma
fórmula A logicamente implica uma fórmula B se, para toda estrutura de L, toda seqüência
que satisfaz A também satisfaz B.
Exemplo 3.17. Seja A =def ∃x (P (x, y) ∧ Q(x, y)) e B =def ∃x Q(x, y). Então A implica logica-
mente B. Para cada sequência ~a que satisfaz A e cada estrutura M , temos M  (∃x (P (x, y) ∧
Q(x, y)))[~a] o que implica em M  (∃x Q(x, y))[~a]. Em resumo, se temos X e Y em uma estrutura,
então temos obrigatoriamente Y nesta mesma estrutura. Não é possı́vel ter uma estrutura com
uma seqüência que satisfaz a primeira fórmula sem satisfazer a segunda.
Definição 3.20. Considere as fórmulas A e B de uma mesma linguagem L. Dizemos que uma
fórmula A é logicamente equivalente a uma fórmula B se A implica logicamente B e
vice-versa.
Exemplo 3.18. Seja A =def ∀x (R(x, y, z)−→S(y, x)) e B =def ∀x (¬S(y, x)−→¬R(x, y, z)). As
duas fórmulas são logicamente equivalentes pois X−→Y ≡ ¬Y −→¬X.
Definição 3.21. Considere a fórmula A e um conjunto Γ de fórmulas de uma linguagem L. Uma
fórmula A é uma conseqüência lógica de um conjunto de fórmulas Γ se A é verdadeira em
todos os modelos de Γ. Isto é, se M  Γ para certo modelo M , então M  A. Escrevemos Γ  A
como na Definição 3.17.
Exemplo 3.19. Neste exemplo usaremos os axiomas de Peano da Seção 3.9, o conjunto ΓP . A
partir destes axiomas, temos

Γ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

∀x1 Q(x1 )  Q(c)

no qual c é uma constante da linguagem.


Seja M um modelo de ∀x1 Q(x1 ). Então temos Q(b) para todo elemento b ∈ |M | e consequente-
mente, Q(c), pois c refere-se a um elemento especı́fico de M . Note que Q(b) refere-se ao predicado
do modelo e Q na fórmula é apenas um sı́mbolo da linguagem.
Para provar que Γ 6 A, basta encontrar um modelo de Γ em que A é falsa. Por exemplo,
suponha que queremos provar 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

(a) os predicados unários P e Q, que são subconjuntos de |M |, satisfaçam P ⊂ Q;

(b) os predicados unários P e Q satisfaçam P ⊂ Q e P 6= Q;

(c) os predicados unários P e Q satisfaçam P ∩ Q = ∅;

(d) os predicados unários P e Q satisfaçam P ∩ Q 6= ∅;

(e) os predicados unários P e Q satisfaçam P ∪ Q = |M |;

(f) os predicados unários P e Q satisfaçam P ∩ Q 6= ∅ e P ∪ Q 6= |M |;

(g) os predicados unários P , Q e R satisfaçam P ∩ Q ∩ R 6= ∅, P ∪ Q ∪ R 6= |M |;

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

1. ∀x∀y (f (x) = f (y)−→x = y)

2. ∀x∀y∀z (x < y ∧ y < z−→x < z)

3. R(x, y)

4. P (x)−→Q(x)

5. R(x, y)←→∃x∃y P (x) ∧ Q(y)

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.

3.22. Faça um modelo para todas as fórmulas


∀x(P (x)−→Q(x))
∃x(¬(x = c)−→Q(x))
∀x∀y(f (x) = f (y)−→x = y)
∃x(f (x) = c)

3.23. Há algum modelo para a fórmula ∀x∀y ¬(x = y)?


3.24. Considere uma estrutura M com universo {2, 3, 5, 7, 11, 13, . . .} = {x : x ∈ N e x é primo},
predicados < e D (D(x, y) significa que x é divisı́vel por y) e funções + ×. Os predicados e funções
possuem a interpretação usual da aritmética. 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 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.30. Verifique se as seguintes fórmulas são satisfazı́veis na estrutura do Zoológico dada no


Exercı́cio E.1. Assuma que a seqüência ~a possui valores para as variáveis livres na ordem le-
xicográfica. Isto é, se as variáveis livres de uma fórmula são x, y e z e a seqüência for (v1 , v2 , v3 ),
então assume-me que v1 é o valor associado a x, v2 a y e assim por diante.

(a) ~a = (Pant) e A =def Carnı́voro(x) ∧ Americano(x)

(b) ~a = (Leo, Eloá) e A =def Planta(x)−→¬Devora(x, y)

(c) ~a = (Efan) e A =def ¬∃x Devora(x, y)

(d) ~a = (Efan, Leo, Pant) e A =def ∃x Herbı́voro(x) ∧ ¬∃y Devora(y, x)

(e) ~a = (Gal, g1 ) e A =def Devora(x, y) ∧ ¬Devora(y, x)

(f ) ~a = (Gal, g1 ) e A =def Devora(x, y) ∧ ¬∃zDevora(z, x)

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.33. Coloque o modelo Fig (Capı́tulo E) em forma de relações.

3.34. Defina fórmula verdadeira e falsa em uma estrutura.

3.35. Faça uma estrutura e uma fórmula tal que a fórmula não seja nem verdadeira nem falsa na
estrutura.

3.36. Considere modelos Mi , i ∈ N e fórmulas B, C e D tais que:

(a) Mi  B para i par;

(b) Mi  C para i primo;

(c) Mi  D para i ı́mpar.

Verifique se as afirmações abaixo são verdadeiras.

(a) M2  {B, C}

(b) Mi  {C, D} para i primo;

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

(a) ∃x P (x)−→P (c), onde c é uma constante da linguagem;


(b) ∃x ∃y ¬(x = y)−→¬(f (x) = f (y))
(c) ∀x (P (x) ∨ Q(x))−→(∀x P (x) ∨ ∀x Q(x))
(d) (∃x P (x) ∧ ∃x Q(x))−→∃x (P (x) ∧ Q(x))
(e) ∀x ¬(x = c), onde c é uma constante da linguagem;
(f ) ∀x ∃y (f (x) = f (y)−→(x = y))
(g) ∀x P (x)−→∃y (Q(y)−→¬P (y))
3.45. Considere uma linguagem com o sı́mbolo de função binário f e as constantes a e b. Uma
estrutura M para esta linguagem associa a constante “a” a 0, a constante “b” a 1 e f à seguinte
função
x y f M (x, y)
0 0 0
0 1 1
1 0 1
1 1 0
Considere |M | = {0, 1}.

Verifique quais das fórmulas abaixo são satisfeitas neste modelo


6
Se fossem seriam verdadeiras em todos os modelos. Evidentemente, assume-se que cada fórmula está em uma
linguagem L e que o modelo encontrado é estrutura de L.

103
1. f (a, b) = f (b, a)

2. ∀x ∃y f (x, y) = a

3. ∃x ∀y f (x, y) = a

4. ∀x ∀y f (x, f (y, x)) = x

5. ∃x ∀y f (f (y, x), f (y, y)) = x

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

(b) existem x, y e z tal que x2 + y 2 = z 2 ;

(c) não existem x, y e z e n > 2 tal que xn + y n = z n ;

(d) se x > y e y > z, então x > z;

(e) x somado a qualquer número diferente de 0 é maior do que x;

(f ) para todo x, x é menor do que x + 1;

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

(a) {∀x ¬P (x), Q(x)−→P (x)}

(b) {∀x ∃y P (x, y), ¬∀x P (x, x)}

(c) {∃x P (x), ¬P (c), ∀x (P (f (x))−→Q(x, c))}

(d) {¬∃x P (x) ∨ ∃y Q(x), ¬∀x (P (x) ∧ Q(x))}

(e) {∀x (P (x)−→Q(x)), P (c), Q(a), ¬∃x (Q(x)−→P (x))}

3.6 Sintaxe da Lógica de Primeira Ordem


Esta seção apresenta a Lógica de Primeira Ordem como um sistema formal, sem referências à
interpretação dos sı́mbolos. Isto significa que os sı́mbolos em si não significam nada. Assim,
uma fórmula ∀x (P (x)−→Q(x)) deve ser lida “para qualquer x, P (x) implica Q(x)”. Mas isto
é apenas a forma de se ler a fórmula. Ela não significa que, se P (x) for verdade, Q(x) também
o será. Isto é semântica, que foi vista na Seção 3.3. Aqui tudo o que interessa é que temos um
conjunto de sı́mbolos e regras para manipular estes sı́mbolos. O que estes sı́mbolos representam,
na semântica, é irrelevante. Poderı́amos, por exemplo, trocar ∀ por  e −→ por ◦ e deixar esta

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.

Definição 3.22. O escopo de um identificador universal ou existencial é a região da fórmula onde


o quantificador é válido. Em ∀x A ou ∃x A, x é válido dentro da fórmula A.

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.

Definição 3.23. Dizemos “uma ocorrência de x é livre em B” se aquela ocorrência de x aparece


fora do escopo de um quantificador em B. Dizemos “uma ocorrência de x não é livre (é ligada)
em B” se aquela ocorrência de x aparece dentro do escopo de um quantificador em B. Quando
não há ambigüidade de qual ocorrência de x estamos falando, dizemos “x é livre” ou “x é ligado”.

Por exemplo, x é livre em


∀y R(x, y)
∃y∀z (z = y−→Q(x))
x=x
mas x não é livre em
∃x∀y R(x, y)

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

3.6.1 Axiomas e Regras de Dedução da Lógica de Primeira Ordem


Uma teoria de primeira ordem é um sistema formal que utiliza pelo menos os esquemas de axiomas
e as regras dadas abaixo. Considere que A, B e C são fórmulas quaisquer de uma linguagem de
primeira ordem L; isto é, elas são meta-fórmulas. x é uma meta-variável; isto é, x pode ser
substituı́do por qualquer variável da linguagem de primeira ordem. f é uma função qualquer do
vocabulário da linguagem.
Esquemas de axiomas:

(A1) ¬A ∨ A (axioma proposicional)

(A2) Ax (t)−→∃xA (axioma da substituição)

(A3) x = x (axioma da identidade)

(A4) (x1 = y1 ∧ . . . ∧ xn = yn )−→f (x1 , . . . xn ) = f (y1 , . . . yn ) ou


(x1 = y1 ∧ . . . ∧ xn = yn )−→(P (x1 , . . . xn )←→P (y1 , . . . yn )) (axiomas da igualdade)

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

(x1 = y1 ∧ x2 = y2 )−→g(x1 , x2 ) = g(y1 , y2 )

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)

onde A(x) é 1  x = 0 e t do axioma é 0 (então A(t) é A(0) que é 1  0 = 0).


Naturalmente, cada um dos esquemas de axiomas pode dar origem a infinitos axiomas.
Regras de dedução ou inferência:

expansão: se A é um teorema, então A ∨ B é um teorema, onde B é uma fórmula qualquer;

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

(a) uma instância de um dos esquemas de axiomas A1-A4;


(b) resultado da aplicação de uma das regras de inferência com Bj e/ou Bk , sendo que j, k < i;

Bn é um teorema do Lógica de Primeira Ordem.


Exemplo 3.20. ` ((∃x A)−→A) ∨ B

1. ¬A ∨ A, axioma, equivalente a A−→A


2. (∃x A)−→A, pela regra da introdução do ∃
3. ((∃x A)−→A) ∨ B, pela regra da expansão.
Definição 3.26. Considere um conjunto Γ de fórmulas. Uma seqüência de fórmulas B1 , B2 , ...,
Bn é uma prova de Bn considerando Γ com hipóteses se cada Bi é uma fórmula de Γ ou obtido de
acordo com o definição 3.25. Escrevemos Γ ` A para “A é teorema tomando-se Γ como hipóteses
ou premissas”.

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

Definição 3.27. Se A é uma fórmula e t um termo, dizemos que t é livre para y em A se


nenhuma ocorrência de y em A ocorre dentro do escopo de um quantificador (∀w, ∃w) onde w é
uma variável em t.

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 ∀y (R(x, y)←→R(y, x))

Da mesma forma, em um cálculo de predicados não se pode especificar as caracterı́sticas das


funções. Por exemplo, a função + da aritmética possui a propriedade de que x somado a zero é x:

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

• ∀x4 P (x4 )−→∃xQ(x1 , x, x2 , w)


• ∀xP (x)−→∃yQ(x, y, x3 , x2 )
• ∀x1 P (x1 )−→∃zQ(w, z, x2 , x1 )
• ∀x1 P (x1 )−→∃yQ(x1 , y, x2 , z), a própria fórmula A.
Proposição 3.1. Seja A0 uma variante da fórmula A. Então ` A sse ` A0 .

Considerando os lemas e as proposições acima, estamos em condição de expandir a definição


de prova dada na página 107.

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.

(a) uma tautologia;

(b) uma instância de um dos axiomas A1-A4;

(c) resultado da aplicação de uma das regras com Bj e/ou Bk , no qual j, k < i;

(d) um teorema já provado;

(e) logicamente equivalente a Bj , j < i; isto é, Bi ←→Bj é uma tautologia;

(f ) uma variante de uma fórmula Bj , j < i;

(g) uma das fórmulas de Γ.

Definição 3.33. Na definição acima, quando Γ = ∅, a sequência B1 , B2 , ..., Bn é uma prova de


Bn .

Faremos alguns exemplos de deduções de fórmulas a partir de um conjunto de fórmulas.

Exemplo 3.21. Se ` A−→B e x não é livre em A, então ` A−→∀x B. Ou, equivalentemente,


A−→B ` A−→∀x B.

1. A−→B

2. ¬B−→¬A pois as fórmulas 1 e 2 são logicamente equivalentes

3. ∃x ¬B−→¬A pela regra de introdução do ∃ com 3,

4. A−→¬∃x ¬B pois 3 e 4 são logicamente equivalentes

5. A−→∀x B, pois 4 e 5 são logicamente equivalentes

Exemplo 3.22. Se ` A, então ` ∀x A. Ou A ` ∀x A.

1. A

2. ¬∀x A−→A pois se A é tautologia, X−→A é tautologia

3. ¬∀x A−→∀x A pelo exercı́cio anterior

4. ∀x A, pois se ¬X−→X é tautologia, então X deve ser tautologia.

Exemplo 3.23. Provaremos ` ∀x A−→Ax (t).

1. ¬Ax (t)−→∃x ¬A, axioma da substituição

2. ¬∃x ¬A−→Ax (t), logicamente equivalente a 1

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

1. C−→(A−→∀x B), hipótese


2. C, hipótese
3. A−→∀x B, MP 1, 2
4. ¬∀x B−→¬A, logicamente equivalente a 3
5. ¬∀x ¬¬B−→¬A, logicamente equivalente a 4, pois B ≡ ¬¬B
6. ∃x ¬B−→¬A, pois pela definição de ∃, temos que ∃x C é equivalente a ¬∀x ¬C. O teorema
obtido pode ser escrito como ∃x ¬B−→¬A utilizando a definição de ∃.

3.7 Formas Normais


Nesta seção veremos as formas normais da Lógica de Primeira Ordem. Elas são uteis na linguagem
Prolog, uma linguagem utilizada principalmente em IA.
Definição 3.34. Uma fórmula está na Forma Normal Prenex (FNP) se ela está na forma

Q1 x1 Q2 x2 . . . Qn xn A

na qual A é uma fórmula sem quantificadores e Qi é ∀ ou ∃. A é chamada de matriz.


Exemplo 3.25. Estão na FNP: ∀x∀y∀z (x + y < z), ∃x P (x, y), ∃x∃y∀z∀t (P (x, t)−→¬Q(y) ∧
R(z, t, x)).
Não estão na FNP: ∀x¬∀y∀z (x + y < z), ¬∃x P (x, y), (∀x (x + 0 = x)) ∧ ∃y (z < y).
Definição 3.35. Uma fórmula está na Forma Normal Prenex Conjuntiva (FNPC) se ela está na
forma
Q1 x1 Q2 x2 . . . Qn xn A
na qual Qi é ∀ ou ∃, A é uma fórmula sem quantificadores que é uma conjunção de disjunções de
fórmulas atômicas literais. Uma fórmula atômica literal é uma fórmula atômica ou a negação de
uma fórmula atômica.
Exemplo 3.26. Estão na FNPC: ∀x∀y∀z (x + y < z), ∃x1 ∃x2 (P (x) ∧ (Q(y, x) ∨ ¬R(x)) e
∀z∀x∀t ((x < y) ∨ P (z, t)) ∧ (z = t ∨ ¬R(t, x)).
Proposição 3.2. Para cada fórmula da Lógica de Primeira Ordem há uma fórmula logicamente
equivalente na forma normal prenex conjuntiva (FNPC).

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

Pode ser facilmente provado que

¬Q1 x1 Q2 x2 . . . Qn xn C ≡ Q1 x1 Q2 x2 . . . Qn xn ¬C

no qual Q é ∀ se Q é ∃ e Q é ∃ se Q é ∀. Então a fórmula final é

Q1 x1 Q2 x2 . . . Qn xn ¬C

(b) se A é da forma B ∧ C com B =def Q1 x1 Q2 x2 . . . Qn xn D e C =def q1 x1 q2 x2 . . . qm xm E, temos


que A ≡ Q1 y1 Q2 y2 . . . Qn+m yn+m (D ∧ E) no qual yi são variáveis novas, que não aparecem em
nenhuma das fórmulas B e C;

(c) troque (Q1 x1 Q2 x2 . . . Qn xn B) ∨ C por Q1 y1 Q2 y2 . . . Qn yn (B ∨ C) no qual cada xi foi trocado


por yi , que é uma variável nova, que não aparece na fórmula original;

(d) troque B ∨ (Q1 x1 Q2 x2 . . . Qn xn C) por Q1 y1 Q2 y2 . . . Qn yn (B ∨ C) no qual cada xi foi trocado


por yi , que é uma variável nova, que não aparece na fórmula original.

3.8 Relação entre Sintaxe e Semântica


Esta Seção apresenta as relações entre a sintaxe e a semântica. Uma teoria de primeira ordem
possui os axiomas A1-A4 da Seção 3.6.1 que são verdadeiros em qualquer modelo. Contudo, estes
axiomas não são suficientes para expressar as verdades de domı́nios especı́ficos. Por exemplo, não
se pode provar que 1 + 0 = 1 utilizando-se apenas estes axiomas. Para tanto devem ser feitos
axiomas especı́ficos para a Aritmética (ou qualquer outra parte da Matemática).
Os axiomas especı́ficos para certo domı́nio como a Aritmética, teoria dos conjuntos, teoria dos
grupos, geometria euclidiana, etc não serão considerados, neste texto, “axiomas” de uma teoria
de primeira ordem. Eles serão colocados em conjuntos de fórmulas Γ, o que para todos os efeitos
práticos é equivalente a considerá-los axiomas de uma teoria de primeira ordem. Assim temos um
conjunto ΓP de fórmulas que caracterizam a Aritmética, um conjunto LG para a teoria dos grupos
e assim por diante.

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.

Este teorema é deduzido a partir do teorema 3.4 e do teorema 3.3 da Correção.


Há várias maneiras de se provar que uma fórmula é logicamente válida, verdadeira em todos
os modelos da sua linguagem:

1. fazendo uma dedução formal através dos axiomas. Pelo teoremas da Completude e Correção,
uma fórmula é teorema sse é logicamente verdadeira;

2. fazendo uma prova que utiliza a definição de satisfabilidade (Definição 3.11);

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 “=”.

3.9 Alguns Exemplos de Modelos


Nesta seção apresentaremos alguns exemplos de modelos e os conjuntos de fórmulas que eles
satisfazem. Há inúmeros exemplos na Matemática.

Grupos

Um grupo é um conjunto G e uma operação ◦ tal que

1. para todo x, y ∈ G, x ◦ y ∈ G. A operação ◦ é uma função


◦ : G2 −→G

2. para todo x, y, z ∈ G,
(x ◦ y) ◦ z = x ◦ (y ◦ z)

3. existe um elemento e ∈ G tal que para todo x ∈ G, x ◦ e = x. O elemento e é chamado de


elemento neutro ou identidade do grupo;

4. para cada x ∈ G, existe um elemento y ∈ G tal que x ◦ y = e. O elemento y é chamado de


inverso de x e é escrito como x−1 .

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

Um grupo G de n elementos será chamado de grupo de ordem n. Não necessariamente um


grupo é comutativo; isto é, x ◦ y = y ◦ x para todo x, y ∈ G.
Há inúmeros exemplos de grupos na Matemática. Mostraremos alguns deles:

1. o conjunto Z com a operação + e elemento neutro 0. Vejamos. Para todo a, b, c ∈ 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.

2. os números racionais sem o zero, Q − {0}, com a operação  de multiplicação e 1 como


elemento neutro. Para todo x, y, z ∈ Q − {0}, temos a) (x + y) + z = x + (y + z), x  1 = x e
x + x1 = 1.

3. o conjunto R dos números reais com a operação + e 0 como elemento neutro;

4. o conjunto {0, 1, 2, . . . n − 1} com a operação +̃ definida como


a+̃0 = a
a+̃(b+̃1) = (a + b) + 1 se a + b < n
a+̃(b+̃1) = (a + b) − n se a + b >= n
onde + é a soma usual em N e +̃ é a operação deste grupo, chamado de Zn . Normalmente
utilizaremos o sı́mbolo de soma, +, para Zn .

5. o conjunto das matrizes quadradas de ordem 3 não singulares (determinante diferente de


zero, que possuem inversa) com a operação de multiplicação de matrizes. O elemento neutro
é a matriz identidade de ordem 3.

116
Os Números Naturais

A Aritmética pode ser caracterizada pelos axiomas de Peano. A descrição informal é

A1 0 é um número natural;

A2 cada número natural x tem um sucessor denominado x0 ;

A3 0 6= x0 para qualquer natural x;

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 )

F3 0 6= x0 , que é o mesmo que ¬(0 = x0 )

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

F9 (A(0) ∧ (∀x (A(x)−→A(x0 ))))−→∀x A(x) para qualquer fórmula A.

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:

1. |M2 | = N = {0, 1, 2, 3, . . . }, o universo do modelo;

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

Graf ico(s) = {(0, 1), (1, 2), (2, 3), . . . }

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

5. a constante 0 da linguagem corresponde ao elemento 0 de |M2 |.

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

∀X ∃x (x ∈ X ∧ ∀y ((y ∈ X ∧ ¬(x = y))−→(y < x)))

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

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.

A1 ∀z (z ∈ x←→z ∈ y)−→(x = y), axioma da extensionalidade. Este axioma significa o seguinte:


se x e y têm os mesmos elementos, eles são iguais;

A2 Fϕ −→(∃b ∀y (y ∈ b←→∃x (x ∈ a ∧ ϕ(x, y)))), axioma da substituição. Fϕ é a fórmula


∀x ∀y ∀z (ϕ(x, y) ∧ ϕ(x, z)−→(y = z)). Este axioma garante que podemos construir um
conjunto b que seja a imagem de uma fórmula ϕ que é usada como uma função tendo a como
domı́nio;

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;

A4 ∃y ∀y (x ∈ y←→∃z (x ∈ z ∧ z ∈ a)), axioma da reunião. Este axioma garante a existência de


um conjunto que é a união de todos elementos de a. Naturalmente, na interpretação deste
axioma na teoria dos conjuntos usuais, a é composto de conjuntos. Em outras palavras, este
axioma garante a existência de {x : ∃z (x ∈ z ∧ z ∈ a)};

A5 ∃y (y ∈ x)−→∃y (y ∈ x ∧ ∀z¬(z ∈ x ∧ z ∈ y)), axioma da regularidade. Este axioma garante


que um conjunto não está contido em si mesmo direta ou indiretamente. Este é o mais
complexo de todos os axiomas de ZF;

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

A7 (∀x (x ∈ z−→¬(x = ∅)) ∧ (∀x ∀y (x ∈ z ∧ y ∈ z ∧ ¬(x = y))−→(x ∩ y = ∅)))−→∃u ∀x ∃v (x ∈


z−→u ∩ x = {v}), axioma da escolha. O sı́mbolo ∩ é um meta-predicado. x ∩ y significa
∃z (w ∈ z←→(w ∈ x ∧ w ∈ y)).
Este axioma garante que, dado um conjunto z que possui como elementos outros conjuntos,
existe um conjunto u tal que u possui exatamente um elemento em comum com cada elemento
de z (que é um conjunto). Exige-se que os elementos de z não sejam vazios e que dois a dois
não tenham elementos em comum. Estudando a fórmula,

1. ∀x (x ∈ z−→¬(x = ∅)) garante que todos os elementos de z sejam diferentes de ∅;


2. (∀x ∀y (x ∈ z ∧ y ∈ z ∧ ¬(x = y))−→(x ∩ y = ∅)) garante que quaisquer dois elementos
de z, que são conjuntos, tem intersecção vazia;
3. ∃u ∀x ∃v (x ∈ z−→u ∩ x = {v}) garante que existe u que tem exatamente um elemento
v em comum com cada elemento x de z dado que os itens 1 e 2 acima, quando inter-
pretados, são verdadeiros. Como ∃v aparece depois de ∃x , para cada x de z podemos
ter um elemento v diferente — de fato, todos eles são diferentes, já os elementos de z
são dois a dois disjuntos.

Exercı́cios
3.48. Nas fórmulas abaixo, que ocorrências de variáveis são livres ou ligadas?

(a) ∀xC(x, y)−→∃z(M (z, x) ∧ C(z, w))

(b) H(x) ∧ ∃y∀xC(y, x)

(c) ∀x(∀yH(y)) ∧ R(x, y)

(d) R(x, y) ∧ ∃x(R(x, y) ∧ H(y))

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:

(a) uma instância do axioma da igualdade;

(b) uma instância do axioma do axioma da substituição;

(c) uma instância do axioma proposicional;

3.50. Prove sintaticamente que as seguintes fórmulas são teoremas.

(a) ∀x A(x)−→A(c), onde a linguagem possui uma constante c;

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) ∀x A(x) ` A(c), onde a linguagem possui uma constante c;


(b) A(w) ` ∃x A(x), onde A possui uma variável livre x e A(w) é a fórmula A com x substituı́do
por w;
(c) A, A ∨ B−→C ` C
(d) ∀x A(x), P (c) ` ∃x (A ∧ P (x))
3.52. Prove os seguintes fatos:

(a) ∃x P (x)−→∃x Q(x), P (c) ` ∃x Q(x)


(b) P (x)−→∃y (x = f (y)), ∀y I(f (y) + 1) ` P (x)−→I(x + 1)
3.53. Passe para a Forma Normal Prenex as seguintes fórmulas:

1. ¬(∀x ∃y (P (x)−→Q(x, y)))


2. (∀x ∀z (R(x, z)−→R(z, x)) ∧ (∀x x + 0 = x)
3. (∀x ∀z (R(x, z)−→R(z, x))−→(∀x x + 0 = x)
4. (∀x ∀z (R(x, z)−→R(z, x)) ∨ (∀x x + 0 = x)
3.54. Explique o que é sintaxe e o que é semântica na lógica de primeira ordem.
3.55. Enuncie o teorema da Correção para lógicas de primeira ordem.
3.56. Faça um conjunto de fórmulas Γ inconsistente sem que este conjunto contenha fórmulas da
forma A e ¬A.
3.57. Prove sintaticamente que as seguintes fórmulas são teoremas considerando-se os axiomas de
Peano como premissas. Utilizamos 1 como uma abreviatura para 00 e n como abreviatura para
000 ...0 onde o sı́mbolo 0 aparece n vezes.

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

A.1 Alfabetos, Axiomas e Regras de Sistemas Formais


O que é um sistema formal? É um sistema que consiste de

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

Mas não seriam fórmulas as seqüências


8, 4, 44, 444, 382578058, 86, 232, 9897356

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:

• 0, pois 0 é axioma e todo axioma é teorema;

• 5, pois 5 é axioma e todo axioma é teorema;

• 00, pois podemos usar R1 com x = 0 e y = 0;

• 55, pois podemos usar R1 com x = 5 e y = 5;

• 05, pois podemos usar R1 com x = 0 e y = 5;

• 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, . . .

Para isto, podemos adicionar uma outra regra ao sistema S:


[R2 - Regra 2] Se x for um teorema, dx será também um teorema, no qual d pode ser
qualquer sı́mbolo do alfabeto (mas um único sı́mbolo).
Utilizando a regra R2, temos alguns novos teoremas:

• 10, com d = 1 e x = 0, pois 0 é axioma e todo axioma é teorema;

• 15, com d = 1 e x = 5, pois 5 é axioma e todo axioma é teorema;

• 20, com d = 2 e x = 0. Como sabemos, 0 é um teorema;

• 25, com d = 2 e x = 5. Como sabemos, 5 é um teorema;

124
Figura A.1: Relações entre os conjuntos de um sistema formal

• 325, com d = 3 e x = 25. Pelo item anterior, 25 é um teorema;


• 8325, com d = 8 e x = 325. Pelo item anterior, 325 é um teorema.

As regras podem ser aplicadas em qualquer ordem e qualquer número de vezes.


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

• ca, pois ca é axioma e todo axioma é teorema;

• ra, pois ra é axioma e todo axioma é teorema;

• cara, pois podemos usar R1 com x = ca e y = ra;

• ve, pois ve é axioma e todo axioma é teorema;

• carave, pois podemos usar R1 com x = cara e y = ve;

• la, pois la é axioma e todo axioma é teorema;

• caravela, pois podemos usar R1 com x = carave e y = la;

• ...

Podemos ter vários meta-teoremas para o sistema R. Vejamos alguns:


[Meta-teorema 1] todo teorema tem um número par de letras.
[Meta-teorema 2] todo teorema começa com uma consoante.
[Meta-teorema 3] todo teorema termina com uma vogal.

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. se 0y for um teorema, 0ay será um teorema;


2. se ay for um teorema, ayy será um teorema.

Quais são então os teoremas de V? Começando pelos axiomas, os teoremas são:

1. 01 (axioma)

127
2. ab (axioma)

3. 0a1 (01 com regra 1)

4. 0aa1 (0a1 com regra 1)

5. ...

6. abb (ab com regra 2)

7. abbbb (abb com regra 2)

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.

1. se x e y são teoremas, então xy é teorema (concatenação de x com y, como usual).

2. se x−→y e x são teoremas, então y é teorema.

3. se ¬A ∨ B e A ∨ C são teoremas, então B ∨ C são teoremas;

4. se x é teorema e possui um número par de sı́mbolos, então 00x11 é teorema.

5. se A é teorema, então ∀x(A) é teorema.

6. se 0x1 e 000y são teoremas, então 1x2y é teorema.

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.

A.3 Conexões com a Computação

A.3.1 Regras Como Algoritmos


Uma conexão com a computação foi dada na definição de uma “regra” de um sistema formal. Uma
regra deve poder ser transformada em um algoritmo. E o que é exatamente um algoritmo? É uma
seqüência de instruções que pode ser colocada em um programa escrito em qualquer linguagem de
programação.2
Como um exemplo, a regra que conecta dois teoremas x e y para criar o teorema xy pode ser
codificada em linguagem Java como

String regra(String f1, String f2) {


return f1 + f2; // + aqui é a concatenaç~
ao de strings
}

A.3.2 Programas Como Sistemas Formais


Podemos encontrar um sistema formal que faz a mesma coisa que um programa qualquer? Apare-
mentemente sim, pois afinal um programa é composto de algoritmos e as regras so sistema formal
também. Veremos que a resposta é “sim”. Um programa toma uma entrada, altera-a através de
sucessivas instruções e no final de sua execução produz uma saı́da.3 Então um programa qualquer
toma uma seqüência de bits como entrada e produz uma seqüência de bits como saı́da feita através
de sucessivas modificações da entrada. Veremos então com converter um programa P qualquer em
um sistema formal.
A entrada do programa P corresponde ao único axioma do sistema formal. Então para cada
combinação P/entrada temos um sistema formal diferente. As regras correspondem às alterações
feitas na entrada, pelo programa, através de suas instruções, até se obter uma saı́da. A saı́da seria
2
Rigorosamente, admite-se que o programa possa alocar uma quantidade potencialmente infinita de memória, o
que não é o caso real, já que todos os computadores possuem uma memória finita.
3
Não precisamos considerar os programas interativos que tomam entradas e produzem saı́das durante a sua
execução — simplesmente podemos considerar que estes programas começam uma nova execução após uma nova
entrada e terminam a sua execução após uma saı́da.

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

A.3.3 Autômato Celular e Jogo da Vida


Existe uma aplicação direta, simples e interessante de sistemas formais em computação ? Sim,
existe, e se chama Jogo da Vida. O jogo da vida é um autômato celular que pode (deve !) ser
implementado por um programa e que mostra o nascimento e morte de células (quadradinhos) a
cada vez que suas regras são aplicadas. O jogo da vida, apesar do nome, não é um jogo, é um
sistema formal cuja observação nos é muito útil para a compreensão dos sistemas formais.
Um autômato celular [11] consiste de um conjunto quadriculado de células infinito, cada uma
das quais podendo estar em um conjunto finito de estados, representados por cores. O quadriculado
pode ter qualquer número finito de dimensões, embora utilizaremos duas dimensões nesta Seção.
4
A primeira regra seria aplicada se a seqüência não começasse com #. A partir daı́ as regras iriam numerando
as seqüências até que se chegue ao teorema final, que termina com #. Para exemplificar, se o axioma é 101 − 11,
a seqüência de teoremas poderia ser #0#101 − 11, #1#..., #2#..., ..., 1000#. O número no inı́cio da seqüência
funciona com o contador de programa (PC) ou estado de uma máquina de estados finitos. Note que as regras podem
utilizar a seqüência sendo transformada para armazenar números intermediários — seria a memória do computador.

130
Figura A.2: Três gerações de um autômato celular

Figura A.3: Quatro gerações de um jogo da vida

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;

• atingem um estado estável, não mais se modificando. Como um exemplo, um quadrado


formado por quatro células pretas, isoladas de quaisquer outras células, nunca se modifica;

• se tornam simétricos, apesar do padrão iniciar não o ser.

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.

A.3.4 Gramáticas Como Sistemas Formais


Uma gramática G é uma quádrupla (N, Σ, P, S) onde

• N é o conjunto de sı́mbolos não-terminais;

• Σ é o conjunto de sı́mbolos terminais;

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

A gramática G é utilizada para produzir seqüências de sı́mbolos partindo-se do sı́mbolo inicial


E e substituindo-se E por E + T ou T de acordo com a primeira “regra de produção” dada acima.
A partir daı́, pode-se substituir qualquer dos sı́mbolos não terminais, do conjunto N, pelo lado
direito de “::=” de qualquer regra de produção. Por exemplo, pode-se substituir T por T ∗ N ou
N. Uma seqüência de substituições é chamada de derivação. Como exemplo, apresentamos uma
derivação de E onde cada passo é seguido do sı́mbolo =⇒ .
E =⇒ E + T =⇒ T + T =⇒ N + T =⇒ 1 + T =⇒ 1 + N =⇒ 1 + 2
No primeiro passo utilizamos a regra 1, no segundo a regra 2 e no terceiro a regra 4.
A cada gramática G pode-se associar um sistema formal SFG tal que alguns dos teoremas deste
sistema correspondem às sentenças que podem ser produzidas pela gramática. SFG utiliza um
alfabeto contendo os sı́mbolos terminais e não terminais de G. O único axioma é o sı́mbolo inicial
da gramática. As regras de dedução de SFG são baseados nas regras de produção da gramática.
Uma regra de produção
A ::= α
resulta em uma regra
em um teorema qualquer, A pode ser substituı́do por α
do sistema formal.
Na gramática dada acima, o sistema formal teria como alfabeto o conjunto { E, T , N , +, ∗,
0, 1, ... 9 }. O axioma seria o sı́mbolo E e as regras de dedução seriam:

1. Em um teorema qualquer, E pode ser substituı́do por E + T ou T ;


2. Em um teorema qualquer, T pode ser substituı́do por T ∗ N ou N ;
3. Em um teorema qualquer, N pode ser substituı́do por 0 ou 1 ou ... ou 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

A.3.5 Suposições Implı́citas


Ao apresentar um sistema formal, admitimos que o alfabeto deve ser apresentado em uma única
dimensão, uma linha. Poderı́amos ter um sistema formal (SF) que utiliza duas dimensões? Clara-
mente, sim. Mas este SF poderia ser mais poderoso do que qualquer SF convencional, unidimen-
sional? Isto é, haveria um SF em duas dimensões que jamais poderia ser simulado em uma única
dimensão?
5
O sistema formal certamente produzirá alguns teoremas que não correspondem a programas válidos, que neste
caso seriam programas sintaticamente corretos mas com erros semânticos (utilizando a terminologia de Compila-
dores).

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.3. Faça um sistema formal produza os mesmos teoremas que o sistema S.

A.4. Explique o funcionamento de um autômato celular. As regras podem ser modificadas ou


obrigatoriamente devem ser como definidas no texto?

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:

1. Em um teorema qualquer, E pode ser substituı́do por E + T ou T ;

2. Em um teorema qualquer, T pode ser substituı́do por T ∗ N ou N ;

3. Em um teorema qualquer, N pode ser substituı́do por 0 ou 1 ou ... ou 9.

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:

(a) em uma única geração;

(b) em duas gerações;

(c) em três gerações.

136
Apêndice B

Quadrinhos

137
138
Apêndice C

Noções Básicas de Matemática

Este Apêndice apresenta duas técnicas de provas comuns em Matemática e Lógica.

C.1 Indução finita


Indução finita é uma técnica de provar teoremas. Suponha que queiramos provar um teorema T
que possua um parâmetro n. Para provar que T é válido para qualquer valor de n, n ≥ 1, provamos
que:

1. T é válido quando n = 1 (item 1);

2. se T for válido para n − 1, então T será válido para n (item 2).

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

(n−1)n (n2 −n+2n) n(n+1)


Sn = 2
+n= 2
= 2
n(n+1)
o que prova a hipótese. Neste exemplo, a HI é Sn = 2
.

Proposição: xn − y n é divisı́vel por x − y para todos os números naturais x, y, n.


Para n = 1, x1 − y 1 é trivialmente divisı́vel por x − y. Suponha que a hipótese seja válida para
n − 1, isto é, x − y divide xn−1 − y n−1 para todo x e y. Provaremos que x − y divide xn − y n

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

C.2 Prova por Contradição


Para provar que alguma afirmação P é verdadeira, podemos supor que o contrário é que é ver-
dadeiro; ou seja, “não P”. Se encontrarmos uma contradição durante a prova, então é certo que
assumimos algo falso como premissa. No caso, “não P” é falso, o que significa que P é verdadeiro
(não não P é igual a P). Vejamos um exemplo.
√ √
Queremos provar que √2 é irracional. Suporemos que 2 é número racional. Então existem
dois inteiros a e b tal que 2 = ab . Podemos assumir também, sem perda de generalidade, que a
e b não têm fatores em comum (isto é, não há um número inteiro que divide ambos). Lembrando,
números racionais são aqueles que podem ser escritos como ab , com a e b inteiros.
√ 2
Sendo 2 = ab , temos que 2 = ab2 e 2b2 = a2 . Então a2 é um número par, pois é da forma
2p, sendo que p = b2 . Sendo a2 par, então a é par e portanto pode ser escrito como 2q. Isto é,
a = 2q. Logo, 2b2 = (2q)2 , 2b2 = 4q 2 e b2 = 2q 2 , o que implica que b2 é par e portanto b é par.
Contradição, pois agora ambos, a e b são divisı́veis por 2, sendo que assumimos que estes números
não têm divisores em comum.
√ √
Logo podemos concluir que a hipótese inicial, que 2 é racional, é falsa. Logo 2 é irracional.

140
Apêndice D

Minimização de Fórmulas Lógicas —


Opcional

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

Veremos agora alguns exemplos mais complexos de minimizações de fórmulas.

(a) ¬(A ∧ ((A−→B)←→(¬B−→¬A))) ∨ (A ∧ (B ∨ A))

Utilizaremos > para tautologia.


¬(A ∧ ((A−→B)←→(¬B−→¬A))) ∨ (A ∧ (B ∨ A)) ≡
¬(A ∧ (¬A ∨ A)) ∨ (A ∧ (B ∨ A)) ≡
¬((¬A ∨ A) ∧ A) ∨ (A ∧ (B ∨ A)) ≡
¬A ∨ (A ∧ (B ∨ A)) ≡
¬A ∨ (A ∧ (A ∨ B)) ≡
¬A ∨ A

(b) (¬A ∨ B) ∧ (¬C ∨ ¬A)


(¬A ∨ B) ∧ (¬C ∨ ¬A) ≡
(¬A ∨ B) ∧ (¬A ∨ ¬C) ≡
¬A ∨ (B ∧ ¬C) ≡
A−→(B ∧ ¬C)

(c) ¬(A←→(B−→¬C)) ∧ (¬B ∨ B)


¬(A←→(B−→¬C)) ∧ (¬B ∨ B) ≡
¬(A←→(B−→¬C)) ≡
A←→¬(B−→¬C) ≡
A←→¬(¬B ∨ ¬C) ≡ (pois X−→Y ≡ ¬X ∨ Y )
A←→(¬¬B ∧ ¬¬C) ≡
A←→(B ∧ C) (pois ¬¬X ≡ X)

Minimização de fórmulas é um tópico altamente importante. Um uso dela, comum, é simplificar


expressões booleanas de comandos if´s e while´s de linguagens de programação. Assim, ao invés
de escrever
if not (i = 0 and not achou ) then ...
pode-se escrever
if i <> 0 or achou then ...
no qual <> é o sı́mbolo para “diferente de”.
Um uso mais importante de minimização de fórmulas é simplificar circuitos com portas lógicas
de um computador. Com a minimização de fórmulas economiza-se componentes eletrônicos para
a construção do computador, além de tornar a máquina mais rápida e com menor consumo de
energia.

143
Exercı́cios
D.1. Simplifique as seguintes fórmulas

(a) (A ∨ B) ∧ ¬B−→A

(b) ¬¬A←→((A ∧ B) ∨ ¬A)

(c) ¬(A ∧ ¬B) ∨ (A−→B)

(d) ¬((A−→¬B) ∧ ¬(A ∧ C))

D.2. Simplifique os seguintes comandos:

(a) while not (f(n) = 0) and not found and isSet = false do
begin
comandos
end

(b) if search(p) = -1 or found


then
if not found
then
writeln(’tudo bem’);

(c) if ok or not found


then
if not ok
then
P
else if ok and found
then
Q;
else
R;

D.3. Simplifique as seguintes fórmulas

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

1. um elefante chamado Efan;

2. um leão chamado Leo;

3. duas gazelas chamadas Gal e Gel;

4. dois coelhos chamados Eloc e Eloá;

5. uma pantera chamada Pant;

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

Há vários fatos relevantes a respeito do Zoológico:

• Leo e Pant são carnı́voros, Efan, Gal, Gel, Eloc e Eloá são herbı́voros e gi é planta;

• quem é herbı́voro devora grama (admitiremos que Efan também devora);

• um carnı́voro nunca devora um outro carnı́voro;

• qualquer carnı́voro pode devorar qualquer herbı́voro exceto, naturalmente, Efan;1

• um carnı́voro nunca devora o que os animais que ele devora devora;2

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

1. Carnı́voro(x) indica que x é carnı́voro;


2. Herbı́voro(x) indica que x é herbı́voro;
3. Devora(x, y) indica que x pode devorar y;
4. Africano(x) indica que x é africano (animal ou planta);
5. Americano(x) indica que x é americano (das Américas);
6. Animal(x) indica que x é animal;
7. Planta(x) indica que x é planta.

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 .

A1 ∀x (Herbı́voro(x)−→Devora(x, g)), sendo que g é uma meta-variável que representa qualquer


pé de grama (gi )
3
Não no sentido em que usamos esta palavra neste texto, mas no sentido usual de teoria cientı́fica.

146
A2 ∀x ∀y (Carnı́voro(x) ∧ Carnı́voro(y)−→¬Devora(x, y))

A3 ∀x ∀y (Carnı́voro(x) ∧ Herbı́voro(y) ∧ ¬(y = Efan)−→Devora(x, y))

A4 ∀x ∀y ∀z (Devora(x, y) ∧ Devora(y, z)−→¬Devora(x, z))

A5 ∀x ∀y (Planta(x)−→¬Devora(x, y))

A6 ∀x ∀y (Americano(x) ∧ Americano(y)−→(x = y))

A7 ∀x (Carnı́voro(x)−→(∃y Devora(x, y))

A8 ∀x (Animal(x)−→(Carnı́voro(x) ∨ Herbı́voro(x) ∨ Planta(x)))

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.

1. ∃x (Herbı́voro(x)−→Devora(x, g)), sendo que g é uma meta-variável que representa qualquer


muda de grama (gi ). Este teorema foi feito a partir de A1;

2. ∀x ∀y (Devora(x, y)−→(¬Carnı́voro(x) ∨ ¬Carnı́voro(y))), dado A4 e o fato4 de que (B ∧


C−→¬A)←→(A−→(¬B ∨ ¬C)). De fato, B ∧ C−→¬A é um teorema se e somente se
A−→(¬B ∨ ¬C) é um teorema.5

3. podemos reescrever A1 como ∀y (Herbı́voro(y)−→Devora(y, g)) e utilizá-lo em A4:


∀x ∀y (Herbı́voro(y) ∧ Devora(x, y)−→¬Devora(x, g)))

4. ∀x (¬(Americano(x) ∧ Africano(x))), tirado de A9;

5. ¬∃x (Americano(x) ∧ Africano(x)), tirado do item anterior.


4
Não provado aqui, mas que pode ser facilmente provado pelo leitor por meio de uma tabela verdade.
5
Toda tautologia é um teorema da LPO.

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 )

A2 ∀x ∀y (Pc (x) ∧ Pc (y)−→¬Pd (x, y))

A3 ∀x ∀y (Pc (x) ∧ Ph (y) ∧ ¬(y = c)−→Pd (x, y))

A4 ∀x ∀y ∀z (Pd (x, y) ∧ Pd (y, z)−→¬Pd (x, z))

A5 ∀x ∀y (Pp (x)−→¬Pd (x, y))

A6 ∀x ∀y (Pam (x) ∧ Pam (y)−→(x = y))

A7 ∀x (Pc (x)−→(∃y Pd (x, y))

A8 ∀x (Pan (x)−→(Pc (x) ∨ Ph (x) ∨ Pp (x)))

A9 ∀x (Paf (x)−→¬Pam (x))

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

• as bolinhas pretas correspondem aos carnı́voros;

• os quadradinhos pretos correspondem aos herbı́voros;

• o quadradinho preto embaixo, envolvido por um quadrado, corresponde a Efan;

• os elementos do retângulo da direita correspondem aos africanos e os da esquerda aos ame-


ricanos (há apenas uma bolinha à direita, da qual saem quatro setas);

• a bola grande pontilhada representa todas as mudas de grama — mas é apenas uma bola,
não 200;

• há uma seta de x para y se x devora y;

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:

• 5 corresponde ao carnı́voro americano e 11 a um carnı́voro africano;

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

• o número correspondente à planta, 701, é o único que possui três dı́gitos;

• os números correspondentes aos herbı́voros são 54 e 13, sendo este último correspondente à
constante Efan;

• Devora(x, y) corresponde a x divide y + 1. Então temos que 5 e 11 dividem 54 + 1, 54 e 13


dividem 701 + 1 e 5 e 11 não dividem 701 + 1.

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

{Efan, Leo, Gal, Gel, Eloc, Eloá, Pant, g1 , g2 , ..., g200 }

Os sı́mbolos de predicado de Pc , Ph , Pd , Paf , Pam , Pan e Pp são associados respectivamente aos


predicados Carnı́voro, Herbı́voro, Devora, Africano, Americano, Animal e Planta. Não há funções
em Γabs . O sı́mbolo de constante c corresponde a Efan.
Note que os predicados de Zoo são como definidos no inı́cio deste Capı́tulo — são os fatos a
respeito do modelo. Estes predicados podem ser definidos mais precisamente através de relações:

1. Carnı́voro = {Leo, Pant},

2. Herbı́voro = {Efan, Gal, Gel, Eloc, Eloá},

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

4. Africano = {Efan, Leo, Gal, Gel, Eloc, Eloá, g1 , g2 , ..., g200 },

5. Americano = {Pant},

6. Animal = {Efan, Leo, Gal, Gel, Eloc, Eloá, Pant},

7. Planta = {g1 , g2 , ..., g200 }.

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,

Para todo x, x ∈ Americano existe um y tal que Devora(x, y)


ou seja,
Para todo x, x ∈ {Pant} existe um y tal que (x, y) ∈ Devora
Então x só pode ser Pant e procuramos um y tal que (Pant, y) ∈ Devora. Há vários elementos
y a escolher. Escolheremos y = Gal. Sabemos que (Pant, Gal) ∈ Devora pois Pant ∈ Carnı́voro e
Gal ∈ Herbı́voro, as condições dadas na definição da relação Devora. Então a fórmula é verdadeira
no modelo Zoo, pois interpretando os sı́mbolos como se fossem do modelo, obtivemos uma fórmula
verdadeira.
É ∀x (Pd (x, g1 )−→∃y Pd (y, x)) verdadeira no modelo Zoo? Esta fórmula, interpretada no
modelo Zoo, quer dizer que, se x devora g1 , então existe algum y que devora x. Em conjuntos, a
questão é a seguinte:
para todo (x, g1 ) ∈ Devora, existe y tal que (y, x) ∈ Devora?
Isto não é verdade, pois Efan devora g1 mas ninguém o devora. Utilizando as relações, temos
(Efan, g1 ) ∈ Devora, mas não existe y tal que (y, Ef an) ∈ Devora
Logo a fórmula ∀x (Pd (x, g1 )−→∃y Pd (y, x)) é falsa no modelo Zoo.

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

[3] Coniglio, Marcelo E. Teoria Axiomática de Conjuntos: uma Introdução.

[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

[5] Guimarães, José de Oliveira. Matemática Discreta. Disponı́vel em


http://www2.dc.ufscar.br/~jose/courses/index.htm

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

[9] Mortari, César. Introdução à Lógica. Fundação Editora da UNESP, 2001.

[10] Shoenfield, Joseph R. Mathematical Logic. Addison-Wesley, 1967. Não recomendado para
cursos de Graduação.

[11] Cellular automaton. Disponı́vel em http://en.wikipedia.org/wiki/Cellular_automaton.

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

universo de uma estrutura, 82

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

Vous aimerez peut-être aussi