입력하기 귀찮으므로 주어진 연산을 *, 차집합을 -, 교집합을 &, 합집합을 |, 여집합을 '로 표시함.


def. A-B=A&B'


lemma. A*B = B*A

Proof. A*B = (A|B)-(A&B) = (B|A)-(A&B) = (B|A)-(B&A) = B*A


(A*B)*C = ((A*B)|C)-((A*B)&C) = ((A*B)|C)&((A*B)&C)'


(A*B)|C = ((A|B)-(A&B))|C = ((A|B)&(A&B)')|C = ((A|B)&(A'|B'))|C = (A|B|C)&(A'|B'|C)

((A*B)&C)' = (((A|B)-(A&B))&C)' = (((A|B)&(A&B)')&C)' = (((A|B)&(A'|B'))&C)' = ((A|B)&(A'|B'))'|C' = (A|B)'|(A'|B')'|C' = (A'&B')|(A'|B')'|C' = (A'&B')|(A&B)|C' = (A'&B')|((A&B)|C') = (A'|(A&B)|C')&(B'|(A&B)|C')


A'|(A&B)|C' = ((A'|A)&(A'|B))|C' = (A'|A|C')&(A'|B|C') = U&(A'|B|C') = (A'|B|C')

B'|(A&B)|C' = ((B'|A)&(B'|B))|C' = (B'|A|C')&(B'|B|C') = (B'|A|C')&U = (B'|A|C')

=> ((A*B)&C)' = (A'|B|C')&(B'|A|C')


=> (A*B)*C = (A|B|C)&(A'|B'|C)&(A'|B|C')&(B'|A|C') = (A|B|C)&(A'|B'|C)&(A'|B|C')&(A|B'|C')


A*(B*C) = (B*C)*A = (B|C|A)&(B'|C'|A)&(B'|C|A')&(B|C'|A') = (A|B|C)&(A|B'|C')&(A'|B'|C)&(A'|B|C')=(A|B|C)&(A'|B'|C)&(A'|B|C')&(A|B'|C') = (A*B)*C