Unificação O Princípio de Resolução da Lógica de Predicados Lembre-se que já foi cons iderado o princípio de resolução para a lógica proposicional. A partir de agora será estendido para a lógica de predicados. Definição 1. Se dois ou mais literais (com o mesmo s inal) de uma cláusula C tem um unificador mais geral σ, então C σ é chamado um fator de C. Foi mos trado que a parte mais importante da aplicação do princípio de resolução é encontra r um literal em uma cláusula que é complementa r a um literal em outra cláusula. Pa ra cláusulas que não contém variáveis, isso é s imples. Entretanto, para cláusulas contendo variáveis, isso é mais complicado. Considere, por exemplo, as duas cláusulas C1 e C2 abaixo: C1 : P(x) ∨ Q(x) Ex: Seja C = P(x) ∨ P(f(y)) ∨ ∼Q(x) P(x) e P(f(y)) tem um umg σ = {x/f(y)}. Então, C σ = P(f(y)) ∨ ∼Q(f(y)) é um fator de C. Definição 2. Sejam C1 e C2 duas cláusulas sem variáveis comuns. Sejam L1 e L2 literais de C1 e C2 , respectivamente. Se L1 e ∼L2 tem um unificador mais geral σ, então a cláusula: (C1 σ - L1 σ) ∪ (C2 σ - L2 σ) C2 : ∼P(f(y)) ∨ R (y) Não exis te literal em C1 que seja complementar a qualquer literal em C2 . Entretanto, se aplicarmos as substituições s1 e s2 definidas abaixo à C1 e C2 , respectivamente, obtemos as cláusulas C1 ’ e C2 ’: s1 = {x/f(a )} e s2 = {y/a} é chamada um res olvente binário de C 1 e C2 . Ex: Sejam C1 : P(x) ∨ Q(x) C2 : ∼P(a ) ∨ R (y) C1 ’: C1 s1 = (P(x) ∨ Q(x)) [x/f(a )] = P(f(a )) ∨ Q(f(a )) Escolhendo L1 = P(x) e L2 = ∼P(a ), então, ∼L2 = P(a ). Assim, σ = {x/a} C2 ’: C2 s2 = (∼P(f(y)) ∨ R (y)) [y/a] = ∼P(f(a)) ∨ R (a ) Então, (C1 σ - L1 σ) ∪ (C2 σ - L2 σ) = Q(a ) ∨ R (y) Agora, podemos aplicar o Princípio da Resolução e obter o resolvente C’: C’: Q(f(a )) ∨ R (a) Mais geralmente, se substituirmos x por f(x) em C1 obtemos: C1 *: P(f(x)) ∨ Q(f(x)) O lite ral P(f(x)) de C1 * é complementa r ao lite ral ∼P(f(x)) em C2 . Assim, podemos obter um resolvente mais geral C: C: Q(f(x)) ∨ R (x) A cláusula C é a cláusula mais geral no sentido de que todas as outras cláusulas que podem ser obtidas pelo processo acima são instâncias de C. Por exemplo, C’ é uma instância de C. Definição 3. Um resolvente de cláus ulas C1 e C2 é um dos seguintes resolventes binários : (i) um resolvente binário de C1 e C2 (ii) um resolvente binário de C1 e um fator de C2 (iii) um res olvente binário de um fator de C1 e C2 (iv) um resolvente binário de um fator de C1 e um fator de C2 . Ex: Sejam: C1 = P(x) ∨ P(f(y)) ∨ R (g(y)) C2 = ∼P(f(g(a ))) ∨ Q(b) Um fator de C1 é: C1 ’ = P(f(y)) ∨ R (g(y)) Um res olvente binário de C1 ’ e C2 é: C = R (g(g(a ))) ∨ Q(b) Teorema 1: Se C é um resolvente de duas cláusulas C1 e C2 então C é conseqüência lógica de C1 e C2 . Teorema 2: Teorema da Correção Pa ra todo conjunto S de cláusulas, se existe uma re futação a partir de S, então S é insatis fatível. Teorema 3: Teorema da Completude Pa ra todo conjunto S de cláusulas, se S é instis fatível, então existe uma refutação a partir de S. Definição 4. Pa ra provar que uma fórmula é conseqüência lógica de um conjunto de fórmulas da lógica de predicados (ou provar que um argumento é válido), basta refutar o conjunto de cláusulas formado por estas fórmulas, onde a fórmula a ser provada (conclusão do argumento) deve ser negada. Ex: Considerar o seguinte conjunto de fórmulas: F1: (∀x) (C (x) → (W (x) ∧ R (x))) F2: (∃x) (C (x) ∧ O(x)) G: (∃x) (O(x) ∧ R (x)) O problema é mostrar que G é uma conseqüência lógica de F1 e F2. Trans forma-se F1 e F2 e ∼G em formas padrões e obtêm-se as cinco cláusulas seguintes: (1) (2) (3) (4) (5) ∼C (x) ∨ W(x) ∼C (x) ∨ R (x) C(a) O(a) ∼O(x) ∨ ∼R (x) de de de de de F1 F1 F2 F2 ∼G O conjunto de cláusulas acima é insatisfatível. Is to pode ser provado por resolução como segue: (6) (7) (8) R(a) ∼R (a) □ um resolvente de (3) e (2) um resolvente de (5) e (4) um resolvente de (7) e (6) Portanto, G é uma conseqüência lógica de F1 e F2 .