Auch wenn das nicht weiter zum Thema gehört, aber vielleicht interessiert Dich, Autor des Ursprungspostings, ja trotzdem (ist nämlich in der Boole’schen Algebra sehr hilfreich, wenn man das verstanden hat)… Durch Negation von Verknüpfungen kann man sog. „Normalformen“, das heißt Ketten von Aussagen, die einem Schema folgen. In den seeligen Zeiten der selbstgebastelten Logik-Schaltkreise gab’s nämlich immer wieder sonntags das Problem, dass man grad keinen „NAND“ (nicht-und)-Chip zur Hand hatte und sich einen basteln musste… Aber zurück zum Thema.
Seien A, B zwei Aussagen beliebiger Art. Der Einfachheit halber kann man die Dinger auch Variablen nennen, dann sind wir schon fast bei Programmiersprachen. Zur weiteren Vereinfachung verwende ich mal „C“-/Perl-/PHP-Schreibweise für die Verknüpfungen:
!A ist die Negation von A, also „nicht A“
A & B ist die UND-Verknüpfung, also „A ^ B“
A | B ist die ODER-Verknüpfung, also „A v B“
Die gesetzten Klammern sind wie in der „normalen“ Mathematik zu behandeln, also erst das Innere, dann das Äußere.
Dann gilt:
!(A & B) = !A | !B
(auf Deutsch: Die Verneinung der UND-Verknüpfung der Aussagen A und B (kurz gesagt „sowohl A als auch B“) entspricht einer ODER-Verknüpfung der Verneinungen der Aussagen.)
Beispiel zum Beweis: A, B seien Wahr/Falsch-Aussagen beliebiger Art (denk Dir was aus, „Jupp ist ein weiblicher Vorname“ oder „Kühe sind in der Regel rot“ oder „Autos haben meist vier Räder“) bzw. genau genommen bereits die Antworten in der Art „wahr“ bzw. „falsch“. Dann gibt es vier Möglichkeiten der Kombination:
- A ist falsch, B ist falsch, kurz A=f, B=f
- A ist falsch, B ist wahr, kurz A=f, B=w
- A ist wahr, B ist falsch (etc.)
- A ist wahr, B ist wahr
Eingesetzt:
- !(A & B) = !(f & f) = !f = w
- !(A & B) = !(f & w) = !f = w
- !(A & B) = !(w & f) = !f = w
- !(A & B) = !(w & w) = !w = f
Die zweite Formel:
- !A | !B = !f | !f = w | w = w
- !A | !B = !f | !w = w | f = w
- !A | !B = !w | !f = f | w = w
- !A | !B = !w | !w = f | f = f
q.e.d.
Genauso gilt (Beweis bitte selbst probieren)
!(A | B) = !A & !B
Außerdem gelten solche lustigen Dinge wie
A & B = B & A
A | B = B | A
A & (B | C) = (A & B) | (A & C)
und, ganz spannend *gg*:
!!A = A (d.h. doppelte Negation hebt sich auf)
Deine Ursprungsaufgabe:
C = {x|(x є A v x є B) ^ ( ¬(x є A) v ¬(x є B))}
sagt wie gehabt in Programmierschreibweise:
C = (A | B) & (!A | !B)
C = (A | B) | !(A & B)
Damit man das auf Deutsch ausdrücken kann, muss man „oder nicht“ mit „aber nicht“ übersetzen und das sprachlich missverständliche „oder“ deutlich als nicht ausschließend ausdrücken, dann wird auch deutsch Logik draus:
C ist dann wahr, wenn
- A oder B oder beide wahr sind
aber nicht
- beide, A und B wahr sind.
In der Boole’schen Algebra nennt man das, was sich hier ergibt, ein „ausschließendes“ oder „exklusives“ ODER, in manchen Programmiersprachen als XOR abgekürzt. Es entspricht dem „oder“, das wir aus der Sprache kennen: „Zum Einlass wird Krawatte oder Fliege vorausgesetzt“ - wer beides gleichzeitig trägt, dürfte kaum rein kommen 
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]