首页 > 解决方案 > Python sympy 分配律。从术语中排除变量

问题描述

我确实有一个布尔公式,我想从中排除类似的变量。所以基本上我想向前和向后使用分配律。

z1, z0, s, d = symbols('z1,z0,s,d')
formula3 = ( "~z1 & ~z0 & ~d | z0 & ~z1 & s & ~d")
print(simplify_logic((formula3)))

Sympy 确实具有简化逻辑术语的功能,但该功能更进一步,并为我提供了以下值:

~d & ~z1 & (s | ~z0)

但我期望的是:

~z1 & ~d & (~z0 | (s & z0))

是否有任何功能可以满足我的需求,或者最好的解决方案是什么?为了让它恢复到原来的形式,我目前使用 to_dnf() 或 to_cnf()。还是有更好的做事方式?

标签: pythonlogicsympy

解决方案


推荐阅读