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}}
|
\author{Merlin Carl\thanks{Mitschrift von Maximilian Keßler}}
|
||||||
|
|
||||||
\def\shows{\leftadjoint}
|
\def\shows{\leftadjoint}
|
||||||
|
\DeclareSimpleMathOperator{prim}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
\maketitle
|
\maketitle
|
||||||
|
@ -202,5 +203,147 @@
|
||||||
also ist $\mathcal{B}$ inkonsistent, ein Widerspruch zu unserer Annahme.
|
also ist $\mathcal{B}$ inkonsistent, ein Widerspruch zu unserer Annahme.
|
||||||
\end{proof}
|
\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}
|
\end{document}
|
||||||
|
|
Loading…
Reference in a new issue