== Inhalt ==

Mit diesem Programm können Sie primitiv rekursive und mu-rekursive
Funktionen definieren und auswerten.


== Syntax ==

Es gibt drei Basisfunktionen:
  * null: konstante Nullfunktion
  * succ: Nachfolgerfunktion
  * pi_i_j: Projektionsfunktionen. Für jede Wahl von i und j gibt es
            Projektionsfunktion. Es handelt sich also eigentlich um
            eine Familie von Funktionen.

Primitiv rekursive Funktionen können auf zwei Arten neue Funktionen definieren:
  * substitute(k, i, h, g_1, ..., g_i) Einsetzungsschema (siehe Folien).
  * primitive_recursion(g, h) primitives Rekursionsschema (siehe Folien).

mu-rekursive Funktionen können zusätzlich noch das mu-Rekursionsschema verwenden:
  * mu_recursion(f)

Um eine neue Funktion zu definieren, schreiben Sie

  funktionsname = schema(parameter)

Um eine definierte Funktion auszuwerten, schreiben Sie

  print funktionsname(parameter)

Beispiele finden Sie in der angehängten Datei lecture.def.

== Kompilieren und Ausführen des Programms ==
   === Variante 1 (Eclipse) ===
Im Archiv ist ein Projekt enthalten, das Sie mit der IDE Eclipse importieren können
(Sie können das Projekt auch direkt aus dem Archiv importieren).
Zum Ausführen geben Sie den Pfad zu lecture.def unter "Run Configurations" -> "Arguments" an.

   === Variante 2 (Konsole) ===
Öffnen Sie eine Konsole und navigieren Sie zum Verzechnis in welchem sich
diese README Datei befindet.
Geben Sie anschliessend folgende Befehle in die Konsole ein um das Program zu kompilieren.

$ cd src
$ javac recursion/Recursion.java

Beachten Sie, dass dazu ein Java Kompiler auf Ihrem Rechner installiert sein muss.

Rufen Sie dann das Programm mit folgendem Befehl auf.

$ java recursion.Recursion ../lecture.def

