A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição.

Apresentações semelhantes


Apresentação em tema: "Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição."— Transcrição da apresentação:

1 Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição de Substituições A resolução com cláusulas que contêm variáveis é similar à resolução proposicional mas requer a aplicação de substituições com o intuito de substituir certas variáveis por termos específicos. Seja a substituição  = {X 1 /t 1, X 2 /t 2,..., X n /t n } Como já vimos, uma aplicação de  numa fórmula W é a substituição de todas as ocorrências livres da variável X i pelo termo t i. O resultado é chamado de instância da substituição e é denotado por W .

2 Elsa Carvalho 187 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição de Substituições Considere-se a fórmula W = gosta(X, Y) se aplicarmos a W a substituição  1 = {X/ana, Y/luis} temos a instância da substituição W  1= gosta(ana, luis). se aplicarmos a W a substituição  2 = {X/Y, Y/luis} temos a instância da substituição W  2= gosta(Y, luis) e aplicando uma vez mais  2 ficamos com (W  2)  2 = gosta(luis, luis).

3 Elsa Carvalho 188 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição de Substituições Nem todas as substituições são válidas. Para que o sejam devem respeitar as seguintes propriedades: Funcionalidade: {U 1 /t 1,..., U m /t m } todas as variáveis U i devem ser distintas. Por exemplo {X/ana, Y/luis, Y/miguel} não é uma substituição válida porque não respeita a propriedade acima. Idempotência: para qualquer fórmula W deve ter-se que W  = (W  )  ou seja, o resultado de aplicar a substituição uma vez deve ser igual ao resultado de aplicá-la n vezes (com n>1) Assim a substituição  2 não é considerada válida.

4 Elsa Carvalho 189 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição de Substituições A operação mais importante entre substituições é a composição. Suponhamos que temos duas substituições válidas:  1 = {U 1 /t 1,..., U m /t m }  2 = {V 1 /s 1,..., V n /s n } a composição de  1 com  2 é denotada pela expressão  1   2 e é definida como {U 1 /t 1  2,..., U m /t m  2}  {V j /s j | V j  {U 1,..., U m }} ou seja, aplicar  1 a W representa substituir todas as suas variáveis livres U i pelos termos t i resultando na instância W  1. Depois restam apenas duas formas da substituição  2 alterar W  1: substituir todas as variáveis V j introduzidas por  1 substituir todas as variáveis V j que não foram substituídas por  1

5 Elsa Carvalho 190 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição de Substituições Nem todas as composições são completamente válidas uma vez que nem todas respeitam a propriedade da idempotência. No entanto possuem todas as seguintes propriedades:  1   2 é funcional W(  1   2 ) = (W  1)  2 para qq fórmula W (  1   2)   3 =  1  (  2   3)associatividade de  Mas a composição não é, em geral, comutativa. Prove que a composição não é comutativa utilizando a fórmula W = p(U1, g(V1), V2) e as substituições  1 = {U1/ f(V1)}  2 = {V1/a, V2/b, U1/c}

6 Elsa Carvalho 191 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados De forma a utilizarmos a resolução para as cláusulas da lógica de predicados teremos de suplementar essa regra de inferência com o uso implícito de outra regra conhecida como instanciação universal: (  X)W(X)├ (  Y 1 )... (  Y n )W(X){X/t)} para qq termo t onde Y 1,... e Y n são as variáveis, caso existam, que ocorrem em t

7 Elsa Carvalho 192 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados Temos as seguintes cláusulas que estão implicitamente universalmente quantificadas  gosta(luis, Y)  feminino(Y)  tia(Y,Z) gosta(X, mae)  ama(X, mae) a resolução actua instanciando em primeiro lugar ambas as cláusulas através da substituição  = {Y/mae, X/luis} de forma a tornar os literais ‘gosta’ complementares:  gosta(luis, mae)  feminino(mae)  tia(mae,Z) gosta(luis, mae)  ama(luis, mae) antes de continuar exactamente como no caso proposicional para obter o resolvente  ama(luis, mae)  feminino(mae)  tia(mae,Z)

8 Elsa Carvalho 193 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados Resumindo, se tivermos A  A 1  …  A m C  A  C 1  …  C n a resolução procura um literal no antecedente da implicação e o mesmo literal no consequente de outra cláusula e, com um passo da resolução, obtemos C  A 1  …  A m  C 1  …  C n

9 Elsa Carvalho 194 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados Um literal positivo é representado como A  (que é o mesmo que dizer A  true) Um literal negativo é representado como  A(que é o mesmo que dizer false  A) Resolução chã para um conjunto C de cláusulas é a aplicação da resolução proposicional a um conjunto de instanciações chãs das cláusulas de C.

10 Elsa Carvalho 195 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados Um unificador para as fórmulas W1 e W2 é a substituição  tal que W1  = W2 . Um unificador  para duas fórmulas W1 e W2 diz-se um unificador mais geral se e só se, para todo o unificador  para as fórmulas existe uma substituição  tal que  =  ° . Pode-se estender a noção de unificador a um conjunto de fórmulas. Um conjunto de fórmulas diz-se unificável se e só se admite um unificador.

11 Elsa Carvalho 196 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados  = {X/a, Y/a} é um unificador para p(X) e p(Y), mas não é o unificador mais geral. O unificador mais geral é  = {X/Y} Ou seja  =  {Y/a} Mostrar que  =  ° , se  = {Y/a} As fórmulas p(X, f(Y)) e p(f(U), g(Z)) não são unificáveis.

12 Elsa Carvalho 197 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados Mudança (ou renomeação) de variáveis É uma substituição que substitui apenas variáveis por variáveis. Por exemplo, dadas as fórmulas {p(f(Z), X), p(Y,g(U))} temos que uma mudança de variáveis é:  = {Z/Z1, X/X1, Y/Y1, U/U1}, donde obteríamos p(f(Z1), X1) e p(Y1, g(U1)) Um unificador mais geral é único a menos de uma mudança de variáveis. Quer dizer, se  e  são unificadores mais gerais para um conjunto de fórmulas, existe uma mudança de variáveis  tal que  =  ° .

13 Elsa Carvalho 198 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução em Lógica de Predicados Dadas as fórmulas {p(f(Z), X), p(Y,g(U))} temos os dois u.m.g.  = {X/g(U), Y/f(Z)}  = {X/g(U1), Y/f(Z1), Z/Z1, U/U1} A mudança de variáveis  apresentada no exemplo anterior valida o que foi declarado, ou seja  =  ° 

14 Elsa Carvalho 199 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Unificação Todo o conjunto unificável admite um unificador mais geral. Prova Existe um algoritmo que indica se um dado conjunto é unificável e, no caso afirmativo, retorna o unificador mais geral. Esse algoritmo é chamado de unificação. O algoritmo usa uma pilha S na qual guardamos pares de termos a unificar, e que iniciamos com os pares. Recorre-se ainda a uma variável booleana para indicar a impossibilidade de unificar as duas expressões. O unificador mais geral  é construído progressivamente começando com a identidade.


Carregar ppt "Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição."

Apresentações semelhantes


Anúncios Google