SUBSTITUIÇÃO E UNIFICAÇÃO - dainf.ct.utfpr.edu.bradolfo/Disciplinas/LogicaParaComputacao... ·...
-
Upload
truongquynh -
Category
Documents
-
view
214 -
download
0
Transcript of SUBSTITUIÇÃO E UNIFICAÇÃO - dainf.ct.utfpr.edu.bradolfo/Disciplinas/LogicaParaComputacao... ·...
SUBSTITUIÇÃO E UNIFICAÇÃO
Slides elaborados por Felipe Lisboa e Victor Thomé Perales, acadêmicos do curso de Engenharia de Computação da UTFPR – Campus Curitiba
Corrigido e completado por Adolfo Neto (DAINF – UTFPR)
Versão atualizada em 17/05/2010
RoteiroRoteiro
Substituição Instância de uma Substituição Composição de Substituições Substituição Mais Geral
Unificação Unificador Mais Geral (umg) Algoritmo de Unificação
Uma substituição α é um conjunto finito da forma:
{ v1/t1, v2/t2, ..., vn/tn }
onde: vi é uma variável;
ti é um termo distinto de vi;
as variáveis v1, ..., vn são distintas.
Substituição - DefiniçãoSubstituição - Definição
Cada elemento vi/ti é chamado de ligação.
α é chamada de: Substituição base: se ti são todos termos
que não contêm variáveis; Substituição pura de variáveis: se os
termos ti são todos variáveis;
Substituição - DefiniçãoSubstituição - Definição
Convenções
● Predicados: p, q, r● Funções: f, g, h● Variáveis: x, y, z, u, v, w● Constantes: a, b, c, d, e
Exemplos de substituições: α1 = { x1/a, x2/x1}
α2 = { x2/b, y/x2, z/x1}
α3 = { x/y, z/y}
α4 = { x/a, y/b, z/c }
α5 = { x3/x2, x4/y2, x5/x3 }
α6 = { }
Substituição - DefiniçãoSubstituição - Definição
Seja β = { v1/t1, ..., vn/tn } uma substituição e E uma expressão.
Então a instância de E por β representada por Eβ é a expressão obtida de E substituindo simultaneamente cada ocorrência da variável vi em E pelo termo ti (i=1,2,...,n).
Instância de uma SubstituiçãoInstância de uma Substituição
Exemplos:Considere a expressão E1 ≡ p(x,y)
e a substituição β1 = { x/a, y/b}.
Temos que: E1β1 ≡ p(a,b)
Instância de uma SubstituiçãoInstância de uma Substituição
Exemplos:Considere a expressão E2 ≡ p(x,y) v q(y,z,x)
e a substituição β2 = { x/a, y/x, z/b}.
Temos que: E2β2 ≡ p(a,x) v q(x,b,a)
Instância de uma SubstituiçãoInstância de uma Substituição
Sejam duas substituições α={u1/s1,...,um/sm} e β={v1/t1,...,vn/tn}.
A composição αβ de α e β é a substituição obtida pelo conjunto: {u1/s1β , ..., um/smβ , v1/t1, ..., vn/tn}
onde deve-se retirar ligações do tipo:1. ui/siβ para as quais ui ≡ siβ e
2. vj/tj para as quais vj ∈ {u1,...,um}.
Composição de substituiçõesComposição de substituições
Exemplo: Considere as substituições α={x/y, z/x2} e
β={y/c, x2/d}.
Temos que: αβ = {x/yβ , z/x2β , y/c, x2/d}
αβ = {x/c, z/d, y/c, x2/d}
Composição de substituiçõesComposição de substituições
Substituição mais geralSubstituição mais geral
Sejam duas substituições α e β . Diz-se que α é mais geral que β se existir uma substituição γ tal que
β= αγ
Substituição mais geralSubstituição mais geral
Exemplo: Considere as substituições α= {x/f(g(x,y)),y/g(z,b)} e
β= {x/f(g(a,h(z))), y/g(h(x),b),z/h(x)}.Seja γ = {x/a,y/h(z),z/h(x)}. Assim, temos que:
αγ = {x/f(g(a,h(z))),y/g(h(x),b),z/h(x)} Como β= αγ , então pode-se concluir
que α é uma substituição mais geral que β .
Sejam duas expressões E e F e uma substituição α.
Se ocorrer que Eα ≡ Fα então se diz que a substituição α é um unificador de E e F.
Também, neste caso, pode-se dizer que E e F são unificáveis.
UnificaçãoUnificação
Exemplo : Sejam as expressões E ≡ q(x,y,a) e
F ≡ q(z,w,a) e a substituição α = {x/d, y/e, z/d, w/e}. Aplicando a substituição em E e F, temos
Eα ≡ q(d,e,a) e Fα ≡ q(d,e,a) Como Eα ≡ Fα, então α é um unificador
de E e F.
UnificaçãoUnificação
Sejam duas expressões E e F e um unificador α de E e F.
Diz-se que α é um unificador mais geral (umg) de E e F se for mais geral do que qualquer outro unificador de E e F.
Unificador mais geral(u.m.g.)Unificador mais geral(u.m.g.)
Para se encontrar um umg (caso exista) para duas expressões E e F deve-se. Indicar uma substituição α tal que Eα ≡ Fα
(unificador); Provar que para qualquer outra
substituição β , α é mais geral que β (umg).
Unificador mais geral(u.m.g.)Unificador mais geral(u.m.g.)
Contudo, dependendo da substituição, o segundo item na busca pelo umg pode ser bastante trabalhoso!
Felizmente existe um algoritmo de unificação que, além de dizer se duas fórmulas atômicas têm ou não um umg, em caso afirmativo, este algoritmo ainda fornece o umg procurado.
Unificador mais geral(u.m.g.)Unificador mais geral(u.m.g.)
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176)
Entrada: par de fórmulas atômicas (A,B).
Saída: “não”, caso não seja possível obter um
umg para A e B; “sim”, caso seja possível obter um umg
para A e B, fornecendo neste caso o umg encontrado para A e B.
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Passo 1: Se o símbolo de predicado de A for
diferente do símbolo de predicado de B então emitir “não” como saída e parar senão criar uma coleção P constituída por pares de termos (ti,si), i={1,2,...,n}, obtidos de A ≡ p(t1,...,tn) e B ≡ p(s1,...,sn).
Obs.: uma vez que o símbolo de predicado de A e B são o mesmo, suas aridades são iguais
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Passo 2: Escolher aleatoriamente um par (C,D)
de P (se P estiver vazio, ir para o Passo 9) Passo 3:
Se C ≡ f(s1,...,sn) e D ≡ f(t1,...,tn) Então remover o par (C,D) de P e incluir os pares (s1,t1),...,(sn,tn) em P e voltar ao Passo 2 Senão vá para o próximo passo.
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Passo 4: Se C ≡ f(s1,...,sn) e D ≡ g(t1,...,tn)
Então emitir “não” como saída e parar Senão vá para o próximo passo.
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Passo 5: Se C ≡ D ≡ x (x é uma variável) ou
C ≡ D ≡ c (c é uma constante) Então remover o par (C,D) de P e voltar ao Passo 2, e
Passo 6: Se C ≡ c (constante) e D ≡ d (constante)
Então emitir “não” como saída e parar Senão vá para o próximo passo.
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Passo 7: Se C ≡ t (t é um termo que não é variável)
e D ≡ x (x é uma variável) Então remover o par (C,D) de P e incluir o par (D,C) em P e voltar ao Passo 2 Senão vá para o próximo passo.
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Algoritmo de UnificaçãoAlgoritmo de Unificação
Passo 8: Se C ≡ x (x é uma variável) e D ≡ t (t é um
termo) e x ≠ t e x ocorre em algum outro par de P
Então Se x ocorrer em t Então emitir “não” e parar Senão substituir cada x pelo termo t em todos os
outros pares de P e voltar ao Passo 2 Senão vá para o próximo passo.
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Passo 9: Se nenhum passo anterior puder ser
executado Então emitir “sim”, retornar o umg de A e B
dado pela substituição composta pelos pares (C,D) pertencentes ao conjunto P e parar com sucesso
Senão voltar ao Passo 2.
Algoritmo de UnificaçãoAlgoritmo de Unificação
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
Algoritmo de UnificaçãoAlgoritmo de Unificação
Exemplo: Considere A ≡ p(x,y,z) e B ≡ q(x,y,z) Passo 1: Como o símbolo de predicado de
A é diferente do símbolo de predicado de B então o algoritmo de unificação emite “não” (pois não é possível unificar A e B) e pára.
Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.176-177)
CASOS DE TESTE
● p(x) q(y,z) NÃO● p(f(x)) p(g(x)) NÃO● p(f(x)) p(g(y,z)) NÃO● p(c) p(d) NÃO● p(f(c)) p(f(d)) NÃO● p(f(x,c)) p(f(y,d)) NÃO● p(x) p(f(x)) NÃO● p(x) p(a) {(x,a)}● p(x) p(x) {}● Sempre testar <a,b> e <b,a>
CASOS DE TESTE
● p(x) p(y) {(x,y)}● p(y) p(x) {(y,x)}● p(x,a) p(f(y),z) {(x,f(y)),(z,a)}● p(f(g(x)) p(f(g(h(i(a))))) {(x,h(i(a)))}● p(x,y,z) p(u,v,w) {(x,u),(y,v),(z,w)}● p(x,g(a,y)) p(y,g(a,x)) {(x,y)}
Referências BibliográficasReferências Bibliográficas
ABE, Jair Minoro; SCALZITTI, Alexandre; SILVA FILHO, João Inácio da. Introdução à lógica para a ciência da computação. São Paulo: Arte & Ciência, 2001. 247 p. ISBN 85-7473-045-9
FITTING, Melvin. First-Order Logic and Automated Theorem Proving. Springer, 2006. – Site do autor do livro: http://comet.lehman.cuny.edu/fitting/