- Arithmetische Repräsentierbarkeit
Im Folgenden arbeiten wir mit dem arithmetischen Alphabet
und der Standardinterpretation in
.
Eine Abbildung
-
heißt
arithmetisch repräsentierbar
,
wenn es einen
-Ausdruck
in
freien Variablen
derart gibt, dass für alle
-Tupel
die Äquivalenz
genau dann, wenn
gilt.
Eine
Relation
heißt
arithmetisch repräsentierbar
,
wenn es einen
-Ausdruck
in
freien Variablen
derart gibt, dass für alle
-Tupel
die Äquivalenz
genau dann, wenn
gilt.
Die Schreibweise
bedeutet, dass die
nicht namentlich aufgeführten freien Variablen durch die
ersetzt werden, wobei die
natürlichen Zahlen
als Terme durch die
-fache Summe
(streng genommen mit einer fixierten Klammerung)
wiedergegeben werden. Da die repräsentierenden Ausdrücke genau
bzw.
freie Variablen besitzen, entsteht durch Substitution der freien Variablen durch die Terme eine Aussage ohne freie Variablen. Diese sind bei Interpretation über den natürlichen Zahlen wahr oder falsch. Aufgrund des
Substitutionslemmas
ist die Gültigkeit
äquivalent zur Gültigkeit
. Polynomfunktionen
-
mit natürlichzahligen Koeffizienten sind unmittelbar arithmetisch präsentierbar.
Wir wollen zeigen, dass Registerprogramme, oder besser gesagt die durch ein Registerprogramm festgelegte Programmabbildung, arithmetisch repräsentierbar sind.
- Registerprogramme als Abbildungen
Wir möchten ein Registerprogramm
, das aus
Programmzeilen besteht und
Register anspricht, als eine Abbildung auffassen. Die Wirkungsweise einer jeden Programmzeile hängt dabei nur von den Belegungen der Register zu dem Zeitpunkt ab, an dem diese Zeile aufgerufen wird. Sie ist geschichtsunabhängig, d.h. unabhängig von dem bisherigen Verlauf des Programmes. Man kann daher ein Programm vollständig durch die Abbildung
-
erfassen. Diese Abbildung nennen wir die Programmabbildung
.
Dabei steht
für die Programmzeilennummer und
steht für den Inhalt des Registers
(von denen es ja
Stück gibt).
Dem Tupel
wird dasjenige Tupel
zugeordnet, das bei Abruf des in der
-ten Programmzeile stehenden Befehls
bei der Registerbelegung
entsteht. Die Abbildung
besteht dabei aus den
Komponentenfunktionen
, wobei
die Wirkungsweise auf die Programmzeilennummer und die
,
,
die Wirkungsweise auf das
-te Register beschreibt. Die Wirkung der einzelnen Befehle sieht folgendermaßen aus.
Bei
ist
-

Bei
ist
-

bei
und
-

bei
.
Bei
ist
-
Bei
(also bei
)
ist
-

die Abbildung wirkt dort also wie die Identität. Der Druckbefehl ist für den Programmablauf nicht relevant und wird hier ignoriert.
In manchen Situationen möchte man eine auf ganz
definierte Programmabbildung haben. Um dies zu erreichen setzt man für
einfach
-

- Repräsentierbarkeit der Registerbefehle
Ein Registerprogramm kann also in eine Abbildung übersetzt werden, die die Wirkungsweise des Programms widerspiegelt. Die dabei auftretenden Abbildungen sind prinzipiell einfach beschreibbar, auch wenn dafür eine lange Abbildungsdefinition und tief verschachtelte Fallunterscheidungen nötig sind.
Der Ablauf eines Programms
zur Anfangseingabe
(Anfangskonfiguration)
(die Anfangszeile besitzt die Zeilennummer
!)
wird durch die Hintereinanderschaltung der Programmabbildung
beschrieben. Nach dem ersten Programmschritt, bei dem der Befehl in der ersten Programmzeile aufgerufen wird, erhält man die Folgekonfiguration
. Die nullte Komponente von
gibt an, mit welcher Programmzeile weitergearbeitet wird. Dies ist aber alles in
kodiert, so dass das Ergebnis nach dem nächsten Schritt einfach
ist. Das Ergebnis nach dem
-ten Rechenschritt ist also
-
wobei
-mal
angewendet wird. Dafür schreiben wir auch
. Die aktuelle Zeilennummer ist dabei stets als nullte Komponente von
ablesbar, wofür wir
schreiben.
Wie wirkt sich nun die Eigenschaft eines Programms, anzuhalten oder nicht, auf diese Iterationen von
aus? Das Programm hält genau dann an, wenn es bei Eingabe von
ein
gibt mit
-
Wir möchten die Wirkungsweise von Programmen in der Sprache der Arithmetik selbst repräsentieren, um dort das Halteproblem
(und seine Unentscheidbarkeit)
nachbilden zu können. Dafür müssen wir zunächst die einzelnen Programmschritte arithmetisch erfassen.
Den Programmzeilen
eines Registerprogramms mit
Registern werden die folgenden arithmetischen Ausdrücke
in den freien Variablen
zugeordnet.
- Bei
setzt man
-
- Bei
setzt man
-
- Bei
setzt man
-
- Bei
setzt man
-
Hierbei werden die natürlichen Zahlen
und
in den arithmetischen Ausdrücken durch die entsprechenden Summen
repräsentiert, die Abfrage am
-ten Register schlägt sich in der Variablenbezeichnung nieder.
Wie bei der Programmabbildung ist es sinnvoll, für alle Programmzeilennummern
(also auch für
)
einen arithmetischen Ausdruck zu haben. Dazu setzen wir
-
(wobei
eine Abkürzung ist).
Zu einem gegebenen Programm bestehend aus den Programmzeilen
betrachtet man die Konjunktion der soeben eingeführten zugehörigen arithmetischen Repräsentierungen, also
.
Dieser Ausdruck repräsentiert die Programmabbildung.
Es sei
ein
Registerprogramm
mit den Programmzeilen
und
Registern mit den zugehörigen arithmetischen Ausdrücken
in den freien Variablen
. Es sei
.
Dann ist
eine arithmetische Repräsentierung der Programmabbildung
.
Die Variablen
seien durch die natürlichen Zahlen
belegt. Wir müssen zeigen, dass die Gleichheit
-

genau dann gilt, wenn
-
gilt. Der Ausdruck
gilt genau dann, wenn sämtliche Ausdrücke
gelten. Es sei
fixiert. Dann gelten sämtliche
,
,
automatisch, da für diese Ausdrücke der Vordersatz nicht gilt. Die Gültigkeit von
bei dieser Belegung bedeutet also,
dass der Nachsatz in
gelten muss. Sowohl
als auch der Nachsatz von
drücken die Wirkungsweise des Befehls
aus, daher gilt die Abbildungsgleichheit genau dann, wenn
wahr ist.

- Die
-Funktion
Das Halteproblem führte zu der Existenzaussage, dass es eine Iteration der Programmabbildung gibt, für die die
-te Komponente gleich der Haltezeilennummer ist. Die arithmetische Repräsentierung dieser Existenzaussage bedarf einiger Vorbereitungen.
Eine natürliche Zahl
lässt sich bekanntlich im Zehnersystem als
-

schreiben, wobei die
zwischen
und
liegen. Umgekehrt definiert eine endliche Ziffernfolge
(bzw. in alltäglicher Schreibweise
)
eine natürliche Zahl. Anstatt der Basis
kann man jede natürliche Zahl
als Basis nehmen
(für viele Zwecke ist auch die Basis
erlaubt, eine Zahl
wird dann einfach durch das
-fache Hintereinanderschreiben der
repräsentiert).
Man spricht dann von der
-adischen Entwicklung
(oder Darstellung)
der Zahl. Die
-adische Entwicklung einer natürlichen Zahl ist eindeutig.
Sei
fixiert. Wie berechnet man die Ziffernfolge einer gegebenen Zahl
? Zuerst betrachten wir die Ziffer
(die Einerziffer)
.
Es gilt die rekursive Beziehung
-

Dies beruht einfach darauf, dass bei
das Abziehen von
die Ziffer zu
nicht ändert. Man beachte, dass sowohl die Abfrage, die die Fallunterscheidung in dieser Definition konstituiert, als auch die Subtraktion im Fall
mit einer Registermaschine durchführbar sind, und dass dadurch eine
-berechenbare Funktion vorliegt.
Auch die Definition der anderen Ziffern geschieht rekursiv. Wenn man von
die
(schon berechnete)
Ziffer zu
abzieht, so erhält man eine durch
teilbare Zahl. Zwischen der Ziffernentwicklung von
und von
besteht ein direkter Zusammenhang, die Ziffer
von
ist einfach die Ziffer
von
. Daher ist für
-

Damit ist die Berechnung der
-ten Ziffer auf die Berechnung der
-ten Ziffer einer kleineren Zahl rekursiv zurückgeführt. Die Bedingung in der Abfrage und die Subtraktion und die Division in der Definition sind durch eine Registermaschine durchführbar. Diese Funktionsvorschrift berechnet nicht nur die „benötigten“ Ziffern, sondern auch alle höheren, wobei natürlich für alle unbenötigten
herauskommt.
Wir führen nun die
-Funktion ein. Der Hauptzweck dieser Funktion soll sein, endliche Folgen von natürlichen Zahlen unterschiedlicher Länge durch drei Zahlen zu kodieren. Die Grundidee ist, dies über die
-adische Entwicklung zu tun, wobei die drei Eingabezahlen einen Zahlwert, eine Basis und eine Ziffernstelle repräsentieren, und die Ausgabe die Ziffernfolge ist. Zugleich soll diese Funktion arithmetisch repräsentierbar sein, sodass die folgende Funktion etwas komplizierter aussieht. Wir folgen weitgehend dem Zugang von Ebbinghaus, Flum, Thomas.
Unter der
-Funktion
versteht man die Abbildung
-
die folgendermaßen festgelegt ist.
ist die kleinste Zahl
,
die die Bedingung erfüllt, dass es natürliche Zahlen
gibt, die die folgenden Eigenschaften erfüllen:
.
.
.
ist eine Quadratzahl.
- Alle Teiler
von
sind ein Vielfaches von
.
Wenn kein solches
existiert, so ist
.
Zunächst ist klar, dass diese Funktion arithmetisch repräsentierbar ist. Wenn
eine Primzahl ist, so bedeutet Teil (5), dass
eine Primzahlpotenz ist, und Teil (4), dass der Exponent geradzahlig ist. Das folgende Lemma sichert die gewünschte Eigenschaft der
-Funktion, nämlich die Eigenschaft, endliche Folgen zu repräsentieren.
Zu jeder endlichen Folge
aus
gibt es natürliche Zahlen
derart, dass
für
ist.
Es sei die endliche Folge
vorgegeben. Wir wählen eine
Primzahl
, die größer als alle
und größer als
ist. Es sei

Die vorgegebene Folge ist also die Folge der Ziffern der ungeraden Stellen in der
-adischen Ziffernentwicklung von
. Wir behaupten
für
.
Zunächst erfüllt
die in der Definition der
-Funktion formulierten Eigenschaften, und zwar mit
-

-

-

Die erste Eigenschaft ergibt sich aus

die anderen sind klar. Wenn umgekehrt ein
die Bedingungen erfüllt
(mit
),
wobei
ist, so ist

Da die
-adische Entwicklung von
eindeutig ist, folgen daraus und aus den weiteren Bedingungen die Gleichheiten
und
.
