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 = {X1/t1, X2/t2,..., 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 W1= gosta(ana, luis). se aplicarmos a W a substituição 2 = {X/Y, Y/luis} temos a instância da substituição W2= gosta(Y, luis) e aplicando uma vez mais 2 ficamos com (W2)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: {U1/t1, ..., 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 = {U1/t1, ..., Um/tm} 2 = {V1/s1, ..., Vn/sn} a composição de 1 com 2 é denotada pela expressão 1 2 e é definida como {U1/t12, ..., Um/tm2} {Vj/sj | Vj {U1, ..., Um}} ou seja, aplicar 1 a W representa substituir todas as suas variáveis livres Ui pelos termos ti resultando na instância W1. Depois restam apenas duas formas da substituição 2 alterar W1: 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(U1, g(V1), V2) e as substituições 1 = {U1/ f(V1)} 2 = {V1/a, V2/b, U1/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)├ (Y1) ... (Yn)W(X){X/t)} para qq termo t onde Y1,... 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 A1 … Am C A C1 … Cn 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 A1 … Am C1 … Cn 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 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. 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/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 = °. 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(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 = ° 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)