diff --git a/2024_CdE_Goedel.tex b/2024_CdE_Goedel.tex index cdb5631..d7a65f8 100644 --- a/2024_CdE_Goedel.tex +++ b/2024_CdE_Goedel.tex @@ -13,6 +13,7 @@ \author{Merlin Carl\thanks{Mitschrift von Maximilian Keßler}} \def\shows{\leftadjoint} +\DeclareSimpleMathOperator{prim} \begin{document} \maketitle @@ -202,5 +203,147 @@ also ist $\mathcal{B}$ inkonsistent, ein Widerspruch zu unserer Annahme. \end{proof} +\section{Der Unvollständigkeitssatz} + +Wir wollen nun verstehen, wie man einfache Arithmetik +(d.h.~Rechnen mit natürlichen Zahlen) in Prädikatenlogik formulieren kann. + +\begin{definition} + Sei $\mathcal{L}_A$ die Sprache mit Relationszeichen $=$, $<$, Funktionszeichen $+$, $\cdot $, sowie Konstantenzeichen $0$, $1$. +\end{definition} + +\begin{example} + Wir können zum Beispiel folgende Übersetzungen treffen: + \begin{IEEEeqnarray*}{rCl} + \text{$a$ ist ein Teiler von $b$} + &\leftrightarrow& + \exists x : a \cdot x = b + \\ + \text{$p$ ist keine Primzahl} + & \leftrightarrow & + \exists a\exists b\colon (a \neq 1 \land b \neq 1 \land a \cdot b = p) + \\ + \text{$p$ ist eine Primzahl} + & \leftrightarrow & + \lnot (\exists a\exists b\colon a \neq 1 \land b \neq 1 \land a \cdot b = p) + \\ + & \leftrightarrow & + \forall a \forall b\colon a \cdot b = p \to (a = 1 \lor b = 1) + \\ + \text{Die Zahl \enquote{Zwei}} + & \leftrightarrow & + 1 + 1 + \end{IEEEeqnarray*} + Um uns Notation zu vereinfachen, führen wir $a \mid b$ sowie $\prim(p)$ mit den obigen Bedeutungen ein, ebenfalls können wir jede \emph{feste} natürliche Zahle als $1 + 1 + \dots b + 1$ kodieren. + Damit meinen wir nicht, dass wir die Sprache tatsächlich erweitern (um solche Relationssymbole), sondern einfach, dass man jede Vorkommnis von diesen Relationen rein formal durch ihre obige Langschreibweise ersetzen kann. + + Jetzt lässt sich die (starke) Goldbach'sche Vermutung formulieren als + \[ + \forall z ((z > 2 \land 2 \mid z) \to \exists a, b (z = a + b \land \prim(a) \land \prim(b))) + . + \] + Etwas schwieriger wird es, zu übersetzen, dass es unendlich viele Primzahlen gibt: + \[ + \forall x \exists p (x < p \land \prim(p)) + . + \] + Eigentlich steht hier eher etwas wie \enquote{Es gibt beliebig große Primzahlen}, + allerdings ist das (in den natürlichen Zahlen) das gleiche Konzept. +\end{example} + +\begin{definition} + Ein \vocab{Axiomensystem} ist eine Menge von Sätzen (Formeln). +\end{definition} + +\begin{question} + Was sind wünschenswerte Eigenschaften eines Axiomensystems? +\end{question} + +\begin{itemize} + \item \vocab{Widerspruchsfreiheit}, d.h.~es gibt keine Aussage $\varphi $, für die sowohl $\varphi $ als auch $\lnot \varphi $ bewiesen werden können + \item \vocab{Vollständigkeit}, d.h.~für jeden Satz $\varphi $ der Sprache gilt $A \shows \varphi $ oder $A \shows \lnot \varphi $. +\end{itemize} + +\begin{remark} + Dieser Begriff der \emph{Vollständigkeit} ist ein anderer, wie wir ihn bereits gesehen haben. + + Ein Kalkül kann vollständig sein, wenn $A \models \varphi \iff A \shows \varphi $, + Herleitungen also vollständig die semantische wahren Aussagen widerspiegeln. + + Ein Axiomensystem kann vollständig sein, indem $A \shows \varphi \lor A \shows \lnot \varphi $ für jede Formel $\varphi $. +\end{remark} + +\begin{remark} + Beide Eigenschaften für sich sind natürlich einzeln leicht realisierbar: + Das leere Axiomensystem ist natürliche widerspruchsfrei, denn man kann gar nichts ableiten, und widersprüchliche Axiomensysteme sind vollständig, weil man jede Aussage zeigen kann. + + Es gibt auch widerspruchsfreie und vollständige Systeme, + allerdings können diese nicht über Arithmetik reden. + Das wird Inhalt von Gödels Unvollständigkeitssatz sein. +\end{remark} + + +\subsection{Turing-Maschinen} +Turing-Maschinen sind ein theoretisches Computermodell, +das von \textsc{Alan Turing} eingeführt wurde. + +\begin{definition} + Eine \vocab{Turingmaschine} besteht aus einem (nach rechts hin) + unendlichen Speicherband, auf dem an jeder Position $0$ oder $1$ steht, + einem Schreib-/Lesekopf, der sich stets an einer Position findet. + + Das Programm einer Turingmaschine besteht aus einer Liste an Zuständen, + wobei jeder Zustand in Abhängigkeit vom Wert des Bands am Lesekopf angibt: + \begin{itemize} + \item welchen Wert der Schreibkopf auf die aktuelle Position schreiben soll + \item in welche Richtung (links/rechts/stehen bleiben) sich der Schreibkopf als nächstes bewegt + \item was der nächste Programmzustand der Turingmaschine ist + \end{itemize} + + Das Programm lässt sich also Beschreiben über eine Zustandsmenge $\mathcal{S}$ + und eine Funktion + \[ + \mathcal{S} \times \set{ 0,1 } \to \set{ 0,1 } \times \set{ \text{links}, \text{rechts}, \text{stehen bleiben} } \times (\mathcal{S} \cup \set{ \operatorname{end} } ) + , + \] + wobei $\operatorname{end}$ beschreibt, dass das Programm terminiert hat. + Eine Turing-Maschine lässt sich ausgehend von einem Zustands des Speicherbands und einem Zustand $s \in \mathcal{S}$ sukzessive ausführen. +\end{definition} + +Man könnte meinen, dass Turing-Maschinen nicht sehr viel können, +allerdings gilt: + +\begin{proposition}[Church-Turing-These] + Jede Funktion auf endlichen Zeichenfolgen, die überhaupt berechenbar ist, + ist durch eine Turing-Maschine berechenbar. +\end{proposition} + +\begin{remark} + Der Begriff \enquote{überhaupt berechenbar} ist hierbei natürlich mathematisch + unpräzise, und dementsprechend gibt es auch keinen formalen Beweis. + Wir meinen hiermit Funktionen, die ein idealisierter Mensch mit hinreichend viel + Zeit durch Ausführung eines Schemas berechnen kann. + + Zum Beispiel lässt sich jede moderne Programmiersprache systematisch + in eine Turingmaschine übersetzen und es ist bis dato keine Funktion bekannt, + welche \emph{intuitiv berechenbar} ist, allerdings nicht von einer Turingmaschine. +\end{remark} + +Die Church-Turing-These motiviert die folgende Definition: + +\begin{definition}[Berechenbarkeit] + Eine Funktion heißt \vocab{berechenbar}, wenn eine Turing-Maschine gibt, + die sie berechnet, d.h.~eine Turing-Maschine, die bei Kodierung der Eingabe + auf dem Band und Ausführung der Maschine stets nach endlich vielen Schritten + terminiert und eine korrekte Ausgabe auf das Band schreibt. +\end{definition} + + +%\[ +% \begin{tikzpicture} +% \draw (-0,0) grid (10,1); +% \end{tikzpicture} +%\] + \end{document}