Quickstart

  • Instale o Python (baixe ou use seu gerenciador de pacotes favorito.)
  • Instale o pacote sympy, com python -m pip install sympy.

Estudos de Caso

Considere que deseja-se simplificar a expressão A'B'C' + A'B'C + ABC' + AB'C', também representada pela seguinte tabela-verdade:

ABCDS
00001
00011
00101
00111
01000
01010
01100
01110
10001
10011
10100
10110
11001
11011
11100
11110

Caso 1 - Partindo da Tabela-verdade

from sympy.logic import SOPform
from sympy import symbols
from sympy.logic.boolalg import bool_miniterm

# Extraia manualmente os minitermos e guarde-os em uma matriz
miniterms = [
    [0, 0, 0, 0],  # A'B'C'D'
    [0, 0, 0, 1],  # A'B'C'D
    [0, 0, 1, 0],  # A'B'CD'
    [0, 0, 1, 1],  # A'B'CD
    [1, 0, 0, 0],  # AB'C'D'
    [1, 0, 0, 1],  # AB'C'D
    [1, 1, 0, 0],  # ABC'D'
    [1, 1, 0, 1]   # ABC'D
]

# Nomeie as variaveis atraves de simbolos
A, B, C, D = symbols('A B C D')

# Simplifique a expressao
simplified_expression = SOPform([A, B, C, D], miniterms)

# Mostre o resultado
print("Minitermos:")
[print(x) for x in miniterms]
print()

print("Expressao simplificada:")
print(simplified_expression)
Minitermos:
[0, 0, 0, 0]
[0, 0, 0, 1]
[0, 0, 1, 0]
[0, 0, 1, 1]
[1, 0, 0, 0]
[1, 0, 0, 1]
[1, 1, 0, 0]
[1, 1, 0, 1]

Expressao simplificada:
(A & ~C) | (~A & ~B)

Caso 2 - Partindo da Expressão Booleana

from sympy.logic import simplify_logic
from sympy import symbols

# Crie os simbolos e defina a expressao logica
A, B, C, D = symbols('A B C D')
expression = ~A & ~B & ~C | ~A & ~B & C | A & B & ~C | A & ~B & ~C

# Simplifique a expressao
simplified_expression = simplify_logic(expression, 'dnf')

# Mostre o resultado
print("Expressao original:")
print(expression)
print()

print("Expressao simplificada:")
print(simplified_expression)
Expressao original:
(A & B & ~C) | (A & ~B & ~C) | (C & ~A & ~B) | (~A & ~B & ~C)

Expressao simplificada:
(A & ~C) | (~A & ~B)

Como esperado, os resultados coincidem.