Aplicao e Composio de Substituies A resoluo com
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, . . . , Xn/tn} Como já vimos, uma aplicação de numa fórmula W é a substituição de todas as ocorrências livres da variável Xi pelo termo ti. O resultado é chamado de instância da substituição e é denotado por W. Universidade da Madeira Departamento de Matemática Elsa Carvalho 186 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). Universidade da Madeira Departamento de Matemática Elsa Carvalho 187 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, . . . , Um/tm} todas as variáveis Ui 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. Universidade da Madeira Departamento de Matemática Elsa Carvalho 188 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, . . . , Um/tm} 2 = {V 1/s 1, . . . , Vn/sn} a composição de 1 com 2 é denotada pela expressão 1 2 e é definida como {U 1/t 1 2, . . . , Um/tm 2} {Vj/sj | Vj {U 1, . . . , Um}} ou seja, aplicar 1 a W representa substituir todas as suas variáveis livres Ui pelos termos ti resultando na instância W 1. Depois restam apenas duas formas da substituição 2 alterar W 1: substituir todas as variáveis Vj introduzidas por 1 substituir todas as variáveis Vj que não foram substituídas por 1 Universidade da Madeira Departamento de Matemática Elsa Carvalho 189 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 ( 1 2) 3 = 1 ( 2 3) para qq fórmula W 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(U 1, g(V 1), V 2) e as substituições 1 = {U 1/ f(V 1)} 2 = {V 1/a, V 2/b, U 1/c} Universidade da Madeira Departamento de Matemática Elsa Carvalho 190 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). . . ( Yn)W(X){X/t)} para qq termo t onde Y 1, . . . e Yn são as variáveis, caso existam, que ocorrem em t Universidade da Madeira Departamento de Matemática Elsa Carvalho 191 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) Universidade da Madeira Departamento de Matemática Elsa Carvalho 192 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 … Am 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 Universidade da Madeira Departamento de Matemática Elsa Carvalho 193 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. Universidade da Madeira Departamento de Matemática Elsa Carvalho 194 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 W 1 e W 2 é a substituição tal que W 1 = W 2. Um unificador para duas fórmulas W 1 e W 2 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. Universidade da Madeira Departamento de Matemática Elsa Carvalho 195 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. Universidade da Madeira Departamento de Matemática Elsa Carvalho 196 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/Z 1, X/X 1, Y/Y 1, U/U 1}, donde obteríamos p(f(Z 1), X 1) e p(Y 1, g(U 1)) 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 = °. Universidade da Madeira Departamento de Matemática Elsa Carvalho 197 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(U 1), Y/f(Z 1), Z/Z 1, U/U 1} A mudança de variáveis apresentada no exemplo anterior valida o que foi declarado, ou seja = ° Universidade da Madeira Departamento de Matemática Elsa Carvalho 198 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 <ti, ri>. 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. Universidade da Madeira Departamento de Matemática Elsa Carvalho 199 Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05)
- Slides: 14