Teorema De Boole - 1º e 2º teorema de de morgan e álgebra de boole | PDF
1º e 2º teorema de de morgan e álgebra de boole | PDF

Como simplificar expressões booleanas sem perder a cabeça

Achei a matéria e resolvi colocar no papel o que eu vejo todo mundo errando. Teorema de Boole não é mágica. É um conjunto de regras que você decora de tanto usar até virar automático. Se você ainda depende de tabela-verdade para tudo, está gastando tempo demais. Uma expressão com 6 variáveis pode te levar 40 minutos pra simplificar na mão se for fazer por tabela. Com os teoremas certos, leva uns cinco. Os teoremas fundamentais são: lei da dupla negação (NOT NOT A = A), leis de identidade (A AND 1 = A, A OR 0 = A), leis de complementação (A AND NOT A = 0, A OR NOT A = 1), leis comutativas, associativas, distributivas, leis de absorção (A + A.B = A) e os teoremas de De Morgan (NOT(A AND B) = NOT A OR NOT B e NOT(A OR B) = NOT A AND NOT B). Parece muito, mas na prática você usa uns três ou quatro na maior parte do tempo.

O que realmente funciona ao aplicar o teorema de boole

O erro mais comum é tentar aplicar Distributiva onde Absorção resolve em uma linha. Eu vi gente expandindo A + A.B em (A + A)(A + B) e depois se perdendo. Tá certo, dá no mesmo resultado final, mas é trabalho duplo. Se você ver um termo repetido somado com uma versão ANDada dele, aplique absorção direto. A + A.B = A. Pronto. Segundo, De Morgan é onde a maioria tropeça. O truque é: inverte-se cada variável E inverte-se o operador. Se inverter só um dos dois, a conta já nasce errada. Eu costumo fazer um parêntese grande em volta da expressão inteira, passo um NOT, aplico De Morgan por camadas, e só aíifico. Passo a passo, nunca de uma vez só. Outra coisa que ninguém ensina: teorema da consenso. Se você tem AB + NOT A.C + BC, o termo BC é redundante porque AB + NOT A.C já cobre todos os casos em que BC seria verdadeiro. Remover o consenso encolhe expressões que parecem travadas. É útil em lógica combinacional onde o objetivo é número mínimo de portas, não apenas forma reduzida.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Uma situação real que eu enfrentei: estava simplificando uma equação de três variáveis pro projeto de um decoder e a expressão A'B + AB' + AB resultava em A + B. Mas num caso específico, com uma variável de enable ativa baixo, o termo AB se sobrepunha e a simplificação ingênua via absorção me dava uma resposta que fechava um caminho proibido no circuito. Eu ia ignorar porque a tabela-verdade batia. Mas testei com simulator e havia um glitch transitório quando as duas variáveis mudavam simultaneamente. A solução foi reter o termo consensus AB explicitamente, mesmo redundant do ponto de vista booleano puro, porque em hardware real redundância às vezes é proteção contra hazards. Aprendi isso na marra. Vale a pena anotar: simplificação booleana dá a lógica funcional, mas em síncrono com múltiplas clock domains ou quando transições são assíncronas, redundância controlada evita hazards de sinal. Se você precisa de ferramenta pra validar o que fez na mão, o Espresso heuristic logic minimizer ainda é o padrão aberto. Ele resolve problemas com seis a oito variáveis sem dor. Tem versão em linha de comando e interface gráfica via espressif. Pra uso rápido e pontual, o Logicly ou até planilhas com solver também servem, mas dependendo do problema, Eles são mais visuais e ajudam a checar sem escrever código. Ferramenta não substitui o entendimento das regras, mas economiza tempo em expressões maiores.

O limitante mais chato dos teoremas booleanos clássicos é quando o problema envolve timing ou valores tr-state. Álgebra booleana trata variável como 0 ou 1 absoluto. Se seu circuito tem alta impedância, undefined state ou metas de setup/hold, o teorema de boole sozinho não chega a lugar nenhum. Nesses casos, o caminho é modelar no domínio temporal ou usar ferramentas de verificação formal. Não adianta insistir em simplificar manualmente algo que exige análise de caminho crítico. O ganho é real quando a aplicação é puramente combinacional síncrona. Fora disso, o esforço de simplificação manual tem retorno decrescente.