Escolar Documentos
Profissional Documentos
Cultura Documentos
2006
c Newton José Vieira Lógica aplicada à computação
As consequências lógicas do Exemplo 119 podem ser usadas para fundamentar regras
de inferência para se lidar com os quantificadores. No entanto, na próxima seção serão
apresentadas regras de mais longo alcance.
Aqui, como em lógica proposicional, α ≡ β, se, e somente se, {α} |= β e {β} |= α.
As propriedades da consequência lógica vistas na Seção 2.7 valem também para a
lógica de predicados. Em particular, vale o teorema da dedução, Teorema 12, segundo
o qual H ∪ {α} |= β se, e somente se, H |= α → β, assim como:
• H ∪ {α} |= α.
• Se H |= α e H ∪ {α} |= β, então H |= β.
• Se H |= α, então H ∪ {β} |= α. Ou seja, a lógica é monotônica.
Exercı́cios
1. Repita o Exercı́cio 1 da seção anterior e mostre que a última fórmula é conse-
quência lógica das outras. Note que, para isto, é preciso explicitar a relação que
existe entre pequeno e grande.
3.5 Dedução
Assim como para a lógica proposicional, existem sistemas dedutivos corretos e comple-
tos para a lógica de predicados. Tais sistemas, basicamente, acrescentam axiomas e/ou
regras de inferência para lidar com os quantificadores universal e existencial.
Nesta seção serão revisitados alguns sistemas dedutivos vistos para lógica proposi-
cional com os acréscimos pertinentes.
3
Uma demonstração pode ser vista, por exemplo, em Ben-Ari, M. Mathematical Logic for Computer
Science, 2nd ed., Springer, 2001.
Newton José Vieira Capı́tulo 3: Lógica de predicados 193
Uma estratégia baseada nesta regra seria: para provar que ∃να, basta provar αtν para
algum termo t.
Exercı́cios
1. Determine deduções que mostrem:
Ax1: α → (β → α)
Ax2: (α → (β → γ)) → ((α → β) → (α → γ))
Ax3: (¬β → ¬α) → [(¬β → α) → β]
Ax4: ∀να → αtν se ν é substituı́vel por t em α
Ax5: ∀ν(α → β) → (α → ∀νβ) se não há ocorrência livre de ν em α
• Regras de inferência:
Como todo sistema dedutivo do tipo Hilbert, esse tem interesse principalmente
teórico, não sendo adequado para servir de base para processamento em computadores
nem utilização por seres humanos em demonstrações.
Exercı́cios
V ∀ν α F ∀ν α
V αtν F αaν
V ∃ν α F ∃ν α
V αaν F αtν
Exemplo 123 Segue um tableau que prova que ∀x (p(x) → q(x)) → (∀x p(x) →
∀x q(x)) é válida:
196
2006
c Newton José Vieira Lógica aplicada à computação
Exemplo 124 O próximo tableau prova que ∀x (p(x) ∧ q(x)) ↔ (∀x p(x) ∧ ∀x q(x)) é
válida:
1. F ∀x (p(x) ∧ q(x))
X
↔ (∀x p(x) ∧ ∀x q(x))
XX
XXX
XXX
XX
X
2. V ∀x (p(x) ∧ q(x)) [1] 14. F ∀x (p(x) ∧ q(x)) [1]
3. F ∀x p(x) ∧ ∀x q(x) [1] 15. V ∀x p(x) ∧ ∀x q(x) [1]
Q 16. V ∀x p(x) [15]
Q
Q 17. V ∀x q(x) [15]
QQ
4. F ∀x p(x) [3] 9. F ∀x q(x) [3] 18. F p(b3) ∧ q(b3) [14]
Q
5. F p(b1) [4] 10. F q(b2) [9] Q
Q
6. V p(b1) ∧ q(b1) [2] 11. V p(b2) ∧ q(b2) [2] QQ
7. V p(b1) [6] 12. V p(b2) [11] 19. F p(b3) [14] 21. F q(b3) [14]
8. V q(b1) [6] 13. V q(b2) [11] 20. V p(b3) [16] 22. V q(b3) [17]
X X X X
Para tableaux com fórmulas não marcadas, as regras de inferência para os quantifi-
cadores são:
Exemplo 125 Segue um tableau com fórmulas não marcadas que prova que a mesma
fórmula do Exemplo 123, ∀x (p(x) → q(x)) → (∀x p(x) → ∀x q(x)), é válida:
1. ¬∀x (p(x) → q(x)) → (∀x p(x) → ∀x q(x))
2. ∀x (p(x) → q(x)) [1]
3. ¬∀x p(x) → ∀x q(x) [1]
4. ∀x p(x) [3]
5. ¬∀x q(x) [3]
6. ¬q(a) [5]
7. p(a) [4]
8. p(a) → q(a) [2]
HH
HH
HH
9. ¬p(a) [8] 10. q(a) [8]
X X
Às vezes, a partir de um tableau não fechado para uma fórmula ¬α, pode-se recu-
perar um modelo que satisfaz ¬α, sendo assim, um modelo que falseia α, mostrando
porque α não é válida. Segue um exemplo.
Exemplo 126 Segue um tableau não fechado para ¬[∃x p(x) ∧ ∃x q(x) → ∃x (p(x) ∧
q(x))]:
1. ¬[∃x p(x) ∧ ∃x q(x) → ∃x (p(x) ∧ q(x))]
2. ∃x p(x) ∧ ∃x q(x) [1]
3. ¬∃x(p(x) ∧ q(x)) [1]
4. ∃x p(x) [2]
5. ∃x q(x) [2]
6. p(a1 ) [4]
7. q(a2 ) [5]
8. ¬(p(a1 ) ∧ q(a1 )) [3]
9. ¬(p(a2 ) ∧ q(a2 )) [3]
H
HH
HH
H
10. ¬p(a1 ) [8] 11. ¬q(a1 ) [8]
X @
@
@
12. ¬p(a2 ) [9] 13. ¬q(a2 ) [9]
X
As fórmulas 6, 7, 11 e 12, no ramo não fechado, correspondem a uma interpretação
que satisfaz ¬[∃x (p(x) ∧ ∃x q(x) → ∃x (p(x) ∧ q(x))], ou ainda, a uma que falseia
∃x (p(x) ∧ ∃x q(x) → ∃x (p(x) ∧ q(x)). Ou seja, tal fórmula não é válida, sendo que uma
interpretação i tal que v i (∃x (p(x) ∧ ∃x q(x) → ∃x (p(x) ∧ q(x))) = F é aquela em que
o universo consta de dois objetos, ai1 e ai2 , e:
Exemplo 127 Ao procurar por um modelo que satisfaz ∀x∃y p(x, y)∧∀x∀y∀z(p(x, y)∧
p(y, z) → p(x, z)), tem-se o seguinte trecho:
1. ∀x∃y p(x, y) ∧ ∀x∀y∀z(p(x, y) ∧ p(y, z) → p(x, z))
2. ∀x∃y p(x, y) [1]
3. ∀x∀y∀z(p(x, y) ∧ p(y, z) → p(x, z)) [1]
4. ∃y p(a1 , y) [2]
5. p(a1 , a2 ) [4]
6. ∃y p(a2 , y) [2]
7. p(a2 , a3 ) [6]
8. ∃y p(a3 , y) [2]
9. p(a3 , a4 ) [8]
..
.
Exercı́cios
1. Demonstre usando tableaux:
3.5.4 Unificação
A noção de unificação é uma noção central na área de automação de sistemas de in-
ferência, responsável por um considerável acréscimo de eficiência nesse tipo de sistema.
Intuitivamente, o problema é encontrar termos, os mais gerais possı́veis, que, ao substi-
tuirem variáveis de um conjunto de expressões, tornem tais expressões idênticas. Uma
expressão pode ser um termo, uma fórmula, um tableau, uma cláusula etc.
Inicialmente, define-se o conceito de substituição. Uma substituição é um conjunto
{v1 /t1 , . . . , vn /tn } (n ≥ 0), em que, para 1 ≤ i ≤ n:
(a) vi é variável;
(c) vi 6= vj para i 6= j.
Exemplo 128 Seja a substituição σ = {x/a, y/f (b), z/f (y)} e a fórmula α = p(x, y, b)∨
q(z). Então, ασ = p(a, f (b), b) ∨ q(f (y)).
eliminando-se
Exemplo 129 Seja σ = {x/f (y), y/z} e θ = {x/a, y/b, z/y}. Segue-se que σ ◦ θ =
{x/f (b), z/y}.
• associatividade: (σ ◦ θ) ◦ λ = σ ◦ (θ ◦ λ), e
• ∅ ◦ σ = σ ◦ ∅ = σ.
200
2006
c Newton José Vieira Lógica aplicada à computação
• {p(f (x), y, x), p(z, f (z), a)} tem um único unificador que, portanto, é um unifi-
cador mais geral: {x/a, y/f (f (a)), z/f (a)}.
• {f (f (x, y), y), f (z, a)} tem um número ilimitado de unificadores, como, por exem-
plo, estes: {x/a, y/a, z/f (a, a)}, {x/b, y/a, z/f (b, a)},{x/w, y/a, z/f (w, a)}, {y/a, z/f (x, a)}
etc. Apenas os dois últimos são umgs.
Exercı́cios
1. Determine σ ◦ θ para:
Newton José Vieira Capı́tulo 3: Lógica de predicados 201
3.5.6 Resolução
Assim como para lógica proposicional, o sistema de resolução para lógica de predicados
trabalha com um conjunto de cláusulas. Um conjunto de cláusulas c(α) correspondente
a uma sentença α é equivalente a esta com relação a satisfabilidade, ou seja, c(α) tem um
modelo se, e somente se α tem um modelo. Isto implica, por exemplo, que α é válida se, e
somente se, um conjunto de cláusulas correspondente
S a ¬α é insatisfatı́vel. E, portanto,
implica também que H |= α se, e somente se, γ∈H c(γ) ∪ c(¬α) é insatisfatı́vel. Assim,
resolução para lógica de predicados também trabalha mostrando a insatisfabilidade de
um conjunto de cláusulas.
Aqui, novamente, uma cláusula é um conjunto de literais. Um literal é uma fórmula
atômica ou a negação de uma. Lembre-se que a cláusula sem literais é denominada
cláusula vazia, e é denotada aqui por ⊥. Um conjunto de cláusulas correspondente a
uma sentença pode ser obtido aplicando-se os seguintes passos, em sequência:
α → β ≡ ¬α ∨ β
α ↔ β ≡ (¬α ∨ β) ∧ (α ∨ ¬β)
¬¬α ≡ α
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬∀vα ≡ ∃v¬α
¬∃vα ≡ ∀v¬α
204
2006
c Newton José Vieira Lógica aplicada à computação
3. Renomear as variáveis, de tal forma que não fiquem duas quantificações com a
mesma variável.
Eliminar ∃v, e
α ∨ (β ∧ γ) ≡ (α ∨ β) ∧ (α ∨ γ)
(α ∧ β) ∨ γ ≡ (α ∨ γ) ∧ (β ∨ γ)
7. Cada disjunção da forma normal conjuntiva obtida dá origem a uma cláusula: o
conjunto dos literais da disjunção.
1. Eliminando-se →:
∀x(¬∀yp(x, y) ∨ ∃yq(x, y)) ∨ ∃x∀y(p(x, y) ∧ q(y, x))
3. Renomeando-se as variáveis:
∀x(∃y¬p(x, y) ∨ ∃zq(x, z)) ∨ ∃w∀u(p(w, u) ∧ q(u, w))
7. Obtendo as cláusulas:
{¬p(x, f1 (x)), q(x, f2 (x)), p(a, u)}
{¬p(x, f1 (x)), q(x, f2 (x)), q(u, a)}
Aqui também, em vez de utilizar a notação de conjunto para cláusulas, será utilizada
a notação, mais comum, de disjunção. Assim, para o exemplo anterior, as cláusulas
seriam representadas por:
Apesar disto, serão utilizadas operações de conjuntos sobre cláusulas, sempre que con-
veniente.
É fácil mostrar que quantificações universais se distribuem sobre conjunções, ou
seja, ∀x(α ∧ β) ≡ (∀xα ∧ ∀xβ). Assim sendo, cada cláusula pode ser considerada um
“contexto” diferente para variáveis; ou ainda, variáveis com o mesmo nome ocorrendo
em cláusulas diferentes podem ser consideradas variáveis diferentes.
206
2006
c Newton José Vieira Lógica aplicada à computação
2. q(b, x) ∨ q(c, x)
3. p(a)
4. ¬q(a, x)
é insatisfatı́vel, pois o conjunto das instâncias básicas
1’. ¬p(a) ∨ q(a, f (b))
3’. p(a)
3”. p(a)
seria p(f (y)) ∨ ¬q(f (y)) (o umg utilizado foi {x/f (y)}).
Diz-se que dois literais têm sinais trocados se, e somente se, um é um átomo e o
outro é a negação de um átomo. Será utilizada a notação |L| para denotar o átomo
do literal L. Dois literais L1 e L2 são ditos complementares, se têm sinais trocados e
|L1 | = |L2 |.
A regra de resolução binária é aplicável a duas cláusulas, uma contendo um literal
L1 e outra contendo um literal L2 , de sinais trocados, e tais |L1 | e |L2 | sejam unificáveis.
Sejam então duas cláusulas C1 e C2 , contendo, respectivamente, literais L1 e L2 , de
sinais trocados, e tais que |L1 | e |L2 | sejam unificáveis. O resultado da aplicação da
regra de resolução binária é uma cláusula (C1 − L1 )σ ∪ (C2 − L2 )σ, em que σ é um umg
de |L1 | e |L2 |. Tal cláusula é denominada um resolvente binário de C1 e C2 .
• Um resolvente de p1 (a, y) ∨ p2 (y) e ¬p1 (x, b) ∨ p2 (b) é p2 (b) (lembre-se que uma
cláusula é um conjunto).
Seja α a sentença:
3. ∀x(médico(x) → ¬quacre(x))
(nenhum médico é quacre)
1.1 paciente(a)
3.1 médico(b)
3.2 quacre(b)
(a) Cláusulas puras: são aquelas cláusulas de entrada que contêm algum literal L tal
que nenhuma outra cláusula contém um literal com o mesmo sı́mbolo predicativo
de L e sinal contrário. Evidentemente, tais cláusulas não devem ser usadas como
premissas.
(b) Cláusulas tautológicas: aquelas que têm dois literais complementares. Evidente-
mente, se uma tautologia for eliminada de um conjunto insatisfatı́vel, ele continua
insatisfatı́vel.
Newton José Vieira Capı́tulo 3: Lógica de predicados 209
(c) Cláusulas subjugadas: diz-se que uma cláusula C1 subjuga uma cláusula C2 se, e
somente se, existe uma substituição σ tal que C1 σ ⊆ C2 (C2 , no caso, é a cláusula
subjugada). Na presença de C1 , C2 é redundante, e pode ser desconsiderada.
Exemplo 136 O seguinte exemplo mostra, passo a passo, como o algoritmo determina
que a cláusula ¬p(x) ∨ q(f (x), a) subjuga a cláusula ¬p(h(y)) ∨ q(f (h(y)), a) ∨ ¬p(z):
∆2 = {⊥}
É, em geral, muito caro verificar se uma cláusula subjuga outra a cada passo de
inferência. Assim, pode ser interessante implementar uma forma simplificada de sub-
jugação; por exemplo, verificar apenas se uma cláusula é subconjunto de outra.
Um conjunto de cláusulas de entrada determina um espaço de pesquisa: o con-
junto de todos os resolventes que podem ser gerados a partir do mesmo. O que um
procedimento de prova faz é, em certo sentido, “navegar” nesse espaço em busca da
cláusula vazia. Tal espaço pode ser (e usualmente é) extremamente redundante, no
sentido de que existem muitos caminhos diferentes para se obter a mesma cláusula, e
também no sentido de que, para efeitos de procura pela cláusula vazia, a geração de
certos resolventes é inócua. Os métodos de eliminação apresentados acima procuram
210
2006
c Newton José Vieira Lógica aplicada à computação
minorar tal problema, mas ficam longe de prover uma solução satisfatória. A seguir,
são apresentados alguns métodos mais extremados de redução do espaço de pesquisa
que, sob certas condições, não comprometem a completude. Tais métodos têm como
caracterı́stica comum o fato de que impõem restrições quanto às deduções permissı́veis;
permitindo apenas um certo subconjunto das provas possı́veis de serem obtidas, é que
eles reduzem o espaço de pesquisa.
O método de redução do espaço de pesquisa mais importante é, talvez, o do conjunto
de suporte, já mencionado na Seção 2.8.5. Além de reduzı́-lo drasticamente, ele é
compatı́vel com outros métodos. Seja B um conjunto de cláusulas de entrada. Um
conjunto S tal que S ⊆ B é denominado um conjunto de suporte de B se, e somente
se, B − S é satisfatı́vel. Uma dedução por conjunto de suporte é uma dedução na qual,
para toda aplicação da regra de resolução, as premissas não estão ambas em C − B.
Pode-se demonstrar que um conjunto é insatisfatı́vel se, e somente se, existe uma
dedução por conjunto de suporte da cláusula vazia. Ou seja, um procedimento de prova
continua refutacionalmente completo, caso só admita deduções por conjunto de suporte.
Como escolher um conjunto de suporte S, a partir de um conjunto de cláusulas de
entrada B? Duas escolhas óbvias são:
2. ac(x, x)
(todo objeto é acessı́vel a partir dele mesmo)
3. adj(a, b)
4. adj(b, e)
5. adj(c, d)
6. adj(a, c)
7. ¬ac(a, d)
Newton José Vieira Capı́tulo 3: Lógica de predicados 211
Observe que a cláusula 1 é recursiva; por causa disto, o conjunto das cláusulas 1 a
6 tem uma infinidade de consequências. Permitindo resoluções entre tais cláusulas, o
procedimento poderia gerar resolventes que nada têm a ver com o que se quer provar,
como, por exemplo, ¬ac(x, b) ∨ ac(x, e) [1,4].
É evidente que poderá haver uma infinidade de resolventes, e que o provador poderá
se “perder”, mesmo utilizando a negação do teorema a ser provado como conjunto de
suporte pois, afinal, o problema da insatisfabilidade é indecidı́vel em geral. Pode-se
constatar isto facilmente analisando-se o Exemplo 137. Embora os resolventes 8 e 10,
como todos os outros, tenham a ver com a sentença a ser provada (eles mencionam
constantes que aparecem na sentença), eles podem ser resolvidos com a cláusula 1;
os resolventes produzidos também podem, e assim por diante. A coisa é pior ainda
quando a sentença a ser provada não segue da base de conhecimento; por exemplo,
ac(b, c). Assim, pode ser conveniente utilizar outros métodos de redução do espaço de
pesquisa combinados com este.
Como foi dito acima, este método só preserva completude quando o conjunto de
cláusulas de entrada, excluı́das as cláusulas do conjunto de suporte, é satisfatı́vel. As-
sim, se o conjunto das cláusulas correspondentes à negação da sentença a ser provada
for assumido como conjunto de suporte, e se o conjunto das cláusulas correspondentes
à base de conhecimento (hipóteses) for insatisfatı́vel, não há garantia de encontrar uma
refutação, porque a cláusula vazia pode ser obtenı́vel a partir apenas da base de conhec-
imento. Isto se deve ao fato de que se H é inconsistente, então H |= α para qualquer
sentença α. No entanto, esta falta de completude pode ser considerada uma virtude e
não um defeito, caso não se deseje que a introdução de informações inconsistentes na
base de conhecimento permita a dedução de qualquer sentença. Tem-se, no fundo, um
comportamento paraconsistente. Por exemplo, a partir da base de conhecimento:
1. p(a)
2. ¬p(a)
3. p(b)
C0 ◦ ◦ B0
C1 ◦ ◦ B1
Bi ∈ B
C2 ◦
.. ou Bi é Cj para algum j < i.
.
Cn−1 ◦ ◦ Bn−1
Cn ◦
1. ¬irmão(x, y) ∨ irmão(y, x)
2. irmão(Abel, Caim)
3. ¬irmão(Juca, Caim)
Seja C0 , . . . , Cn uma dedução linear a partir de B. Como já visto, Cn+1 deve obtida
resolvendo Cn com:
(a) alguma cláusula de B; ou
2. filho(Carlos, Pedro)
3. filho(Pedro, Marcos)
Seja a consulta “∃x neto(Carlos, x)?”. Negando e colocando em forma de cláusula:
4. ¬neto(Carlos, x)
Segue uma refutação:
5. ¬filho(Carlos, y) ∨ ¬filho(y, z) (4,1)
6. ¬filho(Pedro, z) (5,2)
7. ⊥ (6,3)
Observe que, ao resolver 6 com 3, a variável z foi substituı́da por Marcos. Se a consulta
for “determine x tal que neto(Carlos, x)”, a dedução acima poderia ser usada para
justificar a resposta “Marcos”. Em geral, para uma consulta do tipo
determine x1 , . . . , xn tais que α
em que x1 , . . . , xn são as variáveis livres de α, basta considerar tais variáveis como exis-
tencialmente quantificadas; o processo de resolução, ao mesmo tempo que encontra uma
refutação para ¬∃x1 · · · ∃xn α, encontra valores (termos) para x1 , . . . , xn . Para extrair
tais valores, uma possibilidade é anexar um literal especial da forma resp(x1 , . . . , xn ) às
cláusulas correspondentes a ¬∃x1 · · · ∃xn α. Ao invés de pesquisar pela cláusula vazia,
pesquisa-se agora por uma cláusula que só tenha literais com o sı́mbolo predicativo
resp. O exemplo acima ficaria assim:
4’. ¬neto(Carlos, z) ∨ resp(z)
5’. ¬filho(Carlos, y) ∨ ¬filho(y, z) ∨ resp(z) (4’,1)
6’. ¬filho(Pedro, z) ∨ resp(z) (5’,2)
7’. resp(Marcos) (6’,3)
Algumas vezes é possı́vel determinar que ∃xα sem determinar com precisão um valor
para x tal que α. Neste caso, a cláusula final da refutação contém mais de um literal;
a resposta, no caso, é disjuntiva, contendo uma alternativa para cada literal resposta.
Seja, por exemplo, o conjunto de cláusulas:
1. ¬adulto(x) ∨ tomar(x, R1 )
2. adulto(x) ∨ tomar(x, R2 )
Seja o problema de determinar z tal que tomar(Manoel, z). Transformando a sentença
¬∃ztomar(Manoel, z) em cláusulas e anexando o literal resposta, tem-se:
3. ¬tomar(Manoel, z) ∨ resp(z)
Segue uma refutação:
4. ¬adulto(Manoel) ∨ resp(R1 ) (3,1)
5. tomar(Manoel, R2 ) ∨ resp(R1 ) (4,2)
6. resp(R1 ) ∨ resp(R2 ) (5,3)
Logo, a resposta é “R1 ou R2 ”, ou seja, “tomar(Manoel, R1 ) ou tomar(Manoel, R2 )”.
(É interessante observar que respostas disjuntivas aparecem quando há resolução entre
resolventes.)
Newton José Vieira Capı́tulo 3: Lógica de predicados 215
Exercı́cios
1. Encontre um conjunto de cláusulas para cada uma das sentenças:
(1) p ∨ q ∨ r
(2) p ∨ q ∨ ¬r
(3) p ∨ ¬q ∨ r
(4) p ∨ ¬q ∨ ¬r
(5) ¬p ∨ q ∨ r
(6) ¬p ∨ q ∨ ¬r
(7) ¬p ∨ ¬q ∨ r
(8) ¬p ∨ ¬q ∨ ¬r
(1) d(x, x)
(2) ¬d(x, y) ∨ ¬d(y, z) ∨ d(x, z)
(3) p(x) ∨ d(g(x), x)
(4) p(x) ∨ m(e, g(x))
216
2006
c Newton José Vieira Lógica aplicada à computação
Utilizando resolução com extração de respostas, determine x e y tal que avo(x, y).
(a) Todos que entraram no paı́s e não eram VIPs foram revistados por um agente
da polı́cia federal.
(b) Paulo C. era contrabandista.
(c) Paulo C. entrou no paı́s.
(d) Paulo C. só foi revistado por contrabandistas.
(e) Nenhum contrabandista era VIP.
Utilizando resolução com extração de respostas, encontre uma pessoa que era,
ambos, contrabandista e agente da polı́cia federal.