Pythonによる集合の計算方法について


現在Pythonにて以下のような集合の計算に関する処理を実装しようとしております。  
もし、参考になるような実装方法やウェブサイト等ございましたら、ご教示頂きたく存じます。

[code]

    ("B" or "D") and ("A" or "B" or "C" or "D") and ("A" or "B" or "C")
    
    = ("B" or "D") and ("A" or "B" or "C")
    
    = "A" and "D" or "B" or "C" and "D"
    
[/code]

どうぞよろしくお願いいたします。




sympyを使うのではどうでしょう

[code]

    >>> import sympy
    >>> from sympy.logic.boolalg import to_cnf, to_dnf
    >>> A, B, C, D = sympy.symbols('A,B,C,D')
    >>> expr = (B | D) & (A | B | C | D) & (A | B | C)
    >>> to_cnf(expr, simplify=True)
    And(Or(A, B, C), Or(B, D))
    >>> to_dnf(expr, simplify=True)
    Or(And(A, D), And(C, D), B)
    
[/code]

詳しい使い方は公式ドキュメントが参考になります <http://docs.sympy.org/latest/modules/logic.html>

