我需要解决一组符号布尔表达式,例如:
>>> solve(x | y = False)
(False, False)
>>> solve(x & y = True)
(True, True)
>>> solve (x & y & z = True)
(True, True, True)
>>> solve(x ^ y = False)
((False, False), (True, True))
此类变量的数量很大(~200),因此暴力策略是不可能的。我在网上搜索,发现Sympy和Sage具有符号操作功能(特别是this和this可能有用)。我怎样才能做到这一点?
编辑:我主要试图操纵这样的事情:
>>> from sympy import *
>>> x=Symbol('x', bool=True)
>>> y=Symbol('y', bool=True)
>>> solve(x & y, x)
这导致NotImplementedError
. 然后我尝试 solve(x * y, x)
了 which give [0]
(我不知道这是什么意思),solve(x * y = True, x)
导致 a SyntaxError
,solve(x * y, True, x)
并solve(x & y, True, x)
给出了AttributeError
. 我不知道还能尝试什么!
编辑(2):我也发现了这个,可能有用!