Você está na página 1de 36

Forma normal prenex

Uma fórmula está na forma normal prenex:

• se cada variável desta fórmula cai no escopo de algum quantificador

• todos os quantificadores estão juntos precedendo uma formula livre de


quantificadores.
tifi d

Todas as fórmulas de primeira ordem são logicamente equivalentes a


alguma
l fórmula
fó l na forma
f normall prenex.
Exercício

Ache a forma normal prenex das fórmulas:


Forma normal clausal
a) Coloque a fórmula na forma normal prenex.

b)) Realize o fecho universal da fórmula.

c) Skolemize - substitua as variáveis existenciais por constantes de Skolem ou


ç
funções de Skolem de variáveis universais, de fora ppara dentro. Faça
ç as
seguintes substituições:

d) Remova os quantificadores universais.

e) Coloque a fórmula na forma normal conjuntiva.

f) Coloque a sentença resultante na forma de um conjunto de cláusulas,


substituindo por {C1,...,Cn}.
Unificação

Aplicações:

a) Em Prolog

b) P
Para efetuar
f t provas por resolução
l ã
Unificação

Definição de unificador
Seja E = {e1, ..., en} um conjunto de expressões simples e
 uma substituição. é um unificador de E sse e1 = ... = en

Exercícios
Q(a,x,f(x))
( , , ( )) e Q(a,y,y)
( ,y,y) são unificáveis ?

Q(x,y,z) e Q(u,h(v,v),u) são unificáveis ?


Definição de unificador mais geral
 é um unificador mais geral (u.m.g.) de E sse  é um
unificador de E e, para todo unificador  de E, existe
um substituição
ç v tal qque  =  o v.

Exercício
Ache o unificador mais geral do conjunto de clausulas:

E = {P(a, x, f(g(y))), P(z, h(z, w), f(w)), P(a, h(a, g(b)),


f(g(v))}

Definição de conjunto de discórdia.


É o subtermo mais a esquerda no qual as fórmulas
atômicas diferem.
Exemplos de conjunto de discordia

Conjuntos de expresões Conjunto de Discórdia

{P(a, x, f(g(y))), P(z,h(z, w), f(w)} {a, z}

{P(a, x, f(g(y))), P(a,h(a, w), f(w)} {x, h(a, w)}

{P(a, h(a, w), f(g(y))), P(a,h(a, w), f(w)} { g(y), w}


Algoritmo de Unificação

Entrada: um conjunto E de expressões simples


Saída: um u.m.g.  de E, se E for unificável
NÃO, se E não for unificável
begin
 := ;
W := E;
D := conjunto
conj nto de discórdia de W;W
while |W| > 1 e D satisfaz o teste de ocorrência do
begin
selecione uma variável x e um termo t em D
tais que x não ocorre em t;
 :=  o {x/t};
W ::= W{x/t};
D := conjunto de discórdia de W;
end;
if ||W|| = 1
then return 
else return ‘NÃO’
end.
Exercícios

Aplique
A li o algoritmo
l it d
de unificação
ifi ã para os conjuntos
j t
abaixo:

F = {P(a, x, f(g(y))), P(z, h(z, w), f(w)), P(f(z), h(a, g(b)), f(g(v))}

G = {Q(f(a), g(x)), Q(y, y)}


Prova
o a po
por resolução
eso ução para
pa a o
Cálculo proposicional

Literal: um literal é um símbolo proposicional ou sua


negação Ex.:
negação. A B ,  A,
Ex : A, A  B,
B C

Literal complementar: dois literais são complementares


se um é a negação do outro. Ex.: B e  B

Cláusula : uma cláusula é uma disjunção de literais. Ex.:


B  A , A  B   C
Cálculo p
proposicional
p (cont)
( )

Forma clausal : dada uma fórmula  , a forma clausal


associada a  é uma fórmula equivalente c que é
uma conjunção de cláusulas.

Ex.:  : ((A  B)C) c : (A  B)   C

Representação por conjuntos: uma cláusula pode ser


representada pelo conjunto de seus literais. Uma
fórmula na forma clausal pode ser representada pelo
conjunto de suas cláusulas.
cláusulas

Ex.: {{A,B},{
{{ , },{ C}}
}}
Resolvente no cálculo proposicional
p p

Se C1 e C2 são cláusulas com literais complementares


p
A e  A respectivamente, o resolvente de C1 e C2
Res(C1,C2) é definido por:

C = (C1 - A)  (C2 - { A})

Se Res(C1,C2) = { } tem-se um resolvente vazio ou trivial

Ex.: Dados C1= {P,  Q,R} e C2 = { P,R},


Res(C1,C2) = { Q,R}
Expansão por resolução

Seja Г um conjunto de cláusulas. Uma expansão


por resolução em Г é uma seqüência de
fórmulas C1,C2,...,Cn onde para todo i tal que
1≤i≤n:

• Ci pertence a Г ou

•Ci corresponde a Res(Cj,Ck), onde j<i , k<i.


Exemplo de expansão por resolução

Seja Г = {{ P,Q} {P,R} {P,  Q}, { Q,  R}}


Uma expansão por resolução sobre Г é indicada a seguir
  P,Q
2 P,
2. P R
3. P,  Q
  Q,  R

1. Q,R <----- Res(.1,.2)


2. P,R <----- Res(.3,.5)
( )
3. Q,R <----- Res(.1,.6)
4. R,  R <----- Res(.4,.7)
obs: não é inconsistente pois para v(P)=v(Q)=1, v( R) =0
e v(P)=v(Q)=0, v(R) =1 a clausula é verdadeira.
Expansão fechada por resolução
Uma expansão por resolução é fechada se ela contem a
cláusula vazia.

Prova por resolução de ⊢  onde  uma fórmula


Uma p prova p ç de  é uma expansão
por resolução p p
por
resolução fechada da forma clausal de  
Dizemos que  é um teorema no sistema de resolução.

Conseqüência lógica no sistema de resolução Г ⊢ 


Di
Dizemos que  é uma conseqüência
üê i ló lógica
i no sistema
i t d
de
resolução de Г se existe n}  Г e uma prova por
resolução de n →.
Obs: Uma prova por resolução de (n )→é uma
expansão fechada por resolução da forma clausal de
 (n →, i.e. (n 

Exercício 1 (por resolução)


Provar por resolução que (AB) (AB) é um teorema

Exercício 2 - idem
Provar por resolução que {A,(A  B)} ⊢ B
Correção e Completude

O sistema de resolução é correto

O sistema de resolução é completo


Resolvente binário na lógica de 1ª ordem

Se C1 e C2 são cláusulas com literais L’ e L’’, resp, de sinais


t e  é um umg ((unificador
opostos ifi d mais i gerall ) dde { |L’|
|L’|, |L’’|}
|L’’|},
então derive a cláusula:

C = (C1 - L’)  (C2  - L’’)

Diz-se que C é um resolvente binário de C1 e C2

Exemplo
C1 : P(a), P(x) C2 : P(y), P(z)

Res(C1, C2) = P(x), P(z) Res(C1, C2) = P(a), P(y)


Exemplo (continuação)

C1 : P(a), P(x) C2 : P(y), P(z)

Temos que {P(a)P(x), P(y) P(z)} é insatisfatível pois


{x(P(x)  P(a),yz(P(y)  P(z))} é insatisfatível

1. P(a), P(x)
2. P(y), P(z)
3. P(x), P(z) 1 e 2 [a/y]
4
4. P(z) 2 e 3 [x/y]
5. P(x) 1 e 4 [a/z]
6. [ ] 4 e 5 [a/z]
Fator
Se dois ou mais literais (com mesmo sinal) de clausula C
têm u.m.g  , então C é um fator de C.

C1 : P(x), P(f(y)), R(g(y))


C2 : P(f(g(a))),
P(f(g(a))) Q(b)

P(f(y)),
( (y)) R(g(y))
(g(y)) é um fator de C1  = [[f(y)/x]
(y) ]

1. P(x), P(f(y)), R(g(y))


1.1 P(f(y)), R(g(y)) fator de 1 [f(y)/x]
2. P(f(g(a))), Q(b)
3
3. R(
R(g(g(a))),
( ( ))) Q(b) 1 1 e 2 [[g(a)/y]
1.1 ( )/ ]
Exemplo
C1 : P(x) C2 :  P(f(x))

As clausulas não são unificaveis.

P(x)  P(f(x)) é insatisfatível pois { xP(x) ,


Temos que { P(x),
x P(f(x)) } é insatisfatível

1. P(x),
2.  P(f(y))
3. [] 4 e 5 [f(y)/x]

L
Logo as clausulas
l l d deverão
ã conter
t variáveis
iá i didistintas.
ti t
R-dedução
Seja S um conjunto de cláusulas (com variáveis distintas) e
C uma cláusula. Uma R-dedução de C a partir de S é uma
seqüência

1

n
tal que:
1 Para todo i  [1,n]:
1. [1 n]:
i  S, ou
i é um fator de i-1
i 1 ou
i é um resolvente de j e k para algum j, k < i.
n = C;

Equivalente a expansão por resolução no calculo proposicional


Refutação a partir de S no sistema formal de resolução
Uma refutação a partir de S no sistema formal de resolução,
ou, simplesmente, uma R-refutação a partir de S, é uma R-
dedução de  a partir de S.
(
(equivalente
i l t a expansão
ã fechada
f h d por resolução
l ã no cálculo
ál l proposicional)
i i l)

Prova por resolução de ⊢  onde  uma sentença


U
Uma prova por resolução
l ã ded  é uma R-refutação
R f t ã a partirti
de uma forma clausal de  
Dizemos qque  é um teorema no sistema de resolução.
ç
Prove por resolução que:
{x(A(x)  B(x)),
B(x)) x(A(x)  B(x)} ⊢ xA(x)

Negação de xA(x) : xA(x), com repr. clausal {A(c)}


A forma clausal de x(A(x)  B(x)) é {A(x) B(x)}
A forma clausal de x(A(x)  B(x) é {A(y) B(y)}

Aplicando resolução em S={A(x) B(x), A(y) B(y), A(c)}


1: A(x)
A(x) B(x),
B(x)
2: A(y) B(y)
3: A(c)
4: B(c) por 2,3
5: A(c) por 4,1
6: [ ] por 3,5
Exemplo 1
Utilizando a resolução, responda a consulta.

chama(a, b)
usa(b, e)
depende(x y) chama(x,
depende(x, chama(x y)
depende(x, y) usa(x, y)
depende(x y) depende(x,
depende(x, depende(x z) depende(z,
depende(z y)

consulta ao pprograma
g : depende(a,
p ( w))
(intuitivamente : Quem depende de a?)
1.
1 chama(a, b)
chama(a
2. usa(b, e)
3. depende(x, y) chama(x, y)
4. depende(x, y) usa(x, y)
5. depende(x, y) depende(x, z) depende(z, y)

  depende(a,
depende(a w)
7. depende(a, b) por 1 e 3 [a/x][b/y]
8. [] por
p 6 e 7 [b/w]
[ ]

Resposta: w=b depende(a, b)

C |- depende(a, w) [b/w], i.e. C |- depende(a, b)


1.
1 chama(a, b)
chama(a
2. usa(b, e)
3. depende(x, y) chama(x, y)
4
4. d d ( y)) usa(x,
depende(x, ( y))
5. depende(x, y) depende(x, z) depende(z, y)
6.  depende(a, w)
7. depende(a, b) por 1 e 3 [a/x][b/y]
8. depende(b, e) por 2 e 4 [b/x][e/y]
9
9. depende(x e) depende(x,
depende(x, depende(x b) por 5 e 7 [b/z][e/y]
10. depende(a, e) por 7 e 9 [a/x]
11. [] por 6 e 9 [e/w]

Resposta: w=e depende(a, e)

C |- depende(a, w) [e/w], i.e. C |- depende(e, b)


Exemplo 2

Utilizando a resolução, responda a consulta.

chama(a, b)
usa(a,
( c))

Consulta : chama(a, x) usa(a, y) ( intuitivamente : Quem a


chama ou usa?))

Q: chama(a, x) usa(a, y)

Resposta computada: [b/x, c/y] é correta pois,


C |- (chama(a, x) usa(b,y) ) [b/x, c/y] .
Equivalentemente, acrescentando um predicado resposta a
cada cláusula de Q temos:

chama(a, x)
usa(a,
( y))

Aplicando resolução em C  {Q}:


1: chama(a, b) usa(a, c)
2: chama(a, x)
3: usa(a, y)
4: usa (a, c) por 1 e 2 [b/x]
5: [] por 3 e 4 [c/y]

Resposta computada: [b/x] e [c/y] .

Você também pode gostar