Provando que um Conjunto de Cláusulas é Insatisfatível 1. Introdução Seja S um dado conjunto de wffs e suponha que G seja uma consequência lógica de S (ou seja, que G segue logicamente de S). Da definição de conseqüência lógica, se I é um modelo de S, I é um modelo de G (em outras palavras, toda interpretação que satisfaz S, satisfaz G também). Nenhum dos modelos de S pode ser um modelo de G e, portanto, nenhum modelo pode satisfazer S {G}. Assim sendo S {G} deve ser insatisfatível. Portanto, se G é conseqüência lógica de S, S {G} é insatisfatível. Sabe-se que Um conjunto de cláusulas é insatisfatível (ou inconsistente) se e só se for falso sob todas as interpretações, em todos os domínios. Uma vez que não é possível considerar todas as interpretações em todos os domínios, um domínio particular H será definido, tal que S é insatisfatível se e só se S é falso sob todas as interpretações em H. Este domínio particular é chamado de Universo de Herbrand de S e as interpretações são chamadas de Interpretações de Herbrand. 2. Universo de Herbrand e Base de Herbrand Definição 2.1 Seja S um conjunto de cláusulas e H0 o conjunto de constantes que aparecem em S. se nenhuma constante aparece em S, então seja H0 = {a} para i = 0,1,…., seja Hi+1 = Hi T onde T é o conjunto de todos os termos da forma fn(t1,t2,…,tn) para todos os símbolos funcionais fn ocorrendo em S, onde tj, para j=1,…,n são elementos de Hi. Cada Hi é chamado de conjunto constante de nível i de S e H (ou simplesmente H) é chamado de Universo de Herbrand de S. Assim, o Universo de Herbrand coincide com o conjunto de termos ground que são gerados a partir dos símbolos de constantes e dos símbolos funcionais que aparecem em S. Podem acontecer três situações: 1. Se S contém ambos, constantes e funções (símbolos funcionais), então o Universo de Herbrand será sempre contavelmente infinito. 2. Se S contém apenas constantes o Universo de herbrand será o conjunto finito daquelas constantes. 3. Se S não contém constantes, uma constante, por exemplo, a, é escolhida arbitrariamente. Dependendo da presença ou ausência de símbolos funcionais em S, o Universo de Herbrand será infinito ou não, respectivamente. 1 Exemplo 2.1 Seja S= {p(X,Y) q(X,f(X)), p(X,Y) q(X,g(Y))} Desde que não existe constante em S, seja então H0 = {a}. Assim H1 = H0 {f(a),g(a)} H2 = H1 {f(f(a)),f(g(a)),g(f(a)),g(g(a))} H3 = H2 {f(f(f(a))), f(f(g(a))), f(g(f(a))), f(g(g(a))), g(f(f(a))), g(f(g(a))), g(g(f(a))), g(g(g(a)))} …… H = {a, f(a), g(a), f(f(a)), f(g(a)), g(f(a)), g(g(a)), f(f(f(a))), f(f(g(a))), f(g(f(a))), f(g(g(a))), g(f(f(a))), g(f(g(a))), g(g(f(a))), g(g(g(a))), …} Exemplo 2.2 Seja S= {p(X) q(X), r(Z), s(Y) t(W)} Desde que não existe constante em S, seja então H0 = {a}. Desde que não existe símbolo funcional em S, H0 = H1 = H2 = … = {a} Exemplo 2.3 Seja S= {p(f(X),g(X),h(Y)) q(X),r(Y)} Desde que não existe constante em S, seja então H0 = {a}. Assim H1 = H0 {f(a),g(a),h(a)} H2 = H1 {f(f(a)), f(g(a)), f(h(a)), g(f(a)), g(g(a)), g(h(a)), h(f(a)), h(g(a)), h(h(a))} H3 = H2 { f(f(f(a))), f(f(g(a))), f(f(h(a))), f(g(f(a))), f(g(g(a))), f(g(h(a))), f(h(f(a))), f(h(g(a))), f(h(h(a))), g(f(f(a))), g(f(g(a))), g(f(h(a))), g(g(f(a))), g(g(g(a))), g(g(h(a))), g(h(f(a))), g(h(g(a))), g(h(h(a))), h(f(f(a))), h(f(g(a))), h(f(h(a))), h(g(f(a))), h(g(g(a))), h(g(h(a))), h(h(f(a))), h(h(g(a))), h(h(h(a)))} ….. H = {a, f(a), g(a), h(a), f(f(a)), f(g(a)), f(h(a)), g(f(a)), g(g(a)), g(h(a)), h(f(a)), h(g(a)), h(h(a)), f(f(f(a))), f(f(g(a))), f(f(h(a))), f(g(f(a))), f(g(g(a))), f(g(h(a))), f(h(f(a))), f(h(g(a))), f(h(h(a))), g(f(f(a))), g(f(g(a))), g(f(h(a))), g(g(f(a))), g(g(g(a))), g(g(h(a))), g(h(f(a))), g(h(g(a))), g(h(h(a))), h(f(f(a))), h(f(g(a))), h(f(h(a))), h(g(f(a))), h(g(g(a))), h(g(h(a))), h(h(f(a))), h(h(g(a))), h(h(h(a))), …} Exemplo 2.4 Seja S= {p(a,b,f(X),g(Y),c)} Uma vez que exitem três constantes a,b e c em S, então H0 = {a, b, c} H1 = H0 {f(a), g(a ), f(b), g(b), f(c), g(c)} H2 = H1 { f(f(a)), f(g(a)), f(f(b)), f(g(b)), f(f(c)), f(g(c)), g(f(a)), g(g(a)), g(f(b)), g(g(b)), g(f(c)), g(g(c))} …. H = {a, b, c, f(a), g(a), f(b), g(b), f(c), g(c), f(f(a)), …} 2 Definição 2.2 Seja S um conjunto de cláusulas e seja H0 o Universo de Herbrand de S. O conjunto dos átomos ground da forma pn(t1,t2,…,tn) para todos os predicados pn ocorrendo em S, onde t1, t2, …, tn são elementos do Universo de Herbrand de S, é chamado de Base de Herbrand, ou conjunto atômico de S e é notado por BS. Exemplo 2.5 Seja S= {p(X) q(X), r(f(X))} Então, BS = {p(a), q(a), r(a), p(f(a)), q(f(a)), r(f(a)),…} Exemplo 2.6 Seja S= {p(X), p(X) q(f(X)), q(f(a))} Então, BS = {p(a), q(a), p(f(a)), q(f(a)), …} Exemplo 2.7 Seja S= {p(X,a,Y) p(b,X,Z) q(Y,Z)} Desde que S não tem símbolo funcional, o Universo de Herbrand de S é H = {a,b}. Então, BS = {p(a,a,a), p(a,a,b), p(a,b,a), p(a,b,b), p(b,a,a), p(b,a,b), p(b,b,a), p(b,b,b), q(a,a), q(a,), q(b,a), q(b,b)} Definição 2.3 Uma instância ground de uma clausula C de um conjunto S de cláusulas é uma cláusula obtida pela substituição das variáveis em C por elementos do Universo de Herbrand de S. Exemplo 2.8 Seja S= {p(X),q(f(Y)) r(Y)} H = {a, f(a),f(f(a)),….} A próxima tabela mostra algunas das instâncias ground das duas cláusulas C1 e C2, de S. C1: p(X) p(a) p(f(a)) p(f(f(a))) …….. C2: q(f(Y)) r(Y) q(f(a)) r(a) q(f(f(a))) r(f(a)) q(f(f(f(a)))) r(f(f(a))) ……. Definição 2.4 Seja S um conjunto de cláusulas. Uma instanciação ground de S é o conjunto de todas as instâncias ground de todas suas cláusulas e é denotada por GS. Exemplo 2.9 Seja P o programa Prolog: f(a,X) :- f(X,b). f(c,b). (note que esse programa pode ser reescrito como o conjunto de cláusulas S = {f(X,b) f(a,X), f(c,b)}). 3 Considerando que H={a,b,c}, a instanciação ground GP de P é o programa ground: f(a,a):- f(a,b). f(a,b):- f(b,b). f(a,c):- f(c,b). f(c,b). (Note que pode ser rescrito como o conjunto GS = {f(a,b) f(a,a), f(b,b) f(a,b), f(c,b) f(a,c), f(c,b)}). Note que GP é essencialmente proposicional. A seguir será definida uma interpretação especial sobre o Universo de Herbrand de S, chamada de Interpretação de Herbrand de S. 3. Interpretação de Herbrand e Modelo de Herbrand Definição 3.1 Seja S um conjunto de cláusulas H o Universo de Herbrand de S I uma interpretação de S sobre H I é uma Interpretação de Herbrand de S se satisfaz às seguintes condições: 1. I mapeia todas as constantes de S nelas próprias 2. seja f um símbolo funcional n-ário e sejam h1, h2, .., hn elementos de H. Em I, a f é atribuída uma função que mapeia (h1, h2, .., hn) um elemento de Hn a f(h1,h2,..,hn) um elemento de H. Não existe restrição como relação à atribuição a cada símbolo predicado em S, de maneira que diferentes Interpretações de Herbrand podem existir, dependendo de tais diferentes atribuições. Desde que para as Interpretações de Herbrand a atribuição a constantes e símbolos funcionais é fixa, é possível identificar uma Interpretação de Herbrand com um subconjunto da Base de Herbrand. Assim sendo, daqui para frente, Uma Interpretação de Herbrand I de um conjunto de cláusulas S é qualquer subconjunto de BS, a Base de Herbrand. entendendo que, sob a interpretação I, a qualquer átomo q em BS é atribuído o valor verdade true, se q I, caso contrário é atribuído false. Com o objetivo de avaliar um dado conjunto de cláusulas com relação a uma dada Interpretação de Herbrand (I), as seguintes regras devem ser aplicadas: 1. a fórmula atômica ground A é true em I iff A I 2. uma literal negada ground A é true em I iff A I 4 3. uma cláusula ground L1 L2 … Ln é true em I iff pelo menos um literal Li é true em I 4. em geral, uma cláusula C é true em I iff toda instância ground C de C é true em I (C é obtida substituindo toda ocorrência de uma variável em C por um termo de H. Ocorrências diferentes da mesma variável são substituídas pelo mesmo termo). 5. um conjunto de cláusulas S é true em I iff cada cláusula de S é true em I. Um literal, cláusula ou conjunto de cláusulas é false em I iff não for true. Uma Interpretação de Herbrand é pois uma livre atribuição de valores verdade (true ou false) a todos os átomos da BS. Uma tal interpretação deve, portanto, atribuir também true ou false a todos os átomos em GP; assim, os valores verdades desses átomos determinam os valores-verdade de todas as cláusulas em GP. Definição 3.2 Seja S um conjunto de cláusulas H o Universo de Herbrand de S I uma Interpretação de Herbrand de S sobre H Se S é true em I, então I é um Modelo de Herbrand de S. Exemplo 3.1 Seja S={p(X) q(X)} um conjunto de cláusulas. Desde que S tem BS = {p(a),q(a)}, as possíveis 2|BS| Interpretações de Herbrand de S são: I0: I1: {p(a)} I2: {q(a} I3:{p(a),q(a)} De acordo com as regras de avaliação mostradas anteriormente, as interpretações I0, I1 e I3 são Modelos de Herbrand de S e I2 é simplesmente uma Interpretação de Herbrand de S. Exemplo 3.2 Seja S={p(X) q(X), m(Y) g(a), q(Z)} um conjunto de cláusulas. Desde que S tem BS = {p(a),q(a),m(a),g(a)}, as possíveis 2|BS| = 16 Interpretações de Herbrand de S são: {p(a)} {q(a)} {m(a)} {g(a)} {p(a),q(a)} {p(a),m(a)} {p(a),g(a)} {q(a),m(a)} {q(a),g(a)} {m(a),g(a)} {p(a),q(a),m(a)} {p(a),q(a),g(a)} {p(a),m(a),g(a)} {q(a),m(a),g(a)} {p(a),q(a),m(a),g(a)} As interpretações que são Modelos estão em negrito. 5 Exemplo 3.3 Considere o conjunto de cláusulas P: likes(chris,X) if likes(X,logic) likes(bob, logic) O Universo de Herbrand de P é o conjunto {chris, bob, logic} e a instanciação ground de P, ie, GP é: likes(chris,chris) if likes(chris,logic) likes(chris,bob) if likes(bob,logic) likes(chris,logic) if likes(logic,logic) likes(bob, logic) que pode ser escrita, para maior facilidade de leitura como: CC if CL CB if BL CL if LL BL A Base de Herbrand é BP = {CC,CL,CB,LC,LL,LB,BC,BL,BB}. O conjunto {BL,CB} BP é assim uma Interpretação de Herbrand. Para essa interpretação, GP é reproduzido abaixo, com os valores verdade associados escritos em lugar de seus átomos: false if false true if true false if false true Com essa atribuição, todas as cláusulas de GP são verdade. Esta interpretação é portanto um Modelo de Herbrand para GP e, portanto, um Modelo de Herbrand de P. Proposição 3.1 Seja S um conjunto de cláusulas e suponha que S tenha um modelo. Então, S tem um Modelo de Herbrand. Prova: Seja I uma interpretação de S. A Interpretação de Herbrand I' de S pode ser defininteda como segue: I'= {p(t1,…,tn) BS | p(t1,…,tn) é true com relação a I} É direto mostrar que se I é um modelo, I' também é um modelo. Os dois próximos exemplos mostram a construção de Modelos de Herbrand correspondentes a modelos. Exemplo 3.4 Seja S = {p(X) q(f(X),a)} a forma clausal da fórmula F: X (p(X) q(f(X),a)) e seja I o seguinte modelo: 6 a) Domínio: {1,2} b) atribuição a constante: a é atribuída a 1 c) atribuições a símbolos funcionais: f(1) 2 f(2) 1 d) atrituição a símbolos predicados: p(1) false p(2) true q(1,1) true q(1,2) true q(2,1) false q(2,2) true Note que esta interpretação é um modelo desde que {p(1) q(f(1),1)} e {p(2) q(f(2),1)} são ambos verdade. Para a definição do correspondente Modelo de Herbrand, é necesário: encontrar a Base de Herbrand BS de S e avaliar cada elemento de BS, usando a dada interpretação I a fim de selecionar como elementos do Modelo de Herbrand aqueles elementos de BS que são avaliados como true, pelo modelo I. Para o conjunto S considerado, BS = {p(a), q(a,a), p(f(a)), q(a,f(a)), q(f(a),a), q(f(a),f(a)),…} e a avaliação de cada elemento de BS usando o dado modelo I é: p(a) q(a,a) p(f(a)) q(a,f(a)) q(a,f(a)) …. = = = = = .. p(1) q(1,1) p(2) q(1,2) q(2,1) …. = = = = = false true true true false …. Protanto o Modelo de Herbrand I'correspondente a I é: I'= {q(a,a), f(p(a)), q(a,f(a)),…} No caso de não existirem constantes em S, a constante arbitrariamente escolhida a, que é usada para inicializar o Universo de Herbrand de S, pode ser mapeada em qualquer elemento do domínio D. Neste caso, quando existe mais do que um elemento em D, existe mais do que um Modelo de Herbrand correspondentes a I, como mostra o próximo exemplo. 7 Exemplo 3.5 Seja S = {p(X) q(f(X),Y)} com a interpretação I como a mostrada no exemplo anterior, exceto que não existe atribuição a constante. A Base de Herbrand de S é a mesma do exemplo anterior e a avaliação de cada elemento de BS usando o dado modelo I é: para a=1 p(a) q(a,a) p(f(a)) …. = = = .. p(1) q(1,1) p(2) …. = = = = = = = = .. p(2) q(2,2) p(1) q(2,1) q(1,2) …. = = = = = false true true …. Portanto, I'= {q(a,a),p(f(a)),…} para a=2 p(a) q(a,a) p(f(a)) q(a,f(a)) q(f(a),a) …. true true false false true …. Portanto, I''= {p(a),q(a,a),q(f(a),a),…} Para testar se um conjunto S de cláusulas é insatisfatível, é apenas necessário considerar interpretações sobre o Universo de Herbrand de S. Se S for false sob todas as interpretações sob o Universo de Herbrand de S, então S é insatisfatível. Desde que usualmente existem um número infinito dessas interpretações, elas deve ser organizadas de uma maneira sistemática. isso pode ser feito usando uma árvore semântica. Existem muitas maneiras de expressar e de especializar o Teorema de Herbrand. Talvez a especialização do Teorema 4.1 é a mais adequada ao contexto de programação lógica. Teorema 4.1 Uma contradição pode ser derivada de um conjunto de cláusulas S {G} iff pode ser derivada a partir de algum subconjunto finito de instanciações ground G(S{G}). A palavra finito garante a existência de um procedimento efetivo (algoritmo) através do qual a contradição pode ser demonstrada e, portanto, indiretamente, mostrado que G é uma conseqüência lógicade S. Em outros trabalhos, este teorema foi reescrito em termos de insatisfatibilidade ao invés de derivabilidade e se torna: Teorema 4.2 Um conjunto de cláusulas S {G} é insatisfatível iff algum subconjunto finito de G(S{G}) é insatisfatível. 8 Exemplo 3.6 Seja S = {p(X),p(f(a))} S é insatisfatível. Portanto, pelo Teorema de Herbrand, existe um conjunto insatisfatível S' de instaâncias ground de cláusulas em S. Pode ser verificado que um desses conjuntos é: S'= {p(f(a)),p(f(a))}. Exemplo 3.7 Seja S = {p(X) q(f(X),X),p(g(b)),q(Y,Z)} S é insatisfatível. Um dos conjuntos insatisfatíveis de ground instâncias de cláusulas em S é: S'= {p(g(b)) q(f(g(b)),g(b)),p(g(b)),q(f(g(b)),g(b))} Um dos aspectos mais importantes da Interpertação de Herbrand é que não é mais necessário considerar o universo de todas possíveis interpretações e usar os objetos de cada universo de toda a forma possível, dado que as Interpretações de Herbrand representam todas as outras. Todas as Interpretações de Herbrand compartilham o mesmo universo o Universo de Herbrand. Isso significa que é apenas necessário considerar instâncias obtidas substitituindo variáveis por elementos do Universo de Herbrand. Com um pouco de cuidado é possível garantir que nenhuma das possíveis conjunções de instâncias de cláusulas é omitida no teste. Neste caso, o teste eventualmente irá descobrir se uma meta G é conseqüência lógica de um conjunto de cláusulas. Entretanto, a busca por todas as possíveis instâncias pode continuar para sempre. Os seguintes casos podem acontecer: 1. G é uma conseqüência lógica de S. Neste caso a busca irá eventualmente terminar com sucesso, ie, uma contradição será encontrada. 2. G não é uma conseqüência lógica de S. Existem dois possíveis subcasos a serem considerados: 2.1 todas as possíveis instâncias foram gerads sem que tenha sido encontrada uma contradição. Neste caso G não é uma conseqüência lógica de S. 2.2 instâncias são geradas continuamente e uma contradição nunca é encontrada. Neste caso não existe certeza com relação a G ser ou não uma conseqüência lógica de S. 9