ue10
Aus ProgrammingWiki
Entwickeln Sie eine Beweisidee zu folgendem Satz
Jede primitiv-rekursive Funktion ist LOOP-berechenbar und umgekehrt.
LOOP-Programme sind gekennzeichnet durch folgende Konstrukte:
- Wertzuweisungen (Bindung an Variablen)
- Konstanten
- Iterationen / Zyklen (LOOP <wert> DO <sequenz> END)</sequenz></wert>
- Programmaufrufe
weiterhin ist von vornherein bekannt, wie viele Zyklen ein LOOP-Programm durchläuft.
Primitiv-rekursive Funktionen sind wie folgt definiert:
- Es gibt Basisfunktionen, die allesamt total und berechenbar sind.
- Nachfolgerfunktion
- Nullfunktion
- Projektionsfunktion
Mit diesen Basisfunktionen und den 2 folgenden Techniken können weitere Funktionen beschreiben werden:
- Primitive Rekursion
- Substitution
Nun können die Konstrukte aus der LOOP-Sprache wie folgt den Vorschriften der primitiv-rekursiven Funktionen zugeordnet werden.
- Variablen können der Zahl den Parametern in der Funktionsdefinition zugeordnet werden
- Konstanten können durch die Nullfunktion erreicht werden.
- Zyklen werden durch die primitive Rekursion erreicht.
- Programmaufrufe entsprechen Substitution
Umgekehrt kann zugeordnet werden:
- Die Nachfolgerfunktion kann durch die primitiv-rekursive Funktion add realisiert werden
- Die Projektionsfunktion bedeutet in LOOP-Programmen einen Programmaufruf mit n Argumenten.