如何将否定传播到文字?

问题描述

我想转换一个表达式,以便所有否定运算符都向下传播到文字。所以 ~(a | b) 变成了 ~a & ~b。有没有人对此有解决方案?

from pyeda.boolalg.expr import expr

formula = "~(a | b)"
e = expr(formula,simplify=False)

解决方法

有两种方法可以在连词范式和析取范式之间来回切换。

.to_dnf()

.to_cnf()

试试,

>>> e.to_dnf()
And(~a,~b)