SUBSTITUIÇÃO E UNIFICAÇÃO - dainf.ct.utfpr.edu.bradolfo/Disciplinas/LogicaParaComputacao... ·...

31
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

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

CASOS DE TESTE

Fonte: (ABE; SCALZITTI; SILVA FILHO, 2001, p.181)

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/