从 SymPy 中的布尔表达式中删除一些变量
Remove some variables from Boolean expression in SymPy
我在 SymPy 中有一个布尔表达式。如果我知道一些符号的值,我怎样才能找到其余符号之间的关系?
例如:
from sympy.core.symbol import Symbol
from sympy.logic.boolalg import Equivalent
from sympy import simplify_logic
a=Symbol("a")
b=Symbol("b")
c=Symbol("c")
d=Symbol("d")
e=Symbol("e")
expr=a&b>>c|a&d|~a&Equivalent(c,(d|a&e))
print("if a=True and d=False, then relation between a,c and e must be")#c|~b
或者:我有一个布尔函数 f(a,b,c,k,l,j)
。如果 a
、b
和 c
已知,如何求解 k
、l
和 j
?我知道我必须形成一个新表达式,该表达式对 a
、b
和 c
的任何值都为真,但如何做?
simplify_logic((eeldus&expr)) #leaves a and d in.
如果我正确理解你的问题,subs
会起作用:
>>> from sympy import *
>>> a, b, c, d, e = symbols('a b c d e')
>>> expr = a & b >> c | a & d | ~a & Equivalent(c,(d | a & e))
>>> expr.subs([(a,true),(d,false)])
Implies(b, c)
我在 SymPy 中有一个布尔表达式。如果我知道一些符号的值,我怎样才能找到其余符号之间的关系? 例如:
from sympy.core.symbol import Symbol
from sympy.logic.boolalg import Equivalent
from sympy import simplify_logic
a=Symbol("a")
b=Symbol("b")
c=Symbol("c")
d=Symbol("d")
e=Symbol("e")
expr=a&b>>c|a&d|~a&Equivalent(c,(d|a&e))
print("if a=True and d=False, then relation between a,c and e must be")#c|~b
或者:我有一个布尔函数 f(a,b,c,k,l,j)
。如果 a
、b
和 c
已知,如何求解 k
、l
和 j
?我知道我必须形成一个新表达式,该表达式对 a
、b
和 c
的任何值都为真,但如何做?
simplify_logic((eeldus&expr)) #leaves a and d in.
如果我正确理解你的问题,subs
会起作用:
>>> from sympy import *
>>> a, b, c, d, e = symbols('a b c d e')
>>> expr = a & b >> c | a & d | ~a & Equivalent(c,(d | a & e))
>>> expr.subs([(a,true),(d,false)])
Implies(b, c)