Forma normal disyuntiva en Python
Usando python, ¿cuál es la mejor manera de convertir una cadena de AND y OR enforma normal disyuntiva (también conocido como "suma de productos")?
b AND (c OR (a AND d))
se convierte
(b AND c) OR (b AND a AND d)
Me gustaría ordenar también estos, lexicográficamente
(a AND b AND d) OR (b AND c)