Você está na página 1de 26

Lógica para Computação Primeiro Semestre, 2015

Aula 1: Introdução
DAINF-UTFPR Prof. Ricardo Dutra da Silva

1.1 Noções Iniciais


A Lógica analisa estruturas e métodos de raciocı́nio. Podemos pensar na Lógica como uma
ciência de raciocinar. Nós, humanos, somos bastante hábeis em representar e manipular
informações lógicas. Com tais manipulações, somos capazes de inferir novas informações ou
verificar a veracidade de outras.
Exemplo 1.1
Considere um jogo no qual temos cinco cubos coloridos empilhados sobre uma mesa.
Ignoramos a disposição como os cubos estão empilhados (estamos vendados, quem sabe?).
No entanto, alguns fatos sobre como os cubos estão arranjados na pilha são fornecidos.
Nossa tarefa é determinar a ordem em que os cubos estão dispostos.
As premissas são as seguintes.

1. O bloco vermelho está sobre o bloco verde.

2. O bloco verde está em algum lugar acima do bloco azul.

3. O bloco verde não está sobre o bloco azul.

4. O bloco amarelo está sobre o bloco verde ou sobre o bloco azul.

5. Há algum bloco sobre o bloco preto.

6. O bloco preto não está sobre o bloco amarelo.

Somos capazes de derivar conclusões a partir das premissas.

• O bloco vermelho está sobre o bloco verde.

• O bloco verde está sobre o bloco amarelo.

1
2 Aula 1: Introdução

• O bloco amarelo está sobre o bloco azul

• O bloco azul está sobre o bloco preto.

• O bloco preto está diretamente sobre a mesa.

Nem sempre é simples alcançar conclusões ou, quando são dadas, entender o porquê de
certas conclusões. Por isso, é útil que uma prova seja fornecida.
Exemplo 1.2
No Exemplo 1.1, podemos provar informalmente que o bloco amarelo está sobre o bloco
azul.
Nos é dito que o bloco amarelo está sobre o bloco verde ou sobre o bloco azul, mas
também que o bloco vermelho está sobre o bloco verde. Assumindo que pode haver apenas
um bloco sobre outro, podemos concluir que o bloco amarelo não pode estar sobre o bloco
verde. Por eliminação, o bloco amarelo deve estar sobre o bloco azul.

Em uma prova precisamos reconhecer certos passos como imediatamente óbvios. Esses
passos e as conclusões obtidas devem também ser independentes do conteúdo expresso. Na
Lógica, a forma sobrepõe o conteúdo. O que importa é a estrutura (forma) e não sobre o
que estamos falando (blocos, carros, pessoas, etc.).
Exemplo 1.3
Suponha os fatos a seguir.

1. Todos os Civics são Hondas.

2. Todos os Hondas são Japoneses.

Facilmente podemos concluir:

3. Portanto, todos os Civics são Japoneses.

Concluı́mos a partir do Exemplo 1.3 que todos os Civics são Japoneses. Analise agora o
Exemplo 1.4.
Exemplo 1.4
Dado que:
1.1. NOÇÕES INICIAIS 3

1. Todos os Cartos são Lordos.

2. Todos os Lordos são Misus.

Concluı́mos:

3. Portanto, todos os Cartos são Misus.

Mesmo sem saber o que são Cartos, Lordos ou Misus, conseguimos chegar à conclusão de
que todos os Cartos são Misus. Os Exemplos 1.3 e 1.4 compartilham uma mesma estrutura,
uma mesma forma ou regra de raciocı́nio:

1. Todos os x são y.

2. Todos os y são z.

3. Portanto, todos os x são z.

É importante saber as regras que nos levam a conclusões corretas.


Exemplo 1.5
Considere o padrão abaixo:

1. Todos os x são y.

2. Alguns y são z.

3. Portanto, alguns x são z.

Vamos substituir x por “Volkswagen”, y por “carros” e z por “produzidos no Brasil”.


Chegamos a uma conclusão correta.

1. Todos os Volkswagen são carros.

2. Alguns carros são produzidos no Brasil.

3. Portanto, alguns Volkswagen são produzidos no Brasil.

Agora, vamos substituir x por “Volkswagen”, y por “carros” e z por “Porshes”. Che-
gamos a uma conclusão incorreta.
4 Aula 1: Introdução

1. Todos os Volkswagen são carros.

2. Alguns carros são Porshes.

3. Portanto, alguns Volkswagen são Porshes.

O Exemplo 1.5 apresenta uma regra que leva a conclusões incorretas. Não poderı́amos
assumir, portanto, tal regra em um sistema para provas. Uma regra deve sempre levar a
conclusões corretas.

1.2 Lógica para Computação


Nosso interesse é formalizar linguagens e regras que permitam automatizar o raciocı́nio.
Queremos saber quais regras podem ser computadas e também quais podem ser computadas
de forma eficiente. Estudaremos no curso duas dessas linguagens e diferentes conjuntos de
regras.
Em geral, estaremos interessados em especificar uma linguagem para expressar conhe-
cimentos e estudar métodos que verifiquem fórmulas ou que possibilitem deduzir novas
fórmulas.
A lógica para computação tem aplicações em diferentes áreas.

Matemática Programas são usados para conferir ou mesmo produzir provas matemáticas.

Sistemas de Banco de Dados Restrições lógicas são definidas para testar a integridade
de bancos de dados.

Análise de Software Expressões lógicas são produzidas para verificar propriedades de


programas, tais como corretude e complexidade.

Engenharia de Hardware A Lógica formal é usada, por exemplo, para validar projetos
de hardware e diagnosticar falhas.
Lógica para Computação Primeiro Semestre, 2015

Aula 2: Linguagem Proposicional


DAINF-UTFPR Prof. Ricardo Dutra da Silva

Linguagens naturais, como o nosso Português, podem expressar ideias ambı́guas ou im-
precisas.
Exemplo 2.1
A frase:

“Contrata-se.”

é imprecisa, pois não especifica o que é oferecido. Qual a vaga? Qualquer um é contra-
tado? Podem surgir diversas interpretações.
A frase:

“Crianças que recebem leite materno frequentemente são mais sadias.”

Qual a interpretação correta dessa frase?

Queremos estudar a lógica usando métodos matemáticos. Para isso, precisamos de uma
linguagem formal, com regras de formação precisamente definidas e que não permitam cons-
truções ambı́guas ou imprecisas.
A primeira linguagem que consideraremos é a Linguagem Proposicional, que é baseada em
proposições ou frases declarativas. Podemos atribuir valores verdade para tais proposições,
ou seja, podemos argumentar sobre sua veracidade ou falsidade.
Uma frase declarativa p é uma sentença gramaticalmente correta que pode ser substituı́da
na seguinte frase: “É verdade que p?”.
Exemplo 2.2
As seguintes sentenças são declarativas:

• A soma dos números 3 e 5 é igual a 8.

• Jane reagiu violentamente às acusações de Jack.

• Todo número natural par maior que dois é a soma de dois números primos.

1
2 Aula 2: Linguagem Proposicional

Exemplo 2.3
As seguintes sentenças não são declarativas:

• Você pode me passar o sal, por favor?

• Atenção, preparar, já!

• Que a sorte lhe sorria.

Consideramos frases declarativas como sendo atômicas e podemos atribuir sı́mbolos dis-
tintos para as frases, sı́mbolos como p, q e r.
Exemplo 2.4
Dadas as seguintes sentenças declarativas:

• p: A soma dos números 3 e 5 é igual a 8.

• q: Jane reagiu violentamente às acusações de Jack.

• r: Todo número natural par maior que dois é a soma de dois números primos.

A partir das frases atômicas, podemos formar frases mais complexas usando operações de
conjunção (“E”), disjunção (“OU”), implicação (“SE ... ENTÃO ...”) e negação (“NÃO”).

2.1 Sintaxe
Vamos iniciar a definição da linguagem proposicional pelo alfabeto, que contém os compo-
nentes básicos da linguagem.

Definição 2.1. O alfabeto da lógica proposicional é composto por:

• Um conjunto de variáveis proposicionais (átomos), tais como P = {p, q, r, s}.

• O conectivo unário: ¬ (negação).

• Os conectivos binários: ∧ (conjunção), ∨ (disjunção) e → (implicação).

• Sı́mbolos de pontuação: “(” e “)”.


2.1. SINTAXE 3

Uma variável proposicional (um átomo) é utilizada para representar as proposições, como
vimos no Exemplo 2.4.
O conjunto LLP de fórmulas da lógica proposicional é formada pela concatenação de
sı́mbolos. Para definir todos os elementos pertencentes à LLP , ou seja, todas as fórmulas da
linguagem proposicional, usaremos uma definição recursiva (ou definição por indução).
Em uma definição por recursão (ou por indução) o elemento que está sendo definido
aparece como parte da definição. Existem duas partes básicas em uma definição recursiva: a
base, elementos simples e explicitamente definidos; e passos recursivos (indutivos), definem
novos elementos a partir de elementos definidos previamente.
Exemplo 2.5
A função fatorial f pode ser definida recursivamente como:

• Base: f (0) = 1.

• Passo recursivo: f (n) = n × f (n − 1), para n > 0.

A base define explicitamente um elemento simples, trivial. O fatorial de 0 é 1. O passo


recursivo define o fatorial de qualquer número n maior que 0. O fatorial do n-ésimo
número é n multiplicado pelo fatorial do (n − 1)-ésimo número. O fatorial de 5, por
exemplo, pode ser calculado usando a definição recursiva.

f (5) = 5 × f (4) passo recursivo


f (5) = 5 × 4 × f (3) passo recursivo
f (5) = 5 × 4 × 3 × f (2) passo recursivo
f (5) = 5 × 4 × 3 × 2 × f (1) passo recursivo
f (5) = 5 × 4 × 3 × 2 × 1 × f (0) passo recursivo
f (5) = 5 × 4 × 3 × 2 × 1 × 1 base
f (5) = 120

Definição 2.2. O conjunto de fórmulas da lógica proposicional LLP satisfaz as seguintes


regras de formação.

• Base: Todas as variáveis proposicionais pertencem a LLP , ou seja, P ∈ LLP .


4 Aula 2: Linguagem Proposicional

• Passo recursivo 1: Se A ∈ LLP , então (¬A) ∈ LLP

• Passo recursivo 2: Se A, B ∈ LLP , então (A ∧ B) ∈ LLP , (A ∨ B) ∈ LLP e (A → B) ∈


LLP

Usaremos letras minúsculas (p, q, r) para representar as variáveis proposicionais e letras


maiúsculas para representar fórmulas (A, B, C).
Exemplo 2.6
Dadas as seguintes fórmulas:

a) p;

b) (p → q);

c) (p ∧ (¬q));

d) ((p ∧ q) → r);

podemos obtê-las conforme as regras de criação dadas pela Definição 2.2.

a) p

fórmula regra
p (base)

p é trivialmente uma fórmula pela base.

b) (p → q)

fórmula regra
p (base)
q (base)
(p → q) (A → B)(passo)

p e q são fórmulas pelas base. Podemos usar o passo recursivo (A → B) para construir
uma implicação de fórmulas A e B já definidas. Mas para isso basta fazer A = p e
B = q e formamos (p → q).
2.1. SINTAXE 5

c) (p ∧ (¬q))

fórmula regra
p (base)
q (base)
(¬q) (¬A)(passo)
(p ∧ (¬q)) (A ∧ B)(passo)

d) ((p ∧ q) → r)

fórmula regra
p (base)
q (base)
r (base)
(p ∧ q) (A ∧ B)(passo)
((p ∧ q) → r) (A → B)(passo)

Exemplo 2.7
A sequência de sı́mbolos p ∧ ∨q não pode ser construı́da pelas regras da Definição 2.2.
Portanto, não é uma fórmula proposicional.

Podemos usar algumas regras para diminuir o uso de parênteses. A primeira é que
parênteses mais externos podem ser omitidos. O uso repetitivo dos conectivos ∧ e ∨ dis-
pensa o uso de parênteses. Podemos escrever p ∧ q ∧ r ao invés de (p ∧ q) ∧ r. Note que
os parênteses aninham-se à esquerda. Da mesma forma, podemos dispensar os parênteses
quando o conectivo → é usado repetitivamente. Neste caso, os parênteses são aninhados à
direita. Por exemplo, escrevemos p → q → r em vez de p → (q → r). Por fim, teremos
uma ordem de precedência entre os operadores dada pela sequência, ¬, ∧, ∨, →, listada da
maior para a menor precedência. Portanto, ¬ é o operador com maior precedência e → é o
operador com menor precedência.
Exemplo 2.8
As fórmula do exemplo anterior poderiam ser reescritas retirando os parênteses conforme
6 Aula 2: Linguagem Proposicional

as regras acima.

a) p continua p.

b) (p → q) pode ser escrita como p → q, excluindo os parênteses mais externos.

c) (p ∧ (¬q)) pode ser escrita como p ∧ (¬q), excluindo os parênteses mais externos.
Além disso, o conectivo ¬ tem maior precedência do que o conectivo ∧, podemos
então eliminar os parênteses obtendo p ∧ ¬q.

d) ((p → q) ∧ r) pode ser escrita como (p → q) ∧ r ao ocultar os parênteses externos.


Não há mais nenhum par de parênteses que possa ser removido. Os parênteses que
englobam (p → q) definem uma precedência diferente daquela dada pela fórmula
p → q ∧ r. Nesta última, ∧ deve preceder → na ordem em que as operações são
avaliadas. Por esse motivo, (p → q) ∧ r contém o menor número possı́vel de parênteses
neste caso.

Obviamente, podemos seguir o caminho contrário e adicionar parênteses a uma fórmula


para explicitamente definir as precedências de operações.
Exemplo 2.9
As fórmulas ¬p ∧ q, p ∨ q ∧ r e p ∨ ¬q → r podem, portanto, ser reescritas como:

¬p ∧ q = (¬p) ∧ q
= ((¬p) ∧ q)
p ∨ q ∧ r = p ∨ (q ∧ r)
= (p ∨ (q ∧ r))
p ∨ ¬q → r = p ∨ (¬q) → r
= (p ∨ (¬q)) → r
= ((p ∨ (¬q)) → r)

Definição 2.3. O conjunto de subfórmulas de uma fórmula A, Subf(A), é definido como:


2.1. SINTAXE 7

• Base: A = p. Subf(A) = {p}.

• Passo 1: Caso A = ¬B. Subf(¬B) = {¬B} ∪ Subf(B).

• Passo 2: Caso A = B ∧ C. Subf(B ∧ C) = {B ∧ C} ∪ Subf(B) ∪ Subf(C).

• Passo 3: Caso A = B ∨ C. Subf(B ∨ C) = {B ∨ C} ∪ Subf(B) ∪ Subf(C).

• Passo 4: Caso A = B → C. Subf(B → C) = {B → C} ∪ Subf(B) ∪ Subf(C).


Exemplo 2.10
As subfórmulas de p ∨ ¬q → r ∧ q são:

Subf(p ∨ ¬q → r ∧ q) = {p ∨ ¬q → r ∧ q} ∪ Subf(p ∨ ¬q) ∪ Subf(r ∧ q)


= {p ∨ ¬q → r ∧ q} ∪ {p ∨ ¬q} ∪ Subf(p) ∪ Subf(¬q) ∪ Subf(r ∧ q)
= {p ∨ ¬q → r ∧ q} ∪ {p ∨ ¬q} ∪ {p} ∪ Subf(¬q) ∪ Subf(r ∧ q)
= {p ∨ ¬q → r ∧ q} ∪ {p ∨ ¬q} ∪ {p} ∪ {¬q} ∪ Subf(q) ∪ Subf(r ∧ q)
= {p ∨ ¬q → r ∧ q} ∪ {p ∨ ¬q} ∪ {p} ∪ {¬q} ∪ {q} ∪ Subf(r ∧ q)
= {p ∨ ¬q → r ∧ q} ∪ {p ∨ ¬q} ∪ {p} ∪ {¬q} ∪ {q} ∪ {r ∧ q} ∪ Subf(r) ∪ Subf(q)
= {p ∨ ¬q → r ∧ q} ∪ {p ∨ ¬q} ∪ {p} ∪ {¬q} ∪ {q} ∪ {r ∧ q} ∪ {r} ∪ Subf(q)
= {p ∨ ¬q → r ∧ q, p ∨ ¬q, p, ¬q, q, r ∧ q, r}.

Definição 2.4. O tamanho de uma fórmula1 A, denotado |A|, é definido como:

• Base: |p| = 1 para toda variável proposicional (átomos).

• Passo 1: |¬A| = 1 + |A|.

• Passo 2: |A ∧ B| = 1 + |A| + |B|.

• Passo 3: |A ∨ B| = 1 + |A| + |B|.

• Passo 4: |A → B| = 1 + |A| + |B|.


Exemplo 2.11
Dada a fórmula p ∨ ¬q → r ∧ q, seu tamanho é:
1
Também pode ser chamado de complexidade de uma fórmula.
8 Aula 2: Linguagem Proposicional

|p ∨ ¬q → r ∧ q| = 1 + |p ∨ ¬q| + |r ∧ q|
= 1 + 1 + |p| + |¬q| + 1 + |r| + |q|
= 1 + 1 + 1 + 1 + |q| + 1 + 1 + 1
=1+1+1+1+1+1+1+1
=8
Lógica para Computação Primeiro Semestre, 2015

Aula 3: Linguagem Proposicional


DAINF-UTFPR Prof. Ricardo Dutra da Silva

3.1 Semântica
A semântica da lógica proposicional consiste em associar um significado ou interpretação para
os elementos sintáticos. Isso é realizado atribuindo valores verdade às fórmulas da linguagem.
Os valores verdade são: verdadeiro e falso. Comumente representamos verdadeiro e falso por
1 e 0, respectivamente.
Exemplo 3.1
Dadas as proposições:

• p: Está nublado;

• q: Está chovendo.

podemos interpretar cada uma das proposições como verdadeira ou falsa. Podemos tam-
bém interpretar fórmulas compostas, como p ∧ q, que serão verdadeiras ou falsas depen-
dendo das interpretações dos átomos que as compõem. Suponha que temos I(p) = 1 e
I(q) = 0. A fórmula p ∧ q será interpretada como falsa, ou seja, I(p ∧ q) = 0. Isso ocorre
porque a conjunção somente é verdadeira se seus dois argumentos forem verdadeiros.

Definição 3.1. Uma interpretação (ou valoração) é uma função I que atribui valores ver-
dade para as fórmulas proposicionais LLP , ou seja, I : LLP → {0, 1}. A interpretação I de
uma fórmula A ∈ LLP é definida como1 :

1. Base: I(p) = {0, 1} para todo p ∈ P.

2. Passo 1: Caso A = ¬B. I(A) = I(¬B) = 1 se, e somente se, I(B) = 0.


1
O valor verdade das definições deve ser invertido quando a condição à direita do “se, e somente se” for
falsa.

1
2 Aula 3: Linguagem Proposicional

3. Passo 2: Caso A = B ∧ C. I(A) = I(B ∧ C) = 1 se, e somente se, I(B) = 1 e


I(C) = 1.

4. Passo 3: Caso A = B ∨ C. I(A) = I(B ∨ C) = 1 se, e somente se, I(B) = 1 ou


I(C) = 1.

5. Passo 4: Caso A = B → C. I(A) = I(B → C) = 1 se, e somente se, I(B) = 0 ou


I(C) = 1.

Podemos visualizar as funções de valoração para os conectivos da lógica proposicional


através de matrizes de conectivos como na Tabela 3.1.

Tabela 3.1: Matrizes de conectivos.


(a) negação (b) conjunção
I(¬A) I(A ∧ B) I(B) = 0 I(B) = 1
I(A) = 0 1 I(A) = 0 0 0
I(A) = 1 0 I(A) = 1 0 1
(c) disjunção (d) implicação
I(A ∨ B) I(B) = 0 I(B) = 1 I(A → B) I(B) = 0 I(B) = 1
I(A) = 0 0 1 I(A) = 0 1 1
I(A) = 1 1 1 I(A) = 1 0 1

Exemplo 3.2
Dados os átomos p, q e r, suponha a seguinte valoração para eles: I(p) = 1, I(q) = 0 e
I(r) = 1. Então podemos valorar a fórmula (p ∨ q) ∧ (¬q ∨ r) iniciando pelas subfórmulas
mais internas e prosseguindo para as mais externas.

(p ∨ q) ∧ (¬q ∨ r)
(1 ∨ 0) ∧ (¬0 ∨ 1)
1 ∧ (1 ∨ 1)
1∧1
1
3.1. SEMÂNTICA 3

Dada outra valoração para os átomos, I(p) = 1, I(q) = 1 e I(r) = 0, temos a seguinte
valoração da fórmula.

(p ∨ q) ∧ (¬q ∨ r)
(1 ∨ 1) ∧ (¬1 ∨ 0)
1 ∧ (0 ∨ 0)
1∧0
0

O valor de uma fórmula pode variar conforme a interpretação dos átomos.


Podemos computar a interpretação de uma fórmula seguindo um processo das menores
subfórmulas para as maiores subfórmulas.
Definição 3.2. A interpretação de uma fórmulas A pode ser realizada da seguinte forma:

1. Computamos as subfórmulas de A, Subf(A).

2. Ordenamos as subfórmulas pelo seu tamanho.

3. Computamos as interpretações das menores subfórmulas e propagamos para as maiores


subfórmulas.
Exemplo 3.3
Dados os átomos p, q e r, suponha a seguinte valoração para estes: I(p) = 1, I(q) = 0 e
I(r) = 1. Então podemos valorar a fórmula (p ∨ q) ∧ (¬q ∨ r) da seguinte forma:

1. Computação das subfórmulas.

Subf((p ∨ q) ∧ (¬q ∨ r)) = {(p ∨ q) ∧ (¬q ∨ r)} ∪ Subf((p ∨ q)) ∪ Subf((¬q ∨ r))
= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ Subf(p) ∪ Subf(q) ∪ Subf((¬q ∨ r))
= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ {p} ∪ Subf(q) ∪ Subf((¬q ∨ r))
= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ {p} ∪ {q} ∪ Subf((¬q ∨ r))
= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ {p} ∪ {q} ∪ {(¬q ∨ r)} ∪ Subf(¬q) ∪ Subf(r)
= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ {p} ∪ {q} ∪ {(¬q ∨ r)} ∪ {¬q} ∪ Subf(q) ∪ Subf(r)
4 Aula 3: Linguagem Proposicional

= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ {p} ∪ {q} ∪ {(¬q ∨ r)} ∪ {¬q} ∪ {q} ∪ Subf(r)
= {(p ∨ q) ∧ (¬q ∨ r)} ∪ {(p ∨ q)} ∪ {p} ∪ {q} ∪ {(¬q ∨ r)} ∪ {¬q} ∪ {q} ∪ {r}
= {(p ∨ q) ∧ (¬q ∨ r), (p ∨ q), p, q, (¬q ∨ r), ¬q, r}

2. Ordenação das subfórmulas pelo tamanho.

Subf((p ∨ q) ∧ (¬q ∨ r)) = {p, q, r, ¬q, (p ∨ q), (¬q ∨ r), (p ∨ q) ∧ (¬q ∨ r)}

3. Computação das interpretações.

(a) Subfórmulas de tamanho 1.

p q r ¬q (p ∨ q) (¬q ∨ r) (p ∨ q) ∧ (¬q ∨ r)
1 0 1

(b) Subfórmulas de tamanho 2.

p q r ¬q (p ∨ q) (¬q ∨ r) (p ∨ q) ∧ (¬q ∨ r)
1 0 1 1

(c) Subfórmulas de tamanho 3.

p q r ¬q (p ∨ q) (¬q ∨ r) (p ∨ q) ∧ (¬q ∨ r)
1 0 1 1 1

(d) Subfórmulas de tamanho 4.

p q r ¬q (p ∨ q) (¬q ∨ r) (p ∨ q) ∧ (¬q ∨ r)
1 0 1 1 1 1

(e) Subfórmulas de tamanho 8.

p q r ¬q (p ∨ q) (¬q ∨ r) (p ∨ q) ∧ (¬q ∨ r)
1 0 1 1 1 1 1
3.2. SATISFAZIBILIDADE 5

3.2 Satisfazibilidade
A fórmula p∨¬p possui apenas um átomo e, portanto, podemos ter duas valorações diferentes,
I(p) = 0 e I(p) = 1. Em ambos os casos, I(p ∨ ¬p) = 1. Por outro lado, a fórmula p ∧ ¬p
será interpretada como falsa para qualquer valoração do átomo p. Existem também fórmulas
que pode ser interpretadas como verdadeiras ou como falsas, dependendo da interpretação
de seus átomos. A fórmulas p → q é um exemplo do último caso. Podemos classificar as
fórmulas conforme esses comportamentos.

Definição 3.3. Uma fórmula A é:

• válida (tautologia) se para qualquer valoração dos seus átomos sua valoração é verda-
deira, I(A) = 1;

• satisfazível se existe uma valoração dos seus átomos que torne sua valoração verdadeira,
I(A) = 1;

• insatisfazível se para qualquer valoração dos seus átomos sua valoração é falsa, I(A) =
0.

• falsificável se existe uma valoração dos seus átomos que torne sua valoração falsa,
I(A) = 0.

3.3 Tabela-Verdade
A tabela-verdade é um método que gera todas as possíveis valorações de uma fórmula.

Definição 3.4. A tabela-verdade de uma fórmula A é gerada da seguinte forma:

1. Computamos as subfórmulas de A.

2. Ordenamos as subfórmulas por tamanho.

3. Criamos uma coluna para cada subfórmula conforme a ordenação anterior: átomos
mais à esquerda e A na posição mais à direita.

4. Criamos uma linha para cada uma das possíveis valorações dos átomos.
6 Aula 3: Linguagem Proposicional

5. Propagamos a valoração dos átomos para as subfórmulas, das menores (mais à es-
querda) para as maiores (mais à direita).
Exemplo 3.4
Dada a fórmula, A = (p ∨ q) ∧ (¬p ∨ ¬q), sua tabela-verdade é construída da seguinte
maneira:

1. Computação das subfórmulas.

Subf((p ∨ q) ∧ (¬p ∨ ¬q)) = {(p ∨ q) ∧ (¬p ∨ ¬q), p ∨ q, p, q, ¬p ∨ ¬q, ¬p, ¬q}

2. Ordenação das subfórmulas.

Subf((p ∨ q) ∧ (¬p ∨ ¬q)) = {p, q, ¬p, ¬q, p ∨ q, ¬p ∨ ¬q, (p ∨ q) ∧ (¬p ∨ ¬q)}

3. Criação das colunas da tabela.

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)

4. Criação das linhas da tabela.

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0
0 1
1 0
1 1

5. Propagação da valoração.

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0 1
0 1 1
1 0 0
1 1 0
3.3. TABELA-VERDADE 7

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0 1 1
0 1 1 0
1 0 0 1
1 1 0 0

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0 1 1 0
0 1 1 0 1
1 0 0 1 1
1 1 0 0 1

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0 1 1 0 1
0 1 1 0 1 1
1 0 0 1 1 1
1 1 0 0 1 0

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0 1 1 0 1 0
0 1 1 0 1 1 1
1 0 0 1 1 1 1
1 1 0 0 1 0 0

Podemos usar a tabela-verdade de uma fórmula A para classificá-la.

Definição 3.5. Dada a tabela-verdade de uma fórmula A:

• A é satisfazível se alguma linha da coluna A tem um 1;

• A é válida se todas linha da coluna A têm um 1;

• A é falsificável se alguma linha da coluna A tem um 0;


8 Aula 3: Linguagem Proposicional

• A é insatisfazível se todas as linhas da coluna A têm um 0.

Exemplo 3.5
Seja A = (p ∨ q) ∧ (¬p ∨ ¬q) cuja tabela-verdade é dada abaixo.

p q ¬p ¬q p∨q ¬p ∨ ¬q (p ∨ q) ∧ (¬p ∨ ¬q)


0 0 1 1 0 1 0
0 1 1 0 1 1 1
1 0 0 1 1 1 1
1 1 0 0 1 0 0

Conforme a coluna relativa a A:

• A é satisfazível pois as valorações dos átomos dadas pela segunda e terceira linhas
tornam I(A) = 1;

• A não é válida (tautologia) pois nem todas as valorações dos átomos tornam A
verdadeira;

• A é falsificável pois as valorações dos átomos dadas pela primeira e quarta linhas
tornam I(A) = 0;

• A não é insatisfazível pois nem todas as valorações dos átomos tornam A falsa.

Exemplo 3.6
Dada a fórmula, A = p ∨ ¬p, a tabela-verdade é

p ¬p p ∨ ¬p
0 1 1
1 0 1

Classificação:

• É satisfazível? Sim.

• É válida ou tautologia? Sim.

• É falsificável? Não.
3.3. TABELA-VERDADE 9

• É insatisfazível? Não.

Exemplo 3.7
Dada a fórmula, A = p ∧ ¬p, a tabela-verdade é

p ¬p p ∧ ¬p
0 1 0
1 0 0

Classificação:

• É satisfazível? Não.

• É válida ou tautologia? Não.

• É falsificável? Sim.

• É insatisfazível? Sim.
Lógica para Computação Primeiro Semestre, 2015

Aula 4: Consequência Lógica e Equivalência Lógica


DAINF-UTFPR Prof. Ricardo Dutra da Silva

Definição 4.1. Em lógica proposicional dizemos que uma fórmula B é consequência lógica
de uma fórmula A, se toda valoração I que satisfaz A também satisfaz B. A consequência
lógica é representada por A  B. Podemos também dizer que A implica logicamente B.
Tabelas-verdade podem ser usadas para verificar a consequência lógica.
Definição 4.2. Para verificar se A  B é verdadeira, podemos seguir os passos:

1. Construı́mos uma tabela-verdade que contenha em suas colunas a união das


subfórmulas de A e B.

2. Verificamos para toda linha da tabela em que I(A) = 1, se I(B) = 1. Caso para alguma
linha I(A) = 1 e I(B) = 0, a consequência lógica não é verificada.
Exemplo 4.1
Verifique se p ∨ q → r  p → r.

linha p q r p∨q p→r p∨q →r


1 0 0 0 0 1 1
2 0 0 1 0 1 1
3 0 1 0 1 1 0
4 0 1 1 1 1 1
5 1 0 0 1 0 0
6 1 0 1 1 1 1
7 1 1 0 1 0 0
8 1 1 1 1 1 1

Analisamos as duas últimas colunas, que correspondem às fórmulas da questão. As


valorações que satisfazem a fórmula p ∨ q → r (última coluna) são as das linhas 1, 2, 4,
6 e 8. A Definição 4.1 enuncia que toda valoração de p ∨ q → r que a torna verdadeira
também deve tornar p → r verdadeira, ou seja, as valorações das linhas 1, 2, 4, 6 e 8

1
2 Aula 4: Consequência Lógica e Equivalência Lógica

também devem tornar p → r verdadeira. E esse é justamente o caso. Portanto, p → r é


uma consequência lógica de p ∨ q → r.

Exemplo 4.2
Verifique se p ∧ q → r  p → r.

linha p q r p∧q p→r p∧q →r


1 0 0 0 0 1 1
2 0 0 1 0 1 1
3 0 1 0 0 1 1
4 0 1 1 0 1 1
5 1 0 0 0 0 1
6 1 0 1 0 1 1
7 1 1 0 1 0 0
8 1 1 1 1 1 1

Temos que as linhas 1, 2, 3, 4, 5, 6 e 8 satisfazem a fórmula p ∧ q → r. As linhas 1, 2, 3, 4,


6 e 8 satisfazem a fórmula p → r. No entanto, a linha 5 falsifica p → r, não respeitando a
definição de consequência lógica. Portanto, p → r não é consequência lógica de p ∧ q → r.

Um conjunto de fórmulas Γ = {A1 , A2 , . . . , An } pode implicar logicamente uma fórmula


A. Tal conjunto de fórmulas Γ é chamado de teoria.
Definição 4.3. Uma fórmula A é consequência lógica de uma teoria Γ, Γ  A, se toda
valoração I que satisfaz todas as fórmulas de Γ também satisfaz A.
Definição 4.4. Para verificar se Γ  A é verdadeira, podemos seguir os passos:

1. Construı́mos uma tabela-verdade que contenha em suas colunas a união das


subfórmulas de Γ = {A1 , A2 , . . . , An } e de A.

2. Verificamos para toda linha da tabela em que I(A1 ) = I(A2 ) = . . . = I(An ) = 1, se


I(A) = 1. Caso seja verdade, temos uma consequência lógica.
Exemplo 4.3
Seja Γ = {p → q, p}, verifique se q é consequência lógica de Γ.
Queremos saber se p → q, p  q. Construı́mos a tabela-verdade.
Aula 4: Consequência Lógica e Equivalência Lógica 3

linha p q p→q
1 0 0 1
2 0 1 1
3 1 0 0
4 1 1 1

A única valoração que torna todas as fórmulas da teoria Γ verdadeira é a da linha 4. A


fórmula A também é verdadeira para esta valoração. Portanto, q é uma consequência
lógica das fórmulas Γ = {p → q, p}.

Teorema 4.1 (Teorema da Dedução). Sejam Γ um conjunto de fórmulas e A e B fórmulas.


Então,
Γ, A  B se e somente se Γ  A → B.
Demonstração. Assuma a hipótese Γ, A  B. Queremos provar que Γ  A → B. Pela
definição de consequência lógica, temos que analisar qual a interpretação de A → B quando
I(Γ) = 1. Suponha inicialmente que I(A) = 1. Pela hipótese, I(B) = 1 e, portanto,
I(A → B) = 1. Agora suponha I(A) = 0. Nesse caso, independentemente da valoração de
B, a definição da implicação diz que I(A → B) = 1. Como essas são todas as possibilidades
de valoração, concluı́mos que Γ  A → B.
Assuma agora a hipótese Γ  A → B. Queremos provar que Γ, A  B. Precisamos
analisar as possibilidades de valoração para B quando I(Γ) = 1 e I(A) = 1. Se I(B) = 1,
trivialmente temos a consequência lógica. Vamos assumir então I(B) = 0. Como temos
I(A) = 1, então I(A → B) = 0, pela definição da implicação. No entanto, a hipótese afirma
que I(A → B) = 1. Isso é uma contradição. Logo I(B) tem que ser 1. Com isso concluı́mos
que Γ, A  B. 
Definição 4.5. Duas fórmulas A e B são logicamente equivalentes, A ≡ B, se

A  B e B  A.

Note que a Definição 4.5 diz que, dada uma valoração qualquer, então I(A) = I(B).
Definição 4.6. Para verificar se Γ ≡ B é verdadeira, podemos seguir os passos:

1. Construı́mos uma tabela-verdade que contenha em suas colunas a união das


4 Aula 4: Consequência Lógica e Equivalência Lógica

subfórmulas de A e de B.

2. Verificamos para toda linha da tabela se I(A) = I(B).

Exemplo 4.4
Verifique se p → q ≡ ¬q → ¬p.

linha p q ¬p ¬q p→q ¬q → ¬p
1 0 0 1 1 1 1
2 0 1 1 0 1 1
3 1 0 0 1 0 0
4 1 1 0 0 1 1

A tabela mostra que sempre que I(A) = 1, I(B) = 1. Também, sempre que I(A) = 0,
I(B) = 0. Temos uma equivalência lógica.

Exemplo 4.5
Algumas equivalências lógicas são bastante importantes. Entre as principais, podemos
listar:

• ¬¬A ≡ A (eliminação da dupla negação)

• A → B ≡ ¬A ∨ B (definição de → em termos de ∨ e ¬)

• ¬(A ∨ B) ≡ ¬A ∧ ¬B (lei de De Morgan)

• ¬(A ∧ B) ≡ ¬A ∨ ¬B (lei de De Morgan)

• A ∧ (B ∨ C) ≡ (A ∧ B) ∨ (A ∧ C) (distributividade de ∧ sobre ∨)

• A ∨ (B ∧ C) ≡ (A ∨ B) ∧ (A ∨ C) (distributividade de ∨ sobre ∧).

Suponha que escolhamos qualquer um dos conectivos {∧, ∨, →} mais o conectivo ¬.


Por exemplo, escolhemos ∨ entre os três primeiros. Na lógica proposicional sempre podemos
escrever os conectivos ∧ e → usando apenas ∨ e ¬. Em outras, palavras existem equivalências
que redefinem os operadores ∧ e → usando apenas ∨ e ¬. Podemos, de fato, escolher qualquer
um dos conectivos {∧, ∨, →} e, juntamente com o conectivo ¬, encontrar equivalências para
Aula 4: Consequência Lógica e Equivalência Lógica 5

os outros dois conectivos.


Exemplo 4.6
Vamos redefinir ∨ e → em função de ∧ e ¬.
As equivalências do Exemplo 4.5 são bastante úteis quando queremos realizar esse tipo de
redefinição. Vamos redefinir ∨. Usamos a equivalência de eliminação da dupla negação
para, contrariamente, incluir a dupla negação. Isso é possı́vel já que são equivalências.

A ∨ B ≡ ¬¬(A ∨ B)

Agora, usando a lei de De Morgan, temos

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

Para redefinir a implicação, inicialmente podemos usar a equivalência de → usando ∨ e


¬

A → B ≡ ¬A ∨ B.

Em seguida, incluı́mos a dupla negação

¬A ∨ B ≡ ¬¬(¬A ∨ B).

Por fim, usamos a lei de De Morgan

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

Você também pode gostar