Согласно sympy docs на logic package, мы можем преобразовать произвольное булево выражение в форму DNF/CNF, используя to_cnf
/to_dnf
или simplify_logic(expr, form='cnf'/'dnf')
.Как получить выражения выражения DNF/CNF в sympy?
Но после этого, как получить предложения из результата?
Мы можем попробовать использовать поле args
. НО использовать это очень неудобно. Например, если вы преобразуете простое выражение, например ~a
, в CNF/DNF, то в результате вы получите ~a
, а затем вызывается (~a).args
()
, что не является предложением! (конечно, я могу обходиться с if
проверками, но это уродливо)