Удалите некоторые переменные из логического выражения в SymPy - PullRequest
0 голосов
/ 25 мая 2018

У меня есть логическое выражение в 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).Как решить для k, l и j, если известны a, b и c?Я знаю, что мне нужно сформировать новое выражение, которое истинно для любых значений a, b и c, но как это сделать?

simplify_logic((eeldus&expr))                    #leaves a and d in.

1 Ответ

0 голосов
/ 26 мая 2018

Если я правильно понимаю ваш вопрос, 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)
...