Aussagenlogik: Unterschied zwischen den Versionen
Sn (Diskussion | Beiträge) (→Logisches Und: Logisches Oder) |
Sn (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Die [[Aussagenlogik]] ist ein Teilgebiet der [[Informatik]] und Logik, das sich mit Aussagen und ihren Beziehungen untereinander beschäftigt. Wenn wir allgemein von ''Aussagenlogik'' sprechen, meinen wir in der Regel die nach ihrem Erfinder '''George Boole''' benannte '''Boolesche Logik'''. In der Booleschen Logik ist eine Aussage ein Satz, der entweder '''wahr''' oder '''falsch''' ist. | Die [[Aussagenlogik]] ist ein Teilgebiet der [[Informatik]] und Logik, das sich mit Aussagen und ihren Beziehungen untereinander beschäftigt. Wenn wir allgemein von ''Aussagenlogik'' sprechen, meinen wir in der Regel die nach ihrem Erfinder '''George Boole''' benannte '''Boolesche Logik'''. In der Booleschen Logik ist eine Aussage ein Satz, der entweder '''wahr''' oder '''falsch''' ist. '''Wahr''' und '''Falsch''' werden auch als [[Wahrheitswert]]e bezeichnet, auf Englisch nach ihrem Erfinder als <span lang="en">''boolean''</span>. | ||
{{Beispiel|<q>Heute ist Dienstag.</q> ist eine Aussage, die {{#widget:Dienstag}} ist. | {{Beispiel|<q>Heute ist Dienstag.</q> ist eine Aussage, die {{#widget:Dienstag}} ist. | ||
Zeile 7: | Zeile 7: | ||
Aussagen können mit '''logischen Operatoren''' verknüpft werden. | Aussagen können mit '''logischen Operatoren''' verknüpft werden. | ||
== Logisches Und == | == Logisches Nicht (Negation)== | ||
{{Thumbnailbox|INHALT= | |||
{{{!}} class="wikitable" | |||
{{!}}+Logisches Nicht | |||
! <math>A</math> | |||
! <math>\neg A</math> | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} falsch | |||
{{!}}} | |||
|CAPTION=Wahrheitstabelle für das Logische Nicht}} | |||
Wenn man eine Aussage <math>A</math> mit '''Nicht''' (<math>\neg</math>) negiert, entsteht eine neue Aussage <math>\neg A</math>, die genau dann wahr ist, wenn <math>A</math> falsch ist. | |||
{{Beispiel|1= | |||
<q>Heute ist nicht Dienstag.</q> ist eine negierte Aussage. Die nicht-negierte Aussage ist: <q>Heute ist Dienstag</q>. | |||
Nur wenn die Aussage <q>Heute ist Dienstag</q> falsch ist, ist die Negation <q>Heute ist nicht Dienstag</q> wahr.}} | |||
In vielen [[Programmiersprache]]n wird das Logische Und durch ein Ausrufezeichen {{Java|!}} dargestellt, etwa in [[Java (Programmiersprache)|Java]] oder [[C (Programmiersprache)|C]]. In anderen Sprachen wie [[Python (Programmiersprache)|Python]] wird dafür das Schlüsselwort {{Python|not}} verwendet. | |||
In [[Scratch]] gibt es für das Logische Und den Block <sb><nicht <>></sb>. | |||
== Logisches Und (Konjunktion) == | |||
{{Thumbnailbox|INHALT= | {{Thumbnailbox|INHALT= | ||
Zeile 44: | Zeile 70: | ||
In [[Scratch]] gibt es für das Logische Und den Block <sb><<> und <>></sb>. | In [[Scratch]] gibt es für das Logische Und den Block <sb><<> und <>></sb>. | ||
== Logisches Oder == | == Logisches Oder (Disjunktion) == | ||
{{Thumbnailbox|INHALT= | {{Thumbnailbox|INHALT= | ||
{{{!}} class="wikitable" | {{{!}} class="wikitable" | ||
Zeile 75: | Zeile 101: | ||
In vielen [[Programmiersprache]]n wird das Logische Oder durch zwei <code>[[T:ASCII|{{!}}]]</code>-Zeichen dargestellt, etwa in [[Java (Programmiersprache)|Java]] oder [[C (Programmiersprache)|C]]. In anderen Sprachen wie [[Python (Programmiersprache)|Python]] wird dafür das Schlüsselwort {{Python|or}} verwendet. | In vielen [[Programmiersprache]]n wird das Logische Oder durch zwei <code>[[T:ASCII|{{!}}]]</code>-Zeichen dargestellt, etwa in [[Java (Programmiersprache)|Java]] oder [[C (Programmiersprache)|C]]. In anderen Sprachen wie [[Python (Programmiersprache)|Python]] wird dafür das Schlüsselwort {{Python|or}} verwendet. | ||
In [[Scratch]] gibt es für das Logische Oder den Block <sb><<> oder <>></sb>. | In [[Scratch]] gibt es für das Logische Oder den Block <sb><<> oder <>></sb>. | ||
{{Achtung|1= | |||
In der Umgangssprache meinen wir mit dem Wort <q>oder</q> in der Regel nicht das Logische Oder, sondern das Exklusiv-Oder. Wir erwarten dann, dass die Aussage <q>Es regnet oder es ist Dienstag.</q> genau dann wahr ist, wenn es regnet oder Dienstag ist, aber nicht beides gleichzeitig zutrifft. | |||
'''Fun fact:''' Im Lateinischen gibt es dafür zwei unterschiedliche Wörter: {{Link-la|vel|22}} für das Logische Oder und {{Link-la|aut|44}} für das Exklusiv-Oder.}} | |||
== Exklusiv-Oder == | |||
{{Thumbnailbox|INHALT= | |||
{{{!}} class="wikitable" | |||
{{!}}+Exklusiv-Oder | |||
! <math>A</math> | |||
! <math>B</math> | |||
! <math>A \oplus B</math> | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} falsch | |||
{{!}} falsch | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}} falsch | |||
{{!}}} | |||
|CAPTION=Wahrheitstabelle für das Exklusiv-Oder}} | |||
Wenn man zwei Aussagen <math>A</math> und <math>B</math> mit '''Exklusiv-Oder''' (abgekürzt '''xor''') (<math>\oplus</math>, in manchen Büchern auch <math>\veebar</math>) verknüpft, entsteht eine neue Aussage <math>A \oplus B</math>, die genau dann wahr ist, wenn ''entweder'' <math>A</math> wahr ist ''oder'' <math>B</math> wahr ist, aber nicht beide. Sobald beide Aussagen denselben Wahrheitsgehalt haben, ist auch die Gesamtaussage falsch. | |||
{{Beispiel|1= | |||
<q>Ich habe eine Katze xor ich habe einen Hund.</q> ist eine Aussage, die aus zwei Einzelaussagen besteht, die mit einem ''xor'' verbunden sind. Die einzelnen Aussagen sind: <q>Ich habe eine Katze</q> und <q>Ich habe einen Hund</q>. | |||
Nur wenn genau eine dieser Aussagen wahr ist, ist die Gesamtaussage wahr. Wenn ich überhaupt kein Haustier oder sowohl eine Katze als auch einen hund hätte, wäre die Gesamtaussage falsch.}} | |||
In vielen [[Programmiersprache]]n wird das Logische Und durch ein <code>[[T:ASCII|^]]</code>-Zeichen dargestellt, etwa in [[Java (Programmiersprache)|Java]], [[C (Programmiersprache)|C]] oder [[Python (Programmiersprache)|Python]]. | |||
In [[Scratch]] gibt es für das Exklusiv--Oder keinen eigenen Block. Stattdessen muss man sich mit Konstruktionen wie <sb><<<a> und <nicht <b>>> oder <<nicht <a>> und <b>>></sb> behelfen. | |||
== Implikation == | |||
{{Thumbnailbox|INHALT= | |||
{{{!}} class="wikitable" | |||
{{!}}+Implikation | |||
! <math>A</math> | |||
! <math>B</math> | |||
! <math>A \Rightarrow B</math> | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} falsch | |||
{{!}} falsch | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}}} | |||
|CAPTION=Wahrheitstabelle für die Implikation}} | |||
Wenn man zwei Aussagen <math>A</math> und <math>B</math> mit '''Wenn, Dann''' (<math>\Rightarrow</math>) verknüpft, entsteht eine neue Aussage <math>A \Rightarrow B</math>, die genau dann wahr ist, wenn <math>A</math> und <math>B</math> wahr sind oder wenn <math>A</math> falsch ist. Klingt unintuitiv, ist aber so. Die Idee dahinter ist, dass die Implikation nichts darüber aussagt, falls die Annahme falsch ist. Dazu sagt man: <q lang="la">Ex falso quodlibet</q> – <q>Aus etwas Falschem [kann man schlussfolgern,] was man will.</q> | |||
{{Beispiel|1= | |||
<q>Wenn es regnet, wird die Erde nass.</q> ist eine Aussage, die aus zwei Einzelaussagen besteht, die mit einem ''wenn, dann'' verbunden sind. Die einzelnen Aussagen sind: <q>Es regnet</q> und <q>Die Erde wird nass</q>. | |||
Wenn beide dieser Aussagen wahr sind, ist die Gesamtaussage wahr. Wenn aber die Annahme <q>Es regnet</q> falsch ist, heißt das nicht, dass die Schlussfolgeurng <q>Die Erde wird nass</q> falsch sein muss. Die Erde kann auch aus anderen Gründen nass sein. Die Gesamtaussage wird in dem Fall aber nicht ungültig.}} | |||
Die Implikation spielt vor allem in der [[Theoretische Informatik|Theoretischen Informatik]] eine Rolle, nicht beim Programmieren. Wenn man beim Programmieren eine Implikation ausdrücken möchte, muss man die Implikation z.B. als <math>\neg A \vee B</math> umschreiben, also als {{Java|!a {{!}}{{!}} b}}, {{Python|not a or b}} oder <sb><<nicht <>> oder <>></sb>. | |||
== Äquivalenz == | |||
{{Thumbnailbox|INHALT= | |||
{{{!}} class="wikitable" | |||
{{!}}+Äquivalenz | |||
! <math>A</math> | |||
! <math>B</math> | |||
! <math>A \Leftrightarrow B</math> | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}}- | |||
{{!}} falsch | |||
{{!}} wahr | |||
{{!}} falsch | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} falsch | |||
{{!}} falsch | |||
{{!}}- | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}} wahr | |||
{{!}}} | |||
|CAPTION=Wahrheitstabelle für die Äquivalenz}} | |||
Wenn man zwei Aussagen <math>A</math> und <math>B</math> mit '''Genau dann, wenn''' (<math>\Leftrightarrow</math>) verknüpft, entsteht eine neue Aussage <math>A \Leftrightarrow B</math>, die genau dann wahr ist, wenn <math>A</math> und <math>B</math> denselben Wahrheitswert haben. Wenn man umgangssprachlich ''wenn'' sagt, meint man meistens ''genau dann, wenn''. | |||
{{Beispiel|1= | |||
Man formuliert oft Implikationen wie <q>Ruf mich, wenn du Hilfe brauchst.</q> Streng genommen entspricht man dieser Bitte auch, wenn man ohne ein Hilfebedürfnis ruft, denn <span lang="la">ex falso quodlibet</span>. | |||
Was man meint ist: <q>Ruf mich genau dann, wenn du Hilfe brauchst</q>, denn das bedeutet auch: Ruf mich nicht, wenn du keine Hilfe brauchst.}} | |||
Die Äquivalenz spielt vor allem in der [[Theoretische Informatik|Theoretischen Informatik]] eine Rolle, nicht beim Programmieren. Beim Programmieren kann man sich damit{ behelfen, dass die Äquivalenz auch die Gleichheit zweier Wahrheitswerte ist, und einfach den Gleichheitsoperator {{Java|{{=}}{{=}}}} benutzen. | |||
== Weblinks == | |||
{{ | * {{Inf-Schule|16.5.1.5|Logische Operatoren}} | ||
[[Kategorie:Theoretische Informatik]] | [[Kategorie:Theoretische Informatik]] |
Aktuelle Version vom 17. Dezember 2024, 16:13 Uhr
Die Aussagenlogik ist ein Teilgebiet der Informatik und Logik, das sich mit Aussagen und ihren Beziehungen untereinander beschäftigt. Wenn wir allgemein von Aussagenlogik sprechen, meinen wir in der Regel die nach ihrem Erfinder George Boole benannte Boolesche Logik. In der Booleschen Logik ist eine Aussage ein Satz, der entweder wahr oder falsch ist. Wahr und Falsch werden auch als Wahrheitswerte bezeichnet, auf Englisch nach ihrem Erfinder als boolean.
Heute ist Dienstag.
ist eine Aussage, die
ist.
Mach bitte die Tür zu.
ist eine Aufforderung, keine Aussage.
Aussagen können mit logischen Operatoren verknüpft werden.
Logisches Nicht (Negation)
falsch | wahr |
wahr | falsch |
Wenn man eine Aussage mit Nicht () negiert, entsteht eine neue Aussage , die genau dann wahr ist, wenn falsch ist.
Heute ist nicht Dienstag.
ist eine negierte Aussage. Die nicht-negierte Aussage ist: Heute ist Dienstag
.
Nur wenn die Aussage Heute ist Dienstag
falsch ist, ist die Negation Heute ist nicht Dienstag
wahr.
In vielen Programmiersprachen wird das Logische Und durch ein Ausrufezeichen !
dargestellt, etwa in Java oder C. In anderen Sprachen wie Python wird dafür das Schlüsselwort not
verwendet.
In Scratch gibt es für das Logische Und den Block <nicht <>>
.
Logisches Und (Konjunktion)
falsch | falsch | falsch |
falsch | wahr | falsch |
wahr | falsch | falsch |
wahr | wahr | wahr |
Wenn man zwei Aussagen und mit Und () verknüpft, entsteht eine neue Aussage , die genau dann wahr ist, wenn wahr ist und wahr ist. Sobald eine der beiden Aussagen falsch ist, ist auch die Gesamtaussage falsch.
Heute ist Dienstag und ich habe eine Katze.
ist eine Aussage, die aus zwei Einzelaussagen besteht, die mit einem und verbunden sind. Die einzelnen Aussagen sind: Heute ist Dienstag
und Ich habe eine Katze
.
Nur wenn beide dieser Aussagen wahr sind, ist die Gesamtaussage wahr. Wenn heute Mittwoch wäre, ich aber eine Katze hätte, wäre die Gesamtaussage trotzdem falsch.
In vielen Programmiersprachen wird das Logische Und durch zwei &
-Zeichen dargestellt, etwa in Java oder C. In anderen Sprachen wie Python wird dafür das Schlüsselwort and
verwendet.
In Scratch gibt es für das Logische Und den Block <<> und <>>
.
Logisches Oder (Disjunktion)
falsch | falsch | falsch |
falsch | wahr | wahr |
wahr | falsch | wahr |
wahr | wahr | wahr |
Wenn man zwei Aussagen und mit Oder () verknüpft, entsteht eine neue Aussage , die genau dann wahr ist, wenn mindestens eine der Aussagen und wahr ist. Nur wenn beide Aussagen falsch sind, ist auch die Gesamtaussage falsch.
Ich trinke Kaffee oder ich trinke Tee.
ist eine Aussage, die aus zwei Einzelaussagen besteht, die mit einem oder verbunden sind. Die einzelnen Aussagen sind: Ich trinke Kaffee
und Ich trinke Tee
.
Sobald eine dieser Aussagen wahr ist, ist die Gesamtaussage wahr. Wenn ich die Barbarei beginge, gleichzeitig Kaffee und Tee zu trinken, würde die Aussage trotzdem nicht falsch werden.
In vielen Programmiersprachen wird das Logische Oder durch zwei |
-Zeichen dargestellt, etwa in Java oder C. In anderen Sprachen wie Python wird dafür das Schlüsselwort or
verwendet.
In Scratch gibt es für das Logische Oder den Block <<> oder <>>
.
In der Umgangssprache meinen wir mit dem Wort oder
in der Regel nicht das Logische Oder, sondern das Exklusiv-Oder. Wir erwarten dann, dass die Aussage Es regnet oder es ist Dienstag.
genau dann wahr ist, wenn es regnet oder Dienstag ist, aber nicht beides gleichzeitig zutrifft.
Fun fact: Im Lateinischen gibt es dafür zwei unterschiedliche Wörter: vel[22] für das Logische Oder und aut[44] für das Exklusiv-Oder.
Exklusiv-Oder
falsch | falsch | falsch |
falsch | wahr | wahr |
wahr | falsch | wahr |
wahr | wahr | falsch |
Wenn man zwei Aussagen und mit Exklusiv-Oder (abgekürzt xor) (, in manchen Büchern auch ) verknüpft, entsteht eine neue Aussage , die genau dann wahr ist, wenn entweder wahr ist oder wahr ist, aber nicht beide. Sobald beide Aussagen denselben Wahrheitsgehalt haben, ist auch die Gesamtaussage falsch.
Ich habe eine Katze xor ich habe einen Hund.
ist eine Aussage, die aus zwei Einzelaussagen besteht, die mit einem xor verbunden sind. Die einzelnen Aussagen sind: Ich habe eine Katze
und Ich habe einen Hund
.
Nur wenn genau eine dieser Aussagen wahr ist, ist die Gesamtaussage wahr. Wenn ich überhaupt kein Haustier oder sowohl eine Katze als auch einen hund hätte, wäre die Gesamtaussage falsch.
In vielen Programmiersprachen wird das Logische Und durch ein ^
-Zeichen dargestellt, etwa in Java, C oder Python.
In Scratch gibt es für das Exklusiv--Oder keinen eigenen Block. Stattdessen muss man sich mit Konstruktionen wie <<<a> und <nicht <b>>> oder <<nicht <a>> und <b>>>
behelfen.
Implikation
falsch | falsch | wahr |
falsch | wahr | wahr |
wahr | falsch | falsch |
wahr | wahr | wahr |
Wenn man zwei Aussagen und mit Wenn, Dann () verknüpft, entsteht eine neue Aussage , die genau dann wahr ist, wenn und wahr sind oder wenn falsch ist. Klingt unintuitiv, ist aber so. Die Idee dahinter ist, dass die Implikation nichts darüber aussagt, falls die Annahme falsch ist. Dazu sagt man: Ex falso quodlibet
– Aus etwas Falschem [kann man schlussfolgern,] was man will.
Wenn es regnet, wird die Erde nass.
ist eine Aussage, die aus zwei Einzelaussagen besteht, die mit einem wenn, dann verbunden sind. Die einzelnen Aussagen sind: Es regnet
und Die Erde wird nass
.
Wenn beide dieser Aussagen wahr sind, ist die Gesamtaussage wahr. Wenn aber die Annahme Es regnet
falsch ist, heißt das nicht, dass die Schlussfolgeurng Die Erde wird nass
falsch sein muss. Die Erde kann auch aus anderen Gründen nass sein. Die Gesamtaussage wird in dem Fall aber nicht ungültig.
Die Implikation spielt vor allem in der Theoretischen Informatik eine Rolle, nicht beim Programmieren. Wenn man beim Programmieren eine Implikation ausdrücken möchte, muss man die Implikation z.B. als umschreiben, also als !a || b
, not a or b
oder <<nicht <>> oder <>>
.
Äquivalenz
falsch | falsch | wahr |
falsch | wahr | falsch |
wahr | falsch | falsch |
wahr | wahr | wahr |
Wenn man zwei Aussagen und mit Genau dann, wenn () verknüpft, entsteht eine neue Aussage , die genau dann wahr ist, wenn und denselben Wahrheitswert haben. Wenn man umgangssprachlich wenn sagt, meint man meistens genau dann, wenn.
Man formuliert oft Implikationen wie Ruf mich, wenn du Hilfe brauchst.
Streng genommen entspricht man dieser Bitte auch, wenn man ohne ein Hilfebedürfnis ruft, denn ex falso quodlibet.
Was man meint ist: Ruf mich genau dann, wenn du Hilfe brauchst
, denn das bedeutet auch: Ruf mich nicht, wenn du keine Hilfe brauchst.
Die Äquivalenz spielt vor allem in der Theoretischen Informatik eine Rolle, nicht beim Programmieren. Beim Programmieren kann man sich damit{ behelfen, dass die Äquivalenz auch die Gleichheit zweier Wahrheitswerte ist, und einfach den Gleichheitsoperator ==
benutzen.