Menschliche Logik AND Boolsche Logik = NOT Logisch Der Satz vom Widerspruch Eine Aussage kann nicht gleichzeitig mit ihrem Gegenteil wahr sein. z.B.: „Zürich ist ein Kontinent.“ und „Zürich ist kein Kontinent.“ kann nicht gleichzeitig wahr sein. Axiom (Vorannahme) der Logik, d.h. weder beweis- noch widerlegbar Aristoteles, Begründer der Logik * 384 v. Chr. in Stageira † 322 v. Chr. in Chalkis Logische Folgerung Aussage 1: „Wenn es regnet, wird die Straße nass.“ Aussage 2: „Es regnet.“ Folgerung: „Die Straße wird nass.“ Aus den zwei Aussagen “wenn A, dann B“ und „A“ kann die Aussage „B“ hergeleitet werden. Auf diese Weise können wir argumentieren und mittels gemeinsam anerkannten „Regeln“ und wahren Aussagen neue Aussagen als wahr herleiten. Was sind Aussagen? Aussagen sind Sätze, die entweder wahr (1) oder falsch (0) sind. 2+4=6 1 Zürich ist die Hauptstadt der Schweiz. 0 Peter (23) ist älter als Paul (17). 1 unklar! Keine Aussagen: • • Wo ist der Bahnhof? Ruhe jetzt! • • Bern ist eine schöne Stadt. Dieses Wasser (20°) ist kalt. Aussagenlogik Aussagen… …werden durch Variablen repräsentiert …haben Wahrheitswert (wahr/falsch, resp. 0/1) A = „Zürich ist die Hauptstadt der Schweiz.“ B = „2+4=6“ 0 1 Aussagenlogische Formeln sind zusammengesetzte Aussagen (*Beispiele mit obigen Werten für A und B): A UND B A ODER B (NICHT A) UND B 0 1 1 Zusammengesetzte Aussagen… … sind ebenfalls Aussagen, also auch entweder wahr oder falsch – je nach Wahrheitsgehalt ihrer Teile. Peter ist älter als Paul und 4+4=8. ? ... werden oft als Wahrheitstabellen dargestellt, z.B. Die Idee ist, für alle Kombinationen der einfliessenden Teilaussagen (= Inputs) den Wert der zusammengesetzten Aussage (= Output) darzustellen A B A UND B 0 0 0 0 1 0 1 0 0 1 1 1 George Boole Begründer der Aussagenlogik englischer Mathematiker * 1815 in Lincoln † 1864 in Ballintemple (Irland) Boolesche Variablen Können immer nur einen von zwei Werten annehmen true/false, wahr/falsch, 1/0 In vielen Programmiersprachen ein „Datentyp“ Oft gebraucht für bedingte Anweisungen z.B. in Java, C, PHP, Pascal oder VisualBasic Logische Operatoren Logische Operatoren verbinden Aussagen zu neuen (zusammengesetzten) Aussagen Die drei grundlegenden Operatoren sind: UND ODER NICHT (fast alle anderen lassen sich aus diesen drei Operatoren zusammensetzen) AND Deutsch: UND „sowohl A als auch B“ mathematisches Symbol: ∧ in Java: && (z.B. true && false -> false) OR Deutsch: ODER „entweder A oder B oder beides“ mathematisches Symbol: V in Java: || NOT Deutsch: NICHT, Negation „nicht A, also das Gegenteil“ mathematisches Symbol: in Java: ! ¬ XOR Deutsch: ausschliessendes ODER „entweder A oder B, aber nicht beides“ mathematisches Symbol: ⊻ in Java: ^ Wahrheitstabellen: Wer hat genascht? Boris: „Karsten oder ich waren es.“ Karsten: „Entweder war es Ulf oder ich.“ Ulf: „Entweder hat Boris oder ich nicht genascht.“ B K U Beispiel: Wer hat genascht? Boris: „Karsten oder ich waren es.“ Karsten: „Entweder war es Ulf oder ich.“ Ulf: „Entweder hat Boris oder ich nicht genascht.“ B K U 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 Wer hat genascht? Boris: „Karsten oder ich waren es.“ Karsten: „Entweder war es Ulf oder ich.“ Ulf: „Entweder hat Boris oder ich nicht genascht.“ B K U 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 K OR B U XOR K ¬U XOR ¬B gleich U XOR B (K OR B) AND (U XOR K) AND (U XOR B) Wer hat genascht? Boris: „Karsten oder ich waren es.“ Karsten: „Entweder war es Ulf oder ich.“ Ulf: „Entweder hat Boris oder ich nicht genascht.“ ¬U XOR ¬B B K U K OR B U XOR K 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 gleich U XOR B (K OR B) AND (U XOR K) AND (U XOR B) Wer hat genascht? Boris: „Karsten oder ich waren es.“ Karsten: „Entweder war es Ulf oder ich.“ Ulf: „Entweder hat Boris oder ich nicht genascht.“ ¬U XOR ¬B gleich U XOR B (K OR B) AND (U XOR K) AND (U XOR B) 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 B K U K OR B U XOR K 0 0 0 0 1 0 0 0 1 1 Wer kommt zur Party? Ute: „Entweder kommt Ingrid oder Sonja.“ Sonja: „Entweder kommt Ingrid oder Ute.“ Ingrid: „Es kommen Sonja oder Ute (oder beide).“ U S I Lösung: Ingrid kommt nicht, Sonja und Ute schon Umformungsregeln Assoziativgesetz (A Λ B) Λ C = A Λ (B Λ C) = A Λ B Λ C (A V B) V C = A V (B V C) = A V B V C Distributivgesetz A Λ (B V C) = (A Λ B) V (A Λ C) A V (B Λ C) = (A V B) Λ (A V C) De Morgansche’s Gesetz ¬(A V B) = ¬A Λ ¬B ¬(A Λ B) = ¬A V ¬B Doppelte Negation ¬¬A = A Bsp.: ¬(A V ¬B) = ¬A Λ ¬¬B = ¬A Λ B de Morgan'sche Regel „Morgen abend gibt‘s Pizza und Bier.“ Negation? Formal: A: es gibt Pizza, B: es gibt Bier Negation von A Λ B: ¬(A Λ B) = ¬A V ¬B De Morgan: Das NOT ist wie ein Minus, und Vorzeichen umkehren macht aus einem AND ein OR – oder umgekehrt A B ¬(A Λ B) 0 0 0 1 1 0 1 1 ¬A V ¬B de Morgan'sche Regel „Morgen abend gibt‘s Pizza und Bier.“ Negation? Formal: A: es gibt Pizza, B: es gibt Bier Negation von A Λ B: ¬(A Λ B) = ¬A V ¬B A B ¬(A Λ B) ¬A V ¬B 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 „Morgen gibt‘s nicht Pizza UND Bier“, bzw. „Morgen gibt‘s keine Pizza oder kein Bier“ Logik in Java Logische Operationen: AND: && OR: || NOT: ! Boolean: Variable, die entweder wahr oder falsch ist (engl.: true oder false) z.B.: true && false -> false logischer Vergleich: == Achtung! Zuweisung: =