Formas Normais Dalton E. dos Santos, Kelvin E. Nogueira da Silva, Jorge L. dos Santos Ramos Jr. Departamento de Informática – Universidade Tecnológica Federal do Paraná (UTFPR) CEP: 80230-901 – Curitiba – PR – Brasil [email protected], [email protected], [email protected] Resumo. Este trabalho, desenvolvido para a disciplina de Lógica para Computação, tem como objetivo esclarecer Formas Normais; tanto a Forma Normal Conjuntiva (FNC), quanto a Forma Normal Disjuntiva (FND). Outros temas como a Cláusula de Horn e alguns princípios da lógica proposicional também são abordados para melhor compreensão das Formas Normais. A fim de justificar a importância desses estudos, demonstrações práticas e teóricas também serão discutidas. 1. Conceitos básicos Antes de iniciar o estudo sobre Formas Normais é necessária uma breve explanação sobre algumas definições básicas da Lógica Proposicional. 1.1. Literal Um literal é toda variável proposicional (fórmula atômica) ou sua negação. Exemplos de literais: p , ¬p , A , ¬B . 1.2. Conjunção Fundamental Uma Conjunção Fundamental é a conjunção de dois ou mais literais, sem haver repetição de literais. Exemplos de Conjunções Fundamentais: α1 ∧ α 2 ∧ ¬α 3 ∧ K ∧ α n (n ≥ 1) . 1.3. Cláusula Cláusula é a disjunção de dois ou mais literais, sem que haja repetição deles. Exemplos de Cláusulas: γ1 ∨ γ 2 ∨ ¬γ 3 ∨ K ∨ γ n (n ≥ 1) . 1.3.1. Cláusula de Horn Em homenagem a Alfred Horn (matemático americano que notou a importância dessas fórmulas 1918–20011), quando em uma cláusula há no máximo um literal positivo (verdadeiro), essa cláusula será chama de Cláusula de Horn. Exemplo de uma Cláusula de Horn: ¬γ1 ∨ ¬γ 2 ∨ ¬γ 3 ∨ K ∨ γ n , que é logicamente equivalente a: (γ1 ∧ γ 2 ∧ γ 3 ∧ K) → γ n . Há três tipos dessas cláusulas, a definida (ou regra), a objetivo (ou restrições) e a fato. A primeira consiste em uma fórmula de Horn com um literal positivo, a objetivo, sem nenhum literal positivo e a última, uma cláusula unitária positiva. Todas as cláusulas de Horn estão na forma normal conjuntiva (FNC), a qual será tratada mais adiante. É importante notar que nem todas as fórmulas podem ter uma equivalente no formato da cláusula de Horn, basta que se tenha um ou mais literais positivos que não possam ser simplificados. Exemplo de cláusula de Horn definida: ¬γ1 ∨ ¬γ 2 ∨ γ 3 . Exemplo de cláusula de Horn objetivo: ¬γ1 ∨ ¬γ 2 ∨ ¬γ 3 . Exemplo de cláusula de Horn fato: p , q . O principal objetivo das cláusulas de Horn é facilitar a verificação da satisfatibilidade booleana de uma fórmula, sem construir tabelas-verdade. Esse problema é conhecido como HORNSAT e é considerado um problema P-completo. Em programação lógica essas cláusulas são de fundamental importância para o desempenho dos programas e são as únicas aceitas em Prolog. 1.4. Fórmula Normal Uma formula normalizada será ou uma conjunção de cláusulas ou uma cláusula de conjunções. Ela pode ser também só uma cláusula ou conjunção fundamental. Exemplos (n ≥ 1) e de fórmulas normalizadas: Se A = {α1 ∧ α 2 ∧ ¬α 3 ∧ K ∧ α n } B = {γ1 ∨ γ 2 ∨ ¬γ 3 ∨ K ∨ γ n } (n ≥ 1) , então A , B , A ∨ A , A ∧ A , A ∨ B , A ∧ B , B ∧ B são fórmulas normalizadas. 2. Forma Normal Disjuntiva Com base nos exemplos supracitados, uma fórmula estará na forma normal disjuntiva quando for: A ∨ A ou apenas A . Toda fórmula proposicional pode ser transformada em outra fórmula logicamente equivalente na FND. Para isso é necessário usar as regras de equivalências lógicas: a Lei da Dupla Negação, as Leis de DeMorgan, e a Distributividade. Porém, é importante ressaltar que dependendo da fórmula a ser transformada, a sua forma na FND pode ser exponencialmente maior que a fórmula original. As fórmulas na FND só podem ter os conectivos lógicos ¬ , ∨ e ∧ . Uma fórmula na FND será tautológica se um elemento da disjunção for tautológico. Ela será insatisfazível se todos os elementos de disjunção forem insatisfazíveis. Outra representação de uma fórmula na FND é2: n A = ∨ L1 ∧ K ∧ L ni i =1 3. Forma Normal Conjuntiva Analogamente a FND, pode-se dizer que uma fórmula esta na forma normal conjuntiva quando tiver o formato: B ∧ B ou apenas B . Toda fórmula proposicional pode ser transformada em outra fórmula logicamente equivalente na FNC. Para isso é necessário usar as regras de equivalências lógicas: a Lei da Dupla Negação, as Leis de DeMorgan, e a Distributividade. Porém, vale ressaltar que em algumas fórmulas, quando transformadas na sua forma na FNC, podem ser exponencialmente maiores que a fórmula original. As fórmulas na FNC só podem ter os conectivos lógicos ¬ , ∨ e ∧ . Uma fórmula na FNC será tautológica apenas se cada elemento da conjunção for tautológico. Ela será insatisfazível se um elemento da conjunção for insatisfazível. Outra maneira de representar uma fórmula na FNC é assim2: m A = ∧ L1 ∨ K ∨ L mk k =1 4. Forma Normal Negativa Uma fórmula está na forma negativa se as negações ( ¬ ) estão sempre em literais e se há apenas os conectivos lógicos não ¬ , ∧ e ∨ . Um exemplo de uma fórmula na forma normal negativa é: (p ∧ q ) ∨ (¬q ∧ ¬p ) . Já (p ∧ q ) ∨ ¬(q ∨ p ) não está na forma normal negativa. Usando os Teoremas de DeMorgan e a eliminação da dupla negação, é possível deixar qualquer fórmula que contenha apenas {¬, ∧, ∨} na forma normal negativa. No caso da Lógica clássica, toda fórmula pode ser posta nessa forma. 5. Métodos de Normalização de Fórmulas Como já visto anteriormente, as fórmulas normalizadas admitem apenas os conectivos lógicos ¬ , ∨ e ∧ , portanto, algumas estratégias são usadas para gerar uma fórmula normalizada logicamente equivalente a outra fórmula não normalizada. É possível fazer isso usando tabelas-verdade ou por equivalência. Na mudança por equivalência, é necessário seguir uma ordem de mudanças nos operadores lógicos. Primeiro deve-se eliminar as equivalências lógicas (exemplo: A ⇔ B ≡ (A → B ) ∧ (B → A ) ), depois as implicações (exemplo: A → B ≡ ¬A ∨ B ), em seguida distribuir as negações, usando as leis de DeMorgan (exemplo: ¬(A ∧ B ) ≡ (¬A ∨ ¬B ) ), eliminar as duplas negações (exemplo: ¬¬A ≡ A ), e, por último, redistribuir os conectivos ∨ e ∧ usando a distributividade, associatividade e comutatividade destes conectivos. Exemplo de normalização de uma fórmula para a FNC3: p → (q ∧ ¬(r ∨ p )) ¬p ∨ (q ∧ ¬(r ∨ p )) ¬p ∨ (q ∧ (¬r ∧ ¬p )) ¬p ∨ (q ∧ ¬r ∧ ¬p ) (¬p ∨ q ) ∧ (¬p ∨ ¬r ) ∧ (¬p ∨ ¬q ) (¬p ∨ q ) ∧ (¬p ∨ ¬r ) ∧ ¬p O processo é semelhante quando se deseja passar uma fórmula para a FND, a diferença fica na ordenação dos conectivos ∨ e ∧ do último passo. 5.1. Leis de DeMorgan As Leis de DeMorgan (matemático e lógico britânico 1806–18714) são usadas para distribuir as negações ( ¬ ), permite passar uma fórmula para a FNC ou para FND, além de ser usada para simplificar circuitos lógicos, entre outras aplicações na lógica matemática. Exemplos de distribuições do ¬(A ∧ B ) ≡ (¬A ∨ ¬B ) , ¬: ¬(A ∨ B ) ≡ (¬A ∧ ¬B ) . 5.2. Eliminação da Dupla Negação Na lógica proposicional, como cada átomo só recebe um valor verdade (falso ou verdadeiro) é possível eliminar as negações, quando essas se repetem em um número par, por exemplo: V(A ) = 0 , então ¬A ≡ ¬¬A ≡ ¬¬¬¬A . Na lógica intuicionista isso não acontece, pois ela é mais abrangente: “Uma sentença como Não é verdade que não está chovendo é mais fraca que Está chovendo. Esta última sentença requer uma prova de que está chovendo, enquanto a primeira requer somente uma prova de que a suposição da chuva não seja contraditória”5. 5.3. Distributividade de conectivos Há algumas regras que servem para converter OU ( ∨ ) em E ( ∧ ) ou vice-versa em fórmulas lógicas. Isso se torna útil para a normalização de fórmulas na FNC ou na FND. Basicamente essas são as duas demonstrações dessas regras: A ∧ (B ∨ C ) ≡ (A ∧ B ) ∨ (A ∧ C ) (FND) A ∨ (B ∧ C ) ≡ (A ∨ B ) ∧ (A ∨ C ) (FNC) 5.4. Tabelas-verdade Outro método para normalizar uma fórmula é através de tabelas verdades. Primeiro é necessário fazer a tabela-verdade da fórmula, como no exemplo abaixo para ¬p ∨ q → r 6: Tabela 1. Tabela-verdade para a formula ¬p ∨ q → r p q r ¬p ∨ q → r 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 Depois de identificar as linhas falsificáveis, proceder da seguinte forma: os átomos com o valor verdadeiro (1) devem ser modificados para a sua negação; os que já estavam com o valor falso (0) permanecem iguais; todos os átomos de uma mesma interpretação são conectados por ∨ e, por fim, cada interpretação é conectada com ∧ . Desse modo, o exemplo dado fica assim: Linha 2: (¬p ∨ ¬q ∨ r ) , Linha 6: (p ∨ ¬q ∨ r ) , Linha 8: (p ∨ q ∨ r ) e, após concatenar as interpretações, o resultado será uma fórmula na FNC: (¬p ∨ ¬q ∨ r ) ∧ (p ∨ ¬q ∨ r ) ∧ (p ∨ q ∨ r ) . Analogamente ao exemplo acima, também é possivel produzir uma fórmula na FND atráves de tabelas-verdades. Primeiro se constrói a tabela, depois identificam-se as linhas com resultado verdadeiro (1); os átomos com o valor falso (0) devem ser modificados para a sua negação; os que já estavam com o valor verdadeiro (0) permanecem iguais; todos os átomos de uma mesma interpretação são conectados por ∧ e, por fim, cada interpretação é conectada com ∨ . 5.5. Transformação em FNC ou FND com Adição de Novos Átomos A normalização de uma fórmula para FNC ou FND muitas vezes é acompanhada pela inconveniencia de se obter uma nova fórmula de tamanho exponencialmente maior que a primeira. Nesse caso, é possível usar o artifício da Adição de Novos Átomos para que seu tamanho aumente apenas de forma linear. Para tanto, deve-se executar integralmente os passos de normalização citados anteriormente (eliminação da implicação, leis de DeMorgan e eliminação da dupla negação), a única mudança será na distributividade das conjunções ou disjunções, pois, um novo átomo será adicionado nessa parte, como pode se verificar no exemplo abaixo2: Fórmula que já passou pelos primeiros passos de normalização: X ∨ (Y ∧ Z) Substituindo (Y ∧ Z) por um novo átomo p temos que: X ∨ (Y ∧ Z) ≡ (X ∨ p ) ∧ (¬p ∨ Y ) ∧ (¬p ∨ Z) ∧ (¬Y ∨ ¬Z ∨ p ) A primeira cláusula da fórmula acima é imediata, porém, para achar as outras, é preciso normalizar a equivalência lógica p ↔ (Y ∧ Z ) , a qual terá como resultado (¬p ∨ Y ) ∧ (¬p ∨ Z) ∧ (¬Y ∨ ¬Z ∨ p) . Desse modo, a transformação da fórmula original para a FNC estará concluída. E, de modo semelhante, pode-se transformar uma fórmula para a FND. 6. Notação de Kowalsky Além da notação tradicional da lógica proposicional, as fórmulas na FNC ou na FND podem ser representadas na notação de Kowalsky (lógico e cientista de computação estadunidiense 19417). Para isso é necessário separar os literais positivos dos negativos, deixando os positivos à esquerda, como em p ∨ q ∨ ¬r , o que é logicamente equivalente a escrever p, q ← r , na notação de Kowalsky, ou ainda r → (p ∨ q ) . Outro exemplo é: s ∨ ¬p ∨ ¬q , que fica: s ← p, q ou, na lógica proposicional: (p ∧ q ) → s . Através dos exemplos, pode-se perceber que, na notação de Kowalsky, a virgula ( , ) a esquerda de ← representa uma disjunção e a direita, uma conjunção. Essa disjunção é chamada de conclusão e a conjunção é chama de premissa ou condição. 7. Utilidades da Normalização A normalização de fórmulas é importante para padronizar a notação, já que é possível escrever fórmulas logicamente equivalentes de muitas maneiras diferentes. As fórmulas lógicas na FND são usadas em circuitos lógicos. Há dispositivos físicos idealizados, chamados de portas lógicas, os quais utilizam funções relacionadas á conjunção, disjunção e negação. Qualquer função matemática descrita por uma tabela verdade pode ser especificada por uma fórmula na FNC ou FND. Em Programação lógica, a simplificação ou padronização de expressões resulta em um melhor desempenho ao verificar a satisfatibilidade de uma fórmula. O mesmo ocorre em circuitos lógicos, quanto menor a fórmula lógica menor o circuito. 7.1. Aplicação em Portas Lógicas8 Portas Lógicas são pequenos circuitos padronizados, freqüentemente presentes em dispositivos eletrônicos. Elas têm a finalidade de efetuar operações lógicas entre um ou mais sinais de entrada e obter um único sinal de saída, já que esses sinais são digitais, ou seja, associados aos valores binários 0 (ou falso) e 1 (ou verdadeiro). Os tipos de portas lógicas são: AND (conjunção), OR (disjunção), NOT (negação), NAND (negação da conjunção), NOR (negação da disjunção), XOR (disjunção exclusiva) e XNOR (negação da disjunção exclusiva ou coincidência). Cada um possui um símbolo padronizado para sua representação em projetos de circuitos eletrônicos. Dadas as entradas A e B, suponha que queiramos que à saída C seja atribuído o valor verdade de A → ¬B . Nesse caso, será necessário executar métodos de normalização na fórmula para que ela contenha somente operações que as portas lógicas possam fazer (o que não é o caso da implicação): A → ¬B ≡ ¬A ∨ ¬B ¬A ∨ ¬B contém somente conectivos lógicos que possuem uma porta lógica correspondente, logo já resolveria o problema. Porém, se pode ainda usar as Leis de DeMorgan para simplificá-la: ¬A ∨ ¬B ≡ ¬(A ∧ B) ¬(A ∧ B ) é uma negação de uma conjunção, logo a situação inicial pode ser tratada como um NAND de entradas A e B e saída C. A representação simbólica seria: A B C Figura 1. Representação no padrão da norma ANSI7 de uma Porta Lógica do tipo NAND com entradas A e B e saída C. 8. Conclusão A realização desse trabalho foi de grande importância para compreender qual a utilidade das normalizações. Além disso, destacam-se os seguintes pontos: toda fórmula proposicional bem formulada pode ser escrita na FNC ou na FND, porém, algumas fórmulas crescerão exponencialmente de tamanho; há dois principais métodos para a normalização de uma fórmula, através de tabelas-verdade, o que exige muito trabalho manual, ou através da substituição de alguns conectivos lógicos, exigindo maior trabalho intelectual; a cláusula de Horn é uma fórmula especial na FND cuja satisfatibilidade pode ser rapidamente encontrada. Referências 1 <http://en.wikipedia.org/wiki/Alfred_Horn>. Acesso em: 22 mar. 2009, 19:35. 2 SILVA, Flávio Soares Corrêa da; FINGER, Marcelo; MELO, Ana Cristina Vieira de. Lógica para computação. São Paulo: Thomson, 2006. 234 p. ISBN 85-221-0517-0. 3 KAESTNER, Celso Antônio Alves. Lógica para Computação. <http://www.dainf.cefetpr.br/~kaestner/Logica/AlgoritmodeWang.ppt>. Acesso em: 19 mar. 2009, 15:12. 4 <http://pt.wikipedia.org/wiki/Augustus_De_Morgan>. Acesso em: 20 mar. 2009, 16:09. 5 < http://pt.wikipedia.org/wiki/Dupla_nega%C3%A7%C3%A3o>. Acesso em: 20 mar. 2009, 16:42. 6 <http://labic.icmc.usp.br/didactic-material/logic/FormasNormais.pdf>. Acesso em: 20 mar. 2009, 17:12. 7 <http://en.wikipedia.org/wiki/Robert_Kowalski>. Acesso em 22 mar. 2009, 21:12. 8 <http://pt.wikipedia.org/wiki/Portas_l%C3%B3gicas>. Acesso em 23 mar. 2009, 20:57. Outras referências: <http://pt.wikipedia.org/wiki/Forma_normal_disjuntiva> <http://pt.wikipedia.org/wiki/Forma_normal_clausal> <http://pt.wikipedia.org/wiki/Forma_normal_conjuntiva> <http://pt.wikipedia.org/wiki/Cl%C3%A1usula_de_Horn> <http://pt.wikipedia.org/wiki/Forma_normal_alg%C3%A9brica> <http://www.inf.pucrs.br/~alfio/Logica/lec04-prop-equiv.pdf> <http://200.17.137.110:8080/licomp/Members/cicero/logica-e-programacaologica/turma-lc1-2007.2/arquivos/5-logica_proposicional3.ppt> <http://www.dcc.fc.up.pt/~nam/aulas/0405/lc/teoricas/nlc.pdf> Os endereços eletrônicos acima foram acessados em 20 mar. 2009.