vollständigkeit, turingmaschinen
All checks were successful
Compile exercises / compile (push) Successful in 1m2s
All checks were successful
Compile exercises / compile (push) Successful in 1m2s
This commit is contained in:
parent
8ffb5005a0
commit
0646cb3849
1 changed files with 143 additions and 0 deletions
|
@ -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}
|
||||
|
|
Loading…
Reference in a new issue