"* $\\Longleftrightarrow$ $a \\vee b$ (Kommutativität von $\\vee$)\n"
"* $\\Longleftrightarrow$ $a \\vee b$ (Kommutativität von $\\vee$)\n",
"\n",
"Anmerkung: im Skript verwenden wir $\\Longleftrightarrow$ für Äquivalenzbeweise; die \"präzise\" logische Schreibweise wäre $\\equiv$."
]
]
},
},
{
{
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Vorlesung 0 - Teil 1 Logik
# Vorlesung 0 - Teil 1 Logik
Grundlagen der Logik und Mengentheorie sind nicht im Skript.
Grundlagen der Logik und Mengentheorie sind nicht im Skript.
Hier definieren wir einige Grundlagen und Notationen die im Skript verwendet werden.
Hier definieren wir einige Grundlagen und Notationen die im Skript verwendet werden.
Ein gutes Verständnis dieser Grundlagen und Notationen ist für das Verständnis des Skripts, aber auch anderer Teile der Informatik unumgänglich.
Ein gutes Verständnis dieser Grundlagen und Notationen ist für das Verständnis des Skripts, aber auch anderer Teile der Informatik unumgänglich.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Was ist Logik?
# Was ist Logik?
Quelle [https://de.wikipedia.org/wiki/Logik]:
Quelle [https://de.wikipedia.org/wiki/Logik]:
* vernünftiges Schlussfolgern, Denklehre
* vernünftiges Schlussfolgern, Denklehre
* In der Logik wird die Struktur von Argumenten im Hinblick auf ihre Gültigkeit untersucht, unabhängig vom Inhalt der Aussagen
* In der Logik wird die Struktur von Argumenten im Hinblick auf ihre Gültigkeit untersucht, unabhängig vom Inhalt der Aussagen
* Traditionell ist die Logik ein Teil der Philosophie.
* Traditionell ist die Logik ein Teil der Philosophie.
* Seit dem 20. Jahrhundert versteht man unter Logik überwiegend symbolische Logik, die auch als grundlegende Strukturwissenschaft, z. B. innerhalb der Mathematik und der theoretischen Informatik, behandelt wird.
* Seit dem 20. Jahrhundert versteht man unter Logik überwiegend symbolische Logik, die auch als grundlegende Strukturwissenschaft, z. B. innerhalb der Mathematik und der theoretischen Informatik, behandelt wird.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Warum Logik studieren?
# Warum Logik studieren?
* Hardware: logische Schaltkreise
* Hardware: logische Schaltkreise
* Wissensdarstellung und intelligentes Denken: künstliche Intelligenz, deklarative Darstellung von Wissen, semantisches Web, ...
* Wissensdarstellung und intelligentes Denken: künstliche Intelligenz, deklarative Darstellung von Wissen, semantisches Web, ...
* Überlegungen über Programme: Verifikation, statische Programmanalyse, Programmoptimierung,...
* Überlegungen über Programme: Verifikation, statische Programmanalyse, Programmoptimierung,...
* Universale Vorrichtung zur Berechnung: Datenbanken, logische Programmierung, ...
* Universale Vorrichtung zur Berechnung: Datenbanken, logische Programmierung, ...
* Grundlage der Mathematik und auch der theoretischen Informatik
* Grundlage der Mathematik und auch der theoretischen Informatik
* Halpern et al. On the Unusual Effectiveness of Logic in Computer Science. https://www.cs.cmu.edu/~rwh/papers/unreasonable/basl.pdf
* Halpern et al. On the Unusual Effectiveness of Logic in Computer Science. https://www.cs.cmu.edu/~rwh/papers/unreasonable/basl.pdf
* Zitat aus diesem Artikel: ```The effectiveness of logic in computer science is not by any means limited to the areas mentioned in here. As a matter of fact, it spans a wide spectrum of areas, from artificial intelligence to software engineering. Overall, logic provides computer science with both a unifying foundational framework and a powerful tool for modeling and reasoning about aspects of computation.```
* Zitat aus diesem Artikel: ```The effectiveness of logic in computer science is not by any means limited to the areas mentioned in here. As a matter of fact, it spans a wide spectrum of areas, from artificial intelligence to software engineering. Overall, logic provides computer science with both a unifying foundational framework and a powerful tool for modeling and reasoning about aspects of computation.```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Welche Logik studieren?
# Welche Logik studieren?
* Aussagenlogik
* Aussagenlogik
* Prädikatenlogik der ersten Stufe (FOL - First Order Logic)
* Prädikatenlogik der ersten Stufe (FOL - First Order Logic)
* Logik höherer Stufe (HOL - Higher Order Logic)
* Logik höherer Stufe (HOL - Higher Order Logic)
* eine temporale Logik
* eine temporale Logik
* eine mehrwertige Logik oder gar Fuzzy Logik
* eine mehrwertige Logik oder gar Fuzzy Logik
* Relevanzlogik, lineare Logik
* Relevanzlogik, lineare Logik
* eine nichtmonotone Logik
* eine nichtmonotone Logik
Wir werden die klassische, zweiwertige, monotone Aussagenlogik
Wir werden die klassische, zweiwertige, monotone Aussagenlogik
und Prädikatenlogik studieren (zusammen mit Mengentheorie).
und Prädikatenlogik studieren (zusammen mit Mengentheorie).
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Aussagenlogik
# Aussagenlogik
Eine Aussage ist endweder wahr (TRUE) oder falsch (FALSE).
Eine Aussage ist endweder wahr (TRUE) oder falsch (FALSE).
Die Logik interessiert sich weniger ob Aussagen wie wahr oder falsch sind, sondern mehr um Zusammenhänge zwischen möglichen Wahrheitswerten verschiedener Aussagen und Formeln.
Die Logik interessiert sich weniger ob Aussagen wie wahr oder falsch sind, sondern mehr um Zusammenhänge zwischen möglichen Wahrheitswerten verschiedener Aussagen und Formeln.
Einige Aussagen haben manchmal vordefinierte Wahrheitswerte.
Einige Aussagen haben manchmal vordefinierte Wahrheitswerte.
Wir zum Beispiel benutzen Arithmetik und Mengetheorie in unseren logischen Formeln, ohne diese selber in Logik zu formalisieren.
Wir zum Beispiel benutzen Arithmetik und Mengetheorie in unseren logischen Formeln, ohne diese selber in Logik zu formalisieren.
Hier sind ein paar Aussagen in Arithmetik:
Hier sind ein paar Aussagen in Arithmetik:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
2>1
2>1
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
1+1 = 2
1+1 = 2
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
2<1
2<1
```
```
%% Output
%% Output
$\mathit{FALSE}$
$\mathit{FALSE}$
FALSE
FALSE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Junktoren und Formeln
# Junktoren und Formeln
Jede Aussage ist auch eine Formel.
Jede Aussage ist auch eine Formel.
Mit den Junktoren kann man Aussagen und Formeln zu grösseren Formeln der Aussagenlogik kombinieren.
Mit den Junktoren kann man Aussagen und Formeln zu grösseren Formeln der Aussagenlogik kombinieren.
Die Negation ```¬(F)``` einer Formel F ist auch eine Formel. Die negierte Formel ist wahr genau dann wenn (gdw) die ursprünglihe Formel falsch ist:
Die Negation ```¬(F)``` einer Formel F ist auch eine Formel. Die negierte Formel ist wahr genau dann wenn (gdw) die ursprünglihe Formel falsch ist:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
¬(2<1)
¬(2<1)
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Die Konjunktion ```F ∧ G``` von zwei Formeln ist wahr gdw beide Formeln wahr sind:
Die Konjunktion ```F ∧ G``` von zwei Formeln ist wahr gdw beide Formeln wahr sind:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
2>1 ∧ 1>0
2>1 ∧ 1>0
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Die Disjunktion ```F ∨ G``` von zwei Formeln ist wahr gdw mindestes eine der beiden Formeln wahr sind:
Die Disjunktion ```F ∨ G``` von zwei Formeln ist wahr gdw mindestes eine der beiden Formeln wahr sind:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
2>1 ∨ 1>2
2>1 ∨ 1>2
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Die Implikation ```F ⇒ G``` von zwei Formeln ist wahr wenn entweder beide Formeln wahr sind oder die erste Formel F falsch ist:
Die Implikation ```F ⇒ G``` von zwei Formeln ist wahr wenn entweder beide Formeln wahr sind oder die erste Formel F falsch ist:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
2>1 ⇒ 3>1
2>1 ⇒ 3>1
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
2<1 ⇒ 1+1 = 5
2<1 ⇒ 1+1 = 5
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Die Äquivalenz ```F ⇔ G``` von zwei Formeln ist wahr wenn entweder beide Formeln wahr sind oder beide Formeln falsch sind:
Die Äquivalenz ```F ⇔ G``` von zwei Formeln ist wahr wenn entweder beide Formeln wahr sind oder beide Formeln falsch sind:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
1=2 ⇔ 2=1
1=2 ⇔ 2=1
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
1=3 ⇔ 1=1024
1=3 ⇔ 1=1024
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
1=1 ⇔ 2=3
1=1 ⇔ 2=3
```
```
%% Output
%% Output
$\mathit{FALSE}$
$\mathit{FALSE}$
FALSE
FALSE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Prioritäten
## Prioritäten
Anmerkung: Wir nehmen an, dass $\neg$ am stärksten bindet, dann kommen $\wedge$, $\vee$, $\Rightarrow$ und schließlich ⇔.
Anmerkung: Wir nehmen an, dass $\neg$ am stärksten bindet, dann kommen $\wedge$, $\vee$, $\Rightarrow$ und schließlich ⇔.
Die Formel $(p \vee (\neg p \wedge q)$ steht also für $(p \vee (\neg(p) \wedge q)$.
Die Formel $(p \vee (\neg p \wedge q)$ steht also für $(p \vee (\neg(p) \wedge q)$.
Wir schreiben diesen Tatbestand als $(p \vee (\neg p \wedge q) \equiv p \vee q$.
Wir schreiben diesen Tatbestand als $(p \vee (\neg p \wedge q) \equiv p \vee q$.
Kleine Anmerkung: das Werkzeug im Jupyter Notebook akzeptiert keine aussagenlogische Variablen sondern nur Bool'sche Datenvariablen. Anstatt $p$ muss man ```p=TRUE``` schreiben und anstatt $p \vee q$ muss man ```p=TRUE ∨ q=TRUE``` schreiben. Mit ```bool(P)``` konvertiert man den Wahrheitswert einer Formel in einen Bool'schen Datenwert um.
Kleine Anmerkung: das Werkzeug im Jupyter Notebook akzeptiert keine aussagenlogische Variablen sondern nur Bool'sche Datenvariablen. Anstatt $p$ muss man ```p=TRUE``` schreiben und anstatt $p \vee q$ muss man ```p=TRUE ∨ q=TRUE``` schreiben. Mit ```bool(P)``` konvertiert man den Wahrheitswert einer Formel in einen Bool'schen Datenwert um.
$\equiv$ ist eine Relation zwischen logischen Formeln.
$\equiv$ ist eine Relation zwischen logischen Formeln.
Diese Übersetzung erlaubt zwei Modelle, und auch eine fehlerhafte "Lösung" mit X als Schurken und Y als Ritter. Diese Lösung ist falsch, da X und Y die Wahrheit sagen, aber nur Y ein Ritter ist.
Diese Übersetzung erlaubt zwei Modelle, und auch eine fehlerhafte "Lösung" mit X als Schurken und Y als Ritter. Diese Lösung ist falsch, da X und Y die Wahrheit sagen, aber nur Y ein Ritter ist.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Beweis durch Widerspruch
# Beweis durch Widerspruch
* Theorem: $\phi \models \psi$ genau dann wenn $\phi \wedge \neg \psi$ kein Modell hat
* Theorem: $\phi \models \psi$ genau dann wenn $\phi \wedge \neg \psi$ kein Modell hat
Beweis (ist ein Äquivalenzbeweis auf Metaebene):
Beweis (ist ein Äquivalenzbeweis auf Metaebene):
* $\phi \models \psi$
* $\phi \models \psi$
* $\Longleftrightarrow$ alle Modelle von $\phi$ sind auch Modelle von $\psi$ (per Definition von $\models$)
* $\Longleftrightarrow$ alle Modelle von $\phi$ sind auch Modelle von $\psi$ (per Definition von $\models$)
* $\Longleftrightarrow$ in allen Modellen von $\phi$ hat $\neg \psi$ den Wahrheitswert falsch (per Definition von $\neg$)
* $\Longleftrightarrow$ in allen Modellen von $\phi$ hat $\neg \psi$ den Wahrheitswert falsch (per Definition von $\neg$)
* $\Longleftrightarrow$ alle Modelle von $\phi$ sind kein Modell von $\phi \wedge \neg \psi$ (per Definition von $\wedge$)
* $\Longleftrightarrow$ alle Modelle von $\phi$ sind kein Modell von $\phi \wedge \neg \psi$ (per Definition von $\wedge$)
* $\Longleftrightarrow$ $\phi \wedge \neg \psi$ hat kein Modell (da auch kein Modell von $\neg \phi$ ein Modell von $\phi \wedge \neg \psi$ sein kann)
* $\Longleftrightarrow$ $\phi \wedge \neg \psi$ hat kein Modell (da auch kein Modell von $\neg \phi$ ein Modell von $\phi \wedge \neg \psi$ sein kann)
* dem binären Prädikatensymbol $<$, hier in Infix-Notation, mit zwei Argumenten: $x$ und $5$. (In Präfix-Notation würde man $<(x,5)$ schreiben.)
* dem binären Prädikatensymbol $<$, hier in Infix-Notation, mit zwei Argumenten: $x$ und $5$. (In Präfix-Notation würde man $<(x,5)$ schreiben.)
Innerhalb von ```x<5``` ist $x$ eine freie Variable.
Innerhalb von ```x<5``` ist $x$ eine freie Variable.
In einer <b>geschlossenen</b> Formel der Prädikatenlogik müssen alle Variablen durch Quantoren gebunden werden.
In einer <b>geschlossenen</b> Formel der Prädikatenlogik müssen alle Variablen durch Quantoren gebunden werden.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Quantoren
# Quantoren
In der Prädikatenlogik gibt es zwei Quantoren:
In der Prädikatenlogik gibt es zwei Quantoren:
* den <b>Existenzquantor</b> $\exists$
* den <b>Existenzquantor</b> $\exists$
$\exists x. P$ ist wahr, wenn es mindestens ein Objekt $o$ gibt, so dass wenn man $x$ durch $o$ in $P$ ersetzt die Formel (ohne den Quantor) wahr ist
$\exists x. P$ ist wahr, wenn es mindestens ein Objekt $o$ gibt, so dass wenn man $x$ durch $o$ in $P$ ersetzt die Formel (ohne den Quantor) wahr ist
* den <b>Allquantor</b> $\forall$ (auch Universalquantor genannt)
* den <b>Allquantor</b> $\forall$ (auch Universalquantor genannt)
$\forall x. P$ ist wahr wenn die Formel $P$ für alle möglichen Ersetzungen von $x$ durch ein Objekt $o$ wahr ist
$\forall x. P$ ist wahr wenn die Formel $P$ für alle möglichen Ersetzungen von $x$ durch ein Objekt $o$ wahr ist
* $\exists x. x<5$ ist eine geschlossene Formel (aka eine Aussage). Mit der Standardinterpretation von $<$ und $5$ ist diese Formel wahr; eine Lösung ist $x=4$.
* $\exists x. x<5$ ist eine geschlossene Formel (aka eine Aussage). Mit der Standardinterpretation von $<$ und $5$ ist diese Formel wahr; eine Lösung ist $x=4$.
* $\forall x. x<5$ ist auch eine geschlossene Formel.
* $\forall x. x<5$ ist auch eine geschlossene Formel.
Mit der Standardinterpretation von $<$ und $5$ ist diese Formel falsch. Ein Gegenbeispiel ist $x=5$.
Mit der Standardinterpretation von $<$ und $5$ ist diese Formel falsch. Ein Gegenbeispiel ist $x=5$.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` prob
``` prob
∃x.(x<5)
∃x.(x<5)
```
```
%% Output
%% Output
$\mathit{TRUE}$
$\mathit{TRUE}$
TRUE
TRUE
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
In diesem Jupyter Notebook werden automatisch Existenzquantoren für alle offenen Variablen einegfügt:
In diesem Jupyter Notebook werden automatisch Existenzquantoren für alle offenen Variablen einegfügt: