REPRESENTAÇÃO CLAUSAL DAS FÓRMULAS DEFINIÇÃO FORMAL A forma normal clausal é usada em programação lógica e em diversos sistemas provadores de teoremas. A fórmula na forma clausal é um conjunto de cláusulas, interpretadas como uma conjunção. Uma clausa é um conjunto quantificado universal e implícito de literais, interpretados como uma disjunção. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Dada uma fórmula “P” no Cálculo de Predicados, sua representação clausal “S” é obtida da seguinte forma: 1. Eliminar variáveis livres: Se “P” contiver uma variável livre, substituir “P” por “ ∃ x(P)”. Este passo deve ser repetido até que a fórmula não contenha mais variáveis livres. VARIÁVEIS LIVRES & LIGADAS Sejam os seguintes enunciados: 1. Todo primata é mamífero. 2. Existe um ser humano que é canibal. 3. Para todo ser humano x existe um ser humano y tal que y é mãe de x. Considerando o universo dos seres humanos pode-se definir os seguintes predicados: primata(x) mamifero(x) canibal(x) mae(x,y) VARIÁVEIS LIVRES & LIGADAS Os enunciados do slide anterior podem ser descritos da seguinte forma: 1. ∀x(primata(x) → mamifero(x)) 2. ∃x canibal(x) 3. ∀x ∃y mae(x,y) VARIÁVEIS LIVRES & LIGADAS Onde: A variável ligada está associada a um quantificador e aparece dentro do escopo desse quantificador. Por exemplo em 1 o escopo de “ ∀ ” é x(primata(x) → mamifero(x)). Em 3, o escopo de “ ∀ ” é ∃ y mae(x,y). A variável dita livre quando não está associada a nenhum quantificador. Por exemplo, em ∀x p(x,y), “y” é uma variável livre. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 2. Eliminar quantificadores redundantes: Eliminar todo quantificador “∀ x” e “∃ x” que não contenha nenhuma ocorrência livre de “x” no seu escopo – isto é, eliminar todo quantificador desnecessário. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 3. Renomear as variáveis quantificadas mais do que uma vez: Se uma mesma variável é governada por dois quantificadores, devemos substituir a variável de um deles e de todas as suas ocorrências livres no escopo do quantificador por uma nova variável que não ocorra na fórmula. Este passo deverá ser repetido até que todos os quantificadores governem variáveis diferentes . CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 4. Elimine os conectivos “” e “ ”: Substitua: (Q R) por (¬Q ∨ R). (Q R) por (¬Q ∨ R) ∧ (Q ∨ ¬R) ¬ (Q R) por (Q ∧ ¬R) ¬ (Q R) por (Q ∧ ¬R) ∨ (¬ Q ∧ R) CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 5. Mova “¬” para o interior da fórmula: Até que cada ocorrência de “¬” preceda imediatamente uma fórmula atômica, substitua: ¬ ∀ x(Q) por ∃ x(¬Q) ¬ ∃ x(Q) por ∀ x (¬Q) ¬(Q ∧ R) por (¬Q ∨ ¬R) ¬(Q ∨ R) por (¬Q ∧¬R) ¬¬Q por Q CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 6. Mova os quantificadores para o interior da fórmula. Substitua, caso x não seja livre em R, ∀ ∀ ∀ ∀ x(Q x(R x(Q x(R ∨ ∨ ∧ ∧ R) Q) R) Q) por por por por ∀ R ∀ R x(Q) ∨ R, ∨ ∀ x(Q), x(Q) ∧ R, ∧ ∀ x(Q), ∃ x(Q ∨ R) por ∃ x(Q ) ∨ R ∃ x(R ∨ Q) por R ∨ ∃ x(Q) ∃ x(Q ∧ R) por ∃ x(Q) ∧ R ∃ x(R ∧ Q) por R ∧ ∃ x(Q) CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 7. Eliminar os quantificadores existenciais: Por exemplo, na fórmula ∀y (∃x p (x,y)) o valor de x depende do valor de y, pois está dentro do escopo de y. Pode-se dizer que existe uma função g(y) que calcula o valor de x em relação a y. Essa função é chamada de Skolem. FORMA NORMAL SKOLEM Essa forma elimina os quantificadores existenciais de uma Forma Prenex obtendo uma generalização, ou seja, uma fórmula de primeira ordem está na forma normal de Skolem se contiver somente quantificadores universais. As fórmulas de primeira ordem podem ser convertidas para a forma normal de Skolem por meio do processo chamado de skolemização. A fórmula obtida deste processo não é necessariamente equivalente a original, mas é satisfatível se, e somente se, a original também for. FORMA NORMAL SKOLEM A skolemização é feita substituindo cada variável y quantificada existencialmente , por um termo 𝑓(x 1 , ... , x n), no qual o símbolo da função 𝑓 é uma nova função em que não há outra ocorrência dela na fórmula. A função 𝑓 introduzida nesse processo é conhecida como função de Skolem, o termo é dito termo de Skolem. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 7. Eliminar os quantificadores existenciais: A partir de agora a fórmula pode ser escrita da seguinte forma: ∀y p(g(y),y), ou seja eliminou-se o quantificador existencial. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 8. Obter a Fórmula Normal Prenex e remover os quantificadores universais: Neste ponto do procedimento não existem mais quantificadores existenciais e cada quantificador universal possui sua própria variável. Podemos “mover” todos os quantificadores universais para o início da fórmula. Desta forma fórmula estará na FNP. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 9. Colocar a matriz da FNP na forma conjuntiva: Qualquer matriz pode ser escrita como uma conjunção de um conjunto finito de disjunções de literais – forma conhecida como forma normal conjuntiva. Então até que a matriz da fórmula seja uma conjunção de disjunções , substituir: (P Q) R por (P R) (Q R.) CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 10. Eliminar os símbolos ^ : Pode-se agora eliminar as ocorrências explícitas dos símbolos ^, substituindo-se expressões da forma (X1 ^X2) pelo conjunto de wffs {X1, X2}. O resultado de repetidas substituições é um conjunto de wffs cada uma delas sendo uma disjunção de literais – uma cláusula. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL 11. Renomear variáveis: Símbolos variáveis podem ser renomeados de forma que um símbolo variável não compareça em mais do que uma cláusula. Deve ser lembrado que x (p(x) q(x)) é equivalente a (x p(x) y q(y)). CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Exemplo 01: Teorema de Representação Clausal Seja P a entrada e S a saída do Algoritmo de Representação Clausal. Então, P é satisfatível se e somente se S é satistatível. Corolário: O problema da validade é redutível ao problema da insatisfatibilidade para conjuntos de cláusulas. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Exemplos: Seja P a fórmula abaixo: x y(chama(x,y)→((∃u(programa(y,u))^(∃u(programa(y,u))) Aplicaremos as transformações acima a P da seguinte forma: Passos 1 e 2: Não são necessários pois P não possui variáveis livres ou quantificadores redundantes. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Passo 3: Renomeie u pois u ocorre quantificada mais de uma vez: x y(chama(x,y) → ((∃u(programa(y,u))^(∃v(programa(y,v))) Passo 4: Elimine “ → ”: x y(¬chama(x,y) v ((∃ u(programa(y,u))^(∃ v(programa(y,v))) CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Passo 5: Não é necessário mover “¬” para o interior da formula pois a única ocorrência de “¬” precede imediatamente uma fórmula atômica. Passo 6: Não é necessário pois a ultima fórmula acima não permite mover quantificadores. CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Passo7: Elimine os quantificadores existenciais da seguinte forma: a subfórmula “( ∃ u(programa(y,u))” é a subfórmula mais a esquerda começando por um quantificador existencial. Como “x” é a única variável livre desta subfórmula, substitua “u” por “f(x)”, onde “f” é um novo símbolo funcional, obtendo: x y(¬chama(x,y) v ((∃ u(programa(y,u))^(∃ v(programa(y,v))) Da mesma forma, substitua “v” por “g(y)” é um novo símbolo funcional, obtendo: x y(¬chama(x,y) v (programa(x,f(x))^(programa(y,g(y))) CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL Passo 8: Todos os quantificadores universais já estão à esquerda. Passo 9: Obtenha a forma normal conjuntiva: xy((¬chama(x,y) v programa(x,f(x)))^(¬chama(x,y) v programa(y,g(y))) CONVERSÃO DE UMA FÓRMULA PARA A FORMA CLAUSAL A representação clausal de P será então compostas das cláusulas: ¬chama(x,y) programa(x,f(x)) ¬chama(x,y) programa(y,g(y)) EXEMPLOS ADICIONAIS