paizaでsympy その3


概要

sympyが、魔法なので、paizaで、やってみた。
練習問題、やってみた。

問題

~((AUB)n(~AU~B)) と等価な集合はどれか。ここで,Uは和集合,nは積集合,~xはxの補集合を表す。

(~AUB)∩(AU~B)

(~AU~B)∩(AUB)

(~A∩B)U(A∩~B)

(~A∩~B)∩(AUB)

from sympy.abc import A, B
from sympy.logic.boolalg import *
import sympy

print (~((A | B) & (~A | ~B)) == (~A | B) & (A | ~B))
print (~((A | B) & (~A | ~B)) == (~A | ~B) & (A | B))
print (~((A | B) & (~A | ~B)) == (~A & B) | (A & ~B))
print (~((A | B) & (~A | ~B)) == (~A & ~B) & (A | B))

結果

おかしい、すべて、FALSE

False
False
False
False

simplify_logicを使う。

from sympy.abc import A, B
from sympy.logic.boolalg import *
import sympy


print (sympy.simplify_logic(Equivalent(Not(And(Or(A, B), Or(~A, ~B))) == (~A | B) & (A | ~B))))
print (sympy.simplify_logic(Equivalent(~((A | B) & (~A | ~B)) == (~A | B) & (A | ~B))))

結果

True
True

以上。